正如它所说,在Phaser.js中,如何为组内的每个对象应用一个动作。我想对每个项目应用以下行:
game.physics.arcade.collide(something, platforms);
game.physics.arcade.overlap(player, something, gameOver, null, this);
something.body.velocity.x = -120;
“Something”是对象名称,但我的组名称为“obstacleGroup”。我想这样做,因为我有另一个功能一直向组创建新对象,所以我不一定知道它们被称为什么。
答案 0 :(得分:12)
Group.forEach就是你可以使用的一种迭代方法(正如@imcg在我之前指出的那样)。但是,您将其用于Arcade Physics碰撞,并且可以将Group作为参数。因此,您可以通过以下方式与群组中的所有内容发生冲突:
game.physics.arcade.collide(obstacleGroup, platforms);
一次,在你的更新循环中。
同样适用于overlap
。
答案 1 :(得分:9)
您可以使用Group.forEach迭代组中的对象并在其上调用函数:
obstacleGroup.forEach(function(item) {
game.physics.arcade.collide(item, platforms);
game.physics.arcade.overlap(player, item, gameOver);
item.body.velocity.x = -120;
}, this);