如何在GVR / Cardboard统一中垂直重新定位

时间:2016-07-26 14:30:07

标签: c# unity3d unity5 google-cardboard virtual-reality

调用

GvrViewer.Instance.Recenter ();`

只能水平地重新定位视图,我也需要它垂直。

我使用最新的Unity beta和GVR 0.8`

2 个答案:

答案 0 :(得分:2)

您可以通过使VR相机对象成为另一个对象的子对象(让我们将其称为父对象)并在与VR相机旋转相反的方向上旋转父对象来进行重定位。这个简单的脚本将(附加到父级):

public class Recenterer:MonoBehaviour 
{

    public Transform VRcam;  // drag the child VR cam here in the inspector

    public void Recenter()
    {
      transform.localRotation = Quaternion.Inverse(VRcam.rotation);
    }

}

答案 1 :(得分:0)

从Google VR SDK 1.50(和Unity 5.6),您可以

transform.eulerAngles = new Vector3(newRot.x, newRot.y, newRot.z);
UnityEngine.VR.InputTracking.Recenter();

另外,如果您不想让您感到困惑,您还需要捕获GvrEditorEmulator实例并重新启动它。

#if UNITY_EDITOR
        gvrEditorEmulator.Recenter();
#endif

接收GvrEditorEmulator虽然目前似乎不能很好地工作,但如果你禁用它,你会看到主摄像机的重新定位工作。