When dealing with regular-size vertices on graph, such as grids, it's pretty common to see some kind of robotic movement from the agents in the game. Depending on the type of game we're developing, this could be avoided using path-smoothing techniques, such as the one we're about to learn.
Let's define a new tag in the Unity editor called Wall
and assign it to every object in the scene that is intended to work as a wall or obstacle in the navigation.
This is an easy, yet powerful, function:
Define the
Smooth
function:public List<Vertex> Smooth(List<Vertex> path) { // next steps here }
Check whether it is worth computing a new path:
List<Vertex> newPath = new List<Vertex>(); if (path.Count == 0) return newPath; if (path.Count < 3) return path;
Implement the loops for traversing the list and building the new path:
newPath.Add(path[0]); int i, j; for (i = 0; i < path.Count - 1;) { for (j = i + 1; j < path.Count...