A* Pathfinding Project  4.1.9
The A* Pathfinding Project for Unity 3D
MineBotAI Class Reference

AI controller specifically made for the spider robot. More...

Detailed Description

AI controller specifically made for the spider robot.

The spider robot (or mine-bot) which has been copied from the Unity Example Project can have this script attached to be able to pathfind around with animations working properly.
This script should be attached to a parent GameObject however since the original bot has Z+ as up. This component requires Z+ to be forward and Y+ to be up.
It overrides the AIPath class, see that class's documentation for more information on most variables.
Animation is handled by this component. The Animation component refered to in anim should have animations named "awake" and "forward". The forward animation will have it's speed modified by the velocity and scaled by animationSpeed to adjust it to look good. The awake animation will only be sampled at the end frame and will not play.
When the end of path is reached, if the endOfPathEffect is not null, it will be instantiated at the current position. However a check will be done so that it won't spawn effects too close to the previous spawn-point.

Public Member Functions

override void OnTargetReached ()
 Called when the end of path has been reached. More...
 
new void Start ()
 Starts searching for paths. More...
 
- Public Member Functions inherited from AIPath
Vector3 CalculateVelocity (Vector3 position)
 Current desired velocity of the agent (excluding physics and local avoidance but it includes gravity). More...
 
override void OnPathComplete (Path newPath)
 Called when a requested path has been calculated. More...
 
override void Teleport (Vector3 newPosition, bool clearPath=true)
 Instantly move the agent to a new position. More...
 
- Public Member Functions inherited from AIBase
virtual void FinalizeMovement (Vector3 nextPosition, Quaternion nextRotation)
 Moves the agent to a position. 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...
 
virtual void SearchPath ()
 Recalculate the current 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 SearchPath ()
 Recalculate the current path. More...
 

Public Attributes

Animation anim
 Animation component. More...
 
float animationSpeed = 0.2F
 Speed relative to velocity with which to play animations. More...
 
GameObject endOfPathEffect
 Effect which will be instantiated when end of path is reached. More...
 
float sleepVelocity = 0.4F
 Minimum velocity for moving. More...
 
- Public Attributes inherited from AIPath
bool alwaysDrawGizmos
 Draws detailed gizmos constantly in the scene view instead of only when the agent is selected and settings are being modified. More...
 
float endReachedDistance = 0.2F
 Distance to the end point to consider the end of path to be reached. More...
 
float pickNextWaypointDist = 2
 How far the AI looks ahead along the path to determine the point it moves to. More...
 
float rotationSpeed = 360
 Rotation speed in degrees per second. More...
 
float slowdownDistance = 0.6F
 Distance from the end of the path where the AI will start to slow down. More...
 
bool slowWhenNotFacingTarget = true
 Slow down when not facing the target direction. More...
 
CloseToDestinationMode whenCloseToDestination = CloseToDestinationMode.Stop
 What to do when within endReachedDistance units from the destination. 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...
 
float centerOffset = 1
 Offset along the Y coordinate for the ground raycast start position. 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 maxSpeed = 1
 Max speed in world units per second. More...
 
IMovementPlane movementPlane = GraphTransform.identityTransform
 Plane which this agent is moving in. More...
 
float repathRate = 0.5f
 Determines how often the agent will search for new paths (in seconds). More...
 
bool rotationIn2D = false
 If true, the forward axis of the character will be along the Y axis instead of the Z axis. 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...
 

Protected Member Functions

override void Update ()
 Called every frame. More...
 
- Protected Member Functions inherited from AIPath
virtual void CalculateNextRotation (float slowdown, out Quaternion nextRotation)
 
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...
 
override void OnDisable ()
 
override int OnUpgradeSerializedData (int version, bool unityThread)
 Handle serialization backwards compatibility. More...
 
- Protected Member Functions inherited from AIBase
 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 Vector3 ClampToNavmesh (Vector3 position, out bool positionChanged)
 Constrains the character's position to lie on the navmesh. More...
 
virtual void FindComponents ()
 
virtual void FixedUpdate ()
 Called every physics update. More...
 
virtual void OnDrawGizmos ()
 
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...
 
IEnumerator RepeatTrySearchPath ()
 Tries to search for a path every repathRate seconds. More...
 
Quaternion SimulateRotationTowards (Vector2 direction, float maxDegrees)
 Simulates rotating the agent towards the specified direction and returns the new rotation. More...
 
void UpdateVelocity ()
 
- Protected Member Functions inherited from VersionedMonoBehaviour
virtual void Awake ()
 

Protected Attributes

Vector3 lastTarget
 Point for the last spawn of endOfPathEffect. More...
 
- Protected Attributes inherited from AIPath
PathInterpolator interpolator = new PathInterpolator()
 Helper which calculates points along the current path. More...
 
Path path
 Current path which is followed. More...
 
- 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...
 

Additional Inherited Members

- Static Protected Attributes inherited from AIBase
static readonly Color GizmoColorRaycast = new Color(118.0f/255, 206.0f/255, 112.0f/255)
 
- Properties inherited from AIPath
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...
 
bool hasPath [get]
 True if this agent currently has a path that it follows. More...
 
float IAstarAI. maxSpeed [get, set]
 Max speed in world units per second. More...
 
bool pathPending [get]
 True if a path is currently being calculated. More...
 
bool reachedEndOfPath [get, protected set]
 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...
 
float speed [get, set]
 Maximum speed in world units per second. More...
 
Vector3 steeringTarget [get]
 Point on the path which the agent is currently moving towards. More...
 
Vector3 targetDirection [get]
 Direction that the agent wants to move in (excluding physics and local avoidance). More...
 
bool TargetReached [get]
 True if the end of the path has been reached. More...
 
float turningSpeed [get, set]
 Rotation speed. More...
 
- Properties inherited from AIBase
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...
 
Quaternion rotation [get]
 Rotation of the agent. 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, private 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 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...
 
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...
 
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

◆ OnTargetReached()

override void OnTargetReached ( )
virtual

Called when the end of path has been reached.

An effect (endOfPathEffect) is spawned when this function is called However, since paths are recalculated quite often, we only spawn the effect when the current position is some distance away from the previous spawn-point

Reimplemented from AIPath.

◆ Start()

new void Start ( )
virtual

Starts searching for paths.

If you override this method you should in most cases call base.Start () at the start of it.

See also
Init

Reimplemented from AIBase.

◆ Update()

override void Update ( )
protectedvirtual

Called every frame.

If no rigidbodies are used then all movement happens here.

Reimplemented from AIBase.

Member Data Documentation

◆ anim

Animation anim

Animation component.

Should hold animations "awake" and "forward"

◆ animationSpeed

float animationSpeed = 0.2F

Speed relative to velocity with which to play animations.

◆ endOfPathEffect

GameObject endOfPathEffect

Effect which will be instantiated when end of path is reached.

See also
OnTargetReached

◆ lastTarget

Vector3 lastTarget
protected

Point for the last spawn of endOfPathEffect.

◆ sleepVelocity

float sleepVelocity = 0.4F

Minimum velocity for moving.


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