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方法创建多边形。