Встроенные геометрические примитивы: Rectangle, Circle, Triangle, Ellipse, Line, Point, Polygon

Phaser предоставляет набор встроенных классов для работы с базовыми геометрическими фигурами. Эти примитивы используются для определения областей, столкновений, визуализации и других задач в игровом пространстве. Основные классы включают Rectangle, Circle, Triangle, Ellipse, Line, Point и Polygon. Каждый из них обладает собственными методами и свойствами для манипуляции, проверки столкновений и вычислений.


Rectangle

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

Circle создается через центр и радиус:

let circle = new Phaser.Geom.Circle(x, y, radius);

Основные свойства:

  • x, y — координаты центра.
  • radius — радиус круга.
  • diameter — диаметр, вычисляемый автоматически.

Методы:

  • contains(x, y) — проверяет попадание точки внутрь круга.
  • getBounds() — возвращает минимальный ограничивающий прямоугольник.
  • setTo(x, y, radius) — изменяет параметры круга.

Круги часто применяются для радиусных зон, эффектов, сферических коллизий.


Triangle

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

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

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

Point — это точка на 2D-плоскости:

let point = new Phaser.Geom.Point(x, y);

Основные свойства:

  • x, y — координаты точки.

Методы:

  • setTo(x, y) — обновляет координаты.
  • equals(point) — проверяет равенство с другой точкой.
  • distance(point) — вычисляет расстояние до другой точки.
  • clone() — создает копию точки.

Точки часто используются как опорные элементы для сложных примитивов или для вычисления движений.


Polygon

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.
  • Расчет траекторий движения объектов.
  • Определение областей для AI и триггеров событий.

Методы Phaser.Geom.Intersects предоставляют готовые функции для проверки пересечений между различными примитивами, например: RectangleToCircle, LineToRectangle, PolygonToCircle, что упрощает обработку коллизий в играх.


Каждый примитив обладает возможностью клонирования, масштабирования и преобразования, что делает их гибким инструментом для построения динамических игровых сцен и логики столкновений. Их прямое использование через Phaser.Geom позволяет отделить визуализацию (Graphics) от логики, повышая читаемость и поддерживаемость кода.