# RotateTowards

> Rotates a rotation from towards to.

## Definition

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

## RotateTowards(Quaternion, Quaternion, float)

Rotates a rotation `from` towards `to`.

```csharp
public static Quaternion RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta)
```

### Parameters

**** (\[Quaternion]\(/engine/6000.7/script-reference/unityengine/quaternion)): The unit quaternion to be aligned with `to`.**** (\[Quaternion]\(/engine/6000.7/script-reference/unityengine/quaternion)): The target unit quaternion.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The maximum angle in degrees allowed for this rotation.

### Returns

| Type                                                                    | Description                                                                     |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [Quaternion](/engine/6000.7/script-reference/unityengine/quaternion.md) | A unit quaternion rotated towards `to` by an angular step of `maxDegreesDelta`. |

### Remarks

The `from` quaternion is rotated towards `to` by an angular step of `maxDegreesDelta`. The rotation will not overshoot the `to` quaternion. Negative values of `maxDegreesDelta` moves away from `to` until the rotation is exactly the opposite direction.

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    // The object whose rotation we want to match.
    public Transform target;

    // Angular speed in degrees per sec.
    public float speed = 1.0f;

    void Update()
    {
        // The step size is equal to speed times frame time.
        var step = speed * Time.deltaTime;

        // Rotate our transform a step closer to the target's.
        transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, step);
    }
}
```

## RotateTowards(Quaternion, Quaternion, float)

Rotates a rotation `from` towards `to`.

```csharp
public static Quaternion RotateTowards(in Quaternion from, in Quaternion to, float maxDegreesDelta)
```

### Parameters

**** (\[Quaternion]\(/engine/6000.7/script-reference/unityengine/quaternion)): The unit quaternion to be aligned with `to`.**** (\[Quaternion]\(/engine/6000.7/script-reference/unityengine/quaternion)): The target unit quaternion.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The maximum angle in degrees allowed for this rotation.

### Returns

| Type                                                                    | Description                                                                     |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [Quaternion](/engine/6000.7/script-reference/unityengine/quaternion.md) | A unit quaternion rotated towards `to` by an angular step of `maxDegreesDelta`. |

### Remarks

The `from` quaternion is rotated towards `to` by an angular step of `maxDegreesDelta`. The rotation will not overshoot the `to` quaternion. Negative values of `maxDegreesDelta` moves away from `to` until the rotation is exactly the opposite direction.

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    // The object whose rotation we want to match.
    public Transform target;

    // Angular speed in degrees per sec.
    public float speed = 1.0f;

    void Update()
    {
        // The step size is equal to speed times frame time.
        var step = speed * Time.deltaTime;

        // Rotate our transform a step closer to the target's.
        transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, step);
    }
}
```
