1

怎么做才能让子弹组中的子弹与敌组中的敌人相撞时,只有两个互相击中才会受到影响?

我试着做(在游戏状态):

if (FlxG.collide(bullet, enemy)){
        bullet.kill();
        enemy.kill();
    }

但这成功的唯一一件事就是杀死了整个团队。我如何只杀死受影响的人?

4

2 回答 2

1

Haxeflixel API 文档中:

collide(?ObjectOrGroup1:FlxBasic, ?ObjectOrGroup2:FlxBasic, ?NotifyCallback:Dynamic‑>Dynamic‑>Void):Bool

所以我认为你可以使用类似的东西:

FlxG.collide(
    groupBullets, 
    groupEnemies, 
    function (bullet:FlxObject, enemy:FlxObject):Void {
        enemy.kill();
        bullet.kill();
    }
);
于 2016-02-17T20:47:10.427 回答
1

你想传入一个通知回调:

https://github.com/HaxeFlixel/flixel/blob/24529ac96d4ad49a5f0c7e64799d0197cee9049e/flixel/FlxG.hx#L395

所以像这样的东西就是你想要的:

FlxG.collide(bulletGroup, enemyGroup, collideBulletEnemy));

function collideBulletEnemy(bullet:FlxObject, enemy:FlxObject):Void
{
    bullet.kill();
    enemy.kill();
}

更多解释:

flixel 中的 collide() 函数允许您将对象或组传递给任一参数,并告诉您这两个东西是否发生冲突。在有两个对象的情况下,您可以直接使用对这两个对象进行操作的逻辑来跟踪该测试。但是,如果其中一个对象是一个组,则仅根据测试您不知道哪些东西发生了碰撞,因此您需要依靠您自己提供的回调来获取该特定信息。

于 2016-02-17T20:36:51.813 回答