一个寻路问题

大佬们在做a*寻路的时候,这种情况一般怎么处理的?求给个思路:

截屏2021-09-13 下午4.56.29
如图示例4个路口,甲从A路口去D,乙从B路口去C,然后在AB之间碰到了,单位之间不能相互穿过的话,该怎么去判断和处理让路?

处理过类似的,把对方的位置动态的更新进阻挡数组里

我目前能想到的方案就是,针对每个地块做方向处理,出口在下的通道就是左出右进,出口在右的通道就是上进下出,逆时针顺序这样,类似现实中的双车道 :upside_down_face:?然后每个地块都标识上这个地块的方向,比如A通道与C通道上方联接的地方就只能向下或者左(往C进口),这样应该不会相撞,但是感觉改动太大了,要改地图信息,还要改寻路算法

不仅仅是阻挡问题,问题还有相撞了,左边向右走,右边向左走,会卡着不动

谁先到路口就把路堵死了,另一个刷新寻路肯定不能往死胡同了走了,就是每隔指定间隔刷新下最优路径可以吗

寻路不要只寻一次,后面就照着走,持续寻路晚到的就会掉头了

每到一个点都需要做寻路那开销比较大吧?还有如果单位比较多,两个口都堵死了,这样的话当时寻路也会死掉的吧?

道路只有一个格子?如果对象不多, 甲先找路,移动到下一个格子,乙后找路,发现无法通过,就等待呗

道路都是两格的宽度

是需要动态找的,消耗还好吧,当时项目地图8方向寻路,没觉得怎样

除非同一时间进路口,但是一个进路口,另一个怎么还会进呢

没有实际操作过,就是AC交界那里是个十字路口,然后甲从A进CD道,一乙从B进CD道,然后丙在C的下半条路上往D走,有可能出现某一时刻甲丙堵死了乙去C的路,这时候乙寻路就找不到了,就会卡在路口不动

你是说在十字路口会因为没路走就停在原地然后把整个路口堵死吗

我简单画个图吧

看这个吧

:sob:谢谢,看不懂,但是没达到他这么复杂的级别,单位会很多,但是应该不会超过20个,方向也只有上下左右,不是任意方向

截屏2021-09-13 下午5.22.51
比如这种,B路口的单位在进入那个位置的时候寻路发现去C的路被堵死了,就会在那里停住,这个感觉体验不大好
希望就是能正常往C的方向走,目前想到的是如果没路就沿最近的路径判断下一个点是否障碍,不是障碍就继续走,是障碍就等待。但是如果四个单位恰好堵死那就直接完球

只要不是一下预算好所有节点下一步的位置,然后所有节点一下子移动到预算位置处,而是算好一个就直接移动一个,下一个都是基于上一个移动后的场面来计算就不会出现所有单位堵死的状况,至于停在那里,这种情况只有会堵死路的那个节点才会停,这个我也是想不到什么好点子

算一个移动一个,也有不好的地方,在数组前面的元素会永远拥有优先权,这有点不公平,可以在所有节点移动前,对整个可移动数组来一个sort(random),增加一点开销来维护公平

:joy:谢谢。。。我还是打算直接按现实中双车道那种来规划算了,累点就累点,看起来体验好点