Определить начальную ориентацию камеры гироскопа, но только курс - PullRequest
0 голосов
/ 31 августа 2018

Так что я использую скрипт, который нашел здесь ( Как включить камеру гироскопа в текущей ориентации устройства ), НО я только хочу, чтобы эта начальная ориентация устройства влияла на курс.

Quaternion offset;

void Awake()
{
    Input.gyro.enabled = true;
}

void Start()
{
    //Subtract Quaternion
    offset = transform.rotation * Quaternion.Inverse(GyroToUnity(Input.gyro.attitude));
}

void Update()
{
    GyroModifyCamera();
}

void GyroModifyCamera()
{
    //Apply offset
    transform.rotation = offset * GyroToUnity(Input.gyro.attitude);
}

private static Quaternion GyroToUnity(Quaternion q)
{
    return new Quaternion(q.x, q.y, -q.z, -q.w);
}

Для предыстории, у меня есть несколько внутренних визуализаций с гироскопом, чтобы осмотреть пространство. Я не хочу влиять на ориентацию всего мира, я просто хочу, чтобы они смотрели в «правильном» направлении, с точки зрения лучшего обзора пространства. (Если нет, то это зависит только от того, как устройство ориентировано и как обычно прыгать в пространство, глядя на случайный, неинтересный угол комнаты.)

С помощью приведенного выше сценария он сбрасывает камеру по всем трем осям (и, следовательно, по всей мировой ориентации), поэтому, если пользователь держит планшет под необычным углом, то все становится действительно странным.

Вот быстрое изображение, чтобы помочь объяснение:

camera angle issue

Я всегда хочу, чтобы начальный вид был выровнен с зеленой стрелкой, а не что-то случайное, как красная стрелка. Но только заголовок, можно смотреть на пол или потолок, если заголовок находится прямо в этой сладкой точке комнаты.

Спасибо!

...