1

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、Samsung Galaxy S3、iPhone 6 です。

編集:だから、私はこのコードを Update() と LateUpdate() メソッドの両方に入れてみました:

if (Cardboard.SDK.Tilted) {
            print("tilted, next scene");
            NextScene ();
}

画面が傾いていると、新しいシーンがロードされます。しかし、私が言ったように、Esc ボタンを押してチルトをトリガーすることによって Unity Player でのみ機能します。実際のデバイスでは何も起こりません - Cardboard.SDK.Tilted 変数が true に設定されることはありません。

https://recordnotfound.com/cardboard-unity-googlesamples-6780/issuesで、 v0.6で Tilt の廃止の問題があったことを確認しましたが、これがサポートされなくなった可能性はありますか? しかし、Unity Player では動作するのに実際のデバイスでは動作しないのは奇妙です。

4

1 に答える 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 を正規化しようとすると、値がゼロに設定されるため、小さなベクトルが条件をトリップすることはありません。サインを事前に計算して、サイクルを節約します。

于 2016-03-24T00:38:19.167 に答える