NavigationMesh

Inherits: Resource < Reference < Object

用于模拟可步行区域和障碍物的网格。

描述

导航网格是多边形的集合,用于定义环境中的哪些区域是可遍历的,以帮助代理在复杂的空间中寻路。

教程

属性

float

agent/height

2.0

float

agent/max_climb

0.9

float

agent/max_slope

45.0

float

agent/radius

0.6

float

cell/height

0.2

float

cell/size

0.3

float

detail/sample_distance

6.0

float

detail/sample_max_error

1.0

float

edge/max_error

1.3

float

edge/max_length

12.0

bool

filter/filter_walkable_low_height_spans

false

bool

filter/ledge_spans

false

bool

filter/low_hanging_obstacles

false

int

geometry/collision_mask

ParsedGeometryType

geometry/parsed_geometry_type

0

SourceGeometryMode

geometry/source_geometry_mode

0

String

geometry/source_group_name

float

polygon/verts_per_poly

6.0

float

region/merge_size

20.0

float

region/min_size

8.0

SamplePartitionType

sample_partition_type/sample_partition_type

0

方法

void

add_polygon ( PoolIntArray polygon )

void

clear_polygons ( )

void

create_from_mesh ( Mesh mesh )

bool

get_collision_mask_bit ( int bit ) const

PoolIntArray

get_polygon ( int idx )

int

get_polygon_count ( ) const

PoolVector3Array

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:


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枚举的大小。

属性说明

Default

2.0

Setter

set_agent_height(value)

Getter

get_agent_height()

地板到天花板的最小高度,仍然允许被认为是可行走的地板。

注意:烘焙时,这个值会向上取整到最接近的cell/height的倍数。


Default

0.9

Setter

set_agent_max_climb(value)

Getter

get_agent_max_climb()

被认为仍可穿越的最小墙壁高度。

注意:烘焙时,该值将向下舍入到最接近的cell/height的倍数。


Default

45.0

Setter

set_agent_max_slope(value)

Getter

get_agent_max_slope()

认为可行走的最大坡度,单位是度。


Default

0.6

Setter

set_agent_radius(value)

Getter

get_agent_radius()

侵蚀/缩小远离障碍物的高度场的可行走区域距离。

注意:烘焙时,这个值会向上取整到最接近的cell/size的倍数。


Default

0.2

Setter

set_cell_height(value)

Getter

get_cell_height()

用于字段Y轴单元的尺寸。


Default

0.3

Setter

set_cell_size(value)

Getter

get_cell_size()

用于字段的XZ平面单元尺寸。


  • float detail/sample_distance

Default

6.0

Setter

set_detail_sample_distance(value)

Getter

get_detail_sample_distance()

生成细分网格时使用的采样距离,以单元为单位。


  • float detail/sample_max_error

Default

1.0

Setter

set_detail_sample_max_error(value)

Getter

get_detail_sample_max_error()

细节网格表面应偏离高度场的最大距离,以单元格为单位。


Default

1.3

Setter

set_edge_max_error(value)

Getter

get_edge_max_error()

简化轮廓的边界边缘应偏离原始原始轮廓的最大距离。


Default

12.0

Setter

set_edge_max_length(value)

Getter

get_edge_max_length()

沿网格边界的轮廓的最大允许长度。

注意:烘焙时,这个值会向上取整到最接近的cell/size的倍数。


  • bool filter/filter_walkable_low_height_spans

Default

false

Setter

set_filter_walkable_low_height_spans(value)

Getter

get_filter_walkable_low_height_spans()

如果 true,如果跨度上方的间隙小于 agent/height,则将可行走范围标记为不可行走。


  • bool filter/ledge_spans

Default

false

Setter

set_filter_ledge_spans(value)

Getter

get_filter_ledge_spans()

如果true,标记边缘间的跨度为不可行走。


  • bool filter/low_hanging_obstacles

Default

false

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_typePARSED_GEOMETRY_STATIC_COLLIDERSPARSED_GEOMETRY_BOTH时才使用。


Default

0

Setter

set_parsed_geometry_type(value)

Getter

get_parsed_geometry_type()

决定哪种类型的节点可解析为几何图形。参阅ParsedGeometryType


Default

0

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_modeSOURCE_GEOMETRY_GROUPS_WITH_CHILDRENSOURCE_GEOMETRY_GROUPS_EXPLICIT时才使用。


  • float polygon/verts_per_poly

Default

6.0

Setter

set_verts_per_poly(value)

Getter

get_verts_per_poly()

在轮廓到多边形转换过程中生成的多边形允许的最大顶点数。


Default

20.0

Setter

set_region_merge_size(value)

Getter

get_region_merge_size()

如果可能的话,任何小于这个尺寸的区域将与较大的区域合并。

注意:这个值将被平方来计算单元格的数量。例如,一个20的值将把单元格的数量设为400。


Default

8.0

Setter

set_region_min_size(value)

Getter

get_region_min_size()

一个区域被创建的最小尺寸。

注意:该值将被平方,以计算出允许形成孤岛区域的最小单元数。例如,8的值将把单元格的数量设为64。


Default

0

Setter

set_sample_partition_type(value)

Getter

get_sample_partition_type()

创建导航网格polys单元的分割算法。参阅SamplePartitionType

方法说明

使用调用get_vertices得到的顶点的索引添加一个多边形。


  • void clear_polygons ( )

清除多边形数组,但不清除顶点数组。


  • void create_from_mesh ( Mesh mesh )

通过根据 Mesh 设置顶点和索引来初始化导航网格。


  • bool get_collision_mask_bit ( int bit ) const

返回geometry/collision_mask的指定bit是否被设置。


返回包含创建的多边形顶点索引的PoolIntArray


  • int get_polygon_count ( ) const

返回导航网格中的多边形数量。


返回包含用于创建多边形的所有顶点的PoolVector3Array


  • void set_collision_mask_bit ( int bit, bool value )

如果 valuetrue,则在 geometry/collision_mask 中设置指定的 bit

如果 valuefalse,则清除 geometry/collision_mask 中指定的 bit


设置顶点,然后使用add_polygon方法创建多边形。