三点共线 之 优化A*路径
做A*寻路出来的 路径步数比较多,很多步数都是 一条直线,那么我们只要记录 头尾就可。
如图处理前后效果
网上as3 js都有相应的算法,c#好像没有,于是我 来补充一下。
假设 List<Vector2> path 记录了 a* 的路径。
定义 List<Vector2> newpath 准备记录 新的步数路径
定义 Vector2 v 记录 新的步数坐标
List<Vector2> newpath = new List<Vector2>(); newpath.Add(path[0]); Vector2 v = new Vector2(); //去掉同一条线上的点。 for (int i = 1; i < path.Count - 2; i++) { if ((path[i + 1].x - path[i].x) == (path[i + 2].x - path[i + 1].x) && (path[i + 1].y - path[i].y) == (path[i + 2].y - path[i + 1].y)) { } else { v = path[i + 1]; newpath.Add(v); } } newpath.Add(path[path.Count - 1]);