c# – Unity Cardboard Orientation Landscape Right Up
发布时间:2020-12-15 23:27:02 所属栏目:百科 来源:网络整理
导读:嗨,我有一个Unity应用程序,它使用谷歌Cardboard SDK启用立体视图,所以我将有一个支持VR的应用程序.我的应用程序运行完美. 但是如果我将播放器设置方向设置为自动方向,只有横向左侧和允许横向右侧,则会出现问题.当它处于横向左侧时,一切都按照正常情况工作,但
嗨,我有一个Unity应用程序,它使用谷歌Cardboard SDK启用立体视图,所以我将有一个支持VR的应用程序.我的应用程序运行完美.
但是如果我将播放器设置方向设置为自动方向,只有横向左侧和允许横向右侧,则会出现问题.当它处于横向左侧时,一切都按照正常情况工作,但是当它处于横向右侧时,纸板视图将转动180度(设置按钮移动到屏幕的底部)但是我的统一对象没有.因此,我有一个颠倒的对象. 有什么办法解决这个问题? 谢谢. 解决方法
看起来SDK用于读取陀螺仪的本机代码仅针对Landscape Left方向进行了硬编码.这可以通过编辑BaseCardboardDevice.cs并使用以下代码替换UpdateState()的定义来解决:
private Quaternion fixOrientation; public override void UpdateState() { GetHeadPose(headData,Time.smoothDeltaTime); ExtractMatrix(ref headView,headData); headPose.SetRightHanded(headView.inverse); // Fix head pose based on device orientation (since native code assumes Landscape Left). switch (Input.deviceOrientation) { case DeviceOrientation.LandscapeLeft: fixOrientation = Quaternion.identity; return; case DeviceOrientation.LandscapeRight: fixOrientation = Quaternion.Euler(0,180); break; } headPose.Set(headPose.Position,headPose.Orientation * fixOrientation); } 我建议在Cardboard设置中关闭Neck Model Scale(将其设置为0),因为它不会出现在此代码中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |