明確にはわからんが
Vector3 targetDir = target.position - transform.position;
Vector3 forward = transform.forward;
targetDir.y=forward.y=0;
float angle = Vector3.Angle (targetDir, forward);
Vector3 cross = Vector3.Cross (targetDir, forward);
if (cross.y < 0)
angle = -angle;
float targetAngle = transform.eulerAngles.y - angle;
transform.eulerAngles = new Vector3 (0, targetAngle, 0);
とでもしてみたら?