Вращение камеры мышкой при скрытом курсоре

Не могу написать код для нормального вращения камеры мышкой. Сначала я написал по принципу Эйлера. То есть, двигаем мышь, берём разницу между текущей и предыдущей позицией, добавляем эту разницу к текущим углам разворота, возвращаем мышь на предыдущую позицию. Но это не работает. Точнее, работает, но камера вращается как пьяная. Не зависимо от того, залочен курсор или нет.
Потом я начал искать чужой код и обнаружил, что везде используется тот самый принцип Эйлера, который использовал я. Вариации кода разные, но принцип везде один - углы Эйлера и mouse delta.
Вот например:

    public float mouseSensitivity = 100f;
    private float xRotation = 0f;
    private float yRotation = 0f;

...
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        xRotation -= mouseY;
        yRotation += mouseX;

        transform.localRotation = Quaternion.Euler(xRotation, yRotation, 0f);

Этот код работает так же, как и мой. Пьяная камера не зависимо от того, залочен курсор или нет.
А вот этот:

            const float camSens = 0.25f;
            lastMouse = Input.mousePosition - lastMouse;
            lastMouse = new Vector3(-lastMouse.y * camSens, lastMouse.x * camSens, 0);
            lastMouse = new Vector3(transform.eulerAngles.x + lastMouse.x, transform.eulerAngles.y + lastMouse.y, 0);
            transform.eulerAngles = lastMouse;
            lastMouse = Input.mousePosition;

Работает нормально, но только если курсор не залочен. Если курсор залочить, то камера просто дёргается на месте и не разворачивается. А если просто скрыть курсор (без залочивания), то скрыт он будет только в пределах окна Unity. Разворачивая камеру и стреляя в объект, окно Unity тупо потеряет фокус, так как мышка выйдет за его пределы. То есть, смысла в скрытии курсора нет абсолютно никакого. Зачем тогда существует такая возможность - не ясно.
Других вариантов кода не нашел :man_shrugging: Либо они какие-то совсем замудрёные. Вплоть до импорта функций из WinAPI :dizzy_face:
Я раньше много видосиков про Unity смотрел, но не помню, чтобы у кого-то была такая фигня :thinking: