Игровые объекты
Сохраняемый (retained-mode) список отображения — что такое игровые объекты, как работает иерархия трансформаций и когда какой встроенный тип использовать.
Игровой объект — это всё, что живёт в графе сцены и может быть отрисовано, трансформировано или проверено на попадание. Phaser использует рендеринг в retained-mode (сохраняемом режиме): вы создаёте объекты один раз, изменяете их свойства, а рендерер отрисовывает то, что существует в текущий момент. Никакого покадрового вызова «нарисовать спрайт в (x, y)» нет.
Встроенные типы
| Тип | Используйте, когда |
|---|---|
Image | Статический текстурированный прямоугольник. Без анимации, без покадровой логики. |
Sprite | Image с присоединённым менеджером анимации. |
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(...).