Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
NavigationMesh
Expérimental : This class may be changed or removed in future versions.
Hérite de : Resource < RefCounted < Object
Un maillage de navigation qui définit des zones traversables et des obstacles.
Description
Un maillage de navigation est une collection de polygones qui définissent les zones d'un environnement qui peuvent être traversés pour aider les agents dans leur cheminement dans les espaces compliqués.
Tutoriels
Propriétés
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Méthodes
void |
add_polygon(polygon: PackedInt32Array) |
void |
clear() |
void |
|
void |
create_from_mesh(mesh: Mesh) |
get_collision_mask_value(layer_number: int) const |
|
get_polygon(idx: int) |
|
get_polygon_count() const |
|
get_vertices() const |
|
void |
set_collision_mask_value(layer_number: int, value: bool) |
void |
set_vertices(vertices: PackedVector3Array) |
Énumérations
enum SamplePartitionType: 🔗
SamplePartitionType SAMPLE_PARTITION_WATERSHED = 0
Watershed partitioning. Generally the best choice if you precompute the navigation mesh, use this if you have large open areas.
SamplePartitionType SAMPLE_PARTITION_MONOTONE = 1
Partage monotone. Utilisez ceci si vous voulez une génération de maillages de navigation rapide.
SamplePartitionType SAMPLE_PARTITION_LAYERS = 2
Le partitionnement du calque. Un bon choix à utiliser pour la maillage de navigation en carreaux de taille moyenne et petite.
SamplePartitionType SAMPLE_PARTITION_MAX = 3
Représente la taille de l'énumération SamplePartitionType.
enum ParsedGeometryType: 🔗
ParsedGeometryType PARSED_GEOMETRY_MESH_INSTANCES = 0
Parses mesh instances as geometry. This includes MeshInstance3D, CSGShape3D, and GridMap nodes.
ParsedGeometryType PARSED_GEOMETRY_STATIC_COLLIDERS = 1
Parses StaticBody3D colliders as geometry. The collider should be in any of the layers specified by geometry_collision_mask.
ParsedGeometryType PARSED_GEOMETRY_BOTH = 2
À la fois PARSED_GEOMETRY_MESH_INSTANCES et PARSED_GEOMETRY_STATIC_COLLIDERS.
ParsedGeometryType PARSED_GEOMETRY_MAX = 3
Représente la taille de l’enum ParsedGeometryType.
enum SourceGeometryMode: 🔗
SourceGeometryMode SOURCE_GEOMETRY_ROOT_NODE_CHILDREN = 0
Scans the child nodes of the root node recursively for geometry.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1
Scanne les nœuds dans un groupe et leurs nœuds enfants récursivement pour la géométrie. Le groupe est spécifié par geometry_source_group_name.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2
Utilise des nœuds dans un groupe de géométrie. Le groupe est spécifié par geometry_source_group_name.
SourceGeometryMode SOURCE_GEOMETRY_MAX = 3
Représente la taille de l'énumération SourceGeometryMode.
Descriptions des propriétés
La hauteur minimale entre le sol et le plafond qui permettra toujours que la surface au sol soit considérée comme pouvant être traversée.
Note : Pendant le pré-calcul, cette valeur sera arrondie au multiple le plus proche de cell_height.
float agent_max_climb = 0.25 🔗
La hauteur minimale de haie qui est considérée comme toujours pouvant être traversée.
Note : Pendant le pré-calcul, cette valeur sera arrondie au multiple le plus proche de cell_height.
float agent_max_slope = 45.0 🔗
La pente maximale qui est considérée comme pouvant être traversée, en degrés.
The distance to erode/shrink the walkable area of the heightfield away from obstructions.
Note: While baking, this value will be rounded up to the nearest multiple of cell_size.
Note: The radius must be equal or higher than 0.0. If the radius is 0.0, it won't be possible to fix invalid outline overlaps and other precision errors during the baking process. As a result, some obstacles may be excluded incorrectly from the final navigation mesh, or may delete the navigation mesh's polygons.
The size of the non-navigable border around the bake bounding area.
In conjunction with the filter_baking_aabb and a edge_max_error value at 1.0 or below the border size can be used to bake tile aligned navigation meshes without the tile edges being shrunk by agent_radius.
Note: If this value is not 0.0, it will be rounded up to the nearest multiple of cell_size during baking.
La hauteur de cellule utilisée pour rastériser les sommets du maillage de navigation sur l'axe Y. Doit correspondre à la hauteur de cellule sur la carte de navigation.
La taille de cellule utilisée pour rastériser les sommets du maillage de navigation sur le plan XZ. Doit correspondre à la taille de cellule sur la carte de navigation.
float detail_sample_distance = 6.0 🔗
La distance d'échantillonnage à utiliser pour générer le maillage de détail, dans l'unité des cellules.
float detail_sample_max_error = 1.0 🔗
La distance maximale de la surface de maillage de détail devrait s'écarter du champ de hauteur, dans l'unité des cellules.
The maximum distance a simplified contour's border edges should deviate the original raw contour.
La longueur maximale autorisée pour les arêtes du contour le long de la bordure du maillage. Une valeur de 0.0 désactive cette fonctionnalité.
Note : Pendant le pré-calcul, cette valeur sera arrondie vers le haut au multiple le plus proche de cell_size.
AABB filter_baking_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
If the baking AABB has a volume the navigation mesh baking will be restricted to its enclosing area.
Vector3 filter_baking_aabb_offset = Vector3(0, 0, 0) 🔗
Le décalage de position appliqué au AABB de filter_baking_aabb.
bool filter_ledge_spans = false 🔗
If true, marks spans that are ledges as non-walkable.
bool filter_low_hanging_obstacles = false 🔗
If true, marks non-walkable spans as walkable if their maximum is within agent_max_climb of a walkable neighbor.
bool filter_walkable_low_height_spans = false 🔗
Si true, marque les étendues praticables comme non-praticables si l'espace au dessus de l'étendue est inférieur à agent_height.
int geometry_collision_mask = 4294967295 🔗
Les calques de physique pour scanner les collisions statiques.
Seulement utilisé quand geometry_parsed_geometry_type est PARSED_GEOMETRY_STATIC_COLLIDERS ou PARSED_GEOMETRY_BOTH.
ParsedGeometryType geometry_parsed_geometry_type = 2 🔗
void set_parsed_geometry_type(value: ParsedGeometryType)
ParsedGeometryType get_parsed_geometry_type()
Détermine quel type de nœuds seront parsés en tant que géométrie.
SourceGeometryMode geometry_source_geometry_mode = 0 🔗
void set_source_geometry_mode(value: SourceGeometryMode)
SourceGeometryMode get_source_geometry_mode()
La source de la géométrie utilisée lors du pré-calcul.
StringName geometry_source_group_name = &"navigation_mesh_source_group" 🔗
void set_source_group_name(value: StringName)
StringName get_source_group_name()
Le nom du groupe pour scanner la géométrie.
Seulement utilisé lorsque geometry_source_geometry_mode est SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN ou SOURCE_GEOMETRY_GROUPS_EXPLICIT.
float region_merge_size = 20.0 🔗
Toutes les régions ayant une taille inférieure à celle-ci seront fusionnées avec des régions plus grandes si possible.
Note : Cette valeur sera carrée pour calculer le nombre de cellules. Par exemple, une valeur de 20 définira le nombre de cellules à 400.
La taille minimale d'une région pour qu'elle soit créée.
Note : Cette valeur sera fixée pour calculer le nombre minimum de cellules autorisées à former des zones insulaires isolées. Par exemple, une valeur de 8 définira le nombre de cellules à 64.
SamplePartitionType sample_partition_type = 0 🔗
void set_sample_partition_type(value: SamplePartitionType)
SamplePartitionType get_sample_partition_type()
Algorithme de partitionnement pour la création des polygones du maillage de navigation.
float vertices_per_polygon = 6.0 🔗
Le nombre maximal de sommets permis pour les polygones générés pendant le contour du processus de conversion en polygones.
Descriptions des méthodes
void add_polygon(polygon: PackedInt32Array) 🔗
Ajoute un polygone en utilisant les indices des sommets que obtenus avec get_vertices().
void clear() 🔗
Vide les tableaux internes pour les indices de sommets et de polygones.
void clear_polygons() 🔗
Vide le tableau des polygones, mais ne vide pas le tableau des sommets.
void create_from_mesh(mesh: Mesh) 🔗
Initialise le maillage de navigation en définissant les sommets et les indices selon un Mesh.
Note : Le mesh donné doit être du type Mesh.PRIMITIVE_TRIANGLES et avoir un tableau d'indices.
bool get_collision_mask_value(layer_number: int) const 🔗
Renvoie si la couche spécifiée du geometry_collision_mask est activée, étant donné un numéro de couche layer_number entre 1 et 32.
PackedInt32Array get_polygon(idx: int) 🔗
Renvoie un PackedInt32Array contenant les indices des sommets d'un polygone créé.
int get_polygon_count() const 🔗
Renvoie le nombre de polygones dans le maillage de navigation.
PackedVector3Array get_vertices() const 🔗
Renvoie un PackedVector3Array contenant tous les indices utilisés pour créer les polygones.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Selon value, active ou désactive la couche spécifiée dans le geometry_collision_mask, étant donné un numéro de couche layer_number entre 1 et 32.
void set_vertices(vertices: PackedVector3Array) 🔗
Définit les sommets qui peuvent ensuite être indexés pour créer des polygones avec la méthode add_polygon().