Для плавный поворотов используйте функции Vector3.Lerp/Slerp или Quaternion.Lerp/Slerp
Делается это примерно так
Quaternion.Slerp(rotation, lookRotation, SmoothLookAt * Time.deltaTime);
SmoothLookAt это параметр отвечающий, как быстро rotation перейдет в lookRotation, тоже самое для движения и Vector, делается это в Update или LateUpdate