首页 > 解决方案 > 在以怪异方式表现的移动设备中与陀螺仪接触时旋转

问题描述

我一直在我的项目中使用 gvr sdk 在通过相机播放视频期间获得 360 度视图。但是当我在触摸时旋转相机时,旋转本身的行为很奇怪,即在横向模式下,y 轴旋转工作正常,但是当陀螺仪向右或向左移动时,x 轴旋转是表现为z轴旋转。请帮忙。下面是使用设备上的触摸输入在 x 和 y 轴上进行简单旋转的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RCPlayer : MonoBehaviour
{
    public static RCPlayer Instance;
    //public GameObject Head;
    //public GameObject Camera;

    Vector3 FirstPoint;
    Vector3 SecondPoint;
    float xAngle;
    float yAngle;
    float xAngleTemp;
    float yAngleTemp;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        xAngle = 0;
        yAngle = 0;
        transform.rotation = Quaternion.Euler(yAngle, xAngle, 0);
    }

    void Update()
    {      
        if (Input.touchCount > 0)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Began)
            {
                FirstPoint = Input.GetTouch(0).position;
                xAngleTemp = xAngle;
                yAngleTemp = yAngle;
            }

            if (Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                SecondPoint = Input.GetTouch(0).position;

                if (FirstPoint - SecondPoint == Vector3.zero)
                {
                    return;
                }
                else
                {
                    xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 180 / Screen.width;
                    yAngle = yAngleTemp - (SecondPoint.y - FirstPoint.y) * 180 / Screen.height;
                    transform.rotation = Quaternion.Euler(-yAngle * 0.5f, -xAngle * 0.5f, 0.0f);
                }
            }
        }
    }   
}

标签: unity3drotationtouchgyroscope

解决方案


推荐阅读