Спрайт внутри КОНТЕЙНЕРА (который находится внутри ГРУППЫ) не виден

#javascript #phaser-framework

#javascript #phaser-фреймворк

Вопрос:

Мне нужно отскочить от большого количества теннисных мячей на экране. В центре каждого шара есть текст метки. Поскольку шаров может быть много, я использую растровый текст для добавления меток на шар.

Подход, которому я следовал до сих пор для достижения этого, заключается в следующем:

 // Created a GROUP that will hold multiple balls
class Balls extends Phaser.Physics.Arcade.Group {
  constructor(scene) {
    super(scene.physics.world, scene);

    // Keep adding'Ball' to the group here
    scene.time.addEvent({
      delay: 2000,
      loop: true,
      callback: () => {
        const ball = new Ball(scene);
        this.add(ball);
      },
    });
  }
  // do some other stuff
}

// Created a CONTAINER that will hold BALL SPRITE with BITMAP TEXT
class Ball extends Phaser.GameObjects.Container {
  constructor(scene) {
    super(scene, 0, 0);

    const ball = scene.physics.add.sprite(0, 0, 'myBall');
    const label = scene.add.bitmapText(0, 0, 'fontName', 'label text');

    this.add(ball);
    this.add(label);

    // Enabling physics on container
    scene.physics.world.enable(this);

    // Moving/Bouncing balls around the screen
    this.body.setVelocity(50, 50).setBounce(1).setCollideWorldBounds(true);
  }
  // do some other stuff
}
  

Теперь проблема в том, что шары НЕ ВИДНЫ на экране, однако они присутствуют и хорошо отскакивают на экране (можно увидеть зеленый контур вокруг контейнера после поворота debug: true ).

Все, что мне нужно сделать, это отскочить несколько теннисных мячей по экрану с текстом метки в его центре (нужно обновлять его довольно часто).

Комментарии:

1. Можете ли вы попробовать this.scene.add.existing(this); после суперзвонка. В противном случае, не могли бы вы добавить больше кода, который мог бы показать, как вы добавляете этот контейнер в сцену.

2. @HarryScheuerle Я где-то читал, что добавление тела внутри существующего тела, такого как контейнер внутри группы, не будет работать. Я не уверен, насколько правильно это утверждение, но затем я изменил весь подход. Я больше не использую контейнер, а только группы. И я НЕ ДОБАВЛЯЛ КОНТЕЙНЕР непосредственно в сцену. В классе Balls у меня есть таймер, который включает контейнер в группу. А затем в «create fn» сцены я вводил группу в сцену.