О чем этот пример
Работа с геометрическими фигурами — фундамент для создания игровых объектов, коллайдеров и зон взаимодействия. В Phaser класс `Phaser.Geom.Circle` предоставляет простой способ определения круглой области на сцене. Эта статья покажет, как создать и визуализировать круг, что станет основой для более сложных механик, таких как зоны поражения, радиус действия заклинаний или планетарные орбиты.
Версия Phaser: код и демо в этой статье рассчитаны на Phaser 3.90.0.
Живой запуск
Ниже встроен рабочий билд примера. Оригинальный источник: GitHub.
Исходный код
class Example extends Phaser.Scene
{
create ()
{
const circle = new Phaser.Geom.Circle(400, 300, 100);
const graphics = this.add.graphics({ fillStyle: { color: 0xff0000 } });
graphics.fillCircleShape(circle);
}
}
const config = {
width: 800,
height: 600,
type: Phaser.AUTO,
parent: 'phaser-example',
scene: Example
};
const game = new Phaser.Game(config);
Инициализация сцены и конфигурация
Каждый пример в Phaser начинается с базовой настройки игры и определения сцены. Класс сцены содержит метод create(), который вызывается один раз при инициализации и идеально подходит для создания статических объектов.
class Example extends Phaser.Scene
{
create ()
{
// Здесь будет размещен наш код
}
}
const config = {
width: 800,
height: 600,
type: Phaser.AUTO,
parent: 'phaser-example',
scene: Example
};
const game = new Phaser.Game(config);
Создание геометрического круга
Объект круга создается с помощью конструктора Phaser.Geom.Circle. Он принимает три параметра: координаты центра по осям X и Y, а также радиус. Этот объект сам по себе не является спрайтом и не отображается на экране — он лишь хранит математическое описание фигуры.
const circle = new Phaser.Geom.Circle(400, 300, 100);
В данном примере круг будет расположен в центре экрана (400, 300) с радиусом 100 пикселей. Эти координаты и размеры можно легко менять для размещения круга в любой точке игрового мира.
Визуализация с помощью Graphics
Чтобы увидеть созданный круг, необходимо его нарисовать. Для этого в Phaser используется объект Graphics, который позволяет отрисовывать примитивы. Сначала создается объект графики с определенным стилем заливки, а затем вызывается метод fillCircleShape().
const graphics = this.add.graphics({ fillStyle: { color: 0xff0000 } });
graphics.fillCircleShape(circle);
Ключевые моменты:
1. this.add.graphics() создает и добавляет на сцену новый объект для рисования.
2. Параметр fillStyle определяет цвет заливки (здесь — ярко-красный, 0xff0000).
3. Метод fillCircleShape() принимает ранее созданный геометрический объект circle и заливает его указанным цветом.
Применение в реальных проектах
Созданный круг — это не просто картинка. Объект Phaser.Geom.Circle можно использовать для множества практических задач благодаря встроенным методам.
* **Проверка попадания точки:** Метод circle.contains(x, y) вернет true, если точка находится внутри круга. Это полезно для кликабельных зон или триггеров.
// Проверяем, находится ли курсор мыши внутри круга
if (circle.contains(pointer.x, pointer.y)) {
console.log('Попадание!');
}
* **Основа для физического тела:** Геометрический круг можно использовать как коллайдер для спрайта, создав физическое тело в форме круга. * **Определение зоны:** Задайте радиус вокруг персонажа для ауры или области обнаружения врагов.
Что попробовать дальше
Работа с Phaser.Geom.Circle проста, но открывает путь к созданию сложных игровых систем. Вы освоили создание и отрисовку круга. Для экспериментов попробуйте: анимировать радиус круга, создавать несколько кругов разного цвета, использовать круг как невидимую триггерную зону для запуска событий или привязать его положение к курсору мыши для интерактивного взаимодействия.
