Afaik вы могли бы использовать Quaternion.LookRotation
взамен и использовать
var direction = new Vector3(otherObject.position.x, transform.position.y, transform.position.z) - transform.position;
var rotation = Quaternion.LookRotation(direction);
rotation.eulerAngles = new Vector3(Mathf.Clamp(rotation.eulerAngles.x, -30, 30), rotation.eulerAngles.y, rotation.eulerAngles.z);
transform.rotation = rotation;
Напечатано на смартфоне, поэтому никаких гарантий, но я надеюсь, что идея станет ясной