NavigationRegion2D

继承: Node2D < CanvasItem < Node < Object

可达的 2D 地区,NavigationAgent2D 能够将其用于寻路。

描述

可达的 2D 地区,基于 NavigationPolygonNavigationAgent2D 能够将其用于寻路。

两个地区如果存在相近的边就可以互相连接。连接两条边所需的顶点最小间距可以通过 NavigationServer2D.map_set_edge_connection_margin 设置。

注意:两个地区存在重叠部分并不足以让它们相连。必须有相近的边。

从一个地区进入另一个地区的寻路成本可以使用 enter_cost 控制。

注意:起点位于该地区时,这个值不计入路径成本。

在该地区中行进的寻路成本可以使用乘数 travel_cost 控制。

注意:该节点会对这些属性进行缓存,因此,你在 NavigationServer2D 中对底层的地区 RID 进行的修改不会在该节点的属性中。

教程

属性

int

avoidance_layers

1

bool

constrain_avoidance

false

bool

enabled

true

float

enter_cost

0.0

int

navigation_layers

1

NavigationPolygon

navigation_polygon

float

travel_cost

1.0

bool

use_edge_connections

true

方法

void

bake_navigation_polygon ( bool on_thread=true )

bool

get_avoidance_layer_value ( int layer_number ) const

bool

get_navigation_layer_value ( int layer_number ) const

RID

get_navigation_map ( ) const

RID

get_region_rid ( ) const

RID

get_rid ( ) const

void

set_avoidance_layer_value ( int layer_number, bool value )

void

set_navigation_layer_value ( int layer_number, bool value )

void

set_navigation_map ( RID navigation_map )


信号

bake_finished ( )

当导航多边形烘焙操作完成时触发。


navigation_polygon_changed ( )

当使用的导航多边形被替换或对当前导航多边形内部的更改被提交时发出。


属性说明

int avoidance_layers = 1

  • void set_avoidance_layers ( int value )

  • int get_avoidance_layers ( )

位域,确定避障约束的所有避障层。


bool constrain_avoidance = false

  • void set_constrain_avoidance ( bool value )

  • bool get_constrain_avoidance ( )

如果为 true,则会将避障代理的避障掩码位与导航多边形的 avoidance_layers 位相匹配。由于每个导航多边形轮廓都会创建一个障碍物,而每个多边形边缘都会创建一条避障线约束,因此为了提高性能,要尽量保持导航多边形的形状尽可能简单。

实验性:这是一个实验性功能,不应在生产中使用,因为代理在导航多边形的角和边缘,特别是在高帧率下,可能会被卡住。


bool enabled = true

  • void set_enabled ( bool value )

  • bool is_enabled ( )

决定该 NavigationRegion2D 是启用还是禁用。


float enter_cost = 0.0

  • void set_enter_cost ( float value )

  • float get_enter_cost ( )

当寻路从另一个区块的导航网格进入该区块的导航网格时,enter_cost 值将被加到路径距离,以确定最短路径。


int navigation_layers = 1

  • void set_navigation_layers ( int value )

  • int get_navigation_layers ( )

确定该区块所属的所有导航层的位字段。当使用 NavigationServer2D.map_get_path 请求一个路径时,可以检查这些导航层。


NavigationPolygon navigation_polygon

使用的 NavigationPolygon 资源。


float travel_cost = 1.0

  • void set_travel_cost ( float value )

  • float get_travel_cost ( )

当寻路在该区块的导航网格内移动时,将行进距离乘以 travel_cost 以确定最短路径。


bool use_edge_connections = true

  • void set_use_edge_connections ( bool value )

  • bool get_use_edge_connections ( )

如果启用,导航区块将使用边缘连接来与位于导航地图连接边距范围内的其他导航区块相连接。


方法说明

void bake_navigation_polygon ( bool on_thread=true )

烘焙该 NavigationPolygon。如果 on_thread 被设置为 true(默认),则烘焙将在单独的线程上完成。


bool get_avoidance_layer_value ( int layer_number ) const

返回 avoidance_layers 位掩码中指定的层是否启用,给定的 layer_number 应在 1 和 32 之间。


bool get_navigation_layer_value ( int layer_number ) const

返回 navigation_layers 位掩码中指定的层是否启用,给定的 layer_number 应在 1 和 32 之间。


RID get_navigation_map ( ) const

返回该区块使用的当前导航地图 RID


RID get_region_rid ( ) const

返回 NavigationServer2D 上该区块的 RID

已废弃。请改用 get_rid


RID get_rid ( ) const

返回 NavigationServer2D 上该区块的 RID。结合 NavigationServer2D.map_get_closest_point_owner 可用于识别合并导航地图上离某点最近的 NavigationRegion2D


void set_avoidance_layer_value ( int layer_number, bool value )

根据 value 启用或禁用 avoidance_layers 位掩码中指定的层,给定的 layer_number 应在 1 和 32 之间。


void set_navigation_layer_value ( int layer_number, bool value )

根据 value,启用或禁用 navigation_layers 位掩码中指定的层,给定的 layer_number 应在 1 和 32 之间。


void set_navigation_map ( RID navigation_map )

设置该区块应使用的导航地图的 RID。默认情况下,该区块会自动加入 World2D 默认导航地图,因此该函数只需要覆盖默认地图即可。

Previous Next


© 版权所有 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.