Dirección

Vector3 direccion =
    objetivo.position -
    transform.position;

Evitar rotación vertical

direccion.y = 0f;

Rotar

if (direccion.sqrMagnitude > 0.001f)
{
    transform.rotation =
        Quaternion.LookRotation(
            direccion
        );
}

Suave

Quaternion objetivoRot =
    Quaternion.LookRotation(
        direccion
    );

transform.rotation =
    Quaternion.Slerp(
        transform.rotation,
        objetivoRot,
        velocidad * Time.deltaTime
    );

Resumen rápido

Quaternion.LookRotation(...)
Quaternion.Slerp(...)