Так что я использую скрипт, который нашел здесь ( Как включить камеру гироскопа в текущей ориентации устройства ), НО я только хочу, чтобы эта начальная ориентация устройства влияла на курс.
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);
}
Для предыстории, у меня есть несколько внутренних визуализаций с гироскопом, чтобы осмотреть пространство. Я не хочу влиять на ориентацию всего мира, я просто хочу, чтобы они смотрели в «правильном» направлении, с точки зрения лучшего обзора пространства. (Если нет, то это зависит только от того, как устройство ориентировано и как обычно прыгать в пространство, глядя на случайный, неинтересный угол комнаты.)
С помощью приведенного выше сценария он сбрасывает камеру по всем трем осям (и, следовательно, по всей мировой ориентации), поэтому, если пользователь держит планшет под необычным углом, то все становится действительно странным.
Вот быстрое изображение, чтобы помочь объяснение:
Я всегда хочу, чтобы начальный вид был выровнен с зеленой стрелкой, а не что-то случайное, как красная стрелка. Но только заголовок, можно смотреть на пол или потолок, если заголовок находится прямо в этой сладкой точке комнаты.
Спасибо!