首页 文章

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

提问于
浏览
1

我正在尝试制作一个响应某些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 回答

  • 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会将其设置为零,因此小矢量不应使条件跳闸 . 预先计算您的正弦以节省周期 .

相关问题