对Phaser js的组中的每个对象应用一个动作

时间:2014-06-22 21:30:52

标签: javascript phaser-framework

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

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

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

2 个答案:

答案 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);