我正在尝试制作一个在某些Update()方法中响应Cardboard.SDK.Tilted标志的应用程序。
在Unity Player中运行时,通过按Esc按钮,将Cardboard.SDK.Tilted设置为true,所以一切都很好。
但是,当我为Android构建应用程序时,如果倾斜设备,Cardboard.SDK.Tilted仍为false。其他具有倾斜动作的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 Player中可以通过按Esc按钮触发倾斜来起作用,在实际设备上什么也没发生-Cardboard.SDK.Tilted变量永远不会设置为true。
我在https://recordnotfound.com/cardboard-unity-googlesamples-6780/issues上看到v0.6中存在Tilt中断的问题,是否有可能不再受支持?但是奇怪的是它可以在Unity Player中工作,但不能在真实设备上工作。
最佳答案
我可以验证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进行过小的标准化将其设置为零,因此较小的vectors不应使条件条件失效。预先计算您的正弦以节省周期。