[Unity]A*寻路失效

在Unity中使用A* Pathfinding插件时,若起始点与寻路终点距离过长,可能导致寻路失败。问题在于JSON数据无法保存float变量,地图数据Vector3中的float在保存为map.json时精度丢失。为解决此问题,需要将Vector3数据转换为double类型,并在读取JSON数据后,使用Mathf.Round进行四舍五入,确保Unity编辑器能正确识别并保持寻路精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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*二维数组)
1100*100100*100
2100*10050*100
4100*10050*50
16100*10025*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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值