كيفية جعل NPC يطارد اللاعب في Unity باستخدام NavMesh

في هذا البرنامج التعليمي، سنستخدم نظام NavMesh من Unity لإنشاء شخصية غير قابلة للعب تطارد اللاعب. يوفر NavMesh إمكانية تحديد المسار وتجنب العوائق بكفاءة، مما يجعله مثاليًا لسلوك الذكاء الاصطناعي في البيئات ثلاثية الأبعاد.

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

قبل تنفيذ NavMesh، نحتاج إلى إعداد المشهد المناسب:

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

الخطوة 2: خبز NavMesh

لاستخدام نظام NavMesh الخاص بـ Unity، نحتاج إلى خبز شبكة التنقل:

  1. حدد المستوى الأرضي في التسلسل الهرمي.
  2. في "المفتش"، انقر فوق إضافة مكون وأضف NavMeshSurface.
  3. في مكون NavMeshSurface، تأكد من وضع علامة على المستوى كسطح يمكن المشي عليه.
  4. انقر فوق الزر Bake في مكون NavMeshSurface لتوليد NavMesh.
  5. اختياري: إذا كانت لديك عقبات (على سبيل المثال، جدران)، فتأكد من أنها تحتوي على مكونات NavMeshObstacle لمنع حركة NPC.

الخطوة 3: إضافة NavMeshAgent

الآن، سنقوم بإعداد NPC لاستخدام Pathfinding الخاص بـ Unity:

  1. حدد NPC في التسلسل الهرمي.
  2. في المفتش، انقر فوق إضافة مكون وأضف NavMeshAgent.
  3. قم بضبط خصائص NavMeshAgent حسب الحاجة، مثل السرعة، والتسارع، ومسافة التوقف.

الخطوة 4: كتابة سيناريو المطاردة

بعد ذلك، سنقوم بإنشاء نص برمجي لجعل NPC يطارد اللاعب:

  1. انقر بزر الماوس الأيمن في لوحة المشروع وحدد إنشاء > نص برمجي C#. قم بتسميته NPCChase.
  2. انقر نقرًا مزدوجًا فوق البرنامج النصي لفتحه في محرر التعليمات البرمجية الخاص بك.
  3. استبدل الكود الافتراضي بما يلي:
using UnityEngine;
using UnityEngine.AI;

public class NPCChase : MonoBehaviour
{
    public Transform player; // Reference to the player's position
    private NavMeshAgent agent; // Reference to the NavMeshAgent

    void Start()
    {
        // Get the NavMeshAgent component
        agent = GetComponent<NavMeshAgent>();
    }

    void Update()
    {
        if (player != null)
        {
            // Set the agent's destination to the player's position
            agent.SetDestination(player.position);
        }
    }
}

الخطوة 5: تعيين النص ومرجع اللاعب

أخيرًا، سنقوم بتعيين البرنامج النصي وإعداد مرجع المشغل:

  1. حدد NPC في التسلسل الهرمي.
  2. اسحب وأفلِت البرنامج النصي NPCChase على NPC.
  3. في المفتش، حدد حقل اللاعب في البرنامج النصي.
  4. اسحب كائن لعبة اللاعب من التسلسل الهرمي إلى حقل اللاعب.

الخطوة 6: اختبار المشهد

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

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

اختياري: تخصيص السلوك

يمكنك تحسين سلوك NPC الخاص بك بشكل أكبر:

  • مسافة التوقف: اضبط مسافة توقف NavMeshAgent لجعل NPC يتوقف عند نطاق معين.
  • تجنب العوائق: تأكد من أن العوائق تحتوي على مكونات NavMeshObstacle لتجنبها بدقة.
  • الرسوم المتحركة: استخدم الرسوم المتحركة لجعل حركة NPC أكثر واقعية من خلال تشغيل الرسوم المتحركة استنادًا إلى السرعة.

خاتمة

لقد قمنا بإنشاء شخصية غير قابلة للعب تطارد اللاعب بشكل ديناميكي باستخدام نظام NavMesh من Unity. هذا النهج قوي ويمكن توسيعه بسهولة لسلوكيات الذكاء الاصطناعي الأكثر تعقيدًا. قم بالتجربة بإعدادات مختلفة لتخصيص مسار الشخصية غير القابلة للعب وفقًا لاحتياجات لعبتك.