NavigationObstacle3D¶
Inherits: Node3D < Node < Object
3D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area.
Description¶
3D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area. The obstacle needs a navigation map and outline vertices defined to work correctly.
If the obstacle's vertices are winded in clockwise order, avoidance agents will be pushed in by the obstacle, otherwise, avoidance agents will be pushed out. Outlines must not cross or overlap.
Obstacles are not a replacement for a (re)baked navigation mesh. Obstacles don't change the resulting path from the pathfinding, obstacles only affect the navigation avoidance agent movement by altering the suggested velocity of the avoidance agent.
Obstacles using vertices can warp to a new position but should not moved every frame as each move requires a rebuild of the avoidance map.
Tutorials¶
Properties¶
|
||
|
||
|
||
|
||
|
||
|
||
|
Methods¶
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 ) |
Property Descriptions¶
bool avoidance_enabled = true
If true
the obstacle affects avoidance using agents.
int avoidance_layers = 1
A bitfield determining the avoidance layers for this obstacle. Agents with a matching bit on the their avoidance mask will avoid this obstacle.
float height = 1.0
Sets the obstacle height used in 2D avoidance. 2D avoidance using agent's ignore obstacles that are below or above them.
float radius = 0.0
Sets the avoidance radius for the obstacle.
bool use_3d_avoidance = false
If true
the obstacle affects 3D avoidance using agent's with obstacle radius.
If false
the obstacle affects 2D avoidance using agent's with both obstacle vertices as well as obstacle radius.
Vector3 velocity = Vector3(0, 0, 0)
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.
PackedVector3Array vertices = PackedVector3Array()
void set_vertices ( PackedVector3Array value )
PackedVector3Array get_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.
Method Descriptions¶
bool get_avoidance_layer_value ( int layer_number ) const
Returns whether or not the specified layer of the avoidance_layers bitmask is enabled, given a layer_number
be