星河战队|保卫萝卜4:从攻击范围到算法逻辑

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

众所周知 , 塔防游戏中的“塔” , 是有攻击范围的 。 本文将使用保卫萝卜4中的火瓶子进行模拟 , 分两部分展示其底层算法逻辑 。
火瓶子
↑ ↑ ↑ 火瓶子 ↑ ↑ ↑
------分割线------
Part1:对建筑物的攻击范围
1.算法分析:
鉴于建筑物为静态存在 , 我们可以近似地使用Dijkstra算法来判定攻击范围 。 Dijkstra算法是从一个顶点到其余各顶点的最短路径算法 , 解决的是有权图中最短路径问题 , 主要特点是从起始点开始 , 采用贪心算法的策略 , 每次遍历到始点距离最近且未访问过的顶点的邻接节点 , 直到扩展到终点为止 。
每一个地图 , 可以看成一个已知大小的二维矩阵 , 只要确定了中心点(塔的位置) , 然后向上下左右四个方向展开搜索 , 规定中心点的数值为0 , 下一个格子的数值为本格子的数值加1 。 对于地图上的每一个格子 , 算出到达这个格子的最短路径 , 最终遍历完所有的格子之后 , 获得最短的路线 。
2.实例演示:
↓ ↓ ↓ 一级火瓶子 ↓ ↓ ↓
(20)打得到
(21)打不到
↓ ↓ ↓ 二级火瓶子 ↓ ↓ ↓
(21)打得到
(22)打不到
↓ ↓ ↓ 三级火瓶子 ↓ ↓ ↓
(22)打不到
(30)打不到
3.建模总结:
限定直线 y=0 和 y=x 在第一象限所围成的区域(含边界) , 各等级火瓶子有以下攻击范围 。 一级火瓶子:(10) , (11) , (20) 。 二级火瓶子:(10) , (11) , (20) , (21) 。 三级火瓶子:(10) , (11) , (20) , (21) 。
范围建模
Part2:对兔子的攻击范围
1.算法分析:
由于兔子会在路径上匀速移动 , 我们可以使用碰撞检测算法来判定攻击范围 。 碰撞检测是建立在碰撞体上的 , 而碰撞体是对一个物体“边界”的确切描述 。 它描述了每个需要进行碰撞检测的物体的边界 , 并依靠数学方法判断这些边界是否相交 , 进而产生碰撞检测的结果 。
兔子的碰撞体可近似看成一个圆(或者是一个圆角的正方形) , 火瓶子的攻击范围也是一个圆 , 恰好构成了最简单的一类碰撞体——圆形碰撞体 。 根据初中数学的勾股定理 , 以及两圆相交的判定定理 , 即可获取其有效的攻击范围 。
2.实例演示:
↓ ↓ ↓ 一级火瓶子 ↓ ↓ ↓
一级
↓ ↓ ↓ 二级火瓶子 ↓ ↓ ↓
二级
↓ ↓ ↓ 三级火瓶子 ↓ ↓ ↓
三级
↓ ↓ ↓ 2D碰撞检测 ↓ ↓ ↓
降维打击
降维打击
↓ ↓ ↓ 巨呆兔和呆萌兔的对比 ↓ ↓ ↓
巨呆兔
【星河战队|保卫萝卜4:从攻击范围到算法逻辑】呆萌兔
↓ ↓ ↓ 模型高度对比 ↓ ↓ ↓
高度对比
3.建模总结
圆形碰撞体拥有最简单的计算过程 , 在运动速度够快(或形状够圆)的情况下也不会有太大的违和感 , 所以这种碰撞体在弹幕游戏和塔防游戏中应用广泛 。 对于巨呆兔而言 , 它所在的路径 并不在火瓶子的攻击范围内 , 但它的2D模型中心点却在路径上方 , 且其半径比呆萌兔的模型半径大 , 所以火瓶子完成了“不可能”做到的降维打击 , 呆萌兔幸运地逃过一劫(笑) 。
圆形碰撞体
------分割线------
如果有小伙伴对本文感到疑惑 , 或者想与楼主作进一步的探讨 , 欢迎在评论区留言哦~
推荐阅读
- lpl|zoom想去FPX战队却不要,告诉粉丝“我尽力了”,他们只买韩援?
- ag战队|AG训练赛打爆GK,一诺孙尚香、马可都挺猛,真有“1带4”那味了!
- RNG|“RNG和TES平级,BLG很真实”!MSI落幕仅1天,战队评级图火了
- ag战队|AG一诺发13字微博,爱思的评论引热议,夏季赛一诺很可能也不上!
- |godsent成立女子战队
- nb|NBW卡合同曝光,选手状告战队毁掉职业生涯,骚白也身陷其中
- edg战队|EDG冠军皮肤上线时间确认无误,全员将提前解析皮肤试玩体验!
- |ramzes666预测ti热门战队vp预测
- |ob.neon战队人员持续动荡,中单选手yopaj宣布离队
- 谛听|梦幻西游:王谢买入15技能谛听,紫禁城组建新战队“喝酒大队”
