Vector3 unity что это
Vector3
struct in UnityEngine
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Description
Representation of 3D vectors and points.
This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doing common vector operations.
Besides the functions listed below, other classes can be used to manipulate vectors and points as well. For example the Quaternion and the Matrix4x4 classes are useful for rotating or transforming vectors and points.
Static Properties
Properties
magnitude | Returns the length of this vector (Read Only). |
normalized | Returns this vector with a magnitude of 1 (Read Only). |
sqrMagnitude | Returns the squared length of this vector (Read Only). |
this[int] | Access the x, y, z components using [0], [1], [2] respectively. |
x | X component of the vector. |
y | Y component of the vector. |
z | Z component of the vector. |
Constructors
Public Methods
Equals | Returns true if the given vector is exactly equal to this vector. |
Set | Set x, y and z components of an existing Vector3. |
ToString | Returns a formatted string for this vector. |
Static Methods
Angle | Returns the angle in degrees between from and to. |
ClampMagnitude | Returns a copy of vector with its magnitude clamped to maxLength. |
Cross | Cross Product of two vectors. |
Distance | Returns the distance between a and b. |
Dot | Dot Product of two vectors. |
Lerp | Linearly interpolates between two points. |
LerpUnclamped | Linearly interpolates between two vectors. |
Max | Returns a vector that is made from the largest components of two vectors. |
Min | Returns a vector that is made from the smallest components of two vectors. |
MoveTowards | Calculate a position between the points specified by current and target, moving no farther than the distance specified by maxDistanceDelta. |
Normalize | Makes this vector have a magnitude of 1. |
OrthoNormalize | Makes vectors normalized and orthogonal to each other. |
Project | Projects a vector onto another vector. |
ProjectOnPlane | Projects a vector onto a plane defined by a normal orthogonal to the plane. |
Reflect | Reflects a vector off the plane defined by a normal. |
RotateTowards | Rotates a vector current towards target. |
Scale | Multiplies two vectors component-wise. |
SignedAngle | Returns the signed angle in degrees between from and to. |
Slerp | Spherically interpolates between two vectors. |
SlerpUnclamped | Spherically interpolates between two vectors. |
SmoothDamp | Gradually changes a vector towards a desired goal over time. |
Operators
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Copyright ©2021 Unity Technologies. Publication Date: 2021-12-03.
Vector3 Структура
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет вектор с тремя значениями одинарной точности с плавающей запятой.
Комментарии
Vector3Структура обеспечивает поддержку аппаратного ускорения.
В матричных преобразованиях экземпляры Vector2, Vector3 и Vector4 отображаются в виде строк: вектор v преобразуется матрицей M с помощью умножения vM.
Конструкторы
Создает новый объект Vector3 с тремя элементами, имеющими одинаковое значение.
Создает вектор, элементы которого имеют заданные значения.
Создает новый объект Vector3 на основе заданного объекта Vector2 и значения.
Координата X вектора.
Координата Y вектора.
Координата Z вектора.
Свойства
Получает вектор, три элемента которого равны единице.
Получает вектор (1,0,0).
Получает вектор (1,0,0).
Получает вектор (0,0,1).
Получает вектор, три элемента которого равны нулю.
Методы
Возвращает вектор, элементы которого являются абсолютными значениями каждого из элементов заданного вектора.
Складывает два вектора.
Ограничивает минимальное и максимальное значение вектора.
Копирует элементы вектора в заданный массив.
Копирует элементы вектора в заданный массив, начиная с указанной позиции индекса.
Вычисляет векторное произведение двух векторов.
Вычисляет евклидово расстояние между двумя заданными точками.
Возвращает квадрат евклидова расстояния между двумя заданными точками.
Делит заданный вектор на указанное скалярное значение.
Делит первый вектор на второй.
Возвращает скалярное произведение двух векторов.
Возвращает значение, указывающее, равен ли данный экземпляр указанному объекту.
Возвращает значение, указывающее, равен ли данный экземпляр другому вектору.
Возвращает хэш-код данного экземпляра.
Возвращает длину данного объекта вектора.
Возвращает длину вектора в квадрате.
Выполняет линейную интерполяцию между двумя векторами на основе заданного взвешивания.
Возвращает вектор, элементы которого являются максимальными значениями каждой пары элементов в двух заданных векторах.
Возвращает вектор, элементы которого являются минимальными значениями каждой пары элементов в двух заданных векторах.
Умножает скалярное значение на заданный вектор.
Умножает вектор на заданный скаляр.
Возвращает новый вектор, значения которого являются произведением каждой пары элементов в двух заданных векторах.
Преобразует заданный вектор в отрицательный.
Возвращает вектор с тем же направлением, что и заданный вектор, но с длиной равной единице.
Возвращает отражение вектора от поверхности, которая имеет заданную нормаль.
Возвращает вектор, элементы которого являются квадратным корнем каждого из элементов заданного вектора.
Вычитает второй вектор из первого.
Возвращает строковое представление текущего экземпляра, используя форматирование по умолчанию.
Возвращает строковое представление текущего экземпляра, используя заданную строку форматирования для форматирования отдельных элементов.
Возвращает строковое представление текущего экземпляра, используя заданную строку форматирования для форматирования отдельных элементов и заданный поставщик формата для указания форматирования, определяемого языком и региональными параметрами.
Преобразует вектор посредством заданной матрицы 4×4.
Преобразует вектор посредством заданного значения поворота кватерниона.
Преобразует нормаль вектора посредством заданной матрицы 4×4.
Операторы
Складывает два вектора.
Делит заданный вектор на указанное скалярное значение.
Делит первый вектор на второй.
Возвращает значение, указывающее, равна ли каждая пара элементов в двух заданных векторах.
Возвращает значение, указывающее на неравенство двух заданных векторов.
Умножает скалярное значение на заданный вектор.
Умножает заданный вектор на указанное скалярное значение.
Возвращает новый вектор, значения которого являются произведением каждой пары элементов в двух заданных векторах.
Вычитает второй вектор из первого.
Преобразует заданный вектор в отрицательный.
Методы расширения
Как работают векторы. Баскетбол на Unity 3D
Учебные материалы для школы программирования. Часть 16
В этой статье, мы обратим свой взор в прошлое, и вспомним, с чего начиналась детская школа программирования Step to Science. Первоначальная идея проекта состояла в том, чтобы быть не просто кружком технического творчества, а стать для детей ответом на вопрос, «зачем учиться в школе?»
К чему нам физика, алгебра и геометрия, если мы не планируем проектировать космические корабли, если для счета у нас есть калькулятор в телефоне, расплачиваемся мы чаще картой, так что даже сдачу в уме считать не надо.
Я тоже в детстве вела такие рассуждения, и у родителей не было иных способов донести до меня истину, кроме фразы «нет слова не хочу, есть слово надо» и ремня, который без лишней полемики мотивировал садиться за уроки.
Порядок выполнения
На примере создания 2D игры «баскетбол», рассмотрим векторы (скорости, сил, локальной и глобальной систем координат). Разберем принципы представления систем координат и представления векторов. Также будет затронута работа с LineRenderer и многокамерность.
Создадим новый проект и импортируем в него приложенный ассет.
Ассет содержит в себе все ресурсы, необходимые для создания полноценного 2D приложения.
Для начала создадим небольшую сцену, в качестве фона выберем спрайт «спортзал» и установим на него сетку. Обратите внимание, что необходимо выставить коллайдеры для щита и корзины.
Конечно, необходимо выставить правильный Order in layer у спрайтов. Добавим мяч, применим к нему Circle collider и Rigidbody.
Внутри мяча должен находиться пустой объект с Audio Source, настроенным на воспроизведение звука удара.
Чтобы воспроизводить этот звук, напишем простой скрипт, закинем его на мяч и сконфигурируем.
В скрипте нет автопоиска Rigidbody, так что придётся закинуть его руками. Если нажать на Play, наш мяч упадёт, издавая звуки. Чтобы мяч отскакивал, создадим физический материал и закинем его на коллайдер мяча.
Теперь подумаем о том, чтобы мяч показывал своё направление. Для этого создадим скрипт, который рисует стрелки: нам понадобятся два пустых объекта с LineRenderer, один в другом.
Создадим материал для стрелки:
И добавим скрипт, который будет выставлять вершины LineRenderer’ов, делая из них стрелки:
Закинем скрипт на объект-родитель стрелки и настроим его.
Теперь надо написать скрипт, который будет вектор скорости передавать в наш скрипт «показывания» стрелки. Он очень простой:
Закинем его на мяч, в скрипте укажем риджибади мяча и объект со скриптом стрелки.
Теперь сделаем так, чтобы мяч можно было кидать. Для этого необходимо выставить ему тип Rigidbody как Kinematic и написать небольшой скрипт.
Скрипт выкладываем на пустой объект в мире и устанавливаем ему наш мяч в качестве риджитбади и его трейл.
Внутри панели должен лежать спрайт со следующими параметрами (обратите внимание на привязку):
Для того, чтобы при компиляции не возникало ошибок из-за отсутствия класса спавнера, данный скрипт приложен отдельным ассетом, и импортировать его можно только после создания спавнера.
Для того, чтобы сделать включение/выключение стрелок, используется скрипт Toggle, который реализован через эвент-систему юнити. Его необходимо закинуть на кнопку и сконфигурировать следующим образом.
Vector3 unity что это
С этого урока будут рассматриваться вектора. Но так как в Unity три класса векторов (Vector2, Vector3, Vector4), условное обозначение «общего» класса: Vector[X].
Т.е. если функция есть не только в одном классе, то буду писать Vector[X].Функция.
В коде «общий» класс использоваться не будет.
Интерполяция 1
Первая функция интерполяции векторов в Unity (C#):
Данная функция получает промежуточное значение (интерполирует) между векторами a и b на основе t.
При t равное 0 (или меньше) вернёт a. При t равное 1 (или больше) вернёт b. При t равное 0.5 вернёт среднее значение между a и b.
Применение
Можно изменить пример из урока 9 (Mathf Интерполяции):
В данном случае персонаж изменяет свои координаты по нескольким осям сразу (если конечная точка не на одной оси с персонажем). Из точки А в точку Б персонаж доберётся за одну секунду.
Можно поделить Time.time на какое-нибудь число, чтобы персонаж двигался медленнее (например на 60, тогда он доберётся за одну минуту).
Интерполяция 2
Вторая функция интерполяции векторов в Unity (C#):
Возвращает промежуточное значение между векторами a и b на основе t (t в промежутке от 0 до 1).
В отличии от Lerp эта функция возвращает значение не на прямой, а на дуге.
Для лучшего понимания рассмотрим пример:
Персонажу всё ещё надо из точки А попасть в точку Б, но у него на пути есть препятствие.
В данном случае персонаж не будет идти на прямую пытаясь пройти сквозь стену, а пойдёт по дуге (за одну минуту).
Понимание векторной арифметики
Сложение
При сложении 2 векторов результат эквивалентен тому, что получится если исходные векторы принять за следующие друг за другом “шаги”. Заметьте, что порядок двух слагаемых не важен, т.к. в любом случае результат будет одинаковый.
Если первый вектор принять за точку в пространстве, то второй вектор можно интерпретировать как сдвиг или “прыжок” из этой точки. Например, чтобы для поиска точки 5-тью единицами выше точки на земле, вы могли бы использовать следующий расчёт:-
Вычитание
Вычитание векторов чаще всего используется, чтобы узнать расстояние и направление одного объекта относительно другого. Заметьте, что при вычитании порядок параметров имеет значение:-
Отрицательный вектор имеет ту же величину, что и исходный вектор, и лежит на той же прямой, только в обратном направлении.
Скалярные умножение и деление
Говоря о векторах, в порядке вещей обращаться к обычным числам (например, значениям типа float) как к скалярам. Это значит, что у них есть только “размер” или величина, в то время как у векторов есть и величина и направление.
Умножение вектора на скаляр даёт в результате вектор, с тем же направлением, что и исходный вектор. Тем не менее, величина нового вектора равна исходной величине умноженной на скалярное значение.
Аналогично, скалярное деление делит исходную величину вектора на скаляр.
Эти операции полезны, когда вектор представляет из себя смещение движения или силу. Они позволяют вам изменить величину вектора без влияния на его направление.
Скалярное произведение (Dot Product)
Если работать с точки зрения углов, то можно достаточно просто найти соответствующие косинусы используя калькулятор. Тем не менее, полезно иметь интуитивное понимание основных значений косинуса, как показано на диаграмме ниже:-
Векторное произведение (Cross Product)
Другие операции предназначены для 2D или 3D векторов и для действительных векторов с любым числом измерений. Векторное произведение же, напротив, имеет смысл применять только для 3D векторов. Оно использует 2 вектора как входную информацию и возвращает ещё один вектор в качестве результата.
Итоговый вектор перпендикулярен двум исходным векторам. Можно использовать “правило левой руки”, чтобы запомнить направление выходного вектора относительно исходных векторов. Если первый параметр совпадает с большим пальцем руки, а второй параметр с указательным пальцем, то результат будет указывать в направлении среднего пальца. Если использовать обратный порядок параметров, то тогда итоговый вектор будет указывать в противоположном направлении, но его величина не изменится.
Величина результата равна произведению величин исходных векторов, умноженному на синус угла между ними. Некоторые полезные значения функции синуса указаны ниже:-
Векторное произведение может выглядеть сложным, т.к. оно включает в себя сразу несколько полезных частей информации в возвращённой величине. Тем не менее, как и скалярное произведение, оно очень эффективно с математической точки зрения и может быть использовано для оптимизации кода, который иначе будет зависеть от медленных и сложных функций. Если векторы представляют собой силы, то более естественно будет думать о них с точки зрения их направления и величины (величина определяет мощность силы). Сложение двух векторов силы в результате даёт новый вектор, эквивалентный комбинации этих сил. Этот концепт зачастую очень полезен при применении сил с различными раздельными компонентами, которые работают одновременно (например, на летящую вперёд ракету может влиять встречный или боковой ветер).