О чем этот пример
Любая игра в Phaser начинается с отображения графики на экране. Этот фундаментальный шаг — добавление изображения в сцену — является основой, на которой строятся все последующие игровые механики: анимация, физика, взаимодействие. Разберём базовый пример, который показывает, как загрузить ресурс и отобразить его, чтобы вы могли быстро перейти к созданию игрового мира.
Версия Phaser: код и демо в этой статье рассчитаны на Phaser 3.90.0.
Живой запуск
Ниже встроен рабочий билд примера. Оригинальный источник: GitHub.
Исходный код
class Example extends Phaser.Scene
{
preload ()
{
this.load.setBaseURL('https://raw.githubusercontent.com/phaserjs/examples/master/public/');
this.load.image('face', 'assets/pics/bw-face.png');
}
create ()
{
this.add.image(400, 300, 'face');
}
}
const config = {
type: Phaser.CANVAS,
parent: 'phaser-example',
width: 800,
height: 600
};
const game = new Phaser.Game(config);
// Scene add
game.scene.add('Boot', Example, true);
Структура сцены: класс `Example`
В Phaser основная логика игры организована в сценах (Scenes). Каждая сцена — это отдельный класс, расширяющий Phaser.Scene. В этом классе мы определяем ключевые этапы жизненного цикла сцены, такие как предзагрузка ресурсов (preload) и создание игровых объектов (create).
Этот подход позволяет чётко разделить загрузку и инициализацию, делая код более организованным и управляемым.
Этап предзагрузки: метод `preload`
Перед тем как использовать изображение, звук или другие ресурсы, их необходимо загрузить в память браузера. Для этого используется метод preload. Внутри него мы обращаемся к менеджеру загрузки this.load.
preload ()
{
this.load.setBaseURL('https://raw.githubusercontent.com/phaserjs/examples/master/public/');
this.load.image('face', 'assets/pics/bw-face.png');
}
Первая строка, setBaseURL, задаёт базовый URL-адрес для всех последующих загрузок. Это удобно, если все ваши ресурсы лежат в одной папке на сервере.
Вторая строка, load.image, регистрирует загрузку изображения. Первый аргумент ('face') — это уникальный строковый ключ (идентификатор), по которому мы будем обращаться к этому изображению в коде. Второй аргумент — путь к файлу относительно базового URL.
Создание объектов: метод `create`
После успешной загрузки всех ресурсов, объявленных в preload, Phaser автоматически вызывает метод create. Здесь происходит первичная настройка и добавление объектов на сцену.
create ()
{
this.add.image(400, 300, 'face');
}
Метод this.add.image создаёт новый игровой объект — изображение (Image) — и сразу добавляет его в список отображения сцены.
- Первые два аргумента (400, 300) — это координаты X и Y для центра изображения в пикселях.
- Третий аргумент ('face') — это ключ загруженного ранее изображения.
Этот объект становится частью сцены и будет отрисован на холсте.
Конфигурация и запуск игры
Для запуска игры необходимо создать экземпляр основного класса Phaser.Game, передав ему объект конфигурации.
const config = {
type: Phaser.CANVAS,
parent: 'phaser-example',
width: 800,
height: 600
};
Объект config определяет основные параметры:
- type: Рендерер (например, Phaser.CANVAS или Phaser.WEBGL).
- parent: ID HTML-элемента, в который будет встроен игровой холст.
- width и height: Размеры игрового холста в пикселях.
const game = new Phaser.Game(config);
// Scene add
game.scene.add('Boot', Example, true);
После создания экземпляра игры мы регистрируем нашу сцену в менеджере сцен. Метод game.scene.add принимает три аргумента:
1. Ключ сцены ('Boot') — строковый идентификатор.
2. Класс сцены (Example).
3. Флаг автозапуска (true). Если он установлен в true, эта сцена будет запущена немедленно после регистрации.
Что попробовать дальше
Вы освоили базовый паттерн Phaser: загрузка ресурса и его отображение на сцене. С этого начинается любая игра. Для экспериментов попробуйте изменить координаты в add.image, чтобы переместить картинку в угол экрана, загрузить другое изображение или зарегистрировать несколько сцен и переключаться между ними с помощью game.scene.start('SceneKey').
