Vector3 targetDir = target.position - transform.position;
// получаем локальные коардинаты таргета(создаёшь его отдельно, по центру нужной области)
float angle = Vector3.SignedAngle( targetDir, transform.forward, Vector3.up );
//определяем угол между таргетом и 'передом'объекта, относительно 'верха'(для определения знака)
if( angle >90.0f )
transform.eulerAngles = Quaternion.Euler(0, 90f, 0);
// transform.eulerAngles = Quaternion.Euler(0, -(angle-90f), 0);
//если при повороте берётся новая точка отсчёта