How to minimize directional changes?

Hi. I am a beginner to Unity and C#, and am making a real-time RPG where characters move by clicking somewhere on the screen.

I have been successful in getting the A* project to work, thanks to this tutorial:

My characters are finding the optimal path, restricted to 8 directions, while moving through 16x16 nodes. The problem, however, is that the paths are often generated in a way such that there are way too many directional changes. This causes the character’s sprite to rapidly spasm between two adjacent directions. Here is an example of one such path:

My solution was to perhaps change the algorithm so that it calculates P_min+T_min instead of P_min, where P_min is the minimum distance from the start to end nodes, while T_min is the least number of turns. This would eliminate the unnecessarily large number of turns. I’m not sure how I would implement that though. Can someone help me?

I haven’t touched any of the code from the download link, and am using the Free Version 4.0.10.

Any help would be appreciated!


Try to change the ‘Heuristic’ setting in A* Inspector -> Settings -> Pathfinding.
Try to set it to Diagonal Manhattan or Manhattan. I think that should give you a better path.

That’s a lot better. Thank you!