# SetFromToRotation

> Creates a rotation which rotates from fromDirection to toDirection.

## Definition

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

## SetFromToRotation(Vector3, Vector3)

Creates a rotation which rotates from `fromDirection` to `toDirection`.

```csharp
public void SetFromToRotation(Vector3 fromDirection, Vector3 toDirection)
```

### Parameters

**** (\[Vector3]\(/engine/6000.6/script-reference/unityengine/vector3)): **** (\[Vector3]\(/engine/6000.6/script-reference/unityengine/vector3)):&#x20;

### Remarks

Use this to create a rotation which starts at the first Vector (fromDirection) and rotates to the second Vector (toDirection). These Vectors must be set up in a script.

### Examples

```csharp
//This example shows how the rotation works between two GameObjects. Attach this to a GameObject.
//Make sure to assign the GameObject you would like your GameObject to rotate towards in the Inspector

using UnityEngine;

public class SetFromToRotationExample : MonoBehaviour
{
    //This is the Transform of the second GameObject
    public Transform m_NextPoint;
    Quaternion m_MyQuaternion;
    float m_Speed = 1.0f;

    void Start()
    {
        m_MyQuaternion = new Quaternion();
    }

    void Update()
    {
        //Set the Quaternion rotation from the GameObject's position to the next GameObject's position
        m_MyQuaternion.SetFromToRotation(transform.position, m_NextPoint.position);
        //Move the GameObject towards the second GameObject
        transform.position = Vector3.Lerp(transform.position, m_NextPoint.position, m_Speed * Time.deltaTime);
        //Rotate the GameObject towards the second GameObject
        transform.rotation = m_MyQuaternion * transform.rotation;
    }
}
```

```csharp
//In this example your GameObject rotates towards the position of the mouse

using UnityEngine;

public class Example2 : MonoBehaviour
{
    Quaternion m_MyQuaternion;
    float m_Speed = 1.0f;
    Vector3 m_MousePosition;

    void Start()
    {
        m_MyQuaternion = new Quaternion();
    }

    void Update()
    {
        //Fetch the mouse's position
        m_MousePosition = Input.mousePosition;
        //Fix how far into the Scene the mouse should be
        m_MousePosition.z = 50.0f;
        //Transform the mouse position into world space
        m_MousePosition = Camera.main.ScreenToWorldPoint(m_MousePosition);

        //Set the Quaternion rotation from the GameObject's position to the mouse position
        m_MyQuaternion.SetFromToRotation(transform.position, m_MousePosition);
        //Move the GameObject towards the mouse position
        transform.position = Vector3.Lerp(transform.position, m_MousePosition, m_Speed * Time.deltaTime);
        //Rotate the GameObject towards the mouse position
        transform.rotation = m_MyQuaternion * transform.rotation;
    }
}
```

## SetFromToRotation(Vector3, Vector3)

Creates a rotation which rotates from `fromDirection` to `toDirection`.

```csharp
public void SetFromToRotation(in Vector3 fromDirection, in Vector3 toDirection)
```

### Parameters

**** (\[Vector3]\(/engine/6000.6/script-reference/unityengine/vector3)): **** (\[Vector3]\(/engine/6000.6/script-reference/unityengine/vector3)):&#x20;

### Remarks

Use this to create a rotation which starts at the first Vector (fromDirection) and rotates to the second Vector (toDirection). These Vectors must be set up in a script.

### Examples

```csharp
//This example shows how the rotation works between two GameObjects. Attach this to a GameObject.
//Make sure to assign the GameObject you would like your GameObject to rotate towards in the Inspector

using UnityEngine;

public class SetFromToRotationExample : MonoBehaviour
{
    //This is the Transform of the second GameObject
    public Transform m_NextPoint;
    Quaternion m_MyQuaternion;
    float m_Speed = 1.0f;

    void Start()
    {
        m_MyQuaternion = new Quaternion();
    }

    void Update()
    {
        //Set the Quaternion rotation from the GameObject's position to the next GameObject's position
        m_MyQuaternion.SetFromToRotation(transform.position, m_NextPoint.position);
        //Move the GameObject towards the second GameObject
        transform.position = Vector3.Lerp(transform.position, m_NextPoint.position, m_Speed * Time.deltaTime);
        //Rotate the GameObject towards the second GameObject
        transform.rotation = m_MyQuaternion * transform.rotation;
    }
}
```

```csharp
//In this example your GameObject rotates towards the position of the mouse

using UnityEngine;

public class Example2 : MonoBehaviour
{
    Quaternion m_MyQuaternion;
    float m_Speed = 1.0f;
    Vector3 m_MousePosition;

    void Start()
    {
        m_MyQuaternion = new Quaternion();
    }

    void Update()
    {
        //Fetch the mouse's position
        m_MousePosition = Input.mousePosition;
        //Fix how far into the Scene the mouse should be
        m_MousePosition.z = 50.0f;
        //Transform the mouse position into world space
        m_MousePosition = Camera.main.ScreenToWorldPoint(m_MousePosition);

        //Set the Quaternion rotation from the GameObject's position to the mouse position
        m_MyQuaternion.SetFromToRotation(transform.position, m_MousePosition);
        //Move the GameObject towards the mouse position
        transform.position = Vector3.Lerp(transform.position, m_MousePosition, m_Speed * Time.deltaTime);
        //Rotate the GameObject towards the mouse position
        transform.rotation = m_MyQuaternion * transform.rotation;
    }
}
```
