Если у вас проблема, что при достижении угла меньше 0 он тут же его преобразует в 360, то вот код как в таком случае сделать ограничение по камере:
float currentRotationX = transform.eulerAngles.x;
float currentRotationY = transform.eulerAngles.y;
currentRotationX -= Input.GetAxis("Mouse Y") * rotationSpeed;
currentRotationY += Input.GetAxis("Mouse X") * rotationSpeed;
if (currentRotationX < 180 && currentRotationX > 0)
currentRotationX = Mathf.Clamp(currentRotationX, 0f, 50f);
if (currentRotationX < 0)
currentRotationX += 360;
if (currentRotationX > 180)
currentRotationX = Mathf.Clamp(currentRotationX, 310f, 360f);
Я заметил, что особенность в том, что currentRotationX может принимать отрицательные , но на следующем кадре тут же его преобразовывает в 360. Таким образом сначала мы работаем с углами меньше 180, но больше 0. Далее мы поставили условие, что если попадется currentRotationX меньше нуля, то мы в том же кадре его преобразуем в 360 и далее уже работаем с ограничением камеры при углах больше 180