Vector 2 unity что это
Vector2
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 2D vectors and points.
This structure is used in some places to represent 2D positions and vectors (e.g. texture coordinates in a Mesh or texture offsets in Material). In the majority of other cases a Vector3 is used.
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 or y component using [0] or [1] respectively. |
x | X component of the vector. |
y | Y component of the vector. |
Constructors
Public Methods
Equals | Returns true if the given vector is exactly equal to this vector. |
Normalize | Makes this vector have a magnitude of 1. |
Set | Set x and y components of an existing Vector2. |
ToString | Returns a formatted string for this vector. |
Static Methods
Angle | Returns the unsigned angle in degrees between from and to. |
ClampMagnitude | Returns a copy of vector with its magnitude clamped to maxLength. |
Distance | Returns the distance between a and b. |
Dot | Dot Product of two vectors. |
Lerp | Linearly interpolates between vectors a and b by t. |
LerpUnclamped | Linearly interpolates between vectors a and b by t. |
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 | Moves a point current towards target. |
Perpendicular | Returns the 2D vector perpendicular to this 2D vector. The result is always rotated 90-degrees in a counter-clockwise direction for a 2D coordinate system where the positive Y axis goes up. |
Reflect | Reflects a vector off the vector defined by a normal. |
Scale | Multiplies two vectors component-wise. |
SignedAngle | Returns the signed angle in degrees between from and to. |
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.
Vectors are a fundamental mathematical concept which allow you to describe a direction and magnitude. In games and apps, vectors are often used to describe some of the fundamental properties such as the position of a character, the speed something is moving, or the distance between two objects.
Vector arithmetic is fundamental to many aspects of computer programming such as graphics, physics and animation, and it is useful to understand it in depth to get the most out of Unity.
Vectors can be expressed in multiple dimensions, and Unity provides the Vector2, Vector3 and Vector4 classes for working with 2D, 3D, and 4D vectors. These three types of Vector classes all share many of the same functions, such as magnitude, so most of the information on this page applies to all three types of Vector unless otherwise specified.
This page provides an overview of the Vector classes and their common uses when scripting with them. For an exhaustive reference of every member of the vector classes, see the script reference pages for Vector2, Vector3 and Vector4.
Understanding Vector Arithmetic
Addition
When two vectors are added together, the result is equivalent to taking the original vectors as “steps”, one after the other. Note that the order of the two parameters doesn’t matter, since the result is the same either way.
If the first vector is taken as a point in space then the second can be interpreted as an offset or “jump” from that position. For example, to find a point 5 units above a location on the ground, you could use the following calculation:-
If the vectors represent forces then it is more intuitive to think of them in terms of their direction and magnitude (the magnitude indicates the size of the force). Adding two force vectors results in a new vector equivalent to the combination of the forces. This concept is often useful when applying forces with several separate components acting at once (eg, a rocket being propelled forward may also be affected by a crosswind).
Although the examples here show 2D vectors, the same concept applies to 3D and 4D vectors.
Subtraction
Vector subtraction is most often used to get the direction and distance from one object to another. Note that the order of the two parameters does matter with subtraction:-
As with numbers, adding the negative of a vector is the same as subtracting the positive.
The negative of a vector has the same magnitude as the original and points along the same line but in the exact opposite direction.
Direction and Distance from One Object to Another
If one point in space is subtracted from another, then the result is a vector that “points” from one object to the other:
As well as pointing in the direction of the target object, this vector’s magnitude is equal to the distance between the two positions. You may need a “normalized” vector giving the direction to the target, but with a fixed distance (say for directing a projectile). You can normalize a vector by dividing it by its own magnitude:
This approach is preferable to using both the magnitude and normalized properties separately, since they are both quite CPU-hungry (they both involve calculating a square root).
If you only need to use the distance for comparison (for a proximity check, say) then you can avoid the magnitude calculation altogether. The sqrMagnitude property gives the square of the magnitude value, and is calculated like the magnitude but without the time-consuming square root operation. Rather than compare the magnitude against a known distance, you can compare the squared magnitude against the squared distance:-
This is much more efficient than using the true magnitude in the comparison.
Sometimes, when working in 3D, you might need an “overground heading” to a target. For example, imagine a player standing on the ground who needs to approach a target floating in the air. If you subtract the player’s position from the target’s then the resulting vector will point upwards towards the target. This is not suitable for orienting the player’s transform since they will also point upwards; what is really needed is a vector from the player’s position to the position on the ground directly below the target. You can obtain this by taking the result of the subtraction and setting the Y coordinate to zero:-
Scalar Multiplication and Division
When discussing vectors, it is common to refer to an ordinary number (eg, a float value) as a scalar. The meaning of this is that a scalar only has “scale” or magnitude whereas a vector has both magnitude and direction.
Multiplying a vector by a scalar results in a vector that points in the same direction as the original. However, the new vector’s magnitude is equal to the original magnitude multiplied by the scalar value.
Likewise, scalar division divides the original vector’s magnitude by the scalar.
These operations are useful when the vector represents a movement offset or a force. They allow you to change the magnitude of the vector without affecting its direction.
When any vector is divided by its own magnitude, the result is a vector with a magnitude of 1, which is known as a normalized vector. If a normalized vector is multiplied by a scalar then the magnitude of the result will be equal to that scalar value. This is useful when the direction of a force is constant but the strength is controllable (eg, the force from a car’s wheel always pushes forwards but the power is controlled by the driver).
Dot Product
Below you can see a comparison of how vectors of varying angles compared with a reference vector return a dot product value between 1 and –1 :
The dot product is a mathematically simpler operation than calculating the cosine, so it can be used in place of the Mathf.Cos function or the vector magnitude operation in some circumstances (it doesn’t do exactly the same thing but sometimes the effect is equivalent). However, calculating the dot product function takes much less CPU time and so it can be a valuable optimization.
The dot product is useful if you want to calculate the amount of one vector’s magnitude that lies in the direction of another vector.
Naturally, the direction can be anything you like but the direction vector must always be normalized for this calculation. Not only is the result more correct than the magnitude of the velocity, it also avoids the slow square root operation involved in finding the magnitude.
Cross Product
The cross product is only meaningful for 3D vectors. It takes two 3D vectors as input and returns another 3D vector as its result.
The result vector is perpendicular to the two input vectors. You can use the “right hand screw rule” to remember the direction of the output vector from the ordering of the input vectors. If you can curl your fingers in the order of the input vectors, your thumb points in the direction of the output vector. If the order of the parameters is reversed then the resulting vector will point in the exact opposite direction but will have the same magnitude.
The magnitude of the result is equal to the magnitudes of the input vectors multiplied together and then that value multiplied by the sine of the angle between them. Some useful values of the sine function are shown below:-
The cross product can seem complicated since it combines several useful pieces of information in its return value. However, like the dot product, it is very efficient mathematically and can be used to optimize code that would otherwise depend on slower transcendental functions such as sine and cosine.
Computing a Normal/Perpendicular vector
The “left hand rule” can be used to decide the order in which the two vectors should be passed to the cross product function. As you look down at the top side of the surface (from which the normal will point outwards) the first vector should sweep around clockwise to the second:
The result will point in exactly the opposite direction if the order of the input vectors is reversed.
For meshes, the normal vector must also be normalized. This can be done with the normalized property, but there is another trick which is occasionally useful. You can also normalize the perpendicular vector by dividing it by its magnitude:-
Another useful note is that the area of the triangle is equal to perpLength / 2. This is useful if you need to find the surface area of the whole mesh or want to choose triangles randomly with probability based on their relative areas.
Понимание векторной арифметики
Сложение
При сложении 2 векторов результат эквивалентен тому, что получится если исходные векторы принять за следующие друг за другом “шаги”. Заметьте, что порядок двух слагаемых не важен, т.к. в любом случае результат будет одинаковый.
Если первый вектор принять за точку в пространстве, то второй вектор можно интерпретировать как сдвиг или “прыжок” из этой точки. Например, чтобы для поиска точки 5-тью единицами выше точки на земле, вы могли бы использовать следующий расчёт:-
Вычитание
Вычитание векторов чаще всего используется, чтобы узнать расстояние и направление одного объекта относительно другого. Заметьте, что при вычитании порядок параметров имеет значение:-
Отрицательный вектор имеет ту же величину, что и исходный вектор, и лежит на той же прямой, только в обратном направлении.
Скалярные умножение и деление
Говоря о векторах, в порядке вещей обращаться к обычным числам (например, значениям типа float) как к скалярам. Это значит, что у них есть только “размер” или величина, в то время как у векторов есть и величина и направление.
Умножение вектора на скаляр даёт в результате вектор, с тем же направлением, что и исходный вектор. Тем не менее, величина нового вектора равна исходной величине умноженной на скалярное значение.
Аналогично, скалярное деление делит исходную величину вектора на скаляр.
Эти операции полезны, когда вектор представляет из себя смещение движения или силу. Они позволяют вам изменить величину вектора без влияния на его направление.
Скалярное произведение (Dot Product)
Если работать с точки зрения углов, то можно достаточно просто найти соответствующие косинусы используя калькулятор. Тем не менее, полезно иметь интуитивное понимание основных значений косинуса, как показано на диаграмме ниже:-
Векторное произведение (Cross Product)
Другие операции предназначены для 2D или 3D векторов и для действительных векторов с любым числом измерений. Векторное произведение же, напротив, имеет смысл применять только для 3D векторов. Оно использует 2 вектора как входную информацию и возвращает ещё один вектор в качестве результата.
Итоговый вектор перпендикулярен двум исходным векторам. Можно использовать “правило левой руки”, чтобы запомнить направление выходного вектора относительно исходных векторов. Если первый параметр совпадает с большим пальцем руки, а второй параметр с указательным пальцем, то результат будет указывать в направлении среднего пальца. Если использовать обратный порядок параметров, то тогда итоговый вектор будет указывать в противоположном направлении, но его величина не изменится.
Величина результата равна произведению величин исходных векторов, умноженному на синус угла между ними. Некоторые полезные значения функции синуса указаны ниже:-
Векторное произведение может выглядеть сложным, т.к. оно включает в себя сразу несколько полезных частей информации в возвращённой величине. Тем не менее, как и скалярное произведение, оно очень эффективно с математической точки зрения и может быть использовано для оптимизации кода, который иначе будет зависеть от медленных и сложных функций. Если векторы представляют собой силы, то более естественно будет думать о них с точки зрения их направления и величины (величина определяет мощность силы). Сложение двух векторов силы в результате даёт новый вектор, эквивалентный комбинации этих сил. Этот концепт зачастую очень полезен при применении сил с различными раздельными компонентами, которые работают одновременно (например, на летящую вперёд ракету может влиять встречный или боковой ветер).
Vector2 Структура
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет вектор с двумя значениями одинарной точности с плавающей запятой.
Комментарии
Vector2Структура обеспечивает поддержку аппаратного ускорения.
В матричных преобразованиях экземпляры Vector2, Vector3 и Vector4 отображаются в виде строк: вектор v преобразуется матрицей M с помощью умножения vM.
Конструкторы
Создает новый объект Vector2 с двумя элементами, имеющими одинаковое значение.
Создает вектор, элементы которого имеют заданные значения.
Координата X вектора.
Координата Y вектора.
Свойства
Получает вектор, два элемента которого равны единице.
Получает вектор (1,0).
Получает вектор (0,1).
Возвращает вектор, два элемента которого равны нулю.
Методы
Возвращает вектор, элементы которого являются абсолютными значениями каждого из элементов заданного вектора.
Складывает два вектора.
Ограничивает минимальное и максимальное значение вектора.
Копирует элементы вектора в заданный массив.
Копирует элементы вектора в заданный массив, начиная с указанной позиции индекса.
Вычисляет евклидово расстояние между двумя заданными точками.
Возвращает квадрат евклидова расстояния между двумя заданными точками.
Делит заданный вектор на указанное скалярное значение.
Делит первый вектор на второй.
Возвращает скалярное произведение двух векторов.
Возвращает значение, указывающее, равен ли данный экземпляр указанному объекту.
Возвращает значение, указывающее, равен ли данный экземпляр другому вектору.
Возвращает хэш-код данного экземпляра.
Возвращает длину вектора.
Возвращает длину вектора в квадрате.
Выполняет линейную интерполяцию между двумя векторами на основе заданного взвешивания.
Возвращает вектор, элементы которого являются максимальными значениями каждой пары элементов в двух заданных векторах.
Возвращает вектор, элементы которого являются минимальными значениями каждой пары элементов в двух заданных векторах.
Умножает скалярное значение на заданный вектор.
Умножает вектор на заданный скаляр.
Возвращает новый вектор, значения которого являются произведением каждой пары элементов в двух заданных векторах.
Преобразует заданный вектор в отрицательный.
Возвращает вектор с тем же направлением, что и заданный вектор, но с длиной равной единице.
Возвращает отражение вектора от поверхности, которая имеет заданную нормаль.
Возвращает вектор, элементы которого являются квадратным корнем каждого из элементов заданного вектора.
Вычитает второй вектор из первого.
Возвращает строковое представление текущего экземпляра, используя форматирование по умолчанию.
Возвращает строковое представление текущего экземпляра, используя заданную строку форматирования для форматирования отдельных элементов.
Возвращает строковое представление текущего экземпляра, используя заданную строку форматирования для форматирования отдельных элементов и заданный поставщик формата для указания форматирования, определяемого языком и региональными параметрами.
Преобразует вектор посредством заданной матрицы 3×2.
Преобразует вектор посредством заданной матрицы 4×4.
Преобразует вектор посредством заданного значения поворота кватерниона.
Преобразует нормаль вектора посредством заданной матрицы 3×2.
Преобразует нормаль вектора посредством заданной матрицы 4×4.
Операторы
Складывает два вектора.
Делит заданный вектор на указанное скалярное значение.
Делит первый вектор на второй.
Возвращает значение, указывающее, равна ли каждая пара элементов в двух заданных векторах.
Возвращает значение, указывающее на неравенство двух заданных векторов.
Умножает скалярное значение на заданный вектор.
Умножает заданный вектор на указанное скалярное значение.
Возвращает новый вектор, значения которого являются произведением каждой пары элементов в двух заданных векторах.
Вычитает второй вектор из первого.
Преобразует заданный вектор в отрицательный.
Методы расширения
Понимание векторной арифметики
Сложение
При сложении 2 векторов результат эквивалентен тому, что получится если исходные векторы принять за следующие друг за другом “шаги”. Заметьте, что порядок двух слагаемых не важен, т.к. в любом случае результат будет одинаковый.
Если первый вектор принять за точку в пространстве, то второй вектор можно интерпретировать как сдвиг или “прыжок” из этой точки. Например, чтобы для поиска точки 5-тью единицами выше точки на земле, вы могли бы использовать следующий расчёт:-
Если векторы представляют собой силы, то более естественно будет думать о них с точки зрения их направления и величины (величина определяет мощность силы). Сложение двух векторов силы в результате даёт новый вектор, эквивалентный комбинации этих сил. Этот концепт зачастую очень полезен при применении сил с различными раздельными компонентами, которые работают одновременно (например, на летящую вперёд ракету может влиять встречный или боковой ветер).
Вычитание
Вычитание векторов чаще всего используется, чтобы узнать расстояние и направление одного объекта относительно другого. Заметьте, что при вычитании порядок параметров имеет значение:-
Отрицательный вектор имеет ту же величину, что и исходный вектор, и лежит на той же прямой, только в обратном направлении.
Скалярные умножение и деление
Говоря о векторах, в порядке вещей обращаться к обычным числам (например, значениям типа float) как к скалярам. Это значит, что у них есть только “размер” или величина, в то время как у векторов есть и величина и направление.
Умножение вектора на скаляр даёт в результате вектор, с тем же направлением, что и исходный вектор. Тем не менее, величина нового вектора равна исходной величине умноженной на скалярное значение.
Аналогично, скалярное деление делит исходную величину вектора на скаляр.
Эти операции полезны, когда вектор представляет из себя смещение движения или силу. Они позволяют вам изменить величину вектора без влияния на его направление.
Скалярное произведение (Dot Product)
Если работать с точки зрения углов, то можно достаточно просто найти соответствующие косинусы используя калькулятор. Тем не менее, полезно иметь интуитивное понимание основных значений косинуса, как показано на диаграмме ниже:-
Векторное произведение (Cross Product)
Другие операции предназначены для 2D или 3D векторов и для действительных векторов с любым числом измерений. Векторное произведение же, напротив, имеет смысл применять только для 3D векторов. Оно использует 2 вектора как входную информацию и возвращает ещё один вектор в качестве результата.
Итоговый вектор перпендикулярен двум исходным векторам. Можно использовать “правило левой руки”, чтобы запомнить направление выходного вектора относительно исходных векторов. Если первый параметр совпадает с большим пальцем руки, а второй параметр с указательным пальцем, то результат будет указывать в направлении среднего пальца. Если использовать обратный порядок параметров, то тогда итоговый вектор будет указывать в противоположном направлении, но его величина не изменится.
Величина результата равна произведению величин исходных векторов, умноженному на синус угла между ними. Некоторые полезные значения функции синуса указаны ниже:-
Векторное произведение может выглядеть сложным, т.к. оно включает в себя сразу несколько полезных частей информации в возвращённой величине. Тем не менее, как и скалярное произведение, оно очень эффективно с математической точки зрения и может быть использовано для оптимизации кода, который иначе будет зависеть от медленных и сложных функций.