算法-如何实现星际里面怪物的包围算法

算法-如何实现星际里面怪物的包围算法

瑾兮 发布于 2017-10-26 字数 81 浏览 1108 回复 2

如何高效率的实现像星际里面的一堆怪物寻路过去之后,包围一个攻击目标的算法?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-10-29 2 楼

星际的AI跟寻路还有碰撞, 是整套解决方案, 是比较常用的2d游戏的做法。

寻路是基于格子的, AI是基于寻路的。 基本的难点是实现基于动态变化的格子实现高效率的寻路算法, 传统的4个方向的A星或者8个方向的A星, 星际应该是8方向的。 因为他是单机的, 所以效率还好, 一般网游做动态A*只能做4个方向的。 否则效率是个问题。

算法的基本实现思路就是, 当玩家在格子上移动的时候, 在格子上记录一些信息, 比如朝向, 下一个可走的方向, 等等。 寻路的时候, 没次实时用这些信息, 在整个地图上切出一小块区域, 计算到达目的地的路径。 做完这些后, 在配合怪物的AI逻辑, 当一群怪物想攻击角色的时候, 根据怪物的攻击距离跟技能特性, 他自己就会找到最合适的可到达的位置去攻击

偏爱自由 2017-10-28 1 楼

我想了一想,整理了一下思路,代码我不会写,就只能说说思路了

思路是这样的:有很多怪物,让每个怪物只关注相邻两个怪物的动作,实时调整自己的位置.直至最后,每个怪物和其左右两个相邻怪物的距离相等.(当然,在算法中,每个两个怪物相邻距离是固定的),这样就得到一个所有怪物组成的圆环。

最后算出圆环后,再将其圆心与直实的主角位置计算差,补充到每个怪物上。这样就可以调整圆环的位置。这样虽然有点麻烦.但是应该能更可以让每两个怪物之间互动影响。至于圆环的大小,可以调每个怪物之间的距离大小来控制。

只是个人的一点想法,不是很成熟。仅供参考。