范围攻击判断/炸弹爆炸伤害判断,求大佬指点

  • Creator 版本:CocosCreator_v2.4.4 windows 10系统

  • 目标平台: 模拟器 / web端

一个问题困扰很久了,看了巨多的开发文档。现在有问题请教论坛大佬

游戏中,有炸弹,炸弹爆炸后希望造成范围伤害。请问下,炸弹爆炸瞬间,可以通过什么方式来获取爆炸范围内的所有敌人。用collider貌似只能获取到第一个敌人,希望我搞错了。Unity中就可以获取到collision范围内所有的物体。

或者这样理解,游戏角色一刀砍下去,面前站了3个敌人,如何取得这被刀砍到的三个敌人的实例。

或者,游戏角色放了一个技能,这个技能是个范围伤害,如何获取这个技能范围内所有的敌人的collider或者node。谢谢了。

一般可以用距离检测法,也就是圆形,以炸弹为圆心设一个半径,然后检测角色坐标与圆心的距离,小于等于这个距离就能放入被击列表中了 这种简单的碰撞不要用物理引擎 浪费性能

可以换个思路,不用获得三个敌人的实例,
而是每个敌人获取刀的实例

1赞

是的,我们游戏里也常用这种方法,攻击者有个攻击框,敌人都有一个受击框,爆炸时判断攻击框与那些敌人的受击框相交即可。

给炸弹设置一个攻击范围,爆炸时根据攻击范围包围盒或者攻击范围圆来判定,在范围里就算受击

这个可以,换个思路确实可以解决,每个敌人身上添加 onCollisionEnter 来判断也是可以的,谢谢

用到砍跟炸弹不同,炸弹是同时受伤的,可以用圆形距离判断。用刀的话,一般有个先后顺序,前面砍到的先受伤害,一般用碰撞系统完成。

昨天晚上我也是这样想的,用炸弹的collider来主动判断,但是发现cocos creator 好像没有相关的api可以判断,在炸弹上写 onCollisionEnter(other,self){ }的话好像只能获得一个敌人的collider。
按照 @185900957 的思路,就是给每个敌人身上挂一个脚本,都写上 onCollisionEnter(other,self){ } ,然后判断是不是被炸了,应该是可以解决的。

我们项目的做法是将地图分割成N*N个块形成一个二维数组,那么在地图上的任意一个节点的位置都可以转换成二维数组中的索引,每个节点记录自己的索引(移动时刷新索引)。那么当你的炸弹爆炸的时候,就可以根据炸弹的索引去求出爆炸范围覆盖了哪些区域(索引),使用这些索引就可以知道有那些节点了。

2赞

这样从扩展性和实际操作性上都更简单,性能也会比大量的碰撞组件更好。也可以做简单的寻路操作。

你这是个好思路

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。