Javascript Phaser sprite.kill()有时并不';行不通
我正在用phaser编写一些游戏,我在使用方法sprite.kill()时遇到了一个问题 有时当我调用sprite.kill()时,移相器似乎会因为碰撞/重叠而破坏身体,但视觉元素(图像和可拖动对象)仍在屏幕上。 我通过foreach为所有对象设置了重叠方法:Javascript Phaser sprite.kill()有时并不';行不通,javascript,html,phaser-framework,Javascript,Html,Phaser Framework,我正在用phaser编写一些游戏,我在使用方法sprite.kill()时遇到了一个问题 有时当我调用sprite.kill()时,移相器似乎会因为碰撞/重叠而破坏身体,但视觉元素(图像和可拖动对象)仍在屏幕上。 我通过foreach为所有对象设置了重叠方法: garbList.forEach(function(g) {
garbList.forEach(function(g) {
trashList.forEach(function(t) {
game.physics.arcade.overlap(g.sprite, t.sprite, garbHitTrash);
});
});
我有一个垃圾商和一个垃圾清单,他们有一个重叠的方法叫garbHitTrash
当Garbhittras被称为Garbhittras时,它只是“把垃圾扔到垃圾桶上”,破坏它的精灵,然后从当时的garbList那里弹出它
function garbHitTrash(garb, trash) {
if(garb.trash === trash.type) {
result['acertos']++;
} else {
result['erros']++;
}
garb.kill();
popGarbage(garb)
console.log('garbList.length ' + garbList.length);
}
如果需要完全删除元素,请查看
destroy
方法,而不是kill
。调用kill
只是将某些属性设置为false
(如alive
或visible
)的简写。但是,由于您的对象仍然存在并且仍在移动(我想是由于碰撞),这些属性可能会由另一个组件设置或重置。可能会晚一点,但我只是遇到了类似的问题
比方说我不想在foo里杀一个
目前,我不知道这是为什么。但是,如果你杀死或摧毁第二件物品,效果会更好
game.physics.arcade.collide(a, b, foo);//funky behavior
game.physics.arcade.collide(b, a, foo);//works as intended