إضافة آليات التخفي في Unity

آليات التخفي هي أنظمة لعب تسمح للاعبين بتجنب اكتشافهم من قبل الأعداء. تُستخدم هذه الآليات عادةً في الألعاب القائمة على التخفي مثل *Assassin's Creed* أو *Hitman*، وتتضمن ميزات مثل مخاريط الرؤية واكتشاف الصوت وأماكن الاختباء ومستويات رؤية اللاعب. يمكن أن تؤدي إضافة آليات التخفي إلى جعل اللعب أكثر جاذبية من خلال تشجيع التفكير الاستراتيجي ومكافأة التخطيط الدقيق.

في هذا البرنامج التعليمي، سننشئ آليات التخفي الأساسية في Unity. سيتجنب اللاعب اكتشافه من قبل الأعداء الذين لديهم مخاريط الرؤية. إذا دخل اللاعب المخروط، فسيتم اكتشافه.

الخطوة 1: إعداد المشهد

ابدأ بإنشاء مشهد بسيط Unity:

  1. إنشاء مشروع Unity جديد.
  2. أضف طائرة لتكون بمثابة الأرض.
  3. أضف نموذجًا ثلاثي الأبعاد (على سبيل المثال، كبسولة) لتمثيل اللاعب.
  4. أضف نموذجًا ثلاثي الأبعاد آخر (على سبيل المثال، مكعب) لتمثيل العدو.
  5. قم بوضع اللاعب والعدو في أماكن مختلفة على الطائرة.

الخطوة 2: إنشاء مخروط رؤية العدو

سنقوم بمحاكاة رؤية العدو باستخدام منطقة تشغيل مخروطية الشكل:

  1. انقر بزر الماوس الأيمن في التسلسل الهرمي وحدد إنشاء > كائن ثلاثي الأبعاد > أسطوانة.
  2. قم بتغيير حجم الأسطوانة لتبدو وكأنها مخروط عن طريق ضبط مقياسها (على سبيل المثال، X = 1، Y = 0.5، Z = 1).
  3. قم بتدويرها بحيث تكون القاعدة المسطحة متجهة للأمام (على سبيل المثال، Rotation X = 90).
  4. قم بإرفاقه باعتباره طفلًا لـEnemy GameObject.
  5. اضبط Collider الخاص بالمخروط ليكون Trigger.
  6. قم بضبط المقياس والموضع ليتناسب مع مجال رؤية العدو.

الخطوة 3: كتابة نص اكتشاف العدو

الآن، دعنا ننشئ نصًا برمجيًا لاكتشاف اللاعب داخل مخروط الرؤية:

  1. قم بإنشاء برنامج نصي C# يسمى EnemyVision.
  2. قم بإرفاق البرنامج النصي إلى كائن اللعبة العدو.
  3. استخدم الكود التالي:
using UnityEngine;

public class EnemyVision : MonoBehaviour
{
    public bool playerDetected = false;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            playerDetected = true;
            Debug.Log("Player Detected!");
        }
    }

    void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            playerDetected = false;
            Debug.Log("Player Lost!");
        }
    }
}

يتحقق هذا البرنامج النصي مما إذا كان اللاعب يدخل إلى مخروط الرؤية أو يخرج منه. تأكد من أن كائن اللعبة الخاص باللاعب يحمل العلامة Player.

الخطوة 4: إضافة إمكانية رؤية اللاعب

بعد ذلك، دعنا نطبق آلية الرؤية لجعل الكشف أكثر ديناميكية. سيكون من الصعب اكتشاف اللاعب عندما يكون في وضع القرفصاء أو الاختباء:

  1. قم بإنشاء نص برمجي جديد يسمى PlayerVisibility.
  2. قم بإرفاقه بـ Player GameObject.
  3. استخدم الكود التالي:
using UnityEngine;

public class PlayerVisibility : MonoBehaviour
{
    public float visibility = 1.0f; // Full visibility

    void Update()
    {
        // Reduce visibility when crouching (e.g., pressing "C")
        if (Input.GetKey(KeyCode.C))
        {
            visibility = 0.5f;
            Debug.Log("Crouching: Reduced visibility!");
        }
        else
        {
            visibility = 1.0f; // Default visibility
        }
    }
}

يضبط هذا البرنامج النصي مستوى رؤية اللاعب بناءً على أفعاله. ويمكن للأعداء لاحقًا استخدام هذه القيمة لتحديد مدى سهولة اكتشاف اللاعب.

الخطوة 5: تعزيز اكتشاف العدو

الآن، دعنا نجمع بين الرؤية والاكتشاف. عدّل نص EnemyVision على النحو التالي:

using UnityEngine;

public class EnemyVision : MonoBehaviour
{
    public bool playerDetected = false;

    void OnTriggerStay(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            PlayerVisibility playerVisibility = other.GetComponent<PlayerVisibility>();

            if (playerVisibility != null && playerVisibility.visibility > 0.75f)
            {
                playerDetected = true;
                Debug.Log("Player Detected with high visibility!");
            }
            else
            {
                Debug.Log("Player not visible enough to detect.");
            }
        }
    }

    void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            playerDetected = false;
            Debug.Log("Player Lost!");
        }
    }
}

يستخدم هذا البرنامج النصي مستوى رؤية اللاعب لتحديد ما إذا كان سيتم اكتشافه أم لا.

الخطوة 6: اختبار آليات التخفي

لاختبار الإعداد الخاص بك:

  1. اضغط على زر تشغيل في محرر Unity.
  2. قم بتحريك اللاعب إلى مخروط رؤية العدو لتفعيل الكشف.
  3. اضغط على زر الانحناء (على سبيل المثال، "C") لتقليل الرؤية واختبار مدى تأثير ذلك على الاكتشاف.

التحسينات الاختيارية

فيما يلي بعض الأفكار لتوسيع آليات التخفي لديك:

  • اكتشاف الصوت: أضف آلية حيث يكتشف العدو اللاعب استنادًا إلى الضوضاء التي يصدرها (على سبيل المثال، الجري).
  • أماكن الاختباء: إنشاء أماكن للاختباء حيث يصبح اللاعب غير قابل للكشف.
  • مراقبة الأعداء: قم ببرمجة الأعداء لمراقبة مسار محدد باستخدام نظام NavMesh الخاص بـ Unity.
  • حالات التنبيه: أضف مستويات تنبيه للأعداء (على سبيل المثال، المشبوه، الباحث، العدواني).

خاتمة

لقد قمنا بتنفيذ آليات التخفي الأساسية في Unity، بما في ذلك مخاريط الرؤية ومستويات الرؤية. يمكن أن تكون هذه الأنظمة بمثابة الأساس للعبة التخفي الأكثر تعقيدًا. جرِّب ميزات إضافية لإنشاء تجربة تخفي غامرة تمامًا للعبتك.