【发布时间】:2020-06-01 01:28:24
【问题描述】:
我正在使用 Phaser3。当我创建一组具有重力值的精灵时,它们不会移动。如果精灵是单独创建的,那么它们会移动。
例如,下面的代码可以工作:
brick1 = game.add.sprite(game.world.width / 2, 0, 'tile'+randomNumber(1,6));
brick2 = game.add.sprite((game.world.width / 2) + 60, 0, 'tile'+randomNumber(1,6));
game.physics.arcade.enable(brick1);
game.physics.arcade.enable(brick2);
brick1.enableBody=true;
brick2.enableBody=true;
brick1.body.gravity.y = 10;
brick2.body.gravity.y = 10;
我需要他们在一个组中,所以如果我有下面的代码,他们就不会移动。我检查了每个子项的属性,它们具有重力值。
brick = game.add.group();
brick1 = brick.create(game.world.width / 2, 0, 'tile'+randomNumber(1,6));
brick2 = brick.create((game.world.width / 2)+60, 0, 'tile'+randomNumber(1,6));
game.physics.arcade.enable(brick);
game.physics.arcade.enable(brick1);
game.physics.arcade.enable(brick2);
brick1.enableBody=true;
brick2.enableBody=true;
brick1.body.gravity.y = 10;
brick2.body.gravity.y = 10;
console.log(brick);
更新:
我意识到在设置组中每个孩子的速度时会发生这种情况。我想让用户按下向下光标键,然后改变速度。我有下面的代码,但这只会阻止它们移动。
if (!cursors.down.isDown) {
brick.children.forEach(child => child.body.setVelocity(300));
} else {
brick.children.forEach(child => child.body.setVelocity(300));
}
还尝试使用“brick.children.forEach(child => child.body.velocity = 300);”,但没有运气。
【问题讨论】:
标签: javascript phaser-framework 2d-games