Vector2
Vector2 хранит две координаты: x и y. Тип подходит для точек, размеров, направлений и экранных координат.
Зачем нужен и как обрабатывается
Заголовок раздела «Зачем нужен и как обрабатывается»Vector2 — универсальное значение из двух чисел. Значение получает смысл только в принимающем API: AgentInput трактует его как движение или углы взгляда, UI — как двумерную позицию, а математические методы — как обычный вектор.
Операции Dot, Angle, Distance, Normalize и арифметика выполняют только вычисление и не меняют игровое состояние. Чтобы результат подействовал, передайте его соответствующему setter-у или методу.
Быстрый пример
Заголовок раздела «Быстрый пример»local direction = Vector2.new(3, 4)local normalized = direction:Normalize()
print(normalized) -- (0.60, 0.80)print(direction) -- (3.00, 4.00)print(direction.magnitude) -- 5Normalize() возвращает новый вектор и не изменяет исходный.
Создание
Заголовок раздела «Создание»Vector2.new(x: number, y: number): Vector2local position = Vector2.new(120, 80)Свойства
Заголовок раздела «Свойства»| Свойство | Тип | Доступ | Описание |
|---|---|---|---|
x |
number |
get/set |
Компонент X. |
y |
number |
get/set |
Компонент Y. |
magnitude |
number |
get |
Длина вектора. |
sqrMagnitude |
number |
get |
Квадрат длины. |
normalized |
Vector2 |
get |
Нормализованная копия. |
magnitude, sqrMagnitude и normalized доступны только для чтения. Компоненты x и y можно менять.
Готовые значения
Заголовок раздела «Готовые значения»| Значение | Результат |
|---|---|
Vector2.zero |
(0, 0) |
Vector2.one |
(1, 1) |
Операторы
Заголовок раздела «Операторы»local sum = Vector2.new(1, 2) + Vector2.new(3, 4) -- (4, 6)local difference = sum - Vector2.new(1, 2) -- (3, 4)Поддерживаются сложение и вычитание двух Vector2.
Magnitude
Заголовок раздела «Magnitude»vector:Magnitude(): numberВозвращает длину вектора. Результат совпадает со свойством vector.magnitude.
Normalize
Заголовок раздела «Normalize»vector:Normalize(): Vector2Возвращает новую нормализованную копию и не меняет vector. То же значение можно получить через getter vector.normalized.
vector:Dot(other: Vector2): numberВозвращает скалярное произведение двух векторов.
vector:Angle(to: Vector2): numberВозвращает угол между направлениями в градусах. Между (1, 0) и (0, 1) результат равен 90.
Distance
Заголовок раздела «Distance»point:Distance(other: Vector2): numberВозвращает расстояние между двумя точками. Между (0, 0) и (3, 4) результат равен 5.
Частые ошибки
Заголовок раздела «Частые ошибки»Ожидание изменения исходного вектора
Заголовок раздела «Ожидание изменения исходного вектора»Сохраните результат Normalize():
direction = direction:Normalize()Вызов без присваивания не изменит direction.