我正在使用Phaser编写一些游戏,但是我遇到了方法sprite.kill()的问题。
有时,当我调用sprite.kill()时,Phaser似乎会破坏主体以进行碰撞/重叠,但视觉元素(图像和可拖动对象)仍在屏幕上。
我已经通过foreach为所有对象设置了重叠方法:
garbList.forEach(function(g) {
trashList.forEach(function(t) {
game.physics.arcade.overlap(g.sprite, t.sprite, garbHitTrash);
});
});
我有一个垃圾清单和一个垃圾清单,它们有一个重叠的方法叫做garbHitTrash。
调用garbHitTrash时,它只是“将垃圾扔到垃圾桶上”,破坏其精灵并从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
)的简捷方式。但是,由于您的对象仍然存在并且仍在移动(我想是由于碰撞),这些属性很可能由另一个组件设置或重置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句