BUG问题:
起始点距离 寻路终点 过长,会导致A星寻路 失效。
100*100的没有障碍 的地图。可行走路径地图二维数组 map[100,100]都是 可以行走的。
精度 是1
起点0,0终点0,7可以找到
起点0,7终点0,10可以找到
起点0,0终点0,10不可以找到,哪怕都是可以行走的。
使用A* Pathfinding插件。
起点和 终点 的 寻路路径 数组 长度 好像 最大是36。
使得A*寻路 的 可寻路 的地图 的精度 变低。
精度 | 原始地图 | 可行走路径地图(A*二维数组) |
1 | 100*100 | 100*100 |
2 | 100*100 | 50*100 |
4 | 100*100 | 50*50 |
16 | 100*100 | 25*25 |
实际上是因为,初始化 A*寻路 的 二维bool 数组的 时候,由于是 读取 本地 map.json文件的数据。
JSON数据不能保存 float变量,而map.json其中的关于 可行走区域 的数组 是 Vector3,里面都是float,如果非要 保存 Vector3结构的数据 ,就得重新 新建 一个 变量 ,其中 转换为 double类型。
public class double3
{
public double x;
public double y;
public double z;
}
把map.json里面得数据 读取出来,小数点 会很多,不管用什么处理。要对这些 数据 转换 为 Unity编辑器 中 可识别 约定好 得 规范得 时候,转换 数据 得时候需要 四舍五入 Mathf.Round。