有个技术难点请教一下。
两个子弹一前一后从屏幕左边飞到右边。中间有两个怪物。
要求,两个子弹只在第一次碰到怪物的时候掉血,也就是说每个怪物和子弹只能碰撞一次, 我想出不出来该怎么做这种效果了。给个建议呗
很普通的碰撞吧,碰到后将子弹的实例销毁就行了,你要有个子弹的管理器,用来与场景里面的怪物进行碰撞侦测
如果你用BOX2D,这个效果实现起来相当简单。
监听碰撞开始就可以了
给敌人加个属性hasShot,判断是否已经被子弹击中过,如果被击中过就不再处理和其他子弹的碰撞。
如果敌人很多的话可能就需要两个 Vector,vector1存放未被击中的敌人,vector2存放已被击中的敌人,当敌人被击中后,将其从vector1中移除,然后放进vector2。
这是我的思路,如果没理解错楼主意思的话。希望楼下有更好的方案。
你们可能误解我的意思了.
我的意思是 两颗子弹和两个怪物接触的时候都只能第一次碰撞. 第二次就不再检测了.
就是说 怪物A 和子弹1 子弹2 碰撞时掉了2滴血,
两颗子弹继续飞, 再次与怪物B碰撞同样怪物B也掉了2滴血.
接着子弹1 子弹2再次与怪物A碰撞的时候就不在掉血了.
是这样的效果.
那就子弹记录下自己碰撞过的所有怪物,每次碰撞检测时如果碰到了怪物就先检测下是否已经在自己碰过的怪物里
你说的意思是不是这样:
在每个子弹精灵里添加一个数组,每次碰撞过的怪物都添加到里边?
这个提议不错. 谢谢
每一颗子弹都有2点伤害,当碰到怪物的时候,怪物的生命值减去子弹的伤害,然后此时的子弹伤害值设为0,