# Vector2

> Representation of 2D vectors and points.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IEquatable\<Vector2>](https://learn.microsoft.com/dotnet/api/system.iequatable-1), [IFormattable](https://learn.microsoft.com/dotnet/api/system.iformattable)

```csharp
public struct Vector2 : IEquatable<Vector2>, IFormattable
```

## Remarks

This structure is used in some places to represent 2D positions and vectors (e.g. texture coordinates in a [Mesh](/engine/6000.0/script-reference/unityengine/mesh.md) or texture offsets in [Material](/engine/6000.0/script-reference/unityengine/material.md)). In the majority of other cases a Vector3 is used.

## Fields

| Value                                                         | Description                |
| ------------------------------------------------------------- | -------------------------- |
| [x](/engine/6000.0/script-reference/unityengine/vector2/x.md) | X component of the vector. |
| [y](/engine/6000.0/script-reference/unityengine/vector2/y.md) | Y component of the vector. |

## Constructors

| Constructor                                                                                         | Description                                         |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [Vector2(System.Single,System.Single)](/engine/6000.0/script-reference/unityengine/vector2/ctor.md) | Constructs a new vector with given x, y components. |

## Properties

| Property                                                                            | Description                                                                                                                                                                                                                                                                                                    |
| ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [this\[\]](/engine/6000.0/script-reference/unityengine/vector2/item.md)             | Access the x or y component using \[0] or \[1] respectively.                                                                                                                                                                                                                                                   |
| [magnitude](/engine/6000.0/script-reference/unityengine/vector2/magnitude.md)       | Returns the length of this vector (Read Only).                                                                                                                                                                                                                                                                 |
| [normalized](/engine/6000.0/script-reference/unityengine/vector2/normalized.md)     | Returns a normalized vector based on the current vector. The normalized vector has a [Vector2.magnitude](/engine/6000.0/script-reference/unityengine/vector2/magnitude.md) of 1 and is in the same direction as the current vector. Returns a zero vector If the current vector is too small to be normalized. |
| [sqrMagnitude](/engine/6000.0/script-reference/unityengine/vector2/sqrmagnitude.md) | Returns the squared length of this vector (Read Only).                                                                                                                                                                                                                                                         |

## Static Properties

| Property                                                                                    | Description                                                                      |
| ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| [down](/engine/6000.0/script-reference/unityengine/vector2/down.md)                         | Shorthand for writing `Vector2(0, -1)`.                                          |
| [left](/engine/6000.0/script-reference/unityengine/vector2/left.md)                         | Shorthand for writing `Vector2(-1, 0)`.                                          |
| [negativeInfinity](/engine/6000.0/script-reference/unityengine/vector2/negativeinfinity.md) | Shorthand for writing `Vector2(float.NegativeInfinity, float.NegativeInfinity)`. |
| [one](/engine/6000.0/script-reference/unityengine/vector2/one.md)                           | Shorthand for writing `Vector2(1, 1)`.                                           |
| [positiveInfinity](/engine/6000.0/script-reference/unityengine/vector2/positiveinfinity.md) | Shorthand for writing `Vector2(float.PositiveInfinity, float.PositiveInfinity)`. |
| [right](/engine/6000.0/script-reference/unityengine/vector2/right.md)                       | Shorthand for writing `Vector2(1, 0)`.                                           |
| [up](/engine/6000.0/script-reference/unityengine/vector2/up.md)                             | Shorthand for writing `Vector2(0, 1)`.                                           |
| [zero](/engine/6000.0/script-reference/unityengine/vector2/zero.md)                         | Shorthand for writing `Vector2(0, 0)`.                                           |

## Methods

| Method                                                                        | Description                                                                                                          |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [Equals](/engine/6000.0/script-reference/unityengine/vector2/equals.md)       | Determines if the given vector is exactly equal to this vector.                                                      |
| [Normalize](/engine/6000.0/script-reference/unityengine/vector2/normalize.md) | Makes this vector have a [Vector2.magnitude](/engine/6000.0/script-reference/unityengine/vector2/magnitude.md) of 1. |
| [Scale](/engine/6000.0/script-reference/unityengine/vector2/scale.md)         | Multiplies every component of this vector by the same component of `scale`.                                          |
| [Set](/engine/6000.0/script-reference/unityengine/vector2/set.md)             | Set x and y components of an existing Vector2.                                                                       |
| [ToString](/engine/6000.0/script-reference/unityengine/vector2/tostring.md)   | Formats this vector as a string.                                                                                     |

## Static Methods

| Method                                                                                  | Description                                                                                                                                                                                   |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Angle](/engine/6000.0/script-reference/unityengine/vector2/angle.md)                   | Gets the unsigned angle in degrees between from and to.                                                                                                                                       |
| [ClampMagnitude](/engine/6000.0/script-reference/unityengine/vector2/clampmagnitude.md) | Creates a copy of a given vector, with its magnitude clamped to a maximum length.                                                                                                             |
| [Distance](/engine/6000.0/script-reference/unityengine/vector2/distance.md)             | Returns the distance between a and b.                                                                                                                                                         |
| [Dot](/engine/6000.0/script-reference/unityengine/vector2/dot.md)                       | Calculates the dot product of two vectors.                                                                                                                                                    |
| [Lerp](/engine/6000.0/script-reference/unityengine/vector2/lerp.md)                     | Linearly interpolates between vectors `a` and `b` by `t`.                                                                                                                                     |
| [LerpUnclamped](/engine/6000.0/script-reference/unityengine/vector2/lerpunclamped.md)   | Linearly interpolates between vectors `a` and `b` by `t`.                                                                                                                                     |
| [Max](/engine/6000.0/script-reference/unityengine/vector2/max.md)                       | Creates a vector that is made from the largest components of two vectors.                                                                                                                     |
| [Min](/engine/6000.0/script-reference/unityengine/vector2/min.md)                       | Creates a vector that is made from the smallest components of two vectors.                                                                                                                    |
| [MoveTowards](/engine/6000.0/script-reference/unityengine/vector2/movetowards.md)       | Moves a point `current` towards `target`.                                                                                                                                                     |
| [Perpendicular](/engine/6000.0/script-reference/unityengine/vector2/perpendicular.md)   | 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](/engine/6000.0/script-reference/unityengine/vector2/reflect.md)               | Reflects a vector off the surface defined by a normal.                                                                                                                                        |
| [Scale](/engine/6000.0/script-reference/unityengine/vector2/scale.md)                   | Multiplies two vectors component-wise.                                                                                                                                                        |
| [SignedAngle](/engine/6000.0/script-reference/unityengine/vector2/signedangle.md)       | Gets the signed angle in degrees between from and to.                                                                                                                                         |
| [SmoothDamp](/engine/6000.0/script-reference/unityengine/vector2/smoothdamp.md)         | Gradually changes a vector towards a desired goal over time.                                                                                                                                  |

## Operators

| Operator                                                                            | Description                                                                                                                                          |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [operator +](/engine/6000.0/script-reference/unityengine/vector2/op-addition.md)    | Adds two vectors.                                                                                                                                    |
| [operator /](/engine/6000.0/script-reference/unityengine/vector2/op-division.md)    | Divides a vector by a number.                                                                                                                        |
| [operator ==](/engine/6000.0/script-reference/unityengine/vector2/op-equality.md)   | Returns true if two vectors are approximately equal.                                                                                                 |
| [Vector3](/engine/6000.0/script-reference/unityengine/vector2/op-implicit.md)       | Converts a [Vector2](/engine/6000.0/script-reference/unityengine/vector2.md) to a [Vector3](/engine/6000.0/script-reference/unityengine/vector3.md). |
| [Vector2](/engine/6000.0/script-reference/unityengine/vector2/op-implicit.md)       | Converts a [Vector3](/engine/6000.0/script-reference/unityengine/vector3.md) to a [Vector2](/engine/6000.0/script-reference/unityengine/vector2.md). |
| [operator \*](/engine/6000.0/script-reference/unityengine/vector2/op-multiply.md)   | Multiplies a vector by a number.                                                                                                                     |
| [operator -](/engine/6000.0/script-reference/unityengine/vector2/op-subtraction.md) | Subtracts one vector from another.                                                                                                                   |
