.. _doc_real_time_navigation_3d:

Echtzeit-Navigation (3D)

Einführung

Godot bietet zwei Nodes, die für die Echtzeitnavigation in einer 3D-Umgebung verwendet werden können: Navigation und NavigationMeshInstance.

Eine Navigations-Mesh-Instanz wird verwendet, um ein NavigationMesh zu halten, das definiert, zu welchen Bereichen in einer Szene navigiert werden kann. Der Navigation-Node wird dann für die Pfadfindung mit dem Navigations-Mesh verwendet.

Einrichten der Navigation

Um eine Navigation zu einer Szene hinzuzufügen, müssen Sie einen Navigations-Node und dann eine Navigations-Mesh-Instanz als Kind des Navigations-Nodes hinzufügen. Wenn die Navigations-Mesh-Instanz ausgewählt ist, müssen Sie zum Inspektor gehen und ein neues Navigations-Mesh erstellen.

.. image:: img/new_navigation_mesh.png

Klicken Sie auf das Navigations-Mesh und Sie können nun die Eigenschaften ändern, die die Erzeugung dieses Mesh festlegen. Eine vollständige Beschreibung der einzelnen Eigenschaften finden Sie in der Klassenreferenz: NavigationMesh.

Nachdem Sie die gewünschten Änderungen vorgenommen haben, können Sie das Mesh erstellen, indem Sie in der Symbolleiste auf NavMesh erstellen klicken.

.. image:: img/bake_navmesh.png

Sobald das Mesh fertig generiert ist, sollten Sie das transparente Navigations-Mesh über den Bereichen in Ihrer Szene sehen, zu denen navigiert werden kann.

.. image:: img/baked_navmesh.png

Beachten Sie, dass das Navmesh anzeigt, wo der Mittelpunkt eines Objekts liegen kann. Wenn Sie z.B. den Agentenradius auf 0,5 einstellen, dann hat Ihr Navigations-Mesh einen Abstand von 0,5 zu Vorsprüngen oder Wänden, um zu verhindern, dass es in die Wand rein ragt oder an einer Kante hängen bleibt.

Erzeugen eines Pfades

Um einen Pfad zwischen zwei Bereichen auf einer Karte zu erhalten, verwendet man die Navigations-Node-Methode get_simple_path(). Das erste Argument ist ein Vector3 für die Startposition, das nächste ein Vector3 für die Endposition. Das letzte Argument ist ein Boolescher Wert, der angibt, ob Agenten-Eigenschaften eines Navmeshs bei der Erstellung eines Pfades berücksichtigt werden oder nicht.

Die Methode gibt ein PoolVector3Array zurück, das aus Punkten besteht, die einen Pfad bilden. Wenn es keine Möglichkeit gibt, zum Endpunkt zu navigieren, gibt die Methode ein leeres PoolVector3Array zurück.

Offizielles Beispielprojekt

Es gibt ein offizielles Beispielprojekt für die Verwendung der 3D-Navigation. Sie können das Repository hier oder in der Asset-Bibliothek finden.