• Как ограничить угол камеры unity3d?

    @Adm178
    Если у вас проблема, что при достижении угла меньше 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
    Ответ написан
    Комментировать