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
Particionado convexo que produce una malla de navegación con polígonos convexos.
SamplePartitionType SAMPLE_PARTITION_TRIANGULATE = 1
Particionado de triangulación que produce una malla de navegación con polígonos triangulares.
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 procesado 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()
Determines which type of nodes will be parsed as geometry.
SamplePartitionType sample_partition_type = 0 🔗
void set_sample_partition_type(value: SamplePartitionType)
SamplePartitionType get_sample_partition_type()
Partitioning algorithm for creating the navigation mesh polys.
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()
The source of the geometry used when baking.
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().