La rotación puede seguir la dirección de movimiento, la cámara o el mouse.

Mirar hacia la dirección de movimiento

if (direccion.sqrMagnitude > 0.001f)
{
    transform.forward = direccion;
}

Rotación suave

Quaternion rotacionObjetivo =
    Quaternion.LookRotation(direccion);

transform.rotation = Quaternion.Slerp(
    transform.rotation,
    rotacionObjetivo,
    velocidadRotacion * Time.deltaTime
);

RotateTowards

transform.rotation = Quaternion.RotateTowards(
    transform.rotation,
    rotacionObjetivo,
    gradosPorSegundo * Time.deltaTime
);

Solo eje Y

Para personajes 3D normalmente querés evitar inclinar el objeto.

Vector3 direccionPlano = new Vector3(
    direccion.x,
    0f,
    direccion.z
);

Rigidbody

Si usás Rigidbody, puede ser conveniente rotar con:

rb.MoveRotation(rotacionObjetivo);

dentro del flujo físico.


Resumen rápido