Google Cardboard Unity SDK倾斜无法在设备上运行

时间:2016-03-21 10:35:14

标签: android unityscript google-cardboard tilt

我试图在一些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中有效,但在真实设备上却无效。

1 个答案:

答案 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归一化将其设置为零,因此小矢量不应该使条件跳闸。预先计算你的正弦以节省一个周期。