Поворотное движение в Gear VR Unity - PullRequest
0 голосов
/ 04 мая 2019

Таким образом, игрок может двигаться в четырех направлениях - вперед, назад, вправо и влево.Но прямое направление должно быть от того, куда он поворачивает свой VR-контроллер.

Я попробовал приведенный ниже код, но когда я указываю контроллер вверх, игрок движется вверх.Я тоже попробовал someQuaternion.y, но это не сработало, как ожидалось.Что мне делать?

     Quaternion someQuaternion = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote);
           Vector2 dir =  GetDirection(OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad, OVRInput.Controller.RTrackedRemote));
            if(dir == Vector2.right)
            {
                transform.Translate(someQuaternion * Vector3.right * currentSpeed * Time.deltaTime);

            }
            else if(dir == Vector2.left)
            {
                transform.Translate(someQuaternion * -Vector3.right * currentSpeed * Time.deltaTime);

            }
            else if (dir == Vector2.up)
            {
                transform.Translate(someQuaternion * Vector3.forward * currentSpeed * Time.deltaTime);

            }
            else if (dir == Vector2.down)
            {
                transform.Translate(someQuaternion * -Vector3.forward * currentSpeed * Time.deltaTime);

            }


public Vector2 GetDirection(Vector2 input)
    {
        Vector2[] directions = new Vector2[] {
        Vector2.up,
        Vector2.right,
        Vector2.down,
        Vector2.left
    };

        Vector2 direction = Vector2.zero;
        float max = Mathf.NegativeInfinity;

        foreach (Vector2 vec in directions)
        {
            float dot = Vector2.Dot(vec, input.normalized);

            if (dot > max)
            {
                direction = vec;
                max = dot;
            }
        }

        return direction;
    }
...