Navigation en Temps Réel (3D)

Introduction

Godot fournit deux nœuds qui peuvent être utilisés pour réaliser une navigation en temps réel dans un environnement 3D, Navigation et NavigationMeshInstance.

Une instance de maillage de navigation est utilisée pour contenir un NavigationMesh, qui définit les zones d'une scène vers lesquelles on peut naviguer. Le nœud Navigation est ensuite utilisé pour le pathfinding avec le maillage de navigation.

Configurer la navigation

Pour ajouter la navigation à une scène, vous devez ajouter un nœud de navigation, puis une instance de maillage de navigation comme enfant du nœud de navigation. Une fois l'instance de maillage de navigation sélectionnée, vous devez aller dans l'inspecteur et créer un nouveau maillage de navigation.

../../_images/new_navigation_mesh.png

Cliquez sur le maillage de navigation et vous pouvez maintenant modifier les propriétés qui définissent comment le maillage de navigation est généré. Vous pouvez trouver une description complète de chacune des propriétés dans la référence de la classe ici : NavigationMesh.

Après avoir effectué les modifications souhaitées, le maillage peut être généré en cliquant sur Bake NavMesh dans la barre d'outils.

../../_images/bake_navmesh.png

Une fois la génération du maillage terminée, vous devriez voir le maillage de navigation transparent au-dessus des zones de votre scène vers lesquelles vous pouvez naviguer.

../../_images/baked_navmesh.png

Gardez à l'esprit que le maillage de navigation indique où le centre d'une entité peut aller. Par exemple, si vous définissez le rayon de l'agent à 0,5, votre maillage de navigation sera à une distance de 0,5 de tout rebord ou mur afin d'éviter de s'accrocher au mur ou de se suspendre au bord.

Générer un chemin

Pour obtenir un chemin entre deux zones sur une carte, vous utilisez la méthode du noeud de navigation get_simple_path(). Le premier argument est un Vector3 de l'emplacement de départ, le suivant est un Vector3 de l'emplacement d'arrivée. Et le dernier argument est un booléen qui indique si les propriétés de l'agent d'un navmesh sont prises en compte ou non lors de la génération d'un chemin.

La méthode retournera un PoolVector3Array constitué de points qui forment un chemin. S'il n'y a aucun moyen de naviguer jusqu'à l'emplacement final, la méthode renverra un PoolVector3Array vide.

Exemple de projet officiel

Il existe un projet d'exemple officiel sur la façon d'utiliser la navigation 3D. Vous pouvez trouver le dépôt ici. Vous pouvez également le trouver dans la bibliothèque d'asset.