NavigationObstacle2D
继承: Node2D < CanvasItem < Node < Object
用于导航的 2D 障碍物,能够将启用了避障处理的代理约束在某个区域之外或之内。
描述
导航中使用的 2D 障碍物,能够将由避障控制的代理约束在某个区域之外或之内。障碍物定义导航地图和轮廓顶点后才能正常工作。
如果障碍物的顶点使用顺时针顺序缠绕,则避障代理会被推入障碍物,否则避障代理就会被推出障碍物。轮廓必须不存在交叉和重叠。
障碍物不是(重新)烘焙导航网格的替代品。障碍物不会改变寻路的结果,障碍物只会修改避障代理的推荐速度,从而影响导航避障代理的移动。
使用顶点的障碍物可以传送至新位置,但不应该每一帧都移动,因为每次移动都需要重新构建避障地图。
教程
属性
| ||
| ||
| ||
| ||
|
方法
get_avoidance_layer_value ( int layer_number ) const | |
get_navigation_map ( ) const | |
get_rid ( ) const | |
void | set_avoidance_layer_value ( int layer_number, bool value ) |
void | set_navigation_map ( RID navigation_map ) |
属性说明
bool avoidance_enabled = true
如果为 true
,则该障碍物会影响使用代理的避障。
int avoidance_layers = 1
决定该障碍物的避障层的位字段。避障掩码中存在匹配位的代理会躲避该障碍物。
float radius = 0.0
设置该障碍物的避障半径。
Vector2 velocity = Vector2(0, 0)
设置该障碍物的期望速度,这样如果(每帧)一直使用相同的速度移动而不是直接跳到某个位置,那么其他代理就能够更好地预测该障碍物的行为。仅影响该障碍物 radius 的避障。不会影响障碍物的静态顶点。
PackedVector2Array vertices = PackedVector2Array()
void set_vertices ( PackedVector2Array value )
PackedVector2Array get_vertices ( )
该障碍物的轮廓顶点。如果这些顶点是按照顺时针顺序缠绕的,那么障碍物就会将其他代理向内推,否则就会向外推。轮廓不能交叉或重叠。如果这些顶点直接跳到了新的位置,那么其他代理可能无法预测这种行为,导致被困在障碍物内。
方法说明
bool get_avoidance_layer_value ( int layer_number ) const
返回 avoidance_layers 位掩码中指定的层是否启用,给定的 layer_number
应在 1 和 32 之间。
RID get_navigation_map ( ) const
返回该 NavigationObstacle 节点的导航地图的 RID。该函数始终返回在 NavigationObstacle 节点上设置的地图,而不是 NavigationServer 上抽象障碍物所使用的地图。如果该障碍物地图使用 NavigationServer API 直接更改,则该 NavigationObstacle 节点将不会察觉该地图的更改。请使用 set_navigation_map 更改 NavigationObstacle 的导航地图,也会更新 NavigationServer 上的障碍物。
RID get_rid ( ) const
返回这个障碍物在 NavigationServer2D 上的 RID。
void set_avoidance_layer_value ( int layer_number, bool value )
根据 value
启用或禁用 avoidance_layers 位掩码中指定的层,给定的 layer_number
应在 1 和 32 之间。
void set_navigation_map ( RID navigation_map )
设置该 NavigationObstacle 节点应使用的导航地图的 RID,并会更新 NavigationServer 上的 obstacle
。
© 版权所有 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.