Я сейчас работаю над мобильной игрой, используя 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. Вот почему я прошу о помощи здесь.
Что я ищу не ориентация экрана, но больше ориентация самого телефона. Спасибо за Screen.orientation. Кстати, было полезно установить игру только горизонтально :) –