NavigationPolygon
继承: Resource < RefCounted < Object
2D 导航网格,描述用于寻路的可穿越表面。
描述
导航网格可以通过在 NavigationServer2D 的帮助下烘焙它来创建,也可以通过手动添加顶点和凸多边形索引数组来创建。
要烘焙导航网格,至少需要添加一个轮廓来定义烘焙区域的外部边界。
GDScriptC#
var new_navigation_mesh = NavigationPolygon.new()
var bounding_outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
new_navigation_mesh.add_outline(bounding_outline)
NavigationServer2D.bake_from_source_geometry_data(new_navigation_mesh, NavigationMeshSourceGeometryData2D.new());
$NavigationRegion2D.navigation_polygon = new_navigation_mesh
var newNavigationMesh = new NavigationPolygon();
var boundingOutline = new Vector2[] { 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;
手动添加顶点和多边形索引。
GDScriptC#
var new_navigation_mesh = NavigationPolygon.new()
var new_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
new_navigation_mesh.vertices = new_vertices
var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])
new_navigation_mesh.add_polygon(new_polygon_indices)
$NavigationRegion2D.navigation_polygon = new_navigation_mesh
var newNavigationMesh = new NavigationPolygon();
var newVertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) };
newNavigationMesh.Vertices = newVertices;
var newPolygonIndices = new int[] { 0, 1, 2, 3 };
newNavigationMesh.AddPolygon(newPolygonIndices);
GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
教程
属性
| ||
| ||
| ||
| ||
| ||
|
方法
void | add_outline ( PackedVector2Array outline ) |
void | add_outline_at_index ( PackedVector2Array outline, int index ) |
void | add_polygon ( PackedInt32Array polygon ) |
void | clear ( ) |
void | clear_outlines ( ) |
void | clear_polygons ( ) |
get_outline ( int idx ) const | |
get_outline_count ( ) const | |
get_parsed_collision_mask_value ( int layer_number ) const | |
get_polygon ( int idx ) | |
get_polygon_count ( ) const | |
get_vertices ( ) const | |
void | |
void | remove_outline ( int idx ) |
void | set_outline ( int idx, PackedVector2Array outline ) |
void | set_parsed_collision_mask_value ( int layer_number, bool value ) |
void | set_vertices ( PackedVector2Array vertices ) |
枚举
enum ParsedGeometryType:
ParsedGeometryType PARSED_GEOMETRY_MESH_INSTANCES = 0
将网格实例解析为障碍几何体。这包括 Polygon2D、MeshInstance2D、MultiMeshInstance2D 和 TileMap 节点。
仅当网格使用 2D 顶点表面格式时才会对其进行解析。
ParsedGeometryType PARSED_GEOMETRY_STATIC_COLLIDERS = 1
将 StaticBody2D 和 TileMap 碰撞器解析为障碍几何体。碰撞器应在由 parsed_collision_mask 指定的层中。
ParsedGeometryType PARSED_GEOMETRY_BOTH = 2
PARSED_GEOMETRY_MESH_INSTANCES 和 PARSED_GEOMETRY_STATIC_COLLIDERS.
ParsedGeometryType PARSED_GEOMETRY_MAX = 3
代表 ParsedGeometryType 枚举的大小。
enum SourceGeometryMode:
SourceGeometryMode SOURCE_GEOMETRY_ROOT_NODE_CHILDREN = 0
在根节点的子节点中递归扫描几何体。
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1
以递归方式扫描组中的节点及其子节点以获取几何图形。该组由 source_geometry_group_name 指定。
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2
将组中的节点用于几何。该组由 source_geometry_group_name 指定。
SourceGeometryMode SOURCE_GEOMETRY_MAX = 3
代表 SourceGeometryMode 枚举的大小。
属性说明
float agent_radius = 10.0
烘焙导航网格时侵蚀/收缩可行走表面的距离。
float cell_size = 1.0
用于将导航网格顶点栅格化的单元格大小。必须与导航地图上的单元格大小相匹配。
int parsed_collision_mask = 4294967295
用于扫描静态碰撞器的物理层。
仅在 parsed_geometry_type 是 PARSED_GEOMETRY_STATIC_COLLIDERS 或 PARSED_GEOMETRY_BOTH 时才使用。
ParsedGeometryType parsed_geometry_type = 2
void set_parsed_geometry_type ( ParsedGeometryType value )
ParsedGeometryType get_parsed_geometry_type ( )
决定哪种类型的节点可解析为几何图形。可能的取值见 ParsedGeometryType。
StringName source_geometry_group_name = &"navigation_polygon_source_geometry_group"
void set_source_geometry_group_name ( StringName value )
StringName get_source_geometry_group_name ( )
应被解析以烘焙源几何体的节点的组名称。
只有当 source_geometry_mode 是 SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN 或 SOURCE_GEOMETRY_GROUPS_EXPLICIT 时才使用。
SourceGeometryMode source_geometry_mode = 0
void set_source_geometry_mode ( SourceGeometryMode value )
SourceGeometryMode get_source_geometry_mode ( )
烘焙时使用的几何体的来源。可能的取值见 SourceGeometryMode。
方法说明
void add_outline ( PackedVector2Array outline )
将包含轮廓顶点的 PackedVector2Array 追加到包含所有轮廓的内部数组。
void add_outline_at_index ( PackedVector2Array outline, int index )
将一个包含轮廓顶点的 PackedVector2Array 添加到包含固定位置处的所有轮廓的内部数组。
void add_polygon ( PackedInt32Array polygon )
使用调用 get_vertices 得到的顶点的索引添加一个多边形。
void clear ( )
清除顶点和多边形索引的内部数组。
void clear_outlines ( )
清除轮廓数组,但不清除顶点和由顶点创建的多边形。
void clear_polygons ( )
清除多边形数组,但不清除轮廓和顶点数组。
NavigationMesh get_navigation_mesh ( )
返回由该导航多边形产生的 NavigationMesh。该导航网格可用于使用 NavigationServer3D.region_set_navigation_mesh API 直接更新区块的导航网格(因为 2D 在幕后使用 3D 服务器)。
PackedVector2Array get_outline ( int idx ) const
返回一个 PackedVector2Array,其中包含在编辑器中或通过脚本创建的轮廓的顶点。
int get_outline_count ( ) const
返回在编辑器或脚本中创建的轮廓的数量。
bool get_parsed_collision_mask_value ( int layer_number ) const
返回 parsed_collision_mask 中是否启用了指定的层,给定的 layer_number
应在 1 和 32 之间。
PackedInt32Array get_polygon ( int idx )
返回创建多边形的顶点索引,形式为 PackedInt32Array。
int get_polygon_count ( ) const
返回多边形的数量。
PackedVector2Array get_vertices ( ) const
返回一个 PackedVector2Array,其中包含用于创建多边形的所有顶点。
void make_polygons_from_outlines ( )
从编辑器中或通过脚本添加的轮廓创建多边形。
已弃用。该函数已弃用,并且可能会在将来的版本中移除。请改用 NavigationServer2D.parse_source_geometry_data 和 NavigationServer2D.bake_from_source_geometry_data。
void remove_outline ( int idx )
删除在编辑器或脚本中创建的轮廓。你必须调用 make_polygons_from_outlines 来更新多边形。
void set_outline ( int idx, PackedVector2Array outline )
更改在编辑器或脚本中创建的轮廓。你必须调用 make_polygons_from_outlines 来更新多边形。
void set_parsed_collision_mask_value ( int layer_number, bool value )
根据 value
,启用或禁用 parsed_collision_mask 中指定的层,给定的 layer_number
应在 1 和 32 之间。
void set_vertices ( PackedVector2Array vertices )
设置顶点,可以使用 add_polygon 方法对其进行索引,创建多边形。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.