~1 мин чтения

Игровые объекты

Сохраняемый (retained-mode) список отображения — что такое игровые объекты, как работает иерархия трансформаций и когда какой встроенный тип использовать.

Игровой объект — это всё, что живёт в графе сцены и может быть отрисовано, трансформировано или проверено на попадание. Phaser использует рендеринг в retained-mode (сохраняемом режиме): вы создаёте объекты один раз, изменяете их свойства, а рендерер отрисовывает то, что существует в текущий момент. Никакого покадрового вызова «нарисовать спрайт в (x, y)» нет.

Встроенные типы

ТипИспользуйте, когда
ImageСтатический текстурированный прямоугольник. Без анимации, без покадровой логики.
SpriteImage с присоединённым менеджером анимации.
TextОтрисованный текст. Недорого, если не менять его каждый кадр.
BitmapTextТекст, отрисованный из атласа шрифта. Недорого, даже если изменять его.
ContainerГруппа дочерних объектов, разделяющих общую трансформацию.
GraphicsФигуры в immediate-режиме, отрисованные в один объект.
TileSpriteТекстура, замощённая по области; дёшево для фонов.

Эмпирическое правило: сначала тянитесь к Image; переходите к Sprite только тогда, когда нужны анимации.

Иерархия трансформаций

Контейнеры образуют дерево. Мировая трансформация каждого дочернего объекта — это его локальная трансформация, скомпонованная с трансформацией его родителя. Именно так строятся составные объекты:

const ship = this.add.container(200, 200);
ship.add(this.add.image(0, 0, 'hull'));
ship.add(this.add.image(0, -20, 'turret'));
ship.setAngle(45); // поворачивает корпус и башню вместе

Добавление против создания

this.add.image(...) одновременно создаёт объект и добавляет его в список отображения сцены. Чтобы создать без добавления (например, чтобы добавить его только в контейнер), используйте this.make.image(...).

Связанные темы

  • Сцены — владельцы списка отображения.
  • Камеры — то, что определяет, какие объекты отрисовываются и где.