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

Moves a grid graph to follow a target. More...

Detailed Description

Moves a grid graph to follow a target.

Attach this to some object in the scene and assign the target to e.g the player. Then the graph will follow that object around as it moves.

This is useful if pathfinding is only necessary in a small region around an object (for example the player). It makes it possible to have vast open worlds (maybe procedurally generated) and still be able to use pathfinding on them.

When the graph is moved you may notice an fps drop. If this grows too large you can try a few things:

  • Reduce the updateDistance. This will make the updates smaller but more frequent. This only works to some degree however since an update has an inherent overhead.
  • Turn off erosion on the grid graph. This will reduce the number of nodes that need updating.
  • Reduce the grid size.
  • Turn on multithreading (A* Inspector -> Settings)
  • Disable Height Testing or Collision Testing in the grid graph. This can give a minor performance boost.
See Also
Take a look at the example scene called "Procedural" for an example of how to use this script
Version
Since 3.6.8 this class can handle graph rotation other options such as isometric angle and aspect ratio.

Public Member Functions

void Start ()
 
void UpdateGraph ()
 Updates the graph asynchronously.
 

Public Attributes

bool floodFill
 Flood fill the graph after updating.
 
Transform target
 Graph will be moved to follow this target.
 
float updateDistance = 10
 Graph will be updated if the target is more than this number of nodes from the graph center.
 

Properties

bool updatingGraph [get, set]
 True while the graph is being updated by this script.
 

Private Member Functions

Vector3 PointToGraphSpace (Vector3 p)
 Transforms a point from world space to graph space.
 
void Update ()
 Update is called once per frame.
 
IEnumerator UpdateGraphCoroutine ()
 Async method for moving the graph.
 

Private Attributes

GridGraph graph
 Grid graph to update.
 
GridNode[] tmp
 Temporary buffer.
 

Member Function Documentation

Vector3 PointToGraphSpace ( Vector3  p)
private

Transforms a point from world space to graph space.

In graph space, (0,0,0) is bottom left corner of the graph and one unit along the X and Z axes equals distance between two nodes the Y axis still uses world units

void Start ( )
void Update ( )
private

Update is called once per frame.

void UpdateGraph ( )

Updates the graph asynchronously.

This will move the graph so that the target's position is the center of the graph. If the graph is already being updated, the call will be ignored.

IEnumerator UpdateGraphCoroutine ( )
private

Async method for moving the graph.

Member Data Documentation

bool floodFill

Flood fill the graph after updating.

If this is set to false, areas of the graph will not be recalculated. Enable this only if the graph will only have a single area (i.e from all walkable nodes there is a valid path to every other walkable node). One case where this might be appropriate is a large outdoor area such as a forrest. If there are multiple areas in the graph and this is not enabled, pathfinding could fail later on.

Enabling it will make the graph updates faster.

GridGraph graph
private

Grid graph to update.

Transform target

Graph will be moved to follow this target.

GridNode [] tmp
private

Temporary buffer.

float updateDistance = 10

Graph will be updated if the target is more than this number of nodes from the graph center.

Note that this is in nodes, not world units.

Version
The unit was changed to nodes instead of world units in 3.6.8.

Property Documentation

bool updatingGraph
getset

True while the graph is being updated by this script.


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