So lässt man mit NavMesh einen NPC den Spieler in Unity verfolgen

In diesem Tutorial verwenden wir Unitys NavMesh-System, um einen NPC zu erstellen, der den Spieler verfolgt. NavMesh ermöglicht effiziente Wegfindung und Hindernisvermeidung und ist somit ideal für KI-Verhalten in 3D-Umgebungen.

Schritt 1: Einrichten der Szene

Bevor wir NavMesh implementieren, benötigen wir ein entsprechendes Szenen-Setup:

  1. Erstellen Sie ein neues 3D-Projekt in Unity.
  2. Fügen Sie eine Ebene als Boden hinzu.
  3. Fügen Sie einen Würfel oder ein beliebiges 3D-Modell hinzu, um den Spieler darzustellen. Nennen Sie es Spieler.
  4. Fügen Sie ein weiteres Cube oder 3D-Modell hinzu, um den NPC darzustellen. Nennen Sie es NPC.
  5. Platzieren Sie den Spieler und den NPC an verschiedenen Positionen auf der Ebene.

Schritt 2: Backen des NavMesh

Um das NavMesh-System von Unity zu verwenden, müssen wir das Navigationsnetz backen:

  1. Wählen Sie die Grundebene in der Hierarchie aus.
  2. Klicken Sie im Inspektor auf Komponente hinzufügen und fügen Sie eine NavMeshSurface hinzu.
  3. Stellen Sie in der NavMeshSurface-Komponente sicher, dass die Ebene als begehbare Oberfläche markiert ist.
  4. Klicken Sie in der NavMeshSurface-Komponente auf die Schaltfläche Bake, um das NavMesh zu generieren.
  5. Optional: Wenn Sie Hindernisse haben (z. B. Wände), stellen Sie sicher, dass sie über NavMeshObstacle-Komponenten verfügen, um die Bewegung von NPCs zu blockieren.

Schritt 3: Hinzufügen eines NavMeshAgent

Jetzt bereiten wir den NPC darauf vor, die Pfadfindung von Unity zu verwenden:

  1. Wählen Sie den NPC in der Hierarchie aus.
  2. Klicken Sie im Inspektor auf Komponente hinzufügen und fügen Sie einen NavMeshAgent hinzu.
  3. Passen Sie die NavMeshAgent-Eigenschaften wie Geschwindigkeit, Beschleunigung und Bremsweg nach Bedarf an.

Schritt 4: Das Chase-Skript schreiben

Als Nächstes erstellen wir ein Skript, mit dem der NPC den Spieler verfolgt:

  1. Klicken Sie mit der rechten Maustaste in das Projektfenster und wählen Sie Erstellen > C#-Skript. Nennen Sie es NPCChase.
  2. Doppelklicken Sie auf das Skript, um es in Ihrem Code-Editor zu öffnen.
  3. Ersetzen Sie den Standardcode durch Folgendes:
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);
        }
    }
}

Schritt 5: Zuweisen des Skripts und der Player-Referenz

Zum Schluss weisen wir das Skript zu und richten die Player-Referenz ein:

  1. Wählen Sie den NPC in der Hierarchie aus.
  2. Ziehen Sie das Skript NPCChase per Drag & Drop auf den NPC.
  3. Suchen Sie im Inspector das Feld Player im Skript.
  4. Ziehen Sie das Player-GameObject aus der Hierarchie in das Player-Feld.

Schritt 6: Testen der Szene

So testen Sie Ihr Setup:

  1. Drücken Sie die Play-Taste im Unity-Editor.
  2. Bewegen Sie den Player (z. B. mithilfe der Tastatur oder Controller-Eingabe).
  3. Beobachten Sie, wie der NPC dynamisch den Weg findet und den Spieler verfolgt und dabei gegebenenfalls Hindernissen ausweicht.

Optional: Anpassen des Verhaltens

Sie können das Verhalten Ihres NPCs weiter verfeinern:

  • Anhalteweg: Passen Sie den Anhalteweg des NavMeshAgent an, damit der NPC in einer bestimmten Entfernung anhält.
  • Hindernisvermeidung: Stellen Sie sicher, dass Hindernisse über NavMeshObstacle-Komponenten verfügen, um eine genaue Vermeidung zu ermöglichen.
  • Animationen: Verwenden Sie Animationen, um die Bewegung der NPCs realistischer zu gestalten, indem Sie geschwindigkeitsbasierte Animationen auslösen.

Abschluss

Wir haben einen NPC erstellt, der den Spieler mithilfe des NavMesh-Systems von Unity dynamisch verfolgt. Dieser Ansatz ist robust und kann problemlos für komplexere KI-Verhaltensweisen erweitert werden. Experimentieren Sie mit verschiedenen Einstellungen, um die Wegfindung des NPCs an die Anforderungen Ihres Spiels anzupassen.