Выпуск ключа Input.GetAxis не работает на WebGL - PullRequest
0 голосов
/ 19 июня 2019

Я делаю навигацию камеры (движение / вращение) на Update событие таким образом:

void UpdateMovement()
    {

        bool accelerate = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift);
        moveDirection   = 
            new
            Vector3(
                Input.GetAxisRaw("Horizontal") * moveSpeed, 
            0, 
            Input.GetAxisRaw("Vertical") * moveSpeed);
        //moveDirection = new Vector3(Input.GetAxis("Horizontal") * moveSpeed, 0, Input.GetAxis("Vertical") * moveSpeed);
        moveDirection   = transform.TransformDirection(moveDirection);

        if (Input.GetButton("Up"))
        {
            moveDirection.y += moveSpeed;
        }
        else if (Input.GetButton("Down"))
        {
            moveDirection.y -= moveSpeed;
        }

        if (Input.GetAxisRaw("Mouse ScrollWheel") > 0)
        {
            moveDirection.y = moveDirection.y + scrollSpeed;
        }
        else if (Input.GetAxisRaw("Mouse ScrollWheel") < 0)
        {
            moveDirection.y = moveDirection.y - scrollSpeed;
        }


       moveDirection *= (accelerate ? speed : moveSpeed);
        controller.Move(moveDirection * Time.deltaTime);

    }
    void UpdateRotation()
    {
        if (!Input.GetMouseButton(1))
            return;

        rotationX += Input.GetAxis("Mouse X") * lookSpeed;
        rotationY += Input.GetAxis("Mouse Y") * lookSpeed;
        rotationY = Mathf.Clamp(rotationY, -90, 90);
        rotationZ = Input.GetAxis("Mouse ScrollWheel");

        transform.localRotation = Quaternion.AngleAxis(rotationZ, Vector3.forward);
        transform.localRotation = Quaternion.AngleAxis(rotationX, Vector3.up);
        transform.localRotation *= Quaternion.AngleAxis(rotationY, Vector3.left);
    }

Все работает нормально, но проблема на холсте WebGL, когда я поворачиваюкамера с помощью мыши и тем временем выходит за границы холста WebGl, я также постоянно нажимаю горизонтальную или вертикальную клавишу, затем отпустить клавишу ввода не работает.Помните, что я зарегистрировал ключ [Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")] и обнаружил, что он не сбрасывается в ноль при отпускании.

 Debug.Log("Hr GetAxisRaw : " + Input.GetAxisRaw("Horizontal"));
 Debug.Log("Vertical : "     + Input.GetAxisRaw("Vertical"));

Обычно, когда я не использую поворот камеры с помощью мыши, и в это время, когда я отпускаю горизонтальный / вертикальный ключ, он работает нормально.Ранее я использовал Input.GetAxis, теперь я использую Input.GetAxisRaw, но проблема та же.

Keyboard input settings

...