# Lerp

> Linearly interpolates between vectors a and b by t.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.5/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## Lerp(Vector2, Vector2, float)

Linearly interpolates between vectors `a` and `b` by `t`.

```csharp
public static Vector2 Lerp(Vector2 a, Vector2 b, float t)
```

### Parameters

**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The first vector to interpolate between.**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The second vector to interpolate between.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The amount to interpolate between.

### Returns

| Type                                                              | Description                                                                                                                              |
| ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| [Vector2](/engine/6000.5/script-reference/unityengine/vector2.md) | When `t` is equal to 0, returns `a`. When `t` is equal to 1, returns `b`. When `t` is equal to 0.5, returns the midpoint of `a` and `b`. |

### Remarks

The parameter `t` is clamped to the range \[0, 1].

When `t` = 0 returns `a`.

When `t` = 1 return `b`.

When `t` = 0.5 returns the midpoint of `a` and `b`.

Additional Resources: [Vector2.LerpUnclamped](/engine/6000.5/script-reference/unityengine/vector2/lerpunclamped.md).

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    public Vector2 destination;

    void Update()
    {
        //Moves the GameObject from it's current position to destination over time
        transform.position = Vector2.Lerp(transform.position, destination, Time.deltaTime);
    }
}
```

## Lerp(Vector2, Vector2, float)

Linearly interpolates between vectors `a` and `b` by `t`.

```csharp
public static Vector2 Lerp(in Vector2 a, in Vector2 b, float t)
```

### Parameters

**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The first vector to interpolate between.**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The second vector to interpolate between.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The amount to interpolate between.

### Returns

| Type                                                              | Description                                                                                                                              |
| ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| [Vector2](/engine/6000.5/script-reference/unityengine/vector2.md) | When `t` is equal to 0, returns `a`. When `t` is equal to 1, returns `b`. When `t` is equal to 0.5, returns the midpoint of `a` and `b`. |

### Remarks

The parameter `t` is clamped to the range \[0, 1].

When `t` = 0 returns `a`.

When `t` = 1 return `b`.

When `t` = 0.5 returns the midpoint of `a` and `b`.

Additional Resources: [Vector2.LerpUnclamped](/engine/6000.5/script-reference/unityengine/vector2/lerpunclamped.md).

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    public Vector2 destination;

    void Update()
    {
        //Moves the GameObject from it's current position to destination over time
        transform.position = Vector2.Lerp(transform.position, destination, Time.deltaTime);
    }
}
```
