游戏寻路和避障探索
最近需要实现一个后端控制逻辑的多人多兵种的自动战斗AI。其中就需要涉及到寻路和避障的问题。这里简单记录一下遇到的问题和解决方案。
1. 寻路
说到寻路,首先想到A*,我们把地图抽象成了格子就像图中所示
2. 避障
如果不允许把单位看成障碍物,那物体之间就要用到避障算法,由于之前没有接触过这个话题,所以只能在网上查找到好的做法。一番查找后我选择了RVO算法,这种算法把物体抽象成圆形物体,有半径和速度,通过速度和半径预判两物体是否相撞,如果相撞就转变方向,从而实现避障。(该算法的教学网站和开源的java版本)。用了避障算法后就不用把物体看做障碍了。经过我的测试每次避障的消耗在14微秒左右,效率不错!并且这个算法的官方demo中也可以支持同时避障移动圆形物体和静态的矩形障碍物,我认为如果游戏中如果只存在少量的方块形障碍物的时候,不使用其他寻路算法直接采用边避障边寻路的方式也是可行的。
网友评论