GameObject: базовые свойства и методы

В библиотеке Phaser все визуальные элементы сцены наследуются от класса Phaser.GameObjects.GameObject. Этот класс служит базой для спрайтов, текстов, контейнеров, графики и других объектов, предоставляя набор общих свойств и методов, необходимых для управления объектами в игровом мире.


Основные свойства GameObject

  1. scene Ссылка на сцену, в которой находится объект. Позволяет обращаться к ресурсам сцены, например, к таймерам, камере или другим объектам.

  2. type Строковое значение, указывающее тип объекта ('Sprite', 'Text', 'Image' и т.д.). Используется для идентификации объекта при обработке событий или в группах.

  3. active Булевое свойство, определяющее, участвует ли объект в обновлении (update) сцены. Если false, объект пропускается в цикле обновления, но остаётся видимым, если visible = true.

  4. visible Управляет отображением объекта. Установка false скрывает объект без удаления его из сцены. Комбинация active = false и visible = false часто используется для временного отключения объектов.

  5. alpha Прозрачность объекта. Значение от 0 (полностью прозрачный) до 1 (полностью непрозрачный).

  6. scaleX и scaleY Масштабирование объекта по осям X и Y. Позволяет увеличивать или уменьшать объект без изменения исходного размера текстуры.

  7. rotation и angle

    • rotation задаёт вращение объекта в радианах.
    • angle задаёт вращение в градусах. Связь между ними: angle = rotation * 180 / Math.PI.
  8. x и y Координаты объекта в пространстве сцены. Изменение этих значений перемещает объект.

  9. originX и originY Точка привязки объекта относительно его размеров. Например, (0,0) — верхний левый угол, (0.5,0.5) — центр, (1,1) — нижний правый угол.

  10. depth Порядок отображения объекта относительно других объектов. Чем выше значение, тем объект ближе к переднему плану.

  11. name Пользовательское имя объекта. Удобно для поиска или фильтрации объектов внутри сцены.


Основные методы GameObject

  1. setActive(active: boolean) Включает или отключает объект в цикле обновления. Пример:

    player.setActive(false); // объект перестанет обновляться
  2. setVisible(visible: boolean) Управляет видимостью объекта. Позволяет временно скрывать объекты без их удаления:

    enemy.setVisible(false);
  3. setAlpha(alpha: number) Изменяет прозрачность объекта:

    coin.setAlpha(0.5); // полупрозрачный объект
  4. setScale(x: number, y?: number) Масштабирование объекта по осям. Если y не указан, используется значение x для обеих осей:

    sprite.setScale(2); // увеличение в 2 раза
    sprite.setScale(1.5, 2); // по X и Y отдельно
  5. setAngle(degrees: number) Поворот объекта в градусах:

    arrow.setAngle(90); // повернуть на 90 градусов
  6. setOrigin(x: number, y: number) Устанавливает точку привязки объекта:

    sprite.setOrigin(0.5, 0.5); // центр
  7. destroy() Полное удаление объекта из сцены и освобождение ресурсов. Метод удаляет объект из групп и списков сцены. После вызова объект становится недоступен:

    enemy.destroy();

Взаимодействие с другими объектами

  • Группы (Phaser.GameObjects.Group) GameObject можно добавлять в группы, чтобы управлять сразу множеством объектов. Свойства active, visible, alpha и depth распространяются на объекты внутри группы по необходимости.

  • Контейнеры (Phaser.GameObjects.Container) Контейнеры позволяют объединять несколько GameObject в один объект для совместного перемещения, масштабирования или вращения.

    let container = this.add.container(100, 100, [sprite1, sprite2]);
    container.setScale(2); // увеличит сразу оба спрайта
  • Таймеры и события С помощью scene.time.addEvent объекты можно анимировать или управлять их свойствами по времени. GameObject сам не имеет встроенной логики анимации, но через сцену можно реализовать плавные изменения свойств.


Особенности управления видимостью и активностью

Комбинация active и visible позволяет эффективно управлять ресурсами:

  • active = false, visible = true – объект отображается, но не обновляется (экономия ресурсов CPU).
  • active = true, visible = false – объект участвует в логике, но не виден на экране.
  • active = false, visible = false – полностью отключённый объект, минимальное потребление ресурсов.

Это особенно важно для крупных игр с множеством спрайтов и объектов на сцене.


Наследование от GameObject

Все основные визуальные элементы Phaser, такие как Sprite, Image, Text, Graphics, наследуются от GameObject. Благодаря этому:

  • Обеспечивается единый интерфейс для управления свойствами и методами.
  • Можно создавать собственные кастомные объекты, расширяя GameObject и добавляя уникальные методы и свойства.
  • Возможна работа с объектами через общие группы и контейнеры без необходимости учитывать конкретный тип объекта.

Резюме ключевых моментов

  • GameObject — базовый класс всех визуальных объектов.
  • Свойства x, y, rotation, scale, alpha, visible, active позволяют управлять положением, размером и отображением.
  • Методы setActive, setVisible, setAlpha, setScale, setAngle, setOrigin, destroy обеспечивают удобное программное управление.
  • Контейнеры и группы расширяют возможности взаимодействия и управления множеством объектов.
  • Наследование позволяет создавать сложные кастомные объекты с сохранением базового функционала.

Эффективное использование GameObject является фундаментом для построения производительных и организованных игр на Phaser.