4

正如它所说,在 Phaser.js 中,如何为组内的每个对象应用一个操作。我想将以下行应用于每个项目:

game.physics.arcade.collide(something, platforms);
game.physics.arcade.overlap(player, something, gameOver, null, this);
something.body.velocity.x = -120;

“Something”是对象名称,但我的组名称为“obstacleGroup”。我想这样做,因为我有另一个函数一直在为组创建新对象,所以我不一定知道它们被称为什么。

4

2 回答 2

12

Group.forEach 是您可以使用的一种迭代方法(正如@imcg 在我之前指出的那样)。但是,您将它用于 Arcade Physics 碰撞,并且可以将 Group 作为参数。因此,您可以将您的 Group 与平台中的所有内容相冲突,只需:

game.physics.arcade.collide(obstacleGroup, platforms);

一次,在您的更新循环中。

同样适用于overlap.

于 2014-06-23T08:09:22.127 回答
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);
于 2014-06-22T22:00:27.960 回答