Cum să faci un NPC să urmărească jucătorul în Unity folosind NavMesh

În acest tutorial, vom folosi sistemul NavMesh al Unity pentru a crea un NPC care îl urmărește pe Jucător. NavMesh asigură identificarea eficientă a căii și evitarea obstacolelor, făcându-l ideal pentru comportamentul AI în medii 3D.

Pasul 1: Configurarea scenei

Înainte de a implementa NavMesh, avem nevoie de o configurație adecvată a scenei:

  1. Creați un nou proiect 3D în Unity.
  2. Adăugați un Plane care să servească drept sol.
  3. Adăugați un Cube sau orice model 3D pentru a reprezenta Playerul. Numele-i Player.
  4. Adăugați un alt Cube sau model 3D pentru a reprezenta NPC-ul. Numele-i NPC.
  5. Plasați Jucătorul și NPC-ul în poziții diferite pe avion.

Pasul 2: Coaceți NavMesh

Pentru a utiliza sistemul NavMesh al Unity, trebuie să coacem rețeaua de navigare:

  1. Selectați planul de sol în Ierarhie.
  2. În Inspector, faceți clic pe Add Component și adăugați un NavMeshSurface.
  3. În componenta NavMeshSurface, asigurați-vă că Planul este marcat ca suprafață pe care se poate merge.
  4. Faceți clic pe butonul Bake din componenta NavMeshSurface pentru a genera NavMesh.
  5. Opțional: dacă aveți obstacole (de exemplu, pereți), asigurați-vă că au componente NavMeshObstacle pentru a bloca mișcarea NPC.

Pasul 3: Adăugarea unui NavMeshAgent

Acum, vom pregăti NPC-ul să folosească calea Unity:

  1. Selectați NPC-ul din Ierarhie.
  2. În Inspector, faceți clic pe Add Component și adăugați un NavMeshAgent.
  3. Ajustați proprietățile NavMeshAgent după cum este necesar, cum ar fi viteza, accelerația și distanța de oprire.

Pasul 4: Scrierea scriptului Chase

În continuare, vom crea un script pentru a face NPC-ul să urmărească Jucătorul:

  1. Faceți clic dreapta în panoul Proiect și selectați Creare > C# Script. Numiți-l NPCChase.
  2. Faceți dublu clic pe script pentru a-l deschide în editorul de cod.
  3. Înlocuiți codul implicit cu următorul:
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);
        }
    }
}

Pasul 5: Atribuirea scriptului și a referințelor pentru player

În cele din urmă, vom aloca scriptul și vom configura referința Player:

  1. Selectați NPC-ul din Ierarhie.
  2. Trageți și plasați scriptul NPCChase pe NPC.
  3. În Inspector, localizați câmpul Player din script.
  4. Trageți Player GameObject din Ierarhie în câmpul Player.

Pasul 6: Testarea scenei

Pentru a-ți testa configurația:

  1. Apăsați butonul Play din editorul Unity.
  2. Deplasați Playerul (de exemplu, folosind tastatura sau intrarea controlerului).
  3. Observați NPC-ul care caută dinamic și îl urmărește pe Jucător, evitând obstacolele acolo unde este cazul.

Opțional: personalizarea comportamentului

Puteți rafina și mai mult comportamentul NPC-ului dvs.:

  • Distanța de oprire: Reglați Distanța de oprire a NavMeshAgent pentru a face ca NPC-ul să se oprească la un anumit interval.
  • Evitarea obstacolelor: Asigurați-vă că obstacolele au componente NavMeshObstacle pentru evitarea precisă.
  • Animații: Folosiți animații pentru a face mișcarea NPC mai realistă, declanșând animații bazate pe viteză.

Concluzie

Am creat un NPC care urmărește dinamic jucătorul folosind sistemul NavMesh al Unity. Această abordare este robustă și poate fi extinsă cu ușurință pentru comportamente AI mai complexe. Experimentați cu diferite setări pentru a adapta calea NPC-ului la nevoile jocului dvs.