gpt4 book ai didi

javascript - 检测循环中对象的碰撞

转载 作者:行者123 更新时间:2023-12-01 01:22:45 25 4
gpt4 key购买 nike

有没有办法检测与使用 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');
}

当我在更新函数中调用此函数时,它不会检测碰撞,但当我在 while 循环之外创建单个尖峰时,它会起作用。

最佳答案

这可能是因为你只有一个 this.spike。如果你有多个 Sprite ,你需要将它们放入一个组中,并像这样创建它们:

spike_group = game.add.group();
spike = spikes.create(spikeX, 0, 'spikes');

然后检查spike_group内每个spike与玩家的碰撞。

而且,为什么不使用这样的街机碰撞:

// inside update function
physics.arcade.collide(player, spike_group , overlap_spikes, this);

// out of update function
function overlap_spikes()
{
console.log("touch spike");
}

注意:这些示例不使用“this”关键字。

关于javascript - 检测循环中对象的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54093300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com