如何限制Navigation2D仅沿四个正方向寻路及相关异常问题咨询
导航区域顶点模糊问题解决
你观察到的绿色导航轮廓顶点模糊是导航网格生成参数导致的,按以下配置修改即可:
- 将
NavigationMesh2D的agent_radius参数设为0,关闭导航区域默认的向内收缩偏移 - 将
edge_max_error参数设为0,关闭顶点平滑处理 - 将
edge_margin参数设为0,移除边缘预留间隙
修改后重新生成导航网格,生成的轮廓会完全贴合你定义的4像素宽导航多边形,不会再出现模糊的圆角效果。
强制寻路仅允许直角转弯
有两种实现方案,按需选择即可:
方案一:路径后处理(最简便)
拿到Navigation2D返回的路径点数组后做二次处理,遍历所有相邻路径点:
如果两个点的x坐标差和y坐标差都不为0(即斜向移动),插入一个中间点,优先对齐x轴或y轴均可。例如点A(x1,y1)到点B(x2,y2),插入(x2,y1)后路径就变为A→(x2,y1)→B,自动转为直角移动。
方案二:修改导航网格生成规则
如果不想做后处理,生成导航多边形时仅保留水平、垂直两个方向的连接边,禁用所有斜向的连通关系,同时调用寻路接口NavigationServer2D.map_get_path时将optimize参数设为false,关闭路径自动优化合并功能,即可保证返回的路径点全为正交连接。
寻路不返回最短路径问题排查
常见触发原因有三个:
- 导航网格
cell_size设置过大,精度不足导致窄通道识别失败,导航系统判定最优通道无法通行,自动选择更长的可通行路径,将cell_size设为不大于2像素即可匹配你4像素宽的通道精度 agent_radius设置大于0,导航系统会自动预留角色通行空间,导致4像素宽的通道被判定为无法通行,按前面的要求设为0即可解决- 生成的导航多边形存在细小缝隙,两个本应连通的区域被断开,导航系统只能选择其他连通的长路径,生成导航多边形后手动检查连通性,或者将
cell_size调小解决缝隙识别问题
内容的提问来源于stack exchange,提问作者Zahir J
相关产品推荐
相关产品推荐

