Phaser предоставляет набор встроенных классов для работы с базовыми геометрическими фигурами. Эти примитивы используются для определения областей, столкновений, визуализации и других задач в игровом пространстве. Основные классы включают Rectangle, Circle, Triangle, Ellipse, Line, Point и Polygon. Каждый из них обладает собственными методами и свойствами для манипуляции, проверки столкновений и вычислений.
Rectangle представляет собой прямоугольник, определяемый координатами верхнего левого угла и размерами:
let rect = new Phaser.Geom.Rectangle(x, y, width, height);
Основные свойства:
x, y — координаты верхнего левого
угла.width, height — ширина и высота.right, bottom — вычисляемые координаты
правой и нижней грани.Методы:
contains(x, y) — проверяет, находится ли точка внутри
прямоугольника.containsRect(rect) — проверяет, полностью ли другой
прямоугольник находится внутри.intersects(rect) — определяет пересечение с другим
прямоугольником.getCenter() — возвращает центр прямоугольника в виде
объекта Point.setTo(x, y, width, height) — изменяет положение и
размеры существующего прямоугольника.Прямоугольники активно используются для создания коллайдеров и зон взаимодействия.
Circle создается через центр и радиус:
let circle = new Phaser.Geom.Circle(x, y, radius);
Основные свойства:
x, y — координаты центра.radius — радиус круга.diameter — диаметр, вычисляемый автоматически.Методы:
contains(x, y) — проверяет попадание точки внутрь
круга.getBounds() — возвращает минимальный ограничивающий
прямоугольник.setTo(x, y, radius) — изменяет параметры круга.Круги часто применяются для радиусных зон, эффектов, сферических коллизий.
Triangle определяется тремя вершинами:
let tri = new Phaser.Geom.Triangle(x1, y1, x2, y2, x3, y3);
Основные свойства:
x1, y1, x2, y2, x3, y3 — координаты вершин.area() — вычисляет площадь треугольника.Методы:
contains(x, y) — проверяет, лежит ли точка внутри
треугольника.getCentroid() — возвращает центр масс.setTo(x1, y1, x2, y2, x3, y3) — обновляет вершины
треугольника.containsTriangle(triangle) — проверяет полное включение
другого треугольника.Треугольники применяются для формирования сложных коллизий и полиго́нов.
Ellipse создается через центр и размеры осей:
let ellipse = new Phaser.Geom.Ellipse(x, y, width, height);
Основные свойства:
x, y — координаты центра.width, height — размеры по горизонтали и
вертикали.radiusX, radiusY — половины ширины и
высоты соответственно.Методы:
contains(x, y) — проверяет точку внутри эллипса.getBounds() — возвращает ограничивающий
прямоугольник.setTo(x, y, width, height) — обновляет параметры
эллипса.Эллипсы полезны для зон обзора, анимаций движения и радиусных эффектов с разной шириной и высотой.
Line определяется начальной и конечной точкой:
let line = new Phaser.Geom.Line(x1, y1, x2, y2);
Основные свойства:
x1, y1, x2, y2 — координаты начала и конца линии.length() — длина линии.angle() — угол наклона линии.Методы:
setTo(x1, y1, x2, y2) — обновляет координаты.getPoint(t) — возвращает точку на линии, где
t от 0 до 1.intersects(line) — проверяет пересечение с другой
линией.Линии активно используются для траекторий, лазеров, лучевых коллизий и визуальных эффектов.
Point — это точка на 2D-плоскости:
let point = new Phaser.Geom.Point(x, y);
Основные свойства:
x, y — координаты точки.Методы:
setTo(x, y) — обновляет координаты.equals(point) — проверяет равенство с другой
точкой.distance(point) — вычисляет расстояние до другой
точки.clone() — создает копию точки.Точки часто используются как опорные элементы для сложных примитивов или для вычисления движений.
Polygon создается набором вершин:
let poly = new Phaser.Geom.Polygon([x1, y1, x2, y2, x3, y3, ...]);
Основные свойства:
points — массив объектов Point,
представляющих вершины.closePath — указывает, замкнут ли полигон.Методы:
contains(x, y) — проверка попадания точки внутрь
полигона.getBounds() — возвращает минимальный ограничивающий
прямоугольник.setTo(pointsArray) — обновление вершин полигона.getCentroid() — вычисление центра масс.area() — вычисление площади полигона.Полигоны применяются для сложных областей коллизий, хитбоксов, зон взаимодействия и динамических форм.
Примитивы Phaser могут использоваться в комбинации для сложных задач:
Graphics.Методы Phaser.Geom.Intersects предоставляют готовые
функции для проверки пересечений между различными примитивами, например:
RectangleToCircle, LineToRectangle,
PolygonToCircle, что упрощает обработку коллизий в
играх.
Каждый примитив обладает возможностью клонирования, масштабирования и
преобразования, что делает их гибким инструментом для построения
динамических игровых сцен и логики столкновений. Их прямое использование
через Phaser.Geom позволяет отделить визуализацию
(Graphics) от логики, повышая читаемость и поддерживаемость
кода.