Phaser sprite.kill() 有时不起作用
Phaser sprite.kill() sometimes doesn't work
我正在用移相器编写一些游戏,但我遇到了方法 sprite.kill() 的问题。
有时当我调用 sprite.kill() Phaser 似乎会破坏 collisions/overlapping 的主体,但视觉元素(图像和可拖动对象)仍在屏幕上。
我已经通过 foreach 为所有对象设置了重叠方法:
garbList.forEach(function(g) {
trashList.forEach(function(t) {
game.physics.arcade.overlap(g.sprite, t.sprite, garbHitTrash);
});
});
我有一个 garbageList 和一个 trashList,它们有一个称为 garbHitTrash 的重叠方法。
当调用 garbHitTrash 时,它只是 "throws the garbage on the trash" 销毁它的 sprite 并从 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
只是一个 shorthand,用于将某些属性设置为 false
(如 alive
或 visible
)。但是,由于您的对象仍然存在并且仍在移动(我想,由于碰撞),这些属性可能会被另一个组件设置或重置。
可能有点晚了,但我也遇到了类似的问题。
假设我不想 a.kill() in foo
game.physics.arcade.collide(a, b, foo);//funky behavior
game.physics.arcade.collide(b, a, foo);//works as intended
目前,我不知道这是为什么。但如果你杀死或摧毁 'second' 物品似乎效果更好。
我正在用移相器编写一些游戏,但我遇到了方法 sprite.kill() 的问题。
有时当我调用 sprite.kill() Phaser 似乎会破坏 collisions/overlapping 的主体,但视觉元素(图像和可拖动对象)仍在屏幕上。
我已经通过 foreach 为所有对象设置了重叠方法:
garbList.forEach(function(g) {
trashList.forEach(function(t) {
game.physics.arcade.overlap(g.sprite, t.sprite, garbHitTrash);
});
});
我有一个 garbageList 和一个 trashList,它们有一个称为 garbHitTrash 的重叠方法。
当调用 garbHitTrash 时,它只是 "throws the garbage on the trash" 销毁它的 sprite 并从 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
只是一个 shorthand,用于将某些属性设置为 false
(如 alive
或 visible
)。但是,由于您的对象仍然存在并且仍在移动(我想,由于碰撞),这些属性可能会被另一个组件设置或重置。
可能有点晚了,但我也遇到了类似的问题。
假设我不想 a.kill() in foo
game.physics.arcade.collide(a, b, foo);//funky behavior
game.physics.arcade.collide(b, a, foo);//works as intended
目前,我不知道这是为什么。但如果你杀死或摧毁 'second' 物品似乎效果更好。