2016-03-21 1 views
1

J'essaie de créer une application qui répond à l'indicateur Cardboard.SDK.Tilted dans une méthode Update(). En cours d'exécution dans Unity Player, en appuyant sur le bouton Esc, Cardboard.SDK.Tilted est défini sur true, alors tout va bien. Mais lorsque je crée l'application pour Android, Cardboard.SDK.Tilted reste faux si je incline l'appareil. D'autres applications de RV avec des actions d'inclinaison fonctionnent bien sur mon téléphone. Y at-il une autre option que je dois activer avant de construire pour Android pour faire ce travail?Google Cardboard Unity SDK Incliné ne fonctionnant pas sur un périphérique

J'utilise l'unité v5.3.3f1 et un SDK v0.6 carton, les appareils que j'ai essayé sur Xperia sont Z2, Samsung Galaxy S3 et iPhone 6.

EDIT: Alors, je avons essayé de mettre ce code dans les deux Update() et LateUpdate():

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

Lorsque l'écran est incliné, nouvelle scène devrait être chargée. Mais comme je l'ai dit, cela ne fonctionne que dans Unity Player en appuyant sur le bouton Esc pour déclencher l'inclinaison, sur un périphérique réel rien ne se passe - la variable Cardboard.SDK.Tilted n'est jamais définie sur true.

J'ai vu sur https://recordnotfound.com/cardboard-unity-googlesamples-6780/issues qu'il y avait un problème d'arrêt de Tilt dans la version 0.6, est-il possible que cela ne soit plus supporté? Mais c'est étrange que cela fonctionne dans Unity Player mais pas sur un vrai périphérique.

Répondre

1

Je peux vérifier que l'indicateur Cardboard.SDK.Tilted ne semble pas fonctionner comme dans les versions précédentes du SDK. Le bouton d'échappement le déclenche dans le débogueur, mais l'action d'inclinaison ne le déclenche pas dans les versions.

Cependant, vous pouvez mettre en œuvre un équivalent tout simplement avec 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 
} 

Si est entièrement due à la gravité de l'accélération du dispositif, le flotteur d'angle est l'angle du dispositif à l'horizontale. Tenter de normaliser un Vector3 trop petit le met à zéro, donc les petits vecteurs ne devraient pas déclencher le conditionnel. Pré-calculer votre sinus pour enregistrer un cycle.