У меня есть два предположения как решить:
1. Зафризь поворот по Y в инспекторе или через код, тогда ,если я не ошибаюсь, Y не будет меняться.
2. Создай float переменную , которая будет равна тому повороту по y , что сейчас (то что тебе нужно) и в методе после поворота возвращай rotation по y на то значение, что было перед поворотом. Как-то так:
float stay_y;
void Start()[
stay_y = transform.rotation.y; //Берешь значения y до поворота
}
void LookAtTarget(GameObject gameObject){
if(gameObject != null){
Vector3 direction = target - gameObject.transform.position;
Quaternion rotation = Quaternion.LookRotation(direction);
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Speed * Time.deltaTime);
transform.rotation = new Quaternion(transform.rotation.x, stay_y, transform.rotation.z);//Возвращаешь rotation по y на значение до поворота.
}
}