2016-03-20 8 views
0

Я сейчас работаю над мобильной игрой, используя Unity. Это связано с использованием гироскопа, чтобы получить ориентацию/поворот мобильного телефона в пространстве. Мне трудно сравнивать два кватерниона в C#. Вот мой код:Сравнение двух кватернионов для мобильной игры

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 */ 

То, что я на самом деле пытается сделать, это проверить, если телефон находится в вертикальном положении (например, если вы будете придерживаться его на лбу). Я создаю копию оригинальной ориентации и меняю ее на ту, которую я бы хотел. Впоследствии я сравниваю их, и если они почти одинаковы, игра может продолжаться. У меня почти нет знаний о кватернионах. Я попытался выяснить, какие значения кватерниона w, x, y, z я должен представлять для вертикальной ориентации, но не мог найти никаких подсказок при поиске в google. Вот почему я прошу о помощи здесь.

ответ

0

Вы упомянули, что пытаетесь увидеть, находится ли сотовый телефон в вертикальной ориентации.

Я не знаю точно, как точно вы хотите получить, но если это просто все, что вы хотели бы, чтобы определить, попробуйте следующее:

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

Что я ищу не ориентация экрана, но больше ориентация самого телефона. Спасибо за Screen.orientation. Кстати, было полезно установить игру только горизонтально :) –