Vector3
Vector3 хранит координаты x, y и z. Большинство мировых позиций и направлений KILLSCRIPT представлены этим типом.
Зачем нужен и как обрабатывается
Заголовок раздела «Зачем нужен и как обрабатывается»Vector3 сам не является объектом мира. Это значение, которым API передают позицию, направление, скорость или размер. Значение (1, 0, 0) может означать направление для Physics.Raycast(), позицию точки линии или другой параметр — назначение задаёт принимающий метод.
Векторные операции только вычисляют новое значение. Изменение локальных компонентов не перемещает агента, камеру или мировой объект, пока вектор не передан их API.
Быстрый пример
Заголовок раздела «Быстрый пример»local movement = Vector3.new(3, 7, 4)local horizontal = movement:OnlyXZ()
print(horizontal) -- (3.00, 0.00, 4.00)Создание
Заголовок раздела «Создание»Vector3.new(x: number, y: number, z: number): Vector3local position = Vector3.new(10, 2, -5)Свойства
Заголовок раздела «Свойства»| Свойство | Тип | Доступ | Описание |
|---|---|---|---|
x |
number |
get/set |
Компонент X. |
y |
number |
get/set |
Компонент Y. |
z |
number |
get/set |
Компонент Z. |
magnitude |
number |
get |
Длина вектора. |
sqrMagnitude |
number |
get |
Квадрат длины. |
normalized |
Vector3 |
get |
Нормализованная копия. |
Normalize() и normalized возвращают копию. Исходный Vector3 не изменяется.
Готовые направления
Заголовок раздела «Готовые направления»| Значение | Результат |
|---|---|
Vector3.back |
(0, 0, -1) |
Vector3.down |
(0, -1, 0) |
Vector3.forward |
(0, 0, 1) |
Vector3.left |
(-1, 0, 0) |
Vector3.right |
(1, 0, 0) |
Vector3.up |
(0, 1, 0) |
Vector3.zero |
(0, 0, 0) |
Vector3.one |
(1, 1, 1) |
Vector3.positiveInfinity |
(inf, inf, inf) |
Vector3.negativeInfinity |
(-inf, -inf, -inf) |
Операторы
Заголовок раздела «Операторы»local sum = Vector3.new(1, 2, 3) + Vector3.new(4, 5, 6)local difference = sum - Vector3.new(1, 2, 3)Поддерживаются сложение и вычитание двух Vector3.
Направление из yaw и pitch
Заголовок раздела «Направление из yaw и pitch»Vector3.fromYawPitchToDirection(yaw: number, pitch: number): Vector3Преобразует углы в градусах в единичное направление.
yaw, pitch |
Результат |
|---|---|
0, 0 |
(0, 0, 1) — вперёд |
90, 0 |
(1, 0, 0) — вправо |
0, 90 |
(0, -1, 0) — вниз |
| Вызов | Возвращает | Описание |
|---|---|---|
vector:Magnitude() |
number |
Длина вектора. |
vector:Normalize() |
Vector3 |
Новая нормализованная копия. |
vector:OnlyXZ() |
Vector3 |
Копия с y = 0. |
vector:Angle(to) |
number |
Угол между направлениями в градусах. |
vector:Dot(other) |
number |
Скалярное произведение. |
point:Distance(other) |
number |
Расстояние между точками. |
vector:Cross(other) |
Vector3 |
Векторное произведение. |
Порядок аргументов имеет значение:
local forward = Vector3.right:Cross(Vector3.up)print(forward) -- (0.00, 0.00, 1.00)Частые ошибки
Заголовок раздела «Частые ошибки»Нормализация без присваивания
Заголовок раздела «Нормализация без присваивания»Normalize() не изменяет исходный вектор:
direction = direction:Normalize()Вертикальная скорость попадает в горизонтальное движение
Заголовок раздела «Вертикальная скорость попадает в горизонтальное движение»Используйте OnlyXZ(), чтобы получить копию с обнулённым y.