Class NavigationObstacle3D
- Namespace
- Godot
- Assembly
- GodotSharp.dll
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.
public class NavigationObstacle3D : Node3D, IDisposable
- Inheritance
-
NavigationObstacle3D
- Implements
- Inherited Members
Constructors
NavigationObstacle3D()
public NavigationObstacle3D()
Properties
AvoidanceEnabled
If true
the obstacle affects avoidance using agents.
public bool AvoidanceEnabled { get; set; }
Property Value
AvoidanceLayers
A bitfield determining the avoidance layers for this obstacle. Agents with a matching bit on the their avoidance mask will avoid this obstacle.
public uint AvoidanceLayers { get; set; }
Property Value
Height
Sets the obstacle height used in 2D avoidance. 2D avoidance using agent's ignore obstacles that are below or above them.
public float Height { get; set; }
Property Value
Radius
Sets the avoidance radius for the obstacle.
public float Radius { get; set; }
Property Value
Use3DAvoidance
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.
public bool Use3DAvoidance { get; set; }
Property Value
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.
public Vector3 Velocity { get; set; }
Property Value
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.
public Vector3[] Vertices { get; set; }
Property Value
- Vector3[]
Methods
GetAvoidanceLayerValue(int)
Returns whether or not the specified layer of the AvoidanceLayers bitmask is enabled, given a layerNumber
between 1 and 32.
public bool GetAvoidanceLayerValue(int layerNumber)
Parameters
layerNumber
int
Returns
GetNavigationMap()
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 SetNavigationMap(Rid) to change the navigation map for the NavigationObstacle and also update the obstacle on the NavigationServer.
public Rid GetNavigationMap()
Returns
GetRid()
Returns the Rid of this obstacle on the NavigationServer3D.
public Rid GetRid()
Returns
HasGodotClassMethod(in godot_string_name)
Check if the type contains a method with the given name. This method is used by Godot to check if a method exists before invoking it. Do not call or override this method.
protected override bool HasGodotClassMethod(in godot_string_name method)
Parameters
method
godot_string_nameName of the method to check for.
Returns
HasGodotClassSignal(in godot_string_name)
Check if the type contains a signal with the given name. This method is used by Godot to check if a signal exists before raising it. Do not call or override this method.
protected override bool HasGodotClassSignal(in godot_string_name signal)
Parameters
signal
godot_string_nameName of the signal to check for.
Returns
InvokeGodotClassMethod(in godot_string_name, NativeVariantPtrArgs, out godot_variant)
Invokes the method with the given name, using the given arguments. This method is used by Godot to invoke methods from the engine side. Do not call or override this method.
protected override bool InvokeGodotClassMethod(in godot_string_name method, NativeVariantPtrArgs args, out godot_variant ret)
Parameters
method
godot_string_nameName of the method to invoke.
args
NativeVariantPtrArgsArguments to use with the invoked method.
ret
godot_variantValue returned by the invoked method.
Returns
SetAvoidanceLayerValue(int, bool)
Based on value
, enables or disables the specified layer in the AvoidanceLayers bitmask, given a layerNumber
between 1 and 32.
public void SetAvoidanceLayerValue(int layerNumber, bool value)
Parameters
SetNavigationMap(Rid)
Sets the Rid of the navigation map this NavigationObstacle node should use and also updates the obstacle
on the NavigationServer.
public void SetNavigationMap(Rid navigationMap)
Parameters
navigationMap
Rid