2016-03-21 12 views
1

Bazı Update() yönteminde Cardboard.SDK.Tilt bayrakına yanıt veren bir uygulama yapmaya çalışıyorum.Google Cardboard Unity SDK Bir cihazda eğik olmadı Eğimli

Unity Player'da çalışırken, Esc düğmesine basarak, Cardboard.SDK.Tilted öğesi true olarak ayarlanmış, bu yüzden hepsi iyi. Ancak Android için uygulamayı kurduğumda, cihazı eğersem Cardboard.SDK.Tilted yanlış kalır. Eğme eylemlerine sahip diğer VR uygulamaları, telefonumda sorunsuz çalışıyor. Bu işi yapmak için Android'e geçmeden önce etkinleştirmem gereken başka bir seçenek var mı?

Ben Birlik v5.3.3f1 ve Karton SDK v0.6 kullanıyorum

, ben denedim cihazlar Xperia Z2, Samsung Galaxy S3 ve iPhone 6.

DÜZENLEME şunlardır: Yani, ben Her iki Güncelleme() ve LateUpdate() yöntemlerine bu kodu koyarak denedim: ekran eğildiğinde, yeni sahne

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

yüklenmelidir. Ama söylediğim gibi, sadece Unity Player'da tilt'i tetiklemek için Esc düğmesine basarak, gerçek bir aygıtta hiçbir şey olmuyor - Cardboard.SDK.Tilted değişkeni hiçbir zaman true değerine ayarlanmadı.

https://recordnotfound.com/cardboard-unity-googlesamples-6780/issues numaralı sayfada gördüğüm gibi, tilt'in v0.6'da sonlandırılması sorunu yaşandı, bunun artık desteklenmemesi mümkün mü? Ama Unity Player'da çalıştığı ancak gerçek bir cihazda çalışmaması garip.

cevap

1

Cardboard.SDK.Tilted bayrağının SDK'nın önceki sürümlerinde olduğu gibi görünmediğini doğrulayabilirim. Çıkış düğmesi, hata ayıklayıcısında bunu tetikler, ancak eğme eylemi, bunları oluştururken tetiklemez.

Ancak, Input.acceleration ile oldukça basit bir eşdeğeri uygulayabilirsiniz:

cihazın ivme yerçekimi tamamen nedeniyle ise
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 
} 

, açı şamandıra yatay cihazın açısıdır. Çok küçük olan Vector3'ü normalize etmeye çalışmak onu sıfırlar, bu nedenle küçük vektörler koşullu olarak hareket etmemelidir. Bir döngüyü kaydetmek için sinüsünüzü önceden hesaplayın.