2014-12-16 4 views
0

Я хотел бы изменить поворот объекта камеры через геймпад. У меня есть код, который работает в редакторе, но не работает на iOS. (Тем не менее, похоже, что он работает, но отбрасывается на второй кадр кодом VROne).Изменение поворота с GamePad

Мне удалось получить эту работу с Rift, но пока не удалось выяснить это с VROne. Для Rift я добавил «смещение» к вращению, которое было изменено джойстиком GamePad. Смещение было рассчитано в окончательное вращение, которое также включает в себя направление поиска игроков.

Любая идея, какую часть кода я бы изменил, чтобы правильно работать с VROne sdk?

ответ

0

Если вы хотите использовать собственные углы GameRotation (с геймпада), значения могут быть перезаписаны встроенным HeadTracking. Вы пытались отключить скрипт отслеживания VR Head в объекте VROneSDKHead?

Углы HeadTracking обрабатываются в классе HeadTrackingIOS, который вызывает собственную статическую библиотеку. Вы можете попробовать добавить смещение геймпада к Quaternion, возвращенному по строке 43.

Надеюсь, что это поможет, сообщите нам, если это сработало!

0

EDIT: Nevermind, приведенный ниже код работает в редакторе, но на устройстве 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; 
} 
0

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

Объект VrOneSDK является дочерним объектом объекта, с которым я вращаюсь с помощью своего геймпада. , а затем в «vrHeadTracking.cs» Я просто изменил

transform.rotation = Quaternion.Inverse(initialRotation) * rot; 

в

transform.localRotation = Quaternion.Inverse(initialRotation) * rot; 

что способ отслеживания головы относительно вращения моего родительского объекта.

Смежные вопросы