【问题标题】:Sprites Not Moving When Added to Group in Phaser 3在 Phaser 3 中添加到组时精灵不移动
【发布时间】: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


    【解决方案1】:

    我试图让您的代码在尽可能少的修正下工作。我猜你的例子中的变量game指向当前场景,所以我称之为场景:

        let brick = scene.add.group();
        let brick1 = brick.create(game.world.width / 2, 0, 'tile'+randomNumber(1,6));
        let brick2 = brick.create((game.world.width / 2)+60, 0, 'tile'+randomNumber(1,6));
        scene.physics.add.existing(brick1);
        scene.physics.add.existing(brick2);
        brick1.enableBody=true;
        brick2.enableBody=true;
        brick1.body.gravity.y = 10;
        brick2.body.gravity.y = 10;
    

    【讨论】:

    • 感谢您的回复。这是很久以前的事了。最终,我完成了游戏并让它工作,但它经历了如此多的修改,现在很难找出做了什么。我现在最好删除这个问题吗?
    • 我认为您的问题可能对其他人有用,不应删除。
    • 您好,我将尝试挖掘出有效的代码并将其发布在此处。请耐心等待,因为它是很久以前的,可能很难找到。