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