כיצד לגרום ל-NPC לרדוף אחרי הנגן ב-Unity באמצעות NavMesh

במדריך זה, נשתמש במערכת NavMesh של Unity כדי ליצור NPC שרודף אחרי הנגן. NavMesh מספק איתור נתיבים יעיל והימנעות ממכשולים, מה שהופך אותו לאידיאלי עבור התנהגות בינה מלאכותית בסביבות תלת מימד.

שלב 1: הגדרת הסצנה

לפני יישום NavMesh, אנו זקוקים להגדרת סצנה נכונה:

  1. צור פרויקט תלת מימד חדש ב-Unity.
  2. הוסף מטוס שישמש כקרקע.
  3. הוסף Cube או כל דגם תלת מימדי כדי לייצג את הנגן. תן לזה שחקן.
  4. הוסף עוד מודל Cube או תלת מימד כדי לייצג את ה-NPC. תן לזה NPC.
  5. הנח את הנגן וה-NPC במקומות שונים במטוס.

שלב 2: אפיית ה-NavMesh

כדי להשתמש במערכת NavMesh של Unity, עלינו לאפות את רשת הניווט:

  1. בחר את מישור הקרקע בהיררכיה.
  2. ב-Inspector, לחץ על Add Component והוסף NavMeshSurface.
  3. ברכיב NavMeshSurface, ודא שהמטוס מסומן כמשטח שניתן לטייל בו.
  4. לחץ על הלחצן Bake ברכיב NavMeshSurface כדי ליצור את NavMesh.
  5. אופציונלי: אם יש לך מכשולים (למשל, קירות), ודא שיש להם רכיבים NavMeshObstacle כדי לחסום את תנועת ה-NPC.

שלב 3: הוספת NavMeshAgent

כעת, נכין את ה-NPC לשימוש במציאת הנתיבים של Unity:

  1. בחר את ה-NPC בהיררכיה.
  2. ב-Inspector, לחץ על Add Component והוסף NavMeshAgent.
  3. התאם את מאפייני NavMeshAgent לפי הצורך, כגון מהירות, תאוצה ומרחק עצירה.

שלב 4: כתיבת תסריט המרדף

לאחר מכן, ניצור סקריפט כדי לגרום ל-NPC לרדוף אחרי הנגן:

  1. לחץ לחיצה ימנית בחלונית Project ובחר Create > C# Script. תן לזה 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. במפקח, אתר את השדה Player בסקריפט.
  4. גרור את Player GameObject מההיררכיה לשדה Player.

שלב 6: בדיקת הסצנה

כדי לבדוק את ההגדרה שלך:

  1. לחץ על הלחצן Play בעורך Unity.
  2. הזז את הנגן מסביב (למשל, באמצעות קלט מקלדת או בקר).
  3. התבונן ב-NPC שמוצא את הנתיב ורודף אחר הנגן באופן דינמי, תוך הימנעות ממכשולים במידת הצורך.

אופציונלי: התאמה אישית של התנהגות

אתה יכול לחדד עוד יותר את התנהגות ה-NPC שלך:

  • מרחק עצירה: כוונן את מרחק העצירה של NavMeshAgent כדי לגרום ל-NPC לעצור בטווח מסוים.
  • הימנעות ממכשולים: ודא שלמכשולים יש רכיבי NavMeshObstacle להימנעות מדויקת.
  • אנימציות: השתמש באנימציות כדי להפוך את תנועת ה-NPC למציאותית יותר על ידי הפעלת אנימציות המבוססות על מהירות.

מַסְקָנָה

יצרנו NPC שרודף אחר הנגן באופן דינמי באמצעות מערכת NavMesh של Unity. גישה זו חזקה וניתן להרחיב אותה בקלות להתנהגויות AI מורכבות יותר. נסה עם הגדרות שונות כדי להתאים את חיפוש הנתיבים של ה-NPC לצרכי המשחק שלך.