请教各位关于动态避障是否有必要和a*寻路结合,如果没有必要,这两种优缺点是什么?

如题。rvo2动态避障会自动防止重叠,躲避障碍。但从起点到终点,这个路径是否是最优解呢?

另外一种使用a*寻路算法,排除障碍点,躲避障碍,计算出最优路径。然后让玩家按照最优路径去移动。且防止碰撞用刚体去实现。

这两种方案似乎都可行?但他们之间的区别是什么呢?

这个问题, 找个ai都能很好的解答

rvo2 移动路线不一定最优,适合简单隙碍的场景(绕个人,绕个物体),大范围绕,需要加大探测范围

a*寻路+刚体碰撞,可以适合复杂地图,可以有更加智能的行动路线

a* + 刚体碰撞的话,我说一下我认为的想法,不知道对不对。先用a*算出最优距离,然后物体按照最优来移动。如果碰撞到物体,重新计算,再重新寻路,这样实现躲避是吗?

寻路时候, 就已经是绕过碰撞物,加上刚体是为了,防止空帮陷进去

那这样似乎有一个问题,假如从a点到b点的途中,有一个障碍物,玩家在计算最开始的路径时绕过了这个障碍物,但行走的过程中,这个障碍物消失了,那原本的路线就不是最优解了,而且此时如果按照之前计算的路线,在原本障碍物存在的地方已经是空白了,但是还是会绕开,就比较奇怪吧

有变化 ,A*就要实时算吖,或者分帧算也可以。以你计算的路径为准,至于要不要实时,看你需求来寻路

我的地图上可能会有一些动态移动的物体。现在正在想选哪一种移动 和避障最合适

如果地图简单,推荐用RVO2,功能比较足

我的A星你可以参考下思路,https://github.com/3264876581/goAstar

本来就是结合的啊,动态的障碍物,如果你游戏对障碍物的实时性要求不算高,那么每秒检测几次或者十来次,如果高,那么每帧检测。
检测什么,检测的是你当前A星的2个拐点组成的这条线段 和 障碍物(一般用矩形碰撞表示)是否产生碰撞,这2个拐点,第1个点一定是A星的拐点,第2个点可以是A星的下一个拐点,也可以是当前玩家所处的位置,因为你的玩家是沿着A星给的拐点走的直线。
怎么检测,这个是线段和矩形是否碰撞的问题,也就是线段的一部分或者全部在矩形内,都算碰撞到障碍物,用 分离轴定理(SAT),你自己去问下AI,或者你也可以直接用引擎给的射线检测。
检测之后做什么,如果障碍物不处于A星走的路上,那么相安无事,如果确实挡住了必经之路,那么你可以在当前玩家的位置,重新寻路一次,当前位置是起点,终点不变;或者,用一种插入新路径的思维,只修改被障碍物影响的拐点直接的路径点,这一种算有点难度的,因为你写好需要时间,还要反复测试到底能不能正常使用。
最后,有几个问题说下,一个是,你的障碍物如果改变的过于频繁,那么我建议你还是重新寻路好点。或者你参考下英雄联盟的做法。另一个是,你的A星是否写完整了,是否是一个可以商用的功能强大的A星,A星分2部分,一个是初始路径部分,一个是后处理部分,如果你只是写了一个常规的A星算初始路径,而没有去做后处理,那么你别说避障了,在商业项目上都完全用不了或者说不及格。

1赞

还有就是,你的A星性能够不够高,在高精度地图上能不能做到极低耗时,5ms以下的那种