作者:帕皮丝汀阿奎莱拉 | 来源:互联网 | 2023-06-22 16:15
做A*寻路出来的路径步数比较多,很多步数都是一条直线,那么我们只要记录头尾就可。如图处理前后效果网上as3js都有相应的算法,c#好像没有,于是我来补充一下。假设Lis
做A*寻路出来的 路径步数比较多,很多步数都是 一条直线,那么我们只要记录 头尾就可。
如图处理前后效果
网上as3 js都有相应的算法,c#好像没有,于是我 来补充一下。
假设 List path 记录了 a* 的路径。
定义 List newpath 准备记录 新的步数路径
定义 Vector2 v 记录 新的步数坐标
List newpath = new List();
newpath.Add(path[0]);
Vector2 v = new Vector2();
//去掉同一条线上的点。
for (int i = 1; i 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]);