有没有一种方法可以检测与使用while循环创建的对象的碰撞?
我正在使用while循环在屏幕上重复图像:
this.spikeX = 0;
while (this.spikeX < this.world._width) {
this.spike = this.add.sprite(this.spikeX, 0, 'spikes');
this.physics.arcade.enable(this.spike);
this.gameObjects.push(this.spike);
this.spikeX += (this.spike.width * 0.75);
}
我有碰撞功能:
collision: function(obj1, obj2) {
if (obj1.body.x < obj2.body.x + obj2.body.width &&
obj1.body.x + obj1.body.width > obj2.body.x &&
obj1.body.y < obj2.body.y + obj2.body.height &&
obj1.body.height + obj1.body.y > obj2.body.y) {
return true;
}
},
if(this.collision(this.player, this.spike)) {
console.log('spike');
}
当我在update函数中调用此函数时,它不会检测到冲突,但是仅当我在while循环外创建一个尖峰时才起作用。
答案 0 :(得分:2)
这可能是因为您只有一个this.spike。 如果您有多个子画面,则需要将它们归为一组,并按以下方式创建它们:
spike_group = game.add.group();
spike = spikes.create(spikeX, 0, 'spikes');
然后,您检查钉队和一个球员中每个钉刺的碰撞情况。
而且,为什么不像这样使用街机碰撞:
// inside update function
physics.arcade.collide(player, spike_group , overlap_spikes, this);
// out of update function
function overlap_spikes()
{
console.log("touch spike");
}
注意:这些示例未使用'this'关键字。