_thisTransform.rotation = Quaternion.Slerp(_thisTransform.rotation, rot, maxAngle / angle);
В каждом фрейме поворачиваем обьект от ротейшен обьекта(_thisTransform.rotation) до ротейшен игрока(rot)
Линк
Величину поворота(говорю величину поворота,чтобы было более понятно.В действительности мы интерполируем от значения _thisTransform.rotation до rot) определяем как maxAngle / angle ,где maxAngle максимальный угол поворота во фрейме ,angle - угол между локалью enemy и player в текущем фрейме.
В то время как в каждом фоейме мы поворачиваем enemy ,мы обьект так же двигаем вдоль локальной оси.
_controller.Move(_thisTransform.forward * moveSpeed * Time.deltaTime);
Линк
Как еще более подробно написать я хз.