Class LocalSpaceRichAI Extends RichAI
RichAI for local space (pathfinding on moving graphs).
What this script does is that it fakes graph movement. It can be seen in the example scene called 'Moving' where a character is pathfinding on top of a moving ship. The graph does not actually move in that example instead there is some 'cheating' going on.
When requesting a path, we first transform the start and end positions of the path request into local space for the object we are moving on (e.g the ship in the example scene), then when we get the path back, they will still be in these local coordinates. When following the path, we will every frame transform the coordinates of the waypoints in the path to global coordinates so that we can follow them.
At the start of the game (when the graph is scanned) the object we are moving on should be at a valid position on the graph and you should attach the Pathfinding.LocalSpaceGraph component to it. The Pathfinding.LocalSpaceGraph component will store the position and orientation of the object right there are the start and then we can use that information to transform coordinates back to that region of the graph as if the object had not moved at all.
This functionality is only implemented for the RichAI script, however it should not be hard to use the same approach for other movement scripts.
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 Variables
Root of the object we are moving on.
Inherited Public Members
Max acceleration of the agent.
True if approaching the last waypoint in the current part of the path.
True if approaching the last waypoint of all parts in the current path.
Enables or disables movement completely.
Enables or disables recalculating the path at regular intervals.
Offset along the Y coordinate for the ground raycast start position.
Velocity that this agent wants to move with.
Position in the world that this agent should move to.
If true, the AI will rotate to face the movement direction.
Max distance to the endpoint to consider it reached.
Moves the agent to a position.
Use funnel simplification.
Position of the base of the character.
Gravity to use.
Layer mask to use for ground placement.
True if this agent currently has a path that it follows.
Gets or sets if the agent should stop moving.
Max speed in world units per second.
Move the agent.
Plane which this agent is moving in.
Calculate how the character wants to move during this frame.
Called when the agent recalculates its path.
Called when the agent starts to traverse an off-mesh link.
Determines which direction the agent moves in.
True if a path is currently being calculated.
Position of the agent.
True if the agent has reached the end of the current path.
Remaining distance along the current path to the end of the path.
Determines how often the agent will search for new paths (in seconds).
Search for new paths repeatedly.
Rotation of the agent.
Max rotation speed of the agent.
Recalculate the current path.
Make the AI follow the specified path.
Simulates rotating the agent towards the specified direction and returns the new rotation.
How long before reaching the end of the path to start to slow down.
Slow down when not facing the target direction.
Point on the path which the agent is currently moving towards.
Instantly move the agent to a new position.
Determines if the character's position should be coupled to the Transform's position.
Determines if the character's rotation should be coupled to the Transform's rotation.
Actual velocity that the agent is moving with.
Walls within this range will be used for avoidance.
Force to avoid walls with.
Private/Protected Members
Accelerates the agent downwards.
Calculates how far to move during a single frame.
Outputs the start point and end point of the next automatic path request.
Constrains the character's position to lie on the navmesh.
Cached CharacterController component.
Called every physics update.
Amount which the character wants or tried to move with during the last frame.
Delta time used for movement during the last frame.
Time when the last path request was started.
Called during either Update or FixedUpdate depending on if rigidbodies are used for movement or not.
Declare that the AI has completely traversed the current part.
Called when the component is disabled.
Called when the component is enabled.
Called when a requested path has been calculated.
Called when the end of the path is reached.
Handle serialization backwards compatibility.
Position of the character at the end of the last frame.
Position of the character at the end of the frame before the last frame.
Checks if the character is grounded and prevents ground penetration.
Holds the current path that this agent is following.
Cached Rigidbody component.
Cached Rigidbody component.
Cached RVOController component.
True if the path should be automatically recalculated as soon as possible.
Position of the agent.
Rotation of the agent.
Simulates rotating the agent towards the specified direction and returns the new rotation.
Starts searching for paths.
Cached Transform component.
Fallback for traversing off-mesh links in case onTraverseOffMeshLink is not set.
Traverses an off-mesh link.
Called every frame.
Indicates if gravity is used during this frame.
Current desired velocity of the agent (does not include local avoidance and physics).
Velocity due to gravity.
Only when the previous path has been calculated should the script consider searching for a new path.