NavigationObstacle¶
实验性: This class may be changed or removed in future versions.
3D障碍物用于影响导航网格烘烤或限制回避控制剂的速度。
描述¶
障碍物需要导航地图和轮廓vertices定义才能正常工作。轮廓不能交叉或重叠,并且被限制在平面投影中。这意味着顶点的y轴被忽略,而是使用障碍物的全局y轴位置进行放置。投影形状被沿y轴的障碍物高度挤压。
当启用affect_navigation_mesh时,可以在导航网格烘焙过程中包含障碍物。它们不会添加可步行的几何形状,相反,它们的作用是丢弃形状内的其他源几何形状。这可用于防止导航网格出现在不需要的地方,例如“立体”几何形状内部或顶部。如果启用carve_navigation_mesh,烘焙形状将不会受到导航网格烘焙偏移的影响,例如代理半径。
对于avoidance_enabled,障碍物可以限制使用代理的回避速度。如果障碍物的顶点按顺时针顺序缠绕,回避剂将被障碍物推入,否则,回避剂将被推出。使用顶点和回避的障碍物可以扭曲到一个新的位置,但不应该每一帧都移动,因为每次变化都需要重建回避图。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
get_avoidance_layer_value(layer_number: int) const |
|
get_navigation_map() const |
|
get_rid() const |
|
void |
set_avoidance_layer_value(layer_number: int, value: bool) |
void |
set_navigation_map(navigation_map: RID) |
属性说明¶
bool affect_navigation_mesh = false 🔗
如果在导航网格烘焙过程中启用并解析,障碍物将丢弃其vertices和height定义形状内的源几何。
bool avoidance_enabled = true 🔗
如果true障碍会影响使用代理的回避。
确定此障碍物的回避层的位域。在其回避掩码上具有匹配位的代理将避开此障碍物。
bool carve_navigation_mesh = false 🔗
如果启用,障碍顶点将雕刻到烘焙导航网格中,其形状不受附加偏移(例如代理半径)的影响。
它仍然会受到烘焙过程的进一步后处理的影响,如边缘和多边形简化。
设置二维回避中使用的障碍物高度。使用代理的二维回避忽略低于或高于它们的障碍物。
设置障碍物的回避半径。
bool use_3d_avoidance = false 🔗
如果true障碍物使用带有障碍物radius的代理影响3D回避。
如果false障碍物使用具有障碍物vertices和障碍物radius的代理影响2D回避。
Vector3 velocity = Vector3(0, 0, 0) 🔗
设置障碍物所需的速度,以便其他代理可以更好地预测障碍物是否以有规律的速度(每帧)移动,而不是扭曲到新的位置。只影响障碍物radius的回避。对障碍物静态顶点不做任何事情。
PackedVector3Array vertices = PackedVector3Array() 🔗
void set_vertices(value: PackedVector3Array)
PackedVector3Array get_vertices()
障碍物的轮廓顶点。如果顶点按顺时针顺序缠绕,代理将被障碍物推入,否则它们将被推出。轮廓不能交叉或重叠。如果使用障碍物的顶点被扭曲到一个新的位置,代理无法预测这种运动,可能会被困在障碍物内。
注意: 返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedVector3Array 。
方法说明¶
bool get_avoidance_layer_value(layer_number: int) const 🔗
返回是否启用avoidance_layers位掩码的指定层,给定介于1和32之间的layer_number。
RID get_navigation_map() const 🔗
返回此NavigationObstacle节点的导航地图的RID。此函数始终返回NavigationObstacle节点上设置的地图,而不是NavigationServer上抽象障碍物的地图。如果直接使用NavigationServer API更改障碍物地图,NavigationObstacle节点将不知道地图更改。使用set_navigation_map()更改NavigationObstacle的导航地图并更新NavigationServer上的障碍物。
返回NavigationServer3D上此障碍物的RID。
void set_avoidance_layer_value(layer_number: int, value: bool) 🔗
基于value,启用或禁用avoidance_layers位掩码中的指定层,给定介于1和32之间的layer_number。
void set_navigation_map(navigation_map: RID) 🔗
设置此NavigationObstacle节点应使用的导航地图的RID,并更新NavigationServer上的障碍物。