2016-03-20 13 views
0

Unity kullanarak bir mobil oyunda çalışıyorum. Uzayda bir cep telefonunun yönünü/rotasyonunu elde etmek için jiroskop kullanmayı içerir. C# 'daki iki Quaternion'u karşılaştırarak zor zamanlar geçiriyorum. Aslında yapmaya çalıştığım şeyBir mobil oyun için iki Quaternion'u karşılaştırma

transform.rotation = Input.gyro.attitude;  // Take the gyroscope rotation data and copy it 
transform.rotation.Set(0, 0, 0, 1);    // change current Quaternion rotation data of the copy 
               // Copy shoud now represent a vertical rotation 
Angle = Quaternion.Angle(Input.gyro.attitude,); // Calculate the Angle between the 2 
if (Angle < 45)         // if it's almost in vertical postion start the game 
    /* do something */ 

cep telefonu dikey pozisyonda ise (gibi alnında sopa varsa) doğrulamak geçerli: İşte benim kod. Orjinal oryantasyonun bir kopyasını yaratıyorum ve olmasını istediğim şekilde değiştiriyorum. Daha sonra ikiyi karşılaştırırım ve eğer hemen hemen aynı ise oyun devam edebilir. Kuaterniyonlar hakkında neredeyse hiç bilgim yok. Ben w, x, y, z nin dördünlük değerlerinin dikey bir yönelimi temsil etmesi için ne koyması gerektiğini bulmaya çalıştım ama google'da arama yaparken herhangi bir ipucu bulamadı. İşte bu yüzden burada yardım istiyorum.

cevap

0

Cep telefonunun dikey yönde olup olmadığını görmeye çalıştığınızı söylüyorsunuz.

if (Screen.orientation == ScreenOrientation.LandscapeLeft) { 
    // screen is horizontal 
} 
+0

Ne aradığım değildir:

Sana almak için tam olarak aradığınız ne kadar doğru emin değilim, ama bu sadece eğer tüm belirlemek istiyorum aşağıdakileri deneyin ekranın yönlendirmesi fakat telefonun kendisinin daha çok yönü. Screen.orientation btw için teşekkür ederim oyunumu sadece yatay olarak ayarlamak için kullanışlıdır :) –