Спрайты не перемещаются при добавлении в группу в Phaser 3 - PullRequest
1 голос
/ 17 февраля 2020

Я использую 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);", но не повезло.

...