我试图在一些Update()方法中创建一个响应Cardboard.SDK.Tilted标志的应用。
在Unity Player中运行时,按Esc键,Cardboard.SDK.Tilted设置为true,所以这一切都很好。 但是,当我为Android构建应用程序时,如果我倾斜设备,Cardboard.SDK.Tilted将保持为假。其他具有倾斜操作的VR应用程序在我的手机上正常工作在构建Android之前,我还需要启用其他任何选项吗?
我使用的是Unity v5.3.3f1和Cardboard SDK v0.6,我试过的设备是Xperia Z2,三星Galaxy S3和iPhone 6。
编辑: 所以,我已经尝试将此代码放入Update()和LateUpdate()方法中:
if (Cardboard.SDK.Tilted) {
print("tilted, next scene");
NextScene ();
}
当屏幕倾斜时,应加载新场景。 但正如我所说的那样,它只能在Unity播放器中按Esc键触发倾斜,在真实设备上没有任何反应 - Cardboard.SDK.Tilted变量永远不会设置为true。
我在https://recordnotfound.com/cardboard-unity-googlesamples-6780/issues上看到v0.6中存在停止Tilt的问题,是否可能不再支持此功能?但奇怪的是它在Unity Player中有效,但在真实设备上却无效。
答案 0 :(得分:1)
我可以验证Cardboard.SDK.Tilted标志似乎不像以前版本的SDK那样工作。转义按钮在调试器中触发它,但倾斜动作不会在构建中触发它。
但是,您可以使用Input.acceleration实现等效的简单:
float angle = 80.0f / 360.0f * 2.0f * Mathf.PI;
bool isTilted = Mathf.Abs(Input.acceleration.normalized.x) > Mathf.Sin(angle);
if (Cardboard.SDK.Tilted || isTilted)
{
//Action here
}
如果设备的加速度完全是由于重力引起的,则角度浮动是设备与水平面的角度。试图将太小的Vector3归一化将其设置为零,因此小矢量不应该使条件跳闸。预先计算你的正弦以节省一个周期。