Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Vector3i

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

Описание

Структура из 3 элементов, которая может использоваться для представления координат сетки 3D или любого другого триплета целых чисел.

Она использует целочисленные координаты и поэтому предпочтительнее Vector3, когда требуется точная точность. Обратите внимание, что значения ограничены 32 битами, и в отличие от Vector3 это нельзя настроить с помощью опции сборки движка. Используйте int или PackedInt64Array, если требуются 64-битные значения.

Примечание: В булевом контексте Vector3i будет оцениваться как false, если он равен Vector3i(0, 0, 0). В противном случае Vector3i всегда будет оцениваться как true.

Обучающие материалы

Свойства

int

x

0

int

y

0

int

z

0

Конструкторы

Vector3i

Vector3i()

Vector3i

Vector3i(from: Vector3i)

Vector3i

Vector3i(from: Vector3)

Vector3i

Vector3i(x: int, y: int, z: int)

Методы

Vector3i

abs() const

Vector3i

clamp(min: Vector3i, max: Vector3i) const

Vector3i

clampi(min: int, max: int) const

int

distance_squared_to(to: Vector3i) const

float

distance_to(to: Vector3i) const

float

length() const

int

length_squared() const

Vector3i

max(with: Vector3i) const

int

max_axis_index() const

Vector3i

maxi(with: int) const

Vector3i

min(with: Vector3i) const

int

min_axis_index() const

Vector3i

mini(with: int) const

Vector3i

sign() const

Vector3i

snapped(step: Vector3i) const

Vector3i

snappedi(step: int) const

Операторы

bool

operator !=(right: Vector3i)

Vector3i

operator %(right: Vector3i)

Vector3i

operator %(right: int)

Vector3i

operator *(right: Vector3i)

Vector3

operator *(right: float)

Vector3i

operator *(right: int)

Vector3i

operator +(right: Vector3i)

Vector3i

operator -(right: Vector3i)

Vector3i

operator /(right: Vector3i)

Vector3

operator /(right: float)

Vector3i

operator /(right: int)

bool

operator <(right: Vector3i)

bool

operator <=(right: Vector3i)

bool

operator ==(right: Vector3i)

bool

operator >(right: Vector3i)

bool

operator >=(right: Vector3i)

int

operator [](index: int)

Vector3i

operator unary+()

Vector3i

operator unary-()


Перечисления

enum Axis: 🔗

Axis AXIS_X = 0

Перечисленное значение для оси X. Возвращается max_axis_index() и min_axis_index().

Axis AXIS_Y = 1

Перечисленное значение для оси Y. Возвращается max_axis_index() и min_axis_index().

Axis AXIS_Z = 2

Перечисленное значение для оси Z. Возвращается max_axis_index() и min_axis_index().


Константы

ZERO = Vector3i(0, 0, 0) 🔗

Нулевой вектор — вектор у которого все координаты равны 0.

ONE = Vector3i(1, 1, 1) 🔗

Вектор-единица — вектор у которого все координаты равны 1.

MIN = Vector3i(-2147483648, -2147483648, -2147483648) 🔗

Вектор Min - вектор, все компоненты которого равны INT32_MIN. Может использоваться как отрицательный целочисленный эквивалент Vector3.INF.

MAX = Vector3i(2147483647, 2147483647, 2147483647) 🔗

Вектор Max - вектор, все компоненты которого равны INT32_MAX. Может использоваться как целочисленный эквивалент Vector3.INF.

LEFT = Vector3i(-1, 0, 0) 🔗

Левый единичный вектор. Представляет локальное направление налево и глобальное направление запад.

RIGHT = Vector3i(1, 0, 0) 🔗

Правый единичный вектор. Представляет локальное направление вправо и глобальное направление на восток.

UP = Vector3i(0, 1, 0) 🔗

Верхний единичный вектор.

DOWN = Vector3i(0, -1, 0) 🔗

Нижний единичный вектор.

FORWARD = Vector3i(0, 0, -1) 🔗

Прямой единичный вектор. Представляет локальное направление вперед и глобальное направление на север.

BACK = Vector3i(0, 0, 1) 🔗

Вектор единицы назад. Представляет локальное направление назад и глобальное направление юг.


Описания свойств

int x = 0 🔗

X компонент вектора. Может быть доступен через индекс [0].


int y = 0 🔗

Y компонент вектора. Может быть доступен через индекс [1].


int z = 0 🔗

Z компонент вектора. Также может быть доступен по индексу [2].


Описания конструктора

Vector3i Vector3i() 🔗

Создает инициализированный по умолчанию Vector3i со всеми компонентами, установленными в 0.


Vector3i Vector3i(from: Vector3i)

Создает Vector3i как копию заданного Vector3i.


Vector3i Vector3i(from: Vector3)

Создает новый Vector3i из заданного Vector3 путем усечения дробных частей компонентов (округление в сторону нуля). Для другого поведения рассмотрите возможность передачи результата Vector3.ceil(), Vector3.floor() или Vector3.round() этому конструктору.


Vector3i Vector3i(x: int, y: int, z: int)

Возвращает Vector3i с заданными компонентами.


Описания метода

Vector3i abs() const 🔗

Возвращает новый вектор в котором все компоненты будут абсолютными значениями (т.е положительными).


Vector3i clamp(min: Vector3i, max: Vector3i) const 🔗

Возвращает новый вектор со всеми компонентами, зажатыми между компонентами min и max, путем запуска @GlobalScope.clamp() для каждого компонента.


Vector3i clampi(min: int, max: int) const 🔗

Возвращает новый вектор со всеми компонентами, зажатыми между min и max, путем запуска @GlobalScope.clamp() для каждого компонента.


int distance_squared_to(to: Vector3i) const 🔗

Returns the squared Euclidean distance between this vector and to.

This method runs faster than distance_to(), so prefer it if you need to compare vectors or need the squared distance for some formula.


float distance_to(to: Vector3i) const 🔗

Returns the Euclidean distance between this vector and to.


float length() const 🔗

Возвращает длину (величину) данного вектора.


int length_squared() const 🔗

Возвращает длину данного вектора в квадрате.

Этот метод выполняется быстрее, чем length(), поэтому он предпочтительнее если вам нужно сравнить векторы или нужно расстояние в квадрате для какой-либо формулы.


Vector3i max(with: Vector3i) const 🔗

Возвращает покомпонентный максимум этого и with, эквивалентно Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z)).


int max_axis_index() const 🔗

Возвращает ось наибольшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_X.


Vector3i maxi(with: int) const 🔗

Возвращает покомпонентный максимум этого и with, что эквивалентно Vector3i(maxi(x, with), maxi(y, with), maxi(z, with)).


Vector3i min(with: Vector3i) const 🔗

Возвращает покомпонентный минимум этого и with, эквивалентно Vector3i(mini(x, with.x), mini(y, with.y), mini(z, with.z)).


int min_axis_index() const 🔗

Возвращает ось наименьшего значения вектора. См. константы AXIS_*. Если все компоненты равны, этот метод возвращает AXIS_Z.


Vector3i mini(with: int) const 🔗

Возвращает покомпонентный минимум этого и with, эквивалентно Vector3i(mini(x, with), mini(y, with), mini(z, with)).


Vector3i sign() const 🔗

Возвращает новый вектор, в котором каждый компонент установлен на 1, если он положительный, -1, если он отрицательный, и 0, если он равен нулю. Результат идентичен вызову @GlobalScope.sign() для каждого компонента.


Vector3i snapped(step: Vector3i) const 🔗

Возвращает новый вектор, в котором каждый компонент привязан к ближайшему кратному соответствующего компонента в step.


Vector3i snappedi(step: int) const 🔗

Возвращает новый вектор, в котором каждый компонент привязан к ближайшему кратному step.


Описания оператора

bool operator !=(right: Vector3i) 🔗

Возвращает true, если векторы не равны.


Vector3i operator %(right: Vector3i) 🔗

Получает остаток каждого компонента Vector3i с компонентами заданного Vector3i. Эта операция использует усеченное деление, которое часто нежелательно, так как оно плохо работает с отрицательными числами. Рассмотрите возможность использования @GlobalScope.posmod() вместо этого, если вы хотите обрабатывать отрицательные числа.

print(Vector3i(10, -20, 30) % Vector3i(7, 8, 9)) # Prints (3, -4, 3)

Vector3i operator %(right: int) 🔗

Получает остаток каждого компонента Vector3i с заданным int. Эта операция использует усеченное деление, которое часто нежелательно, поскольку оно плохо работает с отрицательными числами. Рассмотрите возможность использования @GlobalScope.posmod() вместо этого, если вы хотите обрабатывать отрицательные числа.

print(Vector3i(10, -20, 30) % 7) # Prints (3, -6, 2)

Vector3i operator *(right: Vector3i) 🔗

Умножает каждый компонент Vector3i на компоненты заданного Vector3i.

print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # Выводит (30, 80, 150)

Vector3 operator *(right: float) 🔗

Умножает каждый компонент Vector3i на заданный float. Возвращает Vector3.

print(Vector3i(10, 15, 20) * 0.9) # Выводит (9.0, 13.5, 18.0)

Vector3i operator *(right: int) 🔗

Умножает каждый компонент Vector3i на заданное int.


Vector3i operator +(right: Vector3i) 🔗

Добавляет каждый компонент Vector3i к компонентам указанного Vector3i.

print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # Prints (13, 24, 35)

Vector3i operator -(right: Vector3i) 🔗

Вычитает каждый компонент Vector3i из компонентов заданного Vector3i.

print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Prints (7, 16, 25)

Vector3i operator /(right: Vector3i) 🔗

Делит каждый компонент Vector3i на компоненты заданного Vector3i.

print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # Prints (5, 4, 10)

Vector3 operator /(right: float) 🔗

Делит каждый компонент Vector3i на заданное значение float. Возвращает Vector3.

print(Vector3i(1, 2, 3) / 2.5) # Выводит (0.4, 0.8, 1.2)

Vector3i operator /(right: int) 🔗

Делит каждый компонент Vector3i на заданное int.


bool operator <(right: Vector3i) 🔗

Сравнивает два вектора Vector3i, сначала проверяя, меньше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, а затем со значениями Z. Этот оператор полезен для сортировки векторов.


bool operator <=(right: Vector3i) 🔗

Сравнивает два вектора Vector3i, сначала проверяя, меньше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, а затем со значениями Z. Этот оператор полезен для сортировки векторов.


bool operator ==(right: Vector3i) 🔗

Возвращает true если векторы равны.


bool operator >(right: Vector3i) 🔗

Сравнивает два вектора Vector3i, сначала проверяя, больше ли значение X левого вектора, чем значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, а затем со значениями Z. Этот оператор полезен для сортировки векторов.


bool operator >=(right: Vector3i) 🔗

Сравнивает два вектора Vector3i, сначала проверяя, больше ли значение X левого вектора или равно ли ему значение X вектора right. Если значения X в точности равны, то он повторяет эту проверку со значениями Y двух векторов, а затем со значениями Z. Этот оператор полезен для сортировки векторов.


int operator [](index: int) 🔗

Доступ к компонентам вектора осуществляется с помощью их index. v[0] эквивалентно v.x, v[1] эквивалентно v.y, а v[2] эквивалентно v.z.


Vector3i operator unary+() 🔗

Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.


Vector3i operator unary-() 🔗

Возвращает отрицательное значение Vector3i. Это то же самое, что и запись Vector3i(-v.x, -v.y, -v.z). Эта операция меняет направление вектора, сохраняя ту же величину.