我正在用#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
答案 0 :(得分:3)
在您的示例中,lifes
是整个群组,因此在其上调用kill()
会将其与其中的所有内容一起销毁。如果你想对组中的各个元素采取行动,你应该以某种方式迭代它们。
function hitNinja (ninja, ronins) {
var children = lifes.getAll();
children[children.length - 1].kill();
}
请注意,kill()
是一种方法,如果您想稍后“重新启动”精灵,您可以使用它;否则,destroy()
可能是更健全的选择。