Godot 4 Navmesh Tutorial

Gwizz
6 Aug 202304:54

Summary

TLDRIn diesem Tutorial erfahren Sie, wie Sie das Nav-Mesh-System in Godot Engine nutzen können, um einfache KI-Bewegungen für NPCs zu erstellen. Der Prozess umfasst das Einrichten einer Navigationsregion, das Erstellen eines Nav-Meshes und das Programmieren eines NPCs, der mithilfe des NavigationAgent3D-Systems auf das Ziel zugeht. Zudem wird gezeigt, wie man zufällige Bewegungen hinzufügt, damit der NPC in der Umgebung umherwandert. Dieser Leitfaden ist ideal für Entwickler, die eine einfache aber effektive KI für ihre Spiele implementieren möchten.

Takeaways

  • 😀 Stellen Sie sicher, dass alle Kollisionsobjekte vor der Verwendung eines NavMeshes erstellt wurden.
  • 😀 Erstellen Sie eine Navigationsregion in 3D und fügen Sie alle gewünschten Kollisionsobjekte hinein.
  • 😀 Um ein NavMesh zu erstellen, fügen Sie ein neues Navigation Mesh hinzu und klicken Sie auf 'Baken', um es zu backen.
  • 😀 Sie können das NavMesh jederzeit erneut backen, um neue Objekte hinzuzufügen.
  • 😀 Um NPCs oder Gegner zu navigieren, fügen Sie den Navigation Agent 3D (oder 2D) hinzu.
  • 😀 Erstellen Sie eine Referenz für den Navigation Agent und definieren Sie die Geschwindigkeit für die Bewegung des NPCs.
  • 😀 Die Zielposition des NPCs kann als Vektor2 gesetzt werden, um den Zielort zu bestimmen.
  • 😀 Im Update-Loop muss der NPC auf das Ziel ausgerichtet werden, wobei nur die Y-Achse rotiert wird.
  • 😀 Berechnen Sie die neue Position und Geschwindigkeit des NPCs, indem Sie den Vektor normalisieren und die Geschwindigkeit anwenden.
  • 😀 Erstellen Sie eine Zufallszahl (RNG), um die Position des NPCs zu randomisieren, und lassen Sie ihn zufällig umherwandern.
  • 😀 Stellen Sie sicher, dass die Y-Position des Ziels kontinuierlich aktualisiert wird, um das richtige Abstandsergebnis zu erhalten.

Q & A

  • Was ist ein NavMesh und warum ist es wichtig in diesem Tutorial?

    -Ein NavMesh (Navigationsnetz) ist ein unsichtbares Gitter, das die Gebirgshindernisse und navigierbaren Flächen in einer Spielwelt definiert. Es ist wichtig, da es es NPCs ermöglicht, effizient zu navigieren, indem sie den besten Weg durch die Umgebung finden.

  • Wie wird das NavMesh im Godot 4 erstellt und gebacken?

    -Zuerst müssen alle Kollisionsobjekte in eine 'NavigationRegion' 3D eingefügt werden. Danach wird ein neues 'Navigation Mesh' erstellt und mit der 'Bake Mesh'-Funktion gebacken, um das Navigationsnetz zu generieren.

  • Warum müssen wir die Y-Position des Ziels ständig anpassen?

    -Die Y-Position des Ziels muss ständig angepasst werden, um sicherzustellen, dass die Berechnung der Distanz korrekt ist, insbesondere bei unebenem Gelände. Andernfalls könnte der NPC Schwierigkeiten haben, sich korrekt zu bewegen.

  • Wie funktioniert das Navigationssystem, wenn ein NPC ein Ziel erreicht?

    -Wenn der NPC das Ziel erreicht, prüft das Skript, ob der Abstand zum Ziel weniger als 0,5 Einheiten beträgt. Falls ja, wird ein neuer zufälliger Zielpunkt innerhalb der festgelegten Kartenbegrenzung gewählt.

  • Welche Bedeutung hat die Variable 'speed' im Skript?

    -Die 'speed'-Variable legt die Geschwindigkeit fest, mit der sich der NPC in Richtung seines Ziels bewegt. Diese Geschwindigkeit kann im Skript angepasst werden, um das Tempo der Bewegung zu variieren.

  • Wie sorgt das Skript dafür, dass der NPC immer in die Richtung seines Ziels blickt?

    -Das Skript verwendet die 'look_at'-Methode, um sicherzustellen, dass der NPC stets in Richtung seines Ziels schaut, wobei die Drehung um die X- und Z-Achse auf 0 gesetzt wird, um nur die Y-Drehung zu erlauben.

  • Was ist der Zweck der 'RandomNumberGenerator' (RNG) im Skript?

    -Die 'RandomNumberGenerator'-Instanz wird verwendet, um zufällige Zielpositionen innerhalb der vorgegebenen Kartenbegrenzung zu generieren. Dies ermöglicht es dem NPC, nach Erreichen eines Ziels eine neue, zufällige Position anzusteuern.

  • Wie wird die Bewegung des NPCs auf dem NavMesh implementiert?

    -Die Bewegung des NPCs erfolgt durch die 'move_and_slide'-Methode, bei der die Geschwindigkeit und die Richtung basierend auf der Differenz zwischen der aktuellen Position des NPCs und dem Ziel berechnet werden.

  • Wie funktioniert das Zufallssystem im Skript bei der Zielwahl?

    -Das Skript verwendet einen zufälligen Wert innerhalb der festgelegten Grenzen für die X- und Z-Achse (zwischen -45 und 45), um neue Zielpunkte zu generieren. Dadurch wanderte der NPC zufällig innerhalb dieses Bereichs.

  • Was passiert, wenn der NPC ein Ziel erreicht und das Skript fortfährt?

    -Sobald der NPC ein Ziel erreicht, wird die Position des Ziels mit 'update_target_location()' aktualisiert und ein neuer zufälliger Zielpunkt ausgewählt, sodass der NPC weiter wandernd bleibt.

Outlines

plate

Этот раздел доступен только подписчикам платных тарифов. Пожалуйста, перейдите на платный тариф для доступа.

Перейти на платный тариф

Mindmap

plate

Этот раздел доступен только подписчикам платных тарифов. Пожалуйста, перейдите на платный тариф для доступа.

Перейти на платный тариф

Keywords

plate

Этот раздел доступен только подписчикам платных тарифов. Пожалуйста, перейдите на платный тариф для доступа.

Перейти на платный тариф

Highlights

plate

Этот раздел доступен только подписчикам платных тарифов. Пожалуйста, перейдите на платный тариф для доступа.

Перейти на платный тариф

Transcripts

plate

Этот раздел доступен только подписчикам платных тарифов. Пожалуйста, перейдите на платный тариф для доступа.

Перейти на платный тариф
Rate This

5.0 / 5 (0 votes)

Связанные теги
GodotNav MeshNPCsProgrammierungTutorial3D NavigationAI SteuerungSpielentwicklungRNGBewegungZufallsgenerator
Вам нужно краткое изложение на английском?