如何高效率的实现像星际里面的一堆怪物寻路过去之后,包围一个攻击目标的算法?
星际的AI跟寻路还有碰撞, 是整套解决方案, 是比较常用的2d游戏的做法。
寻路是基于格子的, AI是基于寻路的。 基本的难点是实现基于动态变化的格子实现
高效率的寻路算法, 传统的4个方向的A星或者8个方向的A星, 星际应该是8方向的。
因为他是单机的, 所以效率还好, 一般网游做动态A*只能做4个方向的。 否则效率
是个问题。
算法的基本实现思路就是, 当玩家在格子上移动的时候, 在格子上记录一些信息,
比如朝向, 下一个可走的方向, 等等。 寻路的时候, 没次实时用这些信息, 在整
个地图上切出一小块区域, 计算到达目的地的路径。 做完这些后, 在配合怪物的AI
逻辑, 当一群怪物想攻击角色的时候, 根据怪物的攻击距离跟技能特性, 他自己就
会找到最合适的可到达的位置去攻击
-
0我觉得不单纯是格子,至少魔兽3不是,单位的碰撞体积毫无疑问是一个圆。
-
地图上的确都是按照网格设计的,但单位行走的路线是不依照格子的直线,算
-
法上略有差异。 – 灵剑2012 2012-09-09
我想了一想,整理了一下思路,代码我不会写,就只能说说思路了
思路是这样的:有很多怪物,让每个怪物只关注相邻两个怪物的动作,实时调整自己
的位置.直至最后,每个怪物和其左右两个相邻怪物的距离相等.(当然,在算法中,每个
两个怪物相邻距离是固定的),这样就得到一个所有怪物组成的圆环。
最后算出圆环后,再将其圆心与直实的主角位置计算差,补充到每个怪物上。这样就
可以调整圆环的位置。这样虽然有点麻烦.但是应该能更可以让每两个怪物之间互动
影响。至于圆环的大小,可以调每个怪物之间的距离大小来控制。
只是个人的一点想法,不是很成熟。仅供参考。
浙公网安备 33010602011771号