2016-03-21 18 views
1

Ich versuche eine App zu erstellen, die auf das Cardboard.SDK.Tilted-Flag in einer Update() -Methode reagiert.Google Cardboard Unity SDK Gekippt funktioniert nicht auf einem Gerät

Wenn Cardboard.SDK.Tilted in Unity Player durch Drücken der Esc-Taste ausgeführt wird, wird es auf "True" gesetzt, also ist alles in Ordnung. Aber wenn ich die App für Android Build, bleibt Cardboard.SDK.Tilted falsch, wenn ich das Gerät kippen. Andere VR-Apps mit Tilt-Aktionen funktionieren auf meinem Telefon einwandfrei. Gibt es noch eine andere Option, die ich vor dem Erstellen für Android aktivieren muss, damit dies funktioniert?

I Unity v5.3.3f1 und ein Karton SDK v0.6 bin mit, die Geräte, die ich habe versucht, auf sind Xperia Z2, Samsung Galaxy S3 und iPhone 6.

EDIT: Also, ich habe versucht, setzen Sie diesen Code in beiden Update() und LateUpdate() Methoden:

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

Wenn der Bildschirm gekippt wird, soll neue Szene geladen werden. Aber wie gesagt, es funktioniert nur in Unity Player durch Drücken der Esc-Taste, um die Neigung auszulösen, auf einem echten Gerät passiert nichts - die Cardboard.SDK.Tilted-Variable wird nie auf wahr gesetzt.

Ich habe auf https://recordnotfound.com/cardboard-unity-googlesamples-6780/issues gesehen, dass es ein Problem der Beendigung von Tilt in v0.6 gab, ist es möglich, dass dies nicht mehr unterstützt wird? Aber es ist seltsam, dass es in Unity Player funktioniert, aber nicht auf einem echten Gerät.

Antwort

1

Ich kann bestätigen, dass die Cardboard.SDK.Tilted Flag erscheint nicht wie in früheren Versionen des SDK zu arbeiten. Die Escape-Schaltfläche löst sie im Debugger aus, aber die Tilt-Aktion löst sie nicht in Builds aus.

Sie können jedoch ein gleichwertiges ganz einfach mit Input.acceleration implementieren:

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 
} 

Wenn die Beschleunigung des Geräts auf die Schwerkraft vollständig zurückzuführen ist, der Winkel Schwimmer ist der Winkel der Vorrichtung von der Horizontalen. Wenn versucht wird, einen zu kleinen Vektor3 zu normalisieren, wird er auf Null gesetzt, so dass kleine Vektoren nicht die Bedingung auslösen sollten. Berechnen Sie Ihren Sinus vor, um einen Zyklus zu speichern.