Class NavigationObstacle2D
2D obstacle used to affect navigation mesh baking or constrain velocities of avoidance controlled agents.
- Inheritance
-
NavigationObstacle2D
Remarks
An obstacle needs a navigation map and outline vertices defined to work correctly. The outlines can not cross or overlap.
Obstacles can be included in the navigation mesh baking process when affect_navigation_mesh is enabled. They do not add walkable geometry, instead their role is to discard other source geometry inside the shape. This can be used to prevent navigation mesh from appearing in unwanted places. If carve_navigation_mesh is enabled the baked shape will not be affected by offsets of the navigation mesh baking, e.g. the agent radius.
With avoidance_enabled the obstacle can constrain the avoidance velocities of avoidance using agents. If the obstacle's vertices are wound in clockwise order, avoidance agents will be pushed in by the obstacle, otherwise, avoidance agents will be pushed out. Obstacles using vertices and avoidance can warp to a new position but should not be moved every single frame as each change requires a rebuild of the avoidance map.
See Also
Properties
affect_navigation_mesh
If enabled and parsed in a navigation mesh baking process the obstacle will discard source geometry inside its vertices defined shape.
var affect_navigation_mesh : bool = false
Property Value
Remarks
avoidance_enabled
If true
the obstacle affects avoidance using agents.
var avoidance_enabled : bool = true
Property Value
Remarks
avoidance_layers
A bitfield determining the avoidance layers for this obstacle. Agents with a matching bit on the their avoidance mask will avoid this obstacle.
var avoidance_layers : int = 1
Property Value
Remarks
carve_navigation_mesh
If enabled the obstacle vertices will carve into the baked navigation mesh with the shape unaffected by additional offsets (e.g. agent radius).
It will still be affected by further postprocessing of the baking process, like edge and polygon simplification.
Requires affect_navigation_mesh to be enabled.
var carve_navigation_mesh : bool = false
Property Value
Remarks
radius
Sets the avoidance radius for the obstacle.
var radius : float = 0.0
Property Value
Remarks
velocity
Sets the wanted velocity for the obstacle so other agent's can better predict the obstacle if it is moved with a velocity regularly (every frame) instead of warped to a new position. Does only affect avoidance for the obstacles radius. Does nothing for the obstacles static vertices.
var velocity : Vector2 = Vector2(0, 0)
Property Value
Remarks
vertices
The outline vertices of the obstacle. If the vertices are winded in clockwise order agents will be pushed in by the obstacle, else they will be pushed out. Outlines can not be crossed or overlap. Should the vertices using obstacle be warped to a new position agent's can not predict this movement and may get trapped inside the obstacle.
var vertices : PackedVector2Array = PackedVector2Array()
Property Value
Remarks
- void set_vertices(PackedVector2Array value)
- PackedVector2Array get_vertices
Methods
get_avoidance_layer_value(int)
Qualifiers: const
Returns whether or not the specified layer of the avoidance_layers bitmask is enabled, given a layer_number
between 1 and 32.
bool get_avoidance_layer_value(int layer_number)
Parameters
layer_number
int
get_navigation_map
Qualifiers: const
Returns the RID of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract obstacle on the NavigationServer. If the obstacle map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use NavigationObstacle2D.set_navigation_map to change the navigation map for the NavigationObstacle and also update the obstacle on the NavigationServer.
RID get_navigation_map
get_rid
Qualifiers: const
Returns the RID of this obstacle on the NavigationServer2D.
RID get_rid
set_avoidance_layer_value(int, bool)
Based on value
, enables or disables the specified layer in the avoidance_layers bitmask, given a layer_number
between 1 and 32.
void set_avoidance_layer_value(int layer_number, bool value)
Parameters
set_navigation_map(RID)
Sets the RID of the navigation map this NavigationObstacle node should use and also updates the obstacle
on the NavigationServer.
void set_navigation_map(RID navigation_map)
Parameters
navigation_map
RID