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...
NavigationPolygon
Experimental: This class may be changed or removed in future versions.
Hereda: Resource < RefCounted < Object
Una malla de navegación 2D que describe una superficie transitable para la búsqueda de rutas.
Descripción
Se puede crear una malla de navegación procesándola con la ayuda del NavigationServer2D, o añadiendo manualmente vértices y arrays de índices de polígonos convexos.
Para procesar una malla de navegación, debe añadirse al menos un contorno que defina los límites exteriores de la zona procesada.
var nueva_malla_de_navegacion = NavigationPolygon.new()
var contorno_del_limite = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
nueva_malla_de_navegacion.add_outline(contorno_del_limite)
NavigationServer2D.bake_from_source_geometry_data(nueva_malla_de_navegacion, NavigationMeshSourceGeometryData2D.new());
$NavigationRegion2D.navigation_polygon = nueva_malla_de_navegacion
var newNavigationMesh = new NavigationPolygon();
Vector2[] boundingOutline = [new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0)];
newNavigationMesh.AddOutline(boundingOutline);
NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new NavigationMeshSourceGeometryData2D());
GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
Añadiendo vértices e índices de polígonos manualmente.
var nueva_malla_de_navegacion = NavigationPolygon.new()
var nuevos_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
nueva_malla_de_navegacion.vertices = nuevos_vertices
var nuevos_indices_de_poligono = PackedInt32Array([0, 1, 2, 3])
nueva_malla_de_navegacion.add_polygon(nuevos_indices_de_poligono)
$NavigationRegion2D.navigation_polygon = nueva_malla_de_navegacion
var newNavigationMesh = new NavigationPolygon();
Vector2[] newVertices = [new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0)];
newNavigationMesh.Vertices = newVertices;
int[] newPolygonIndices = [0, 1, 2, 3];
newNavigationMesh.AddPolygon(newPolygonIndices);
GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Métodos
void |
add_outline(outline: PackedVector2Array) |
void |
add_outline_at_index(outline: PackedVector2Array, index: int) |
void |
add_polygon(polygon: PackedInt32Array) |
void |
clear() |
void |
|
void |
|
get_outline(idx: int) const |
|
get_outline_count() const |
|
get_parsed_collision_mask_value(layer_number: int) const |
|
get_polygon(idx: int) |
|
get_polygon_count() const |
|
get_vertices() const |
|
void |
|
void |
remove_outline(idx: int) |
void |
set_outline(idx: int, outline: PackedVector2Array) |
void |
set_parsed_collision_mask_value(layer_number: int, value: bool) |
void |
set_vertices(vertices: PackedVector2Array) |
Enumeraciones
enum SamplePartitionType: 🔗
SamplePartitionType SAMPLE_PARTITION_CONVEX_PARTITION = 0
Convex partitioning that results in a navigation mesh with convex polygons.
SamplePartitionType SAMPLE_PARTITION_TRIANGULATE = 1
Triangulation partitioning that results in a navigation mesh with triangle polygons.
SamplePartitionType SAMPLE_PARTITION_MAX = 2
Representa el tamaño del enum SamplePartitionType.
enum ParsedGeometryType: 🔗
ParsedGeometryType PARSED_GEOMETRY_MESH_INSTANCES = 0
Analiza las instancias de malla como geometría de obstrucción. Esto incluye los nodos Polygon2D, MeshInstance2D, MultiMeshInstance2D y TileMap.
Las mallas solo se analizan cuando utilizan un formato de superficie de vértices 2D.
ParsedGeometryType PARSED_GEOMETRY_STATIC_COLLIDERS = 1
Analiza los colisionadores StaticBody2D y TileMap como geometría de obstrucción. El colisionador debe estar en cualquiera de las capas especificadas por parsed_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
Escanea los nodos de un grupo y sus nodos secundarios de forma recursiva en busca de geometría. El grupo se especifica mediante source_geometry_group_name.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2
Utiliza los nodos de un grupo para la geometría. El grupo se especifica mediante source_geometry_group_name.
SourceGeometryMode SOURCE_GEOMETRY_MAX = 3
Representa el tamaño del enum SourceGeometryMode.
Descripciones de Propiedades
La distancia para erosionar/reducir la superficie transitable al procesar la malla de navegación.
Nota: El radio debe ser igual o mayor que 0.0. Si el radio es 0.0, no será posible corregir las superposiciones de contornos no válidas y otros errores de precisión durante el proceso de procesado. Como resultado, algunos obstáculos pueden excluirse incorrectamente de la malla de navegación final, o pueden eliminar los polígonos de la malla de navegación.
Rect2 baking_rect = Rect2(0, 0, 0, 0) 🔗
Si el Rect2 de procesado tiene un área, el baking de la malla de navegación se restringirá a su área de cierre.
Vector2 baking_rect_offset = Vector2(0, 0) 🔗
El desplazamiento de posición aplicado al Rect2 de baking_rect.
The size of the non-navigable border around the bake bounding area defined by the baking_rect Rect2.
In conjunction with the baking_rect the border size can be used to bake tile aligned navigation meshes without the tile edges being shrunk by agent_radius.
El tamaño de celda utilizado para rasterizar los vértices de la malla de navegación. Debe coincidir con el tamaño de celda en el mapa de navegación.
int parsed_collision_mask = 4294967295 🔗
Las capas de física que se escanearán en busca de colisionadores estáticos.
Solo se usa cuando parsed_geometry_type es PARSED_GEOMETRY_STATIC_COLLIDERS o PARSED_GEOMETRY_BOTH.
ParsedGeometryType 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.
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.
StringName source_geometry_group_name = &"navigation_polygon_source_geometry_group" 🔗
void set_source_geometry_group_name(value: StringName)
StringName get_source_geometry_group_name()
El nombre del grupo de nodos que deben analizarse para procesar la geometría de origen.
Solo se usa cuando source_geometry_mode es SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN o SOURCE_GEOMETRY_GROUPS_EXPLICIT.
SourceGeometryMode 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.
Descripciones de Métodos
void add_outline(outline: PackedVector2Array) 🔗
Añade un PackedVector2Array que contiene los vértices de un contorno al array interno que contiene todos los contornos.
void add_outline_at_index(outline: PackedVector2Array, index: int) 🔗
Añade un PackedVector2Array que contiene los vértices de un contorno al array interno que contiene todos los contornos en una posición fija.
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_outlines() 🔗
Limpia el array de los contornos, pero no limpia los vértices y los polígonos que fueron creados por ellos.
void clear_polygons() 🔗
Limpia el array de polígonos, pero no limpia el array de contornos y vértices.
NavigationMesh get_navigation_mesh() 🔗
Devuelve el NavigationMesh resultante de este polígono de navegación. Esta malla de navegación se puede usar para actualizar la malla de navegación de una región con la API NavigationServer3D.region_set_navigation_mesh() directamente.
PackedVector2Array get_outline(idx: int) const 🔗
Devuelve un PackedVector2Array que contiene los vértices de un contorno que se creó en el editor o mediante un script.
int get_outline_count() const 🔗
Devuelve el número de contornos que fueron creados en el editor o por el script.
bool get_parsed_collision_mask_value(layer_number: int) const 🔗
Devuelve si la capa especificada de parsed_collision_mask está habilitada, 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 recuento de todos los polígonos.
PackedVector2Array get_vertices() const 🔗
Devuelve un PackedVector2Array que contiene todos los vértices que se utilizan para crear los polígonos.
void make_polygons_from_outlines() 🔗
Obsoleto: Use NavigationServer2D.parse_source_geometry_data() and NavigationServer2D.bake_from_source_geometry_data() instead.
Crea polígonos a partir de los contornos agregados en el editor o mediante script.
void remove_outline(idx: int) 🔗
Elimina un esquema creado en el editor o por el guión. Tienes que llamar a make_polygons_from_outlines() para que los polígonos se actualicen.
void set_outline(idx: int, outline: PackedVector2Array) 🔗
Cambia un contorno creado en el editor o por el script. Tienes que llamar a make_polygons_from_outlines() para que los polígonos se actualicen.
void set_parsed_collision_mask_value(layer_number: int, value: bool) 🔗
Según value, habilita o deshabilita la capa especificada en parsed_collision_mask, dado un layer_number entre 1 y 32.
void set_vertices(vertices: PackedVector2Array) 🔗
Establece los vértices que pueden ser indexados para crear polígonos con el método add_polygon().