public static Quaternion LookRotation(Vector3 forward, Vector3 up = Vector3.up);
Creates a rotation with forward and upwards.
upwards is used to guide the orientation, and right becomes the cross-product between it and forward.
Combined with Vector3.Cross this function is a staple for creating orientations.
Drag the sphere near forward or upwards to modify their direction.
Quaternion.LookRotation(new Vector3(0, 1, 0), new Vector3(1, 0, 0));
When setting transform.forward, LookRotation is used1:
// The blue axis of the transform in world space.
public Vector3 forward { ... set { rotation = Quaternion.LookRotation(value); } }
A custom LookAt could choose to use it:
public static Quaternion GetLookAtOrientation(Vector3 origin, Vector3 target)
=> GetLookAtOrientation(origin, target, Vector3.up);
public static Quaternion GetLookAtOrientation(Vector3 origin, Vector3 target, Vector3 up)
{
Vector3 lookDirection = target - origin;
return Quaternion.LookRotation(lookDirection, up);
}Return to Quaternions.
Next, Quaternion.FromToRotation.
transform.up and transform.right use FromToRotation.↩