NavigationMesh¶
Inherits: Resource < Reference < Object
用于模拟可步行区域和障碍物的网格。
描述¶
导航网格是多边形的集合,用于定义环境中的哪些区域是可遍历的,以帮助代理在复杂的空间中寻路。
教程¶
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
void |
add_polygon ( PoolIntArray polygon ) |
void |
clear_polygons ( ) |
void |
create_from_mesh ( Mesh mesh ) |
get_collision_mask_bit ( int bit ) const |
|
get_polygon ( int idx ) |
|
get_polygon_count ( ) const |
|
get_vertices ( ) const |
|
void |
set_collision_mask_bit ( int bit, bool value ) |
void |
set_vertices ( PoolVector3Array vertices ) |
枚举¶
enum SamplePartitionType:
SAMPLE_PARTITION_WATERSHED = 0 --- 分水岭分区。如果您预先计算导航网格,通常是最佳选择,如果您有大的开放区域,请使用它。
SAMPLE_PARTITION_MONOTONE = 1 --- 单调分区。如果您想要快速生成导航网格,请使用此选项。
SAMPLE_PARTITION_LAYERS = 2 --- 层分区。用于具有中小型瓷砖的平铺导航网格的不错选择。
SAMPLE_PARTITION_MAX = 3 --- 表示SamplePartitionType枚举的大小。
enum ParsedGeometryType:
PARSED_GEOMETRY_MESH_INSTANCES = 0 --- 将网格实例解析为几何体。这包括 MeshInstance、CSGShape 和 GridMap 节点。
PARSED_GEOMETRY_STATIC_COLLIDERS = 1 --- 将 StaticBody 碰撞器解析为几何体。碰撞器应位于 geometry/collision_mask 指定的任何层中。
PARSED_GEOMETRY_BOTH = 2 --- PARSED_GEOMETRY_MESH_INSTANCES 和 PARSED_GEOMETRY_STATIC_COLLIDERS.
PARSED_GEOMETRY_MAX = 3 --- 表示ParsedGeometryType枚举的大小。
enum SourceGeometryMode:
SOURCE_GEOMETRY_NAVMESH_CHILDREN = 0 --- 递归扫描 NavigationMeshInstance 的子节点以获取几何体。
SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1 --- 以递归方式扫描组中的节点及其子节点以获取几何图形。该组由 geometry/source_group_name 指定。
SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2 --- 使用一个组中的节点进行几何运算。该组由geometry/source_group_name指定。
SOURCE_GEOMETRY_MAX = 3 --- 表示SourceGeometryMode枚举的大小。
属性说明¶
float agent/height
Default |
|
Setter |
set_agent_height(value) |
Getter |
get_agent_height() |
地板到天花板的最小高度,仍然允许被认为是可行走的地板。
注意:烘焙时,这个值会向上取整到最接近的cell/height的倍数。
float agent/max_climb
Default |
|
Setter |
set_agent_max_climb(value) |
Getter |
get_agent_max_climb() |
被认为仍可穿越的最小墙壁高度。
注意:烘焙时,该值将向下舍入到最接近的cell/height的倍数。
float agent/max_slope
Default |
|
Setter |
set_agent_max_slope(value) |
Getter |
get_agent_max_slope() |
认为可行走的最大坡度,单位是度。
float agent/radius
Default |
|
Setter |
set_agent_radius(value) |
Getter |
get_agent_radius() |
侵蚀/缩小远离障碍物的高度场的可行走区域距离。
注意:烘焙时,这个值会向上取整到最接近的cell/size的倍数。
float cell/height
Default |
|
Setter |
set_cell_height(value) |
Getter |
get_cell_height() |
用于字段Y轴单元的尺寸。
float cell/size
Default |
|
Setter |
set_cell_size(value) |
Getter |
get_cell_size() |
用于字段的XZ平面单元尺寸。
float detail/sample_distance
Default |
|
Setter |
set_detail_sample_distance(value) |
Getter |
get_detail_sample_distance() |
生成细分网格时使用的采样距离,以单元为单位。
float detail/sample_max_error
Default |
|
Setter |
set_detail_sample_max_error(value) |
Getter |
get_detail_sample_max_error() |
细节网格表面应偏离高度场的最大距离,以单元格为单位。
float edge/max_error
Default |
|
Setter |
set_edge_max_error(value) |
Getter |
get_edge_max_error() |
简化轮廓的边界边缘应偏离原始原始轮廓的最大距离。
float edge/max_length
Default |
|
Setter |
set_edge_max_length(value) |
Getter |
get_edge_max_length() |
沿网格边界的轮廓的最大允许长度。
注意:烘焙时,这个值会向上取整到最接近的cell/size的倍数。
bool filter/filter_walkable_low_height_spans
Default |
|
Setter |
set_filter_walkable_low_height_spans(value) |
Getter |
get_filter_walkable_low_height_spans() |
如果 true
,如果跨度上方的间隙小于 agent/height,则将可行走范围标记为不可行走。
bool filter/ledge_spans
Default |
|
Setter |
set_filter_ledge_spans(value) |
Getter |
get_filter_ledge_spans() |
如果true
,标记边缘间的跨度为不可行走。
bool filter/low_hanging_obstacles
Default |
|
Setter |
set_filter_low_hanging_obstacles(value) |
Getter |
get_filter_low_hanging_obstacles() |
如果 true
,如果它们的最大值在可行走邻域的 agent/max_climb 内,则将不可行走范围标记为可行走。
int geometry/collision_mask
Setter |
set_collision_mask(value) |
Getter |
get_collision_mask() |
用于扫描静态碰撞的物理层。
仅在geometry/parsed_geometry_type是PARSED_GEOMETRY_STATIC_COLLIDERS或PARSED_GEOMETRY_BOTH时才使用。
ParsedGeometryType geometry/parsed_geometry_type
Default |
|
Setter |
set_parsed_geometry_type(value) |
Getter |
get_parsed_geometry_type() |
决定哪种类型的节点可解析为几何图形。参阅ParsedGeometryType。
SourceGeometryMode geometry/source_geometry_mode
Default |
|
Setter |
set_source_geometry_mode(value) |
Getter |
get_source_geometry_mode() |
烘焙时使用的几何体的源。参阅SourceGeometryMode。
String geometry/source_group_name
Setter |
set_source_group_name(value) |
Getter |
get_source_group_name() |
要扫描的几何体组的名称。
只有当geometry/source_geometry_mode是SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN或SOURCE_GEOMETRY_GROUPS_EXPLICIT时才使用。
float polygon/verts_per_poly
Default |
|
Setter |
set_verts_per_poly(value) |
Getter |
get_verts_per_poly() |
在轮廓到多边形转换过程中生成的多边形允许的最大顶点数。
float region/merge_size
Default |
|
Setter |
set_region_merge_size(value) |
Getter |
get_region_merge_size() |
如果可能的话,任何小于这个尺寸的区域将与较大的区域合并。
注意:这个值将被平方来计算单元格的数量。例如,一个20的值将把单元格的数量设为400。
float region/min_size
Default |
|
Setter |
set_region_min_size(value) |
Getter |
get_region_min_size() |
一个区域被创建的最小尺寸。
注意:该值将被平方,以计算出允许形成孤岛区域的最小单元数。例如,8的值将把单元格的数量设为64。
SamplePartitionType sample_partition_type/sample_partition_type
Default |
|
Setter |
set_sample_partition_type(value) |
Getter |
get_sample_partition_type() |
创建导航网格polys单元的分割算法。参阅SamplePartitionType。
方法说明¶
void add_polygon ( PoolIntArray polygon )
使用调用get_vertices得到的顶点的索引添加一个多边形。
void clear_polygons ( )
清除多边形数组,但不清除顶点数组。
void create_from_mesh ( Mesh mesh )
通过根据 Mesh 设置顶点和索引来初始化导航网格。
返回geometry/collision_mask的指定bit
是否被设置。
PoolIntArray get_polygon ( int idx )
返回包含创建的多边形顶点索引的PoolIntArray。
int get_polygon_count ( ) const
返回导航网格中的多边形数量。
PoolVector3Array get_vertices ( ) const
返回包含用于创建多边形的所有顶点的PoolVector3Array。
如果 value
为 true
,则在 geometry/collision_mask 中设置指定的 bit
。
如果 value
为 false
,则清除 geometry/collision_mask 中指定的 bit
。
void set_vertices ( PoolVector3Array vertices )
设置顶点,然后使用add_polygon方法创建多边形。