Skip to content

Smooth LookAt in Unity

It’s a pity, that the transform.LookAt() function has no possibility to animate the rotation.

So, we need to create such a functionality ourselves.

To do that, we need a speed variable, i set it to 12, because i find, this is a proper value. And we need a look target.

float rotationSpeed = 12f;
Transform lookTarget;

Next, we need a Rotate function, in which we get the direction vector, then we check, if we have a direction, if not, we do nothing. Next, we create the look rotation to the direction. And last, we lerp the rotation of transform.

void Rotate() {
Vector3 direction = lookTarget.position - transform.position;
if(direction == Vector3.zero)
return;
Quaternion rotation = Quaternion.LookRotation(direction);
transform.rotation = Quaternion.Slerp(
transform.rotation,
rotation,
rotationSpeed * Time.deltaTime
);
}

Now, we can call the Rotate function in the Update function.

void Update(){
Rotate();
}