三种算法的区别及优缺点
如何在复杂的地形上通过最低成本,来计算俩点之间的最短路径。如果在路径上突然出现障碍物怎么办。
每个路径的搜索算法之间又有什么样的区别。什么样的情况应该使用什么样的算法。
Unity NavMesh System
首先是untiy自带的NavMesh系统。
适合的类型游戏和地图
Nav适合自由探索类游戏。很多大型连接地图(支持地图的空间跳跃)
优点
Nav算法的路径查找速度非常快而且需要的代码量很少。
只需要在对应该的物体上添加Nav的相关组件即可。而我们也可通过组件内的设置来设定无法行走的区域。
缺点
但是这个区域是需要玩家在改变地图后去手动点击烘焙按钮,来进行重新烘焙,无法做到及时演算。
BFS(广度优先搜索算法)
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。
适合的类型游戏和地图
BFS更加的适合于那些[离散式的网格布局]的地图游戏(格子类,横纵分明),如塔防类游戏。
优点
需要调整的参数较少,并且可以拥有多个目标点。当我们完成这个算法以后,可以直接当做工具来进行使用并且需要的代码也比较少。
缺点
和Nav一样,BFS一但确定了路径就不会在进行改变了,即便在移动的路径上添加障碍物,也会直接穿越过去而不是进行绕路
AStar(A*)
A* 算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。
适合的类型游戏和地图
适合绝大部分类型的游戏和地图。也是现在主流的寻路算法
优点
查找速度很快。并且可以动态的进行寻路(在行动路径上添加障碍物时,会绕开障碍物)。和BFS一样,当我们完成A* 以后可以直接当做一个工具来进行使用。
缺点
A* 虽然拥有很快的查找速度,但是他却不一定拥有最短的路径(之后的文章会说为什么)。而且A* 只能进行点对点的查找。没办法拥有多个目标点来进行计算。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 酱油丶小生!