unity3d - 在以怪异方式表现的移动设备中与陀螺仪接触时旋转
问题描述
我一直在我的项目中使用 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);
}
}
}
}
}