如何在游戏中只删除一组精灵中的一个精灵?

时间:2018-01-16 12:03:50

标签: phaser-framework

我正在用#PhaserJS编写一个游戏,我希望每次玩家被AI精灵触摸时只删除一组精灵中的一个精灵,这会使生命数减少一个,所以在创建函数中我有< / p>

  lifes = game.add.group();
  for(i = 0; i < 3; i++){
    j = i + 1;
    life = game.add.sprite(20 * j, 20, 'life');

    lifes.add(life);
  }
  lifes.fixedToCamera = true;

然后在更新函数中,我只是尝试在碰撞时删除一个精灵

function hitNinja (ninja, ronins) {
  lifes.kill();
}

问题在于它会压制显示在屏幕顶部的所有精灵组,如下图所示

生命x 3

enter image description here

1 个答案:

答案 0 :(得分:3)

在您的示例中,lifes是整个群组,因此在其上调用kill()会将其与其中的所有内容一起销毁。如果你想对组中的各个元素采取行动,你应该以某种方式迭代它们。

function hitNinja (ninja, ronins) {
    var children = lifes.getAll();
    children[children.length - 1].kill();
}

请注意,kill()是一种方法,如果您想稍后“重新启动”精灵,您可以使用它;否则,destroy()可能是更健全的选择。

Reference for Phaser.Group