在上一篇文章中,小编为您详细介绍了关于《厂商与平台如何看待成熟市场的游戏发行及其中机会?》相关知识。本篇中小编将再为您讲解标题蜂巢型六边形A星寻路算法unity完整流程。
|
一、需求 我们需要一个这样的函数:给定六边形网格的一个起点和一个终点,函数能够返回从起点到终点的通路经过哪些六边形。 适应场景:战棋类游戏,常常因为六边形网格更好的美术表现及游戏性选择蜂巢型的网格作为游戏内寻路的基础,而一些moba类游戏也常常因为NaviMesh网格型寻路消耗过大、服务端客户端网格算法不同(例如unity内置的网格寻路功能,服务端就没办法使用)等原因,最终选择A星寻路算法来制作功能(节点需要足够小,且寻路结果需要平滑优化)。 二、算法讲解 1. 搜索区域 节点:就是单个六边形,整个搜索区域需要被节点铺满。 首先需要明确的一点是,正方形网格和六边形的网格没有本质上的区别,只不过正方形可以行走的方向是4个,六边形是6个,这个在程序上的区别主要体现在一个节点的相邻节点集上,正方形的相邻节点在4个以内,六边形的相邻节点在6个以内,不过对于算法理解没有影响。 2. 开始搜索 开启列表:需要考虑的节点都会被放到开启列表中,刚开始的时候开启列表只有起点一个节点,然后根据节点的相邻节点集,会逐渐把附近的节点都加到开启列表中。 关闭列表:所有不在考虑的节点的集合。
六边形网格,红色为不可通过点 我们以节点11为起点,节点8为终点。 先把节点11加入开启列表,再通过节点11找到他的相邻节点,也就是节点1、3、12、14、15、10,把他们放入开启列表,并为他们设置父节点为节点11。将节点11放入关闭列表。 3. 估值 上面讲的是如何扩大搜索范围,而如果想要获得一条最优路径,那么必然是有一个估值方式,在A星算法中,我们为每个节点都做估值,估算值F = G + H: G:从起点,沿着产生的路径,移动到网格上指定方格的移动耗费。在这里,我们认为相邻的六边形,移动消耗是1,例如,从节点11移动到3,移动消耗就是1. H:从网格上那个方格移动到终点B的预估移动耗费。这经常被称为启发式的,可因为它只是个猜测。这个H值的估算方式有很多种,我们暂时使用两个节点的直线距离,对应unity的实现就是Vector3.Distance(curHex.transform.position, tarHex.transform.position)。
F = G + H估值 很容易得到,节点3的估值是最低,估值最低则代表最优先。 4. 继续搜索 找到F值最低的节点3作为当前结点,我们把节点3从开启列表中删除,然后添加到关闭列表中。 找到节点3的所有相邻节点,跳过那些已经在关闭列表中、不可通过的点(节点2、4)。 如果该节点已经在开启列表中,则计算从当前节点到这个节点的G估算值为多少,例如节点12已经在开启列表中了,从当前节点(也就是节点3)到节点12的G估算值等于节点3当前G估值 + 1(从3走到12),也就是2。如果这个G估值比原先的G估值大,则什么都不做;如果比原来的G估值小,则把该节点的父节点改为当前节点,并将该节点的G估值设为更小的那个值。 再从开启列表中选取F值最低的那个,设为当前节点,重复以上过程。 在图中示例的六边形网格中,节点3的相邻网格有1、12、16,节点1和12已经在开启列表中了,节点3的G估值1+从3走到12的移动消耗1 = 2,2>节点12的当前G估值,所以什么都不做(节点1类似)。现在开启列表中有1、10、15、14、12、16,计算F估值,节点16最小,所以再以节点16为当前节点,重复以上过程。最终得到路径11、3、16、13、8。 三、在unity内的具体实现 1. 使用6个cube(每个cube旋转角差距60度)拼成一个六边形,用这些六边形拼出来一块网格,为方便调试,以数字依次命名。 2. 复制以下代码,命名为Hexagon,附加到每个六边形上:
3. 为所有六边形添加一个空的父gameobject,命名为HexManager,为HexManager添加以下代码:
4. 在其他地方调用searchRoute接口,检查调试。 作者:云影 来源: Unity官方平台 原地址:https://mp.weixin.qq.com/s/NWuD9G3ArekC0wyLnqXFJQ |
编后语:关于《蜂巢型六边形A星寻路算法unity完整流程》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《红怪全关卡高清地图一览 Carrion游戏地图有哪些》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器