Phaser — это мощная библиотека для создания 2D-игр на JavaScript, которая предоставляет обширные возможности для работы с графикой. Одним из ключевых элементов визуального оформления являются статичные изображения, которые могут служить фоном, объектами интерфейса или декоративными элементами сцены.
Для использования изображений в Phaser необходимо сначала их
загрузить в сцену с помощью метода
preload(). Основной инструмент — это объект
this.load, предоставляющий методы для работы с различными
типами ресурсов.
preload() {
this.load.image('background', 'assets/background.png');
this.load.image('player', 'assets/player.png');
}
'background' и 'player' — это ключи, по
которым изображения будут доступны в сцене.'assets/background.png' — путь к файлу изображения.
Phaser поддерживает PNG, JPEG и другие форматы.Использование ключа позволяет легко ссылаться на ресурс при добавлении его на сцену, без необходимости повторного указания пути.
Метод this.add.image(x, y, key) создаёт объект
изображения и добавляет его на сцену.
create() {
this.add.image(400, 300, 'background'); // Центр экрана
this.add.image(100, 200, 'player'); // Произвольная позиция
}
Параметры метода image:
x и y — координаты центра изображения на
сцене.key — ключ загруженного ресурса.Важно помнить, что координаты задаются относительно центра изображения, а не его верхнего левого угла.
Phaser позволяет изменять размеры изображения с помощью
масштабирования (setScale) и изменения
размеров с использованием displayWidth и
displayHeight.
let player = this.add.image(100, 200, 'player');
// Масштабирование в 2 раза
player.setScale(2);
// Установка точных размеров
player.displayWidth = 50;
player.displayHeight = 100;
Использование setScale сохраняет пропорции изображения,
тогда как прямое изменение displayWidth и
displayHeight позволяет задавать произвольные размеры, что
может привести к искажению.
В Phaser порядок отображения объектов на сцене определяется
глубиной (depth). Объекты с большим
значением depth отображаются поверх объектов с меньшим
значением.
let background = this.add.image(400, 300, 'background');
let player = this.add.image(100, 200, 'player');
background.setDepth(0);
player.setDepth(1);
Глубина особенно важна при добавлении нескольких слоев графики, чтобы правильно организовать визуальную иерархию.
Изображения поддерживают установку прозрачности через свойство
alpha. Значение 1 соответствует полной
непрозрачности, 0 — полной прозрачности.
let ghost = this.add.image(200, 300, 'player');
ghost.setAlpha(0.5); // Полупрозрачное изображение
Также возможна динамическая анимация прозрачности для создания эффектов появления и исчезновения.
Phaser поддерживает фиксированные изображения, которые остаются на месте при перемещении камеры, что удобно для интерфейсов и фонов.
let hud = this.add.image(50, 50, 'player').setScrollFactor(0);
setScrollFactor(0) отключает смещение изображения при
движении камеры, закрепляя его на экране.
Хотя спрайты чаще используются для анимаций, статичные спрайты могут быть полезны для объектов с потенциальными взаимодействиями.
let platform = this.add.sprite(400, 500, 'platform');
platform.setInteractive();
platform.on('pointerdown', () => {
console.log('Платформа нажата');
});
Метод setInteractive() позволяет реагировать на события
мыши или касаний, превращая обычное изображение в интерактивный
элемент.
spritesheet) или текстурных атласах
(texture atlas) для снижения количества HTTP-запросов.Часто на сцене требуется наложение нескольких изображений для создания сложной композиции:
let bg = this.add.image(400, 300, 'background');
let tree = this.add.image(300, 400, 'tree');
let character = this.add.image(400, 450, 'player');
bg.setDepth(0);
tree.setDepth(1);
character.setDepth(2);
Такой подход позволяет строить сцены с несколькими слоями и эффектами перспективы без использования анимации.
Статичные изображения могут быть интегрированы с физическими объектами Phaser:
this.physics.add.staticImage(400, 500, 'platform');
staticImage создаёт объект, который участвует в
столкновениях, но не подвержен воздействию силы или гравитации, идеально
подходит для платформ и стен.
Эти возможности делают работу со статичными изображениями в Phaser гибкой и удобной, позволяя создавать визуально насыщенные сцены с оптимизированным управлением ресурсами и интерактивностью.