Модификация вращения с GamePad
Я хотел бы изменить вращение объекта камеры через геймпад. У меня есть код, который работает в редакторе, но не работает на iOS. (Тем не менее, похоже, что он работает, но отталкивается от 2-го кадра с помощью кода VROne).
Я смог получить эту работу с Rift, но пока не смог разобраться с VROne. Для Rift я добавил "смещение" к повороту, которое было изменено джойстиком GamePad. Смещение было рассчитано в окончательный поворот, который также включает в себя направление взгляда игроков.
Любая идея, какую часть кода я бы изменить, чтобы это правильно работать с VROne SDK?
3 ответа
РЕДАКТИРОВАТЬ: не имеет значения, приведенный ниже код работает в редакторе, но на устройстве iOS камера все еще впереди. Я попробую другой ответ.
Круто - это может сработать, ответ выше. Это похоже на то, что я искал.
Однако, согласно предложению на форуме Unity, я реализовал это решение: сначала я сделал объект VROne дочерним по отношению к другому пустому игровому объекту с localPosition 0,0,0.
При повороте я поворачиваю родителя, но сначала убедитесь, что родитель находится в той же позиции, что и дочерний элемент, а затем дочерний элемент localPosition равен 0,0,0 - сейчас ребенок выполняет физическое движение, а родитель выполняет поворот., Я не уверен, что перемещение контроллера персонажа к родителю сработает или создаст что-то еще в SDK, но пока это работает.
if (RightStickX.Value != 0)
{
transform.position = childObject.transform.position;
childObject.transform.localPosition = Vector3(0,0,0);
transform.eulerAngles.y += RightStickX.Value * rotationSpeed * Time.deltaTime;
}
На всякий случай, если это кому-нибудь поможет, я смог решить ее гораздо проще.
Объект VrOneSDK является дочерним объектом объекта, который я вращаю своим игровым планшетом. а затем в vrHeadTracking.cs я просто изменил
transform.rotation = Quaternion.Inverse(initialRotation) * rot;
в
transform.localRotation = Quaternion.Inverse(initialRotation) * rot;
таким образом, отслеживание головы относительно вращения моего родительского объекта.
Если вы хотите использовать собственные углы GameRotation (с геймпада), значения могут быть перезаписаны встроенным HeadTracking. Вы пытались отключить скрипт отслеживания головы VR в объекте VROneSDKHead?
Углы HeadTracking рассматриваются в классе HeadTrackingIOS, который вызывает собственную статическую библиотеку. Вы можете попробовать добавить смещение геймпада к кватерниону, возвращенному в строке 43.
Надеюсь, это поможет, дайте нам знать, если это сработало!