Хотя вы могли бы сделать что-то вроде этого:
var rotation = Input.GetAxis("Mouse X") * speed * Time.deltaTime;
Head.transform.RotateAround(Vector3.up, rotation);
var angle = Quaternion.Angle(Head.transform.rotation, Body.transform.rotation);
Debug.Log(angle);
if(angle > 90)
{
Body.transform.RotateAround(Vector3.up, rotation);
}
Он также будет вращаться, когда вы смотрите вверх или вниз за пределы 90 градусов. Поэтому может быть лучше, чтобы входные данные изменили углы, зафиксировали угол корпуса и установили их в повороты.
var rotation = Input.GetAxis("Mouse X") * speed * Time.deltaTime;
headAngle = headAngle + rotation;
bodyAngle = Mathf.Clamp(bodyAngle, headAngle - 90, headAngle + 90);
Head.transform.rotation = Quaternion.AngleAxis(headAngle, Vector3.up);
Body.transform.rotation = Quaternion.AngleAxis(bodyAngle, Vector3.up);