Класс Phaser.Math является центральным элементом библиотеки Phaser для работы с математическими вычислениями, часто используемыми в игровом процессе. Он предоставляет набор статических методов и констант, позволяющих выполнять операции над числами, векторами, углами и другими величинами без необходимости создавать экземпляры объектов.
Phaser.Math содержит ряд полезных констант, которые упрощают работу с углами, случайными величинами и ограничениями:
Phaser.Math.PI2 — полное окружение, равное (2 ).
Используется для вычислений, связанных с кругами и вращениями.Phaser.Math.DEG_TO_RAD — коэффициент для перевода
градусов в радианы.Phaser.Math.RAD_TO_DEG — коэффициент для перевода
радианов в градусы.Phaser.Math.MAX_SAFE_INTEGER и
Phaser.Math.MIN_SAFE_INTEGER — безопасные границы целых
чисел, идентичные стандартным значениям JavaScript.Phaser.Math.FLOOR и Phaser.Math.CEIL —
функции округления, предоставляющие альтернативу стандартным методам
Math.floor и Math.ceil.Эти константы часто используются в комбинации с методами для преобразования углов или ограничения значений.
Phaser.Math содержит множество методов для работы с числами:
Phaser.Math.Clamp(value, min, max)
Возвращает число value, ограниченное диапазоном
[min, max]. Если значение меньше min,
возвращается min; если больше max,
возвращается max.
Пример:
let speed = Phaser.Math.Clamp(playerSpeed, 0, 500);
Phaser.Math.Linear(a, b, t)
Вычисляет линейную интерполяцию между числами a и
b с параметром t от 0 до 1:
let x = Phaser.Math.Linear(0, 100, 0.5); // x = 50
Метод Linear особенно полезен при плавных анимациях и движении объектов.
Phaser.Math.Within(value, min, max)
Возвращает true, если value находится между
min и max, включая границы. Используется для
детекции попадания чисел в заданный диапазон.
Phaser.Math.Angle.Wrap(angle)
Приводит угол к диапазону от -π до π.
let normalized = Phaser.Math.Angle.Wrap(4 * Math.PI); // результат: 0
Phaser.Math.Angle.WrapDegrees(degrees)
Приводит угол в градусах к диапазону от -180 до
180.
Phaser.Math.Angle.Between(x1, y1, x2, y2)
Возвращает угол в радианах между двумя точками на плоскости.
Пример:
let angle = Phaser.Math.Angle.Between(player.x, player.y, target.x, target.y);
Phaser.Math.Angle.RotateTo(current, target, step)
Пошагово поворачивает угол current к target
с заданным шагом step. Полезно для плавного вращения
спрайтов.
Phaser.Math предоставляет методы генерации случайных чисел и случайных выборок:
Phaser.Math.RND.integerInRange(min, max) — случайное
целое число в диапазоне [min, max].Phaser.Math.RND.frac() — случайное число с плавающей
точкой от 0 до 1.Phaser.Math.RND.pick(array) — случайный элемент из
массива.Phaser.Math.RND.weightedPick(array, weights) — выбор
элемента с учётом весов.Методы работают через внутренний генератор
Phaser.Math.RND, что позволяет использовать один источник
случайных чисел во всём проекте.
Методы класса облегчают манипуляции с объектами Phaser.Math.Vector2 и координатами:
let vec = new Phaser.Math.Vector2(3, 4);
let normalized = vec.normalize(); // длина вектора = 1
let length = vec.length(); // длина вектора = 5
Методы Phaser.Math могут комбинироваться с векторами:
let angle = Phaser.Math.Angle.BetweenPoints(vec1, vec2);
let distance = Phaser.Math.Distance.BetweenPoints(vec1, vec2);
Phaser.Math объединяет в себе всё необходимое для:
Статические методы и константы позволяют создавать компактный и эффективный код без необходимости импортировать отдельные библиотеки для базовой математики в играх. Это делает Phaser.Math незаменимым инструментом при разработке 2D-игровых проектов.