如何做到这一点,当子弹组中的子弹与敌人的敌人发生碰撞时,只有两个撞击对方会受到影响?
我尝试过(在播放状态):
if (FlxG.collide(bullet, enemy)){
bullet.kill();
enemy.kill();
}
但这个成功的唯一方法是杀死整个团队。我怎样才杀死受影响的人?
答案 0 :(得分:1)
您想要传递通知回调:
所以这就是你想要的东西:
FlxG.collide(bulletGroup, enemyGroup, collideBulletEnemy));
function collideBulletEnemy(bullet:FlxObject, enemy:FlxObject):Void
{
bullet.kill();
enemy.kill();
}
更多解释:
flixel中的collide()函数允许您将对象或组传递给任一参数,并告诉您这两件事是否发生冲突。在两个对象的情况下,您可以直接跟随该测试,逻辑操作这两个对象。但是,如果其中一个对象是一个群组,那么根据单独的测试,您根本不知道哪些事情发生了冲突,因此您需要依靠自己提供的回调来获取该特定信息。
答案 1 :(得分:1)
collide(?ObjectOrGroup1:FlxBasic, ?ObjectOrGroup2:FlxBasic, ?NotifyCallback:Dynamic‑>Dynamic‑>Void):Bool
所以我认为你可以使用类似的东西:
FlxG.collide(
groupBullets,
groupEnemies,
function (bullet:FlxObject, enemy:FlxObject):Void {
enemy.kill();
bullet.kill();
}
);