# SetLookRotation(Vector3, Vector3)

> Creates a rotation with the specified forward and upwards directions.

## Definition

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

```csharp
public void SetLookRotation(Vector3 view, Vector3 up)
```

### Parameters

**** (\[Vector3]\(/engine/6000.0/script-reference/unityengine/vector3)): The direction to look in.**** (\[Vector3]\(/engine/6000.0/script-reference/unityengine/vector3)): The vector that defines in which direction up is.

### Remarks

Modifies the current quaternion to have the specified `forward` and `upwards` directions.

This method updates the existing quaternion in place, unlike [Quaternion.LookRotation](/engine/6000.0/script-reference/unityengine/quaternion/lookrotation.md) which returns a new quaternion. If used to orient a [Transform](/engine/6000.0/script-reference/unityengine/transform.md), the Z axis is aligned with the `forward` direction vector and the Y axis with the `upwards` direction vector, assuming these vectors are orthogonal. Logs an error if the forward direction is zero.

Additional Resources: [Quaternion.LookRotation](/engine/6000.0/script-reference/unityengine/quaternion/lookrotation.md).

### Examples

```csharp
using UnityEngine;

// This example demonstrates the SetLookRotation method,
// and describes its key difference from the LookRotation method.
public class Quaternions : MonoBehaviour
{
    void Start()
    {        
        Vector3 direction = Vector3.right;

        // Method 1: LookRotation - a static method that created a new quaternion
        Quaternion newRotation = Quaternion.LookRotation(direction);
        Debug.Log($"LookRotation creates new: {newRotation}");

        // Method 2: SetLookRotation - an instance method that modifies an existing quaternion
        Quaternion existingRotation = Quaternion.identity;
        Debug.Log($"Before SetLookRotation: {existingRotation}");
        // Modifies in place
        existingRotation.SetLookRotation(direction); 
        Debug.Log($"After SetLookRotation:  {existingRotation}");

        // Both produce the same result, but use different approaches:
        Debug.Log($"Results are equal: {newRotation.Equals(existingRotation)}");

        // Usage patterns:
        // LookRotation: direct assignment
        transform.rotation = Quaternion.LookRotation(direction);

        // SetLookRotation: modify then assign
        Quaternion rotation = transform.rotation;
        rotation.SetLookRotation(direction);
        transform.rotation = rotation;
    }
}
```
