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
Experimental: This class may be changed or removed in future versions.
Hereda: Resource < RefCounted < Object
Una malla de navegación que define las áreas transitables y los obstáculos.
Descripción
Una malla de navegación es una colección de polígonos que definen qué áreas de un entorno son transitables para ayudar a los agentes en la búsqueda de rutas a través de espacios complicados.
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Métodos
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) |
Enumeraciones
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
Partición monótona. Usa esta si quieres una generación rápida de la malla de navegación.
SamplePartitionType SAMPLE_PARTITION_LAYERS = 2
Partición por capas. Buena opción para usar en mallas de navegación con tiles de tamaño mediano y pequeño.
SamplePartitionType SAMPLE_PARTITION_MAX = 3
Representa el tamaño del enum 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
Both PARSED_GEOMETRY_MESH_INSTANCES and PARSED_GEOMETRY_STATIC_COLLIDERS.
ParsedGeometryType PARSED_GEOMETRY_MAX = 3
Representa el tamaño del 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
Scans nodes in a group and their child nodes recursively for geometry. The group is specified by geometry_source_group_name.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2
Uses nodes in a group for geometry. The group is specified by geometry_source_group_name.
SourceGeometryMode SOURCE_GEOMETRY_MAX = 3
Representa el tamaño del enum SourceGeometryMode.
Descripciones de Propiedades
La altura mínima del piso al techo que aún permitirá que el área del piso se considere transitable.
Nota: Al hornear, este valor se redondeará al múltiplo más cercano de cell_height.
float agent_max_climb = 0.25 🔗
La altura mínima del borde que se considera aún transitable.
Nota: Durante el baking, este valor se redondeará al múltiplo más cercano de cell_height.
float agent_max_slope = 45.0 🔗
La pendiente máxima que se considera transitable, en grados.
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.
El tamaño del borde no navegable alrededor del área de delimitación de baking.
En conjunto con el filter_baking_aabb y un valor edge_max_error de 1.0 o inferior, el tamaño del borde se puede usar para hornear mallas de navegación alineadas con tiles sin que los bordes de los tiles se encojan por agent_radius.
Nota: Si este valor no es 0.0, se redondeará al múltiplo más cercano de cell_size durante el baking.
La altura de celda utilizada para rasterizar los vértices de la malla de navegación en el eje Y. Debe coincidir con la altura de celda en el mapa de navegación.
El tamaño de celda utilizado para rasterizar los vértices de la malla de navegación en el plano XZ. Debe coincidir con el tamaño de celda en el mapa de navegación.
float detail_sample_distance = 6.0 🔗
La distancia de muestreo a usar al generar la malla de detalle, en unidades de celda.
float detail_sample_max_error = 1.0 🔗
La distancia máxima que la superficie de la malla de detalle debe desviarse del campo de altura, en unidades de celda.
La distancia máxima que los bordes del contorno simplificado deben desviarse del contorno original sin procesar.
La longitud máxima permitida para los bordes del contorno a lo largo del borde de la malla. Un valor de 0.0 desactiva esta característica.
Nota: Durante el baking, este valor se redondeará al múltiplo más cercano de cell_size.
AABB filter_baking_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
Si el volumen del AABB de baking es el de una caja, el baking de la malla de navegación estará restringido a su área contenida.
Vector3 filter_baking_aabb_offset = Vector3(0, 0, 0) 🔗
El desplazamiento de posición aplicado al filter_baking_aabb AABB.
bool filter_ledge_spans = false 🔗
If true, marks spans that are ledges as non-walkable.
bool filter_low_hanging_obstacles = false 🔗
Si es true, marca los span no transitables como transitables si sus máximos están dentro de agent_max_climb de un vecino transitable.
bool filter_walkable_low_height_spans = false 🔗
If true, marks walkable spans as not walkable if the clearance above the span is less than agent_height.
int geometry_collision_mask = 4294967295 🔗
Las capas físicas a escanear en busca de colliders estáticos.
Solo se usa cuando geometry_parsed_geometry_type es PARSED_GEOMETRY_STATIC_COLLIDERS o PARSED_GEOMETRY_BOTH.
ParsedGeometryType geometry_parsed_geometry_type = 2 🔗
void set_parsed_geometry_type(value: ParsedGeometryType)
ParsedGeometryType get_parsed_geometry_type()
Determina qué tipo de nodos se analizarán como geometría.
SourceGeometryMode geometry_source_geometry_mode = 0 🔗
void set_source_geometry_mode(value: SourceGeometryMode)
SourceGeometryMode get_source_geometry_mode()
La fuente de la geometría utilizada al hornear.
StringName geometry_source_group_name = &"navigation_mesh_source_group" 🔗
void set_source_group_name(value: StringName)
StringName get_source_group_name()
El nombre del grupo a escanear en busca de geometría.
Solo se usa cuando geometry_source_geometry_mode es SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN o SOURCE_GEOMETRY_GROUPS_EXPLICIT.
float region_merge_size = 20.0 🔗
Cualquier región con un tamaño menor que este se fusionará con regiones más grandes si es posible.
Nota: Este valor se elevará al cuadrado para calcular el número de celdas. Por ejemplo, un valor de 20 establecerá el número de celdas en 400.
El tamaño mínimo de una región para que sea creada.
Nota: Este valor se elevará al cuadrado para calcular el número mínimo de celdas permitidas para formar áreas de islas aisladas. Por ejemplo, un valor de 8 establecerá el número de celdas en 64.
SamplePartitionType sample_partition_type = 0 🔗
void set_sample_partition_type(value: SamplePartitionType)
SamplePartitionType get_sample_partition_type()
Algoritmo de partición para crear los polígonos de la malla de navegación.
float vertices_per_polygon = 6.0 🔗
El número máximo de vértices permitidos para los polígonos generados durante el proceso de conversión de contorno a polígono.
Descripciones de Métodos
void add_polygon(polygon: PackedInt32Array) 🔗
Añade un polígono usando los índices de los vértices que obtienes al llamar a get_vertices().
void clear() 🔗
Limpia los arrays internos para los vértices e índices de polígonos.
void clear_polygons() 🔗
Limpia el array de polígonos, pero no borra el array de vértices.
void create_from_mesh(mesh: Mesh) 🔗
Inicializa la malla de navegación estableciendo los vértices e índices de acuerdo con una Mesh.
Nota: La mesh dada debe ser de tipo Mesh.PRIMITIVE_TRIANGLES y tener un array de índice.
bool get_collision_mask_value(layer_number: int) const 🔗
Devuelve si la capa especificada de la geometry_collision_mask está habilitada o no, dado un layer_number entre 1 y 32.
PackedInt32Array get_polygon(idx: int) 🔗
Devuelve un PackedInt32Array que contiene los índices de los vértices de un polígono creado.
int get_polygon_count() const 🔗
Devuelve el número de polígonos en la malla de navegación.
PackedVector3Array get_vertices() const 🔗
Devuelve un PackedVector3Array que contiene todos los vértices que se están utilizando para crear los polígonos.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Basado en value, activa o desactiva la capa especificada en la geometry_collision_mask, dado un layer_number entre 1 y 32.
void set_vertices(vertices: PackedVector3Array) 🔗
Establece los vértices que pueden ser indexados para crear polígonos con el método add_polygon().