О чем этот пример
Работа с геометрическими фигурами — основа визуализации в играх. В Phaser класс Rectangle предоставляет мощный инструмент для создания прямоугольных объектов, которые можно заливать цветом, обводить контуром и анимировать. Эта статья покажет, как создавать статические и анимированные прямоугольники, что полезно для прототипирования интерфейсов, создания фоновых элементов и визуальных эффектов без использования текстур.
Версия 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('bg', 'assets/skies/background1.png');
}
create ()
{
this.add.image(400, 300, 'bg');
const r1 = this.add.rectangle(200, 200, 148, 148, 0x6666ff);
const r2 = this.add.rectangle(400, 200, 148, 148, 0x9966ff);
r2.setStrokeStyle(4, 0xefc53f);
const r3 = this.add.rectangle(600, 200, 148, 148);
r3.setStrokeStyle(2, 0x1a65ac);
const r4 = this.add.rectangle(200, 400, 148, 148, 0xff6699);
const r5 = this.add.rectangle(400, 400, 148, 148, 0xff33cc);
const r6 = this.add.rectangle(600, 400, 148, 148, 0xff66ff);
this.tweens.add({
targets: r4,
scaleX: 0.25,
scaleY: 0.5,
yoyo: true,
repeat: -1,
ease: 'Sine.easeInOut'
});
this.tweens.add({
targets: r5,
alpha: 0.2,
yoyo: true,
repeat: -1,
ease: 'Sine.easeInOut'
});
this.tweens.add({
targets: r6,
angle: 90,
yoyo: true,
repeat: -1,
ease: 'Sine.easeInOut'
});
}
}
const config = {
type: Phaser.AUTO,
parent: 'phaser-example',
width: 800,
height: 600,
scene: Example
};
const game = new Phaser.Game(config);
Создание базового прямоугольника
В Phaser прямоугольник создаётся методом this.add.rectangle(). Этот метод принимает ключевые параметры для позиционирования и стилизации.
const r1 = this.add.rectangle(200, 200, 148, 148, 0x6666ff);
Параметры метода идут в таком порядке: координата X, координата Y, ширина, высота и цвет заливки в шестнадцатеричном формате. Цвет — это число, где 0x указывает на шестнадцатеричную систему. В примере r1 создаётся в точке (200, 200) с синей заливкой.
Добавление контура (обводки)
Прямоугольник может быть не только залитым, но и с контуром. Для этого используется метод setStrokeStyle().
r2.setStrokeStyle(4, 0xefc53f);
Метод принимает два аргумента: толщину линии в пикселях и цвет контура. В примере для r2 задаётся золотистая обводка толщиной 4 пикселя. Можно создать прямоугольник вообще без заливки, указав только контур. Для этого при создании просто не передавайте цвет заливки (пятый параметр), как сделано с r3, а затем примените setStrokeStyle().
const r3 = this.add.rectangle(600, 200, 148, 148);
r3.setStrokeStyle(2, 0x1a65ac);
Анимация через Tween-объекты
Phaser предоставляет мощную систему анимаций — Tweens. С её помощью можно плавно изменять свойства игровых объектов, включая прямоугольники.
this.tweens.add({
targets: r4,
scaleX: 0.25,
scaleY: 0.5,
yoyo: true,
repeat: -1,
ease: 'Sine.easeInOut'
});
В этом твине:
- targets — объект или массив объектов для анимации.
- scaleX и scaleY — целевые значения масштаба по осям.
- yoyo: true — заставляет анимацию проигрываться в обратном порядке после завершения.
- repeat: -1 — устанавливает бесконечное повторение.
- ease: 'Sine.easeInOut' — функция плавности, которая делает начало и конец анимации более мягкими.
Разные типы анимаций
Tween-система позволяет анимировать множество свойств. Рассмотрим анимацию прозрачности и поворота из исходного кода.
// Анимация прозрачности (alpha)
this.tweens.add({
targets: r5,
alpha: 0.2,
yoyo: true,
repeat: -1,
ease: 'Sine.easeInOut'
});
// Анимация угла поворота (angle)
this.tweens.add({
targets: r6,
angle: 90,
yoyo: true,
repeat: -1,
ease: 'Sine.easeInOut'
});
Свойство alpha меняет прозрачность от 1 (полностью непрозрачный) до 0 (полностью прозрачный). Свойство angle задаёт угол поворота в градусах. Использование одинаковых параметров yoyo, repeat и ease для всех твинов создаёт гармоничный набор циклических анимаций.
Порядок отрисовки и контекст
Важно помнить, что порядок создания объектов определяет их слой (z-index). Объекты, созданные позже, отображаются поверх ранее созданных. В примере сначала добавляется фон (this.add.image), а затем все прямоугольники — они будут поверх фона.
Прямоугольники, как и другие игровые объекты Phaser, наследуют общие свойства, которые можно менять динамически:
// Изменение позиции после создания
r1.x = 250;
r1.y = 250;
// Изменение цвета заливки
r1.fillColor = 0xff0000;
// Изменение видимости
r1.visible = false;
Эти свойства также можно анимировать через Tweens, что открывает широкие возможности для интерактивности.
Что попробовать дальше
Прямоугольники в Phaser — это простые, но невероятно гибкие строительные блоки. Вы научились создавать их, стилизовать и оживлять с помощью твинов. Для экспериментов попробуйте: создать сетку из прямоугольников и анимировать их по очереди, изменить свойство origin для вращения вокруг другой точки, комбинировать несколько анимаций (например, scale и alpha) в одном твине или использовать прямоугольники в качестве кнопок, меняя цвет по наведению курсора.
