A* Pathfinding Project
3.6.1
The A* Pathfinding Project for Unity 3D
|
The pathfinding can be called in a number of ways. The by far easiest method is to have Seeker component attached to the GameObject you want to call pathfinding from and then call Seeker::StartPath.
Note a Seeker will only take one pathfinding call at a time, if you send one before the previous one has been completed, it the previous one will be canceled
The Seeker will also automatically handle modifiers.
You can also create your own path objects instead of using the Seekers functions.
This will enable you to change settings on the path object before calculating it.
It might seem tedious to specify the callback function every time, well, you don't have to.
There is a field on the Seeker which can be set to a function which will be called every time a path is returned. For those of you interested in performance, this is also a tiny bit faster and does not allocate a new delegate on the heap.
A nice thing is that the callback is not limited to one function, you can have several scripts which all get a callback, or just callbacks to more than one function in the script (if you of some reason need that).
That's why I have been using + and - when registering and un-registering the callback.
There are other types of paths than the standard one, for example the MultiTargetPath (Pro feature).
These can be started easily as well, especially the MultiTargetPath since the Seeker has a special function for it
The path will be returned as a Path instance, but it can be casted to for example MultiTargetPath to get all the data. The full example of MultiTargetPaths can be found here: Multi Target Paths
The generic way to start a type of path is simply
This is instead of a real consructor. It is used so that path pooling can be done more easily.
There are of-course cases where you want even more control of each path. Then you can call AstarPath directly. The main function you then use is AstarPath::StartPath
Note that these paths will not be post-processed
Sometimes you want to get access to the graph data. If you, for example are making a TD game, you probably don't want to place a tower on an unwalkable node.
Here's how you get nodes
There are also cases where you want to get only certain nodes, such as "What is the closest Walkable node to this position?". This can be accomplished using the Pathfinding::NNConstraint. For this case the Default NNConstraint (it's default, because it is used for path calls if nothing else is said)
The search range of these constraints is not unlimited, but quite large, for grid graphs it will search a large square, but for Point Graphs, it will actually search the whole graph since they are usually small.