在循环中检测与对象的碰撞
Detecting Collision With Object in Loop
有没有办法检测与使用 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);
}
我有碰撞功能:[=12=]
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');
}
当我在更新函数中调用此函数时,它不会检测碰撞,但当我在 while 循环之外创建一个尖峰时它会起作用。
这可能是因为您只有一个 this.spike。
如果你有多个精灵,你需要将它们放在一个组中,并像这样创建它们:
spike_group = game.add.group();
spike = spikes.create(spikeX, 0, 'spikes');
然后检查 spike_group 和玩家内部每个尖峰的碰撞。
而且,你为什么不用这样的街机碰撞:
// inside update function
physics.arcade.collide(player, spike_group , overlap_spikes, this);
// out of update function
function overlap_spikes()
{
console.log("touch spike");
}
注意:这些示例不使用 'this' 关键字。
有没有办法检测与使用 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);
}
我有碰撞功能:[=12=]
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');
}
当我在更新函数中调用此函数时,它不会检测碰撞,但当我在 while 循环之外创建一个尖峰时它会起作用。
这可能是因为您只有一个 this.spike。 如果你有多个精灵,你需要将它们放在一个组中,并像这样创建它们:
spike_group = game.add.group();
spike = spikes.create(spikeX, 0, 'spikes');
然后检查 spike_group 和玩家内部每个尖峰的碰撞。
而且,你为什么不用这样的街机碰撞:
// inside update function
physics.arcade.collide(player, spike_group , overlap_spikes, this);
// out of update function
function overlap_spikes()
{
console.log("touch spike");
}
注意:这些示例不使用 'this' 关键字。