A* Pathfinding Project  4.0.8
The A* Pathfinding Project for Unity 3D
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Events Macros Groups Pages
AILerp Class Reference

Linearly interpolating movement script. More...

Detailed Description

Linearly interpolating movement script.

This movement script will follow the path exactly, it uses linear interpolation to move between the waypoints in the path. This is desirable for some types of games. It also works in 2D.

Recommended setup:

This depends on what type of movement you are aiming for. If you are aiming for movement where the unit follows the path exactly (you are likely using a grid or point graph) the default settings on this component should work quite well, however I recommend that you adjust the StartEndModifier on the Seeker component: set the 'Exact Start Point' field to 'NodeConnection' and the 'Exact End Point' field to 'SnapToNode'.

If you on the other hand want smoother movement I recommend adding the Simple Smooth Modifier to the GameObject as well. You may also want to tweak the rotationSpeed.

Public Member Functions

virtual void ForceSearchPath ()
 Requests a path to the target.
 
virtual Vector3 GetFeetPosition ()
 
void OnDisable ()
 
virtual void OnPathComplete (Path _p)
 Called when a requested path has finished calculation.
 
virtual void OnTargetReached ()
 The end of the path has been reached.
 
virtual void SearchPath ()
 Requests a path to the target.
 
float TrySearchPath ()
 Tries to search for a path.
 

Public Attributes

bool canMove = true
 Enables or disables movement.
 
bool canSearch = true
 Enables or disables searching for paths.
 
bool enableRotation = true
 If true, the AI will rotate to face the movement direction.
 
bool interpolatePathSwitches = true
 If true, some interpolation will be done when a new path has been calculated.
 
float repathRate = 0.5F
 Determines how often it will search for new paths.
 
bool rotationIn2D = false
 If true, rotation will only be done along the Z axis so that the Y axis is the forward direction of the character.
 
float rotationSpeed = 10
 How quickly to rotate.
 
float speed = 3
 Speed in world units.
 
float switchPathInterpolationSpeed = 5
 How quickly to interpolate to the new path.
 
Transform target
 Target to move towards.
 

Protected Member Functions

override void Awake ()
 Initializes reference variables.
 
virtual Vector3 CalculateNextPosition (out Vector3 direction)
 Calculate the AI's next position (one frame in the future).
 
virtual void ConfigureNewPath ()
 Finds the closest point on the current path and configures the interpolator.
 
virtual void ConfigurePathSwitchInterpolation ()
 
virtual void OnEnable ()
 Called when the component is enabled.
 
IEnumerator RepeatTrySearchPath ()
 Tries to search for a path every repathRate seconds.
 
virtual void Start ()
 Starts searching for paths.
 
virtual void Update ()
 
- Protected Member Functions inherited from VersionedMonoBehaviour
virtual int OnUpgradeSerializedData (int version)
 Handle serialization backwards compatibility.
 

Protected Attributes

bool canSearchAgain = true
 Only when the previous path has been returned should be search for a new path.
 
PathInterpolator interpolator = new PathInterpolator()
 
float lastRepath = -9999
 Time when the last path request was sent.
 
ABPath path
 Current path which is followed.
 
Vector3 previousMovementDirection
 
Vector3 previousMovementOrigin
 When a new path was returned, the AI was moving along this ray.
 
float previousMovementStartTime = -9999
 
Seeker seeker
 Cached Seeker component.
 
Transform tr
 Cached Transform component.
 

Properties

bool targetReached [get, set]
 True if the end-of-path is reached.
 

Private Member Functions

void Init ()
 

Private Attributes

bool startHasRun = false
 Holds if the Start function has been run.
 

Member Function Documentation

override void Awake ( )
protectedvirtual

Initializes reference variables.

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

Reimplemented from VersionedMonoBehaviour.

virtual Vector3 CalculateNextPosition ( out Vector3  direction)
protectedvirtual

Calculate the AI's next position (one frame in the future).

Parameters
directionThe tangent of the segment the AI is currently traversing. Not normalized.
virtual void ConfigureNewPath ( )
protectedvirtual

Finds the closest point on the current path and configures the interpolator.

virtual void ConfigurePathSwitchInterpolation ( )
protectedvirtual
virtual void ForceSearchPath ( )
virtual

Requests a path to the target.

Bypasses 'is-it-a-good-time-to-request-a-path' checks.

virtual Vector3 GetFeetPosition ( )
virtual
void Init ( )
private
void OnDisable ( )
virtual void OnEnable ( )
protectedvirtual

Called when the component is enabled.

virtual void OnPathComplete ( Path  _p)
virtual

Called when a requested path has finished calculation.

A path is first requested by SearchPath, it is then calculated, probably in the same or the next frame. Finally it is returned to the seeker which forwards it to this function.

virtual void OnTargetReached ( )
virtual

The end of the path has been reached.

If you want custom logic for when the AI has reached it's destination add it here. You can also create a new script which inherits from this one and override the function in that script.

IEnumerator RepeatTrySearchPath ( )
protected

Tries to search for a path every repathRate seconds.

See Also
TrySearchPath
virtual void SearchPath ( )
virtual

Requests a path to the target.

Some inheriting classes will prevent the path from being requested immediately when this function is called, for example when the AI is currently traversing a special path segment in which case it is usually a bad idea to search for a new path.

virtual void Start ( )
protectedvirtual

Starts searching for paths.

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

See Also
Init
RepeatTrySearchPath
float TrySearchPath ( )

Tries to search for a path.

Will search for a new path if there was a sufficient time since the last repath and both canSearchAgain and canSearch are true and there is a target.

Returns
The time to wait until calling this function again (based on repathRate)
virtual void Update ( )
protectedvirtual

Member Data Documentation

bool canMove = true

Enables or disables movement.

See Also
canSearch
bool canSearch = true

Enables or disables searching for paths.

Setting this to false does not stop any active path requests from being calculated or stop it from continuing to follow the current path.

See Also
canMove
bool canSearchAgain = true
protected

Only when the previous path has been returned should be search for a new path.

bool enableRotation = true

If true, the AI will rotate to face the movement direction.

bool interpolatePathSwitches = true

If true, some interpolation will be done when a new path has been calculated.

This is used to avoid short distance teleportation.

PathInterpolator interpolator = new PathInterpolator()
protected
float lastRepath = -9999
protected

Time when the last path request was sent.

ABPath path
protected

Current path which is followed.

Vector3 previousMovementDirection
protected
Vector3 previousMovementOrigin
protected

When a new path was returned, the AI was moving along this ray.

Used to smoothly interpolate between the previous movement and the movement along the new path. The speed is equal to movement direction.

float previousMovementStartTime = -9999
protected
float repathRate = 0.5F

Determines how often it will search for new paths.

If you have fast moving targets or AIs, you might want to set it to a lower value. The value is in seconds between path requests.

bool rotationIn2D = false

If true, rotation will only be done along the Z axis so that the Y axis is the forward direction of the character.

This is useful for 2D games in which one often want to have the Y axis as the forward direction to get sprites and 2D colliders to work properly.

float rotationSpeed = 10

How quickly to rotate.

Seeker seeker
protected

Cached Seeker component.

float speed = 3

Speed in world units.

bool startHasRun = false
private

Holds if the Start function has been run.

Used to test if coroutines should be started in OnEnable to prevent calculating paths in the awake stage (or rather before start on frame 0).

float switchPathInterpolationSpeed = 5

How quickly to interpolate to the new path.

Transform target

Target to move towards.

The AI will try to follow/move towards this target. It can be a point on the ground where the player has clicked in an RTS for example, or it can be the player object in a zombie game.

Transform tr
protected

Cached Transform component.

Property Documentation

bool targetReached
getset

True if the end-of-path is reached.

See Also
TargetReached

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