A* Pathfinding Project  4.3.5
The A* Pathfinding Project for Unity 3D
LegacyRichAI Class Reference

Advanced AI for navmesh based graphs. More...

Detailed Description

Advanced AI for navmesh based graphs.

Deprecated:
Use the RichAI class instead. This class only exists for compatibility reasons.

A* Pro Feature:
This is an A* Pathfinding Project Pro feature only. This function/class/variable might not exist in the Free version of the A* Pathfinding Project or the functionality might be limited
The Pro version can be bought here

Public Attributes

bool preciseSlowdown = true
 Use a 3rd degree equation for calculating slowdown acceleration instead of a 2nd degree. More...
 
bool raycastingForGroundPlacement = false
 
- Public Attributes inherited from RichAI
float acceleration = 5
 Max acceleration of the agent. More...
 
bool funnelSimplification = false
 Use funnel simplification. More...
 
System.Func< RichSpecial, IEnumerator > onTraverseOffMeshLink
 Called when the agent starts to traverse an off-mesh link. More...
 
float rotationSpeed = 360
 Max rotation speed of the agent. More...
 
float slowdownTime = 0.5f
 How long before reaching the end of the path to start to slow down. More...
 
bool slowWhenNotFacingTarget = true
 Slow down when not facing the target direction. More...
 
float wallDist = 1
 Walls within this range will be used for avoidance. More...
 
float wallForce = 3
 Force to avoid walls with. More...
 
- Public Attributes inherited from AIBase
bool canMove = true
 Enables or disables movement completely. More...
 
bool canSearch = true
 Enables or disables recalculating the path at regular intervals. More...
 
bool enableRotation = true
 If true, the AI will rotate to face the movement direction. More...
 
float endReachedDistance = 0.2f
 Distance to the end point to consider the end of path to be reached. More...
 
Vector3 gravity = new Vector3(float.NaN, float.NaN, float.NaN)
 Gravity to use. More...
 
LayerMask groundMask = -1
 Layer mask to use for ground placement. More...
 
float height = 2
 Radius of the agent in world units. More...
 
float maxSpeed = 1
 Max speed in world units per second. More...
 
IMovementPlane movementPlane = GraphTransform.identityTransform
 Plane which this agent is moving in. More...
 
OrientationMode orientation = OrientationMode.ZAxisForward
 Determines which direction the agent moves in. More...
 
float radius = 0.5f
 Height of the agent in world units. More...
 
float repathRate = 0.5f
 Determines how often the agent will search for new paths (in seconds). More...
 
RVODestinationCrowdedBehavior rvoDensityBehavior = new RVODestinationCrowdedBehavior(true, 0.5f, false)
 Controls if the agent slows down to a stop if the area around the destination is crowded. More...
 
bool updatePosition = true
 Determines if the character's position should be coupled to the Transform's position. More...
 
bool updateRotation = true
 Determines if the character's rotation should be coupled to the Transform's rotation. More...
 
CloseToDestinationMode whenCloseToDestination = CloseToDestinationMode.Stop
 What to do when within endReachedDistance units from the destination. More...
 

Protected Member Functions

override void Awake ()
 
override void OnUpdate (float dt)
 Update is called once per frame. More...
 
- Protected Member Functions inherited from RichAI
override Vector3 ClampToNavmesh (Vector3 position, out bool positionChanged)
 Constrains the character's position to lie on the navmesh. More...
 
override void ClearPath ()
 Clears the current path of the agent. More...
 
override void MovementUpdateInternal (float deltaTime, out Vector3 nextPosition, out Quaternion nextRotation)
 Called during either Update or FixedUpdate depending on if rigidbodies are used for movement or not. More...
 
void NextPart ()
 Declare that the AI has completely traversed the current part. More...
 
override void OnDisable ()
 Called when the component is disabled. More...
 
override void OnDrawGizmos ()
 
override void OnPathComplete (Path p)
 Called when a requested path has been calculated. More...
 
virtual void OnTargetReached ()
 Called when the end of the path is reached. More...
 
override int OnUpgradeSerializedData (int version, bool unityThread)
 Handle serialization backwards compatibility. More...
 
IEnumerator TraverseOffMeshLinkFallback (RichSpecial link)
 Fallback for traversing off-mesh links in case onTraverseOffMeshLink is not set. More...
 
virtual IEnumerator TraverseSpecial (RichSpecial link)
 Traverses an off-mesh link. More...
 
virtual Vector3 UpdateTarget (RichFunnel fn)
 
- Protected Member Functions inherited from AIBase
void ApplyGravity (float deltaTime)
 Accelerates the agent downwards. More...
 
Vector2 CalculateDeltaToMoveThisFrame (Vector2 position, float distanceToEndOfPath, float deltaTime)
 Calculates how far to move during a single frame. More...
 
virtual void CalculatePathRequestEndpoints (out Vector3 start, out Vector3 end)
 Outputs the start point and end point of the next automatic path request. More...
 
void CancelCurrentPathRequest ()
 
virtual void OnDrawGizmosSelected ()
 
virtual void OnEnable ()
 Called when the component is enabled. More...
 
Vector3 RaycastPosition (Vector3 position, float lastElevation)
 Checks if the character is grounded and prevents ground penetration. More...
 
override void Reset ()
 Handle serialization backwards compatibility. More...
 
Quaternion SimulateRotationTowards (Vector2 direction, float maxDegrees)
 Simulates rotating the agent towards the specified direction and returns the new rotation. More...
 
virtual void Start ()
 Starts searching for paths. More...
 
void UpdateVelocity ()
 

Private Member Functions

new Vector3 RaycastPosition (Vector3 position, float lasty)
 
bool RotateTowards (Vector3 trotdir)
 Rotates along the Y-axis the transform towards trotdir. More...
 

Private Attributes

Vector3 currentTargetDirection
 
Vector3 lastTargetPoint
 
new Vector3 velocity
 Current velocity of the agent. More...
 

Static Private Attributes

static float deltaTime
 Smooth delta time to avoid getting overly affected by e.g GC. More...
 

Additional Inherited Members

- Public Member Functions inherited from RichAI
override void SearchPath ()
 Recalculate the current path. More...
 
override void Teleport (Vector3 newPosition, bool clearPath=true)
 Instantly move the agent to a new position. More...
 
void UpdatePath ()
 Force recalculation of the current path. More...
 
- Public Member Functions inherited from AIBase
virtual void FinalizeMovement (Vector3 nextPosition, Quaternion nextRotation)
 Moves the agent to a position. More...
 
virtual void FindComponents ()
 Looks for any attached components like RVOController and CharacterController etc. More...
 
virtual Vector3 GetFeetPosition ()
 Position of the base of the character. More...
 
virtual void Move (Vector3 deltaPosition)
 Move the agent. More...
 
void MovementUpdate (float deltaTime, out Vector3 nextPosition, out Quaternion nextRotation)
 Calculate how the character wants to move during this frame. More...
 
void SetPath (Path path)
 Make the AI follow the specified path. More...
 
Quaternion SimulateRotationTowards (Vector3 direction, float maxDegrees)
 Simulates rotating the agent towards the specified direction and returns the new rotation. More...
 
- Public Member Functions inherited from IAstarAI
void FinalizeMovement (Vector3 nextPosition, Quaternion nextRotation)
 Move the agent. More...
 
void Move (Vector3 deltaPosition)
 Move the agent. More...
 
void MovementUpdate (float deltaTime, out Vector3 nextPosition, out Quaternion nextRotation)
 Calculate how the character wants to move during this frame. More...
 
void SetPath (Path path)
 Make the AI follow the specified path. More...
 
- Static Public Attributes inherited from AIBase
static readonly Color ShapeGizmoColor = new Color(240/255f, 213/255f, 30/255f)
 
- Protected Attributes inherited from RichAI
bool delayUpdatePath
 
float distanceToSteeringTarget = float.PositiveInfinity
 Distance to steeringTarget in the movement plane. More...
 
bool lastCorner
 
readonly List< Vector3 > nextCorners = new List<Vector3>()
 
readonly RichPath richPath = new RichPath()
 Holds the current path that this agent is following. More...
 
readonly List< Vector3 > wallBuffer = new List<Vector3>()
 
- Protected Attributes inherited from AIBase
CharacterController controller
 Cached CharacterController component. More...
 
Vector2 lastDeltaPosition
 Amount which the character wants or tried to move with during the last frame. More...
 
float lastDeltaTime
 Delta time used for movement during the last frame. More...
 
float lastRepath = float.NegativeInfinity
 Time when the last path request was started. More...
 
int prevFrame
 Last frame index when prevPosition1 was updated. More...
 
Vector3 prevPosition1
 Position of the character at the end of the last frame. More...
 
Vector3 prevPosition2
 Position of the character at the end of the frame before the last frame. More...
 
Rigidbody rigid
 Cached Rigidbody component. More...
 
Rigidbody2D rigid2D
 Cached Rigidbody component. More...
 
RVOController rvoController
 Cached RVOController component. More...
 
Seeker seeker
 Cached Seeker component. More...
 
Vector3 simulatedPosition
 Position of the agent. More...
 
Quaternion simulatedRotation
 Rotation of the agent. More...
 
Transform tr
 Cached Transform component. More...
 
Vector2 velocity2D
 Current desired velocity of the agent (does not include local avoidance and physics). More...
 
float verticalVelocity
 Velocity due to gravity. More...
 
bool waitingForPathCalculation = false
 Only when the previous path has been calculated should the script consider searching for a new path. More...
 
- Static Protected Attributes inherited from RichAI
static readonly Color GizmoColorPath = new Color(8.0f/255, 78.0f/255, 194.0f/255)
 
- Properties inherited from RichAI
Animation anim [get, set]
 Anim for off-mesh links. More...
 
bool ApproachingPartEndpoint [get]
 
bool approachingPartEndpoint [get]
 True if approaching the last waypoint in the current part of the path. More...
 
bool ApproachingPathEndpoint [get]
 
bool approachingPathEndpoint [get]
 True if approaching the last waypoint of all parts in the current path. More...
 
bool IAstarAI. canMove [get, set]
 Enables or disables movement completely. More...
 
bool IAstarAI. canSearch [get, set]
 Enables or disables recalculating the path at regular intervals. More...
 
float DistanceToNextWaypoint [get]
 
bool hasPath [get]
 True if this agent currently has a path that it follows. More...
 
float IAstarAI. height [get, set]
 Radius of the agent in world units. More...
 
float IAstarAI. maxSpeed [get, set]
 Max speed in world units per second. More...
 
Vector3 NextWaypoint [get]
 Waypoint that the agent is moving towards. More...
 
bool PathPending [get]
 True if a path to the target is currently being calculated. More...
 
bool pathPending [get]
 True if a path is currently being calculated. More...
 
float IAstarAI. radius [get, set]
 Height of the agent in world units. More...
 
override bool reachedDestination [get]
 True if the ai has reached the destination. More...
 
bool reachedEndOfPath [get]
 True if the agent has reached the end of the current path. More...
 
float remainingDistance [get]
 Remaining distance along the current path to the end of the path. More...
 
bool repeatedlySearchPaths [get, set]
 Search for new paths repeatedly. More...
 
override bool shouldRecalculatePath [get]
 
Vector3 steeringTarget [get, protected set]
 Point on the path which the agent is currently moving towards. More...
 
Vector3 TargetPoint [get]
 Current waypoint that the agent is moving towards. More...
 
bool TargetReached [get]
 True if the end of the path has been reached. More...
 
bool traversingOffMeshLink [get, protected set]
 
bool TraversingSpecial [get]
 
Vector3 Velocity [get]
 Current velocity of the agent. More...
 
- Properties inherited from AIBase
float centerOffset [get, set]
 Offset along the Y coordinate for the ground raycast start position. More...
 
Vector3 desiredVelocity [get]
 Velocity that this agent wants to move with. More...
 
Vector3 destination [get, set]
 Position in the world that this agent should move to. More...
 
bool isStopped [get, set]
 Gets or sets if the agent should stop moving. More...
 
System.Action onSearchPath [get, set]
 Called when the agent recalculates its path. More...
 
Vector3 position [get]
 Position of the agent. More...
 
abstract bool reachedDestination [get]
 True if the ai has reached the destination. More...
 
Quaternion rotation [get]
 Rotation of the agent. More...
 
bool rotationIn2D [get, set]
 If true, the forward axis of the character will be along the Y axis instead of the Z axis. More...
 
virtual bool shouldRecalculatePath [get]
 True if the path should be automatically recalculated as soon as possible. More...
 
Transform target [get, set]
 Target to move towards. More...
 
bool usingGravity [get, set]
 Indicates if gravity is used during this frame. More...
 
Vector3 velocity [get]
 Actual velocity that the agent is moving with. More...
 
- Properties inherited from VersionedMonoBehaviour
int Util.IEntityIndex. EntityIndex [get, set]
 Internal entity index used by #BurstBatchHelper. More...
 
- Properties inherited from IEntityIndex
int EntityIndex [get, set]
 
- Properties inherited from IAstarAI
bool canMove [get, set]
 Enables or disables movement completely. More...
 
bool canSearch [get, set]
 Enables or disables recalculating the path at regular intervals. More...
 
Vector3 desiredVelocity [get]
 Velocity that this agent wants to move with. More...
 
Vector3 destination [get, set]
 Position in the world that this agent should move to. More...
 
bool hasPath [get]
 True if this agent currently has a path that it follows. More...
 
float height [get, set]
 Radius of the agent in world units. More...
 
bool isStopped [get, set]
 Gets or sets if the agent should stop moving. More...
 
float maxSpeed [get, set]
 Max speed in world units per second. More...
 
System.Action onSearchPath [get, set]
 Called when the agent recalculates its path. More...
 
bool pathPending [get]
 True if a path is currently being calculated. More...
 
Vector3 position [get]
 Position of the agent. More...
 
float radius [get, set]
 Height of the agent in world units. More...
 
bool reachedDestination [get]
 True if the ai has reached the destination. More...
 
bool reachedEndOfPath [get]
 True if the agent has reached the end of the current path. More...
 
float remainingDistance [get]
 Remaining distance along the current path to the end of the path. More...
 
Quaternion rotation [get]
 Rotation of the agent. More...
 
Vector3 steeringTarget [get]
 Point on the path which the agent is currently moving towards. More...
 
Vector3 velocity [get]
 Actual velocity that the agent is moving with. More...
 

Member Function Documentation

◆ Awake()

override void Awake ( )
protectedvirtual

Reimplemented from VersionedMonoBehaviour.

◆ OnUpdate()

override void OnUpdate ( float  dt)
protectedvirtual

Update is called once per frame.

Reimplemented from AIBase.

◆ RaycastPosition()

new Vector3 RaycastPosition ( Vector3  position,
float  lasty 
)
private

◆ RotateTowards()

bool RotateTowards ( Vector3  trotdir)
private

Rotates along the Y-axis the transform towards trotdir.

Member Data Documentation

◆ currentTargetDirection

Vector3 currentTargetDirection
private

◆ deltaTime

float deltaTime
staticprivate

Smooth delta time to avoid getting overly affected by e.g GC.

◆ lastTargetPoint

Vector3 lastTargetPoint
private

◆ preciseSlowdown

bool preciseSlowdown = true

Use a 3rd degree equation for calculating slowdown acceleration instead of a 2nd degree.

A 3rd degree equation can also make sure that the velocity when reaching the target is roughly zero and therefore it will have a more direct stop. In contrast solving a 2nd degree equation which will just make sure the target is reached but will usually have a larger velocity when reaching the target and therefore look more "bouncy".

◆ raycastingForGroundPlacement

bool raycastingForGroundPlacement = false

◆ velocity

new Vector3 velocity
private

Current velocity of the agent.

Includes eventual velocity due to gravity


The documentation for this class was generated from the following file: