Контроллер Oculus Go не обнаружен OVRInput.IsControllerConnected () - PullRequest
0 голосов
/ 25 марта 2019

У меня есть игра Unity, которая работает на Android Cardboard и Oculus Go. Я пытаюсь определить, подключен ли контроллер Go.

Я импортировал пакет интеграции Oculus из хранилища ресурсов Unity (хотя я не уверен, что это действительно необходимо ... У меня сложилось впечатление, что поддержка Oculus встроена в Unity по крайней мере с 2018.3, если не с 2018.2 или ранее). Я также удалил Картон и добавил Oculus в качестве SDK для виртуальной реальности в настройках проигрывателя.

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

void Start() {
    // ...
    if (OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote)) {
        // do something visible
    }
    // ...
}

Проблема в том, что OVRInput.IsControllerConnected (...) всегда возвращает false , а код внутри блока никогда не выполняется.

Другие вещи, которые я пробовал:

  • Перенес вызов в OVRInput.IsControllerConnected () из Start () в Update (), на случай, если это проблема времени инициализации. Нет успеха Тот же результат.

  • Вместо того, чтобы использовать OVRInput.Controller.RTrackedRemote в качестве аргумента, я попробовал другие объекты ... LTrackedRemote, Active, All, Gamepad, LTouch, RTouch, Remote, Touch, Touchpad и None. Все они, кроме «.None», вернули false. «.None» вернул true.

  • Я установил точку останова в строке, вызывающей OVRInput.IsControllerConnected () (после перемещения его в Update ()), затем вызвал OVRInput.GetConnectedControllers () в непосредственном окне VS2017 ... он возвратил «Нет». То же самое для OVRInput.GetActiveController ().

Сама игра началась как Android Cardboard. Пока что единственные важные изменения, которые я внес в это:

  • Импорт библиотеки поддержки Oculus из хранилища активов Unity.

  • В Player -> XR Settings я удалил «Картон» и добавил «Oculus» в качестве VR SDK

  • В настройках сборки я изменил метод сборки с «Gradle» на «Внутренний» (сборка Gradle не удалась ... Я видел сообщения от лета 2018 года, в которых говорилось, что это ошибка Unity, но я не уверен будь то текущая информация ... независимо от того, что переход от Gradle к внутреннему сделал ошибку THAT исчезнет).

В частности, я НЕ добавил никаких префабов, специфичных для Oculus, или изменил / удалил любые префабы, специфичные для GoogleVR.

1 Ответ

1 голос
/ 26 марта 2019

Я знаю, что вы пытались переместить IsControllerConnected в Update, но пробовали ли вы GetConnectedControllers в Update через секунду ?Вот что помогло мне.Так в Update ():

        // initialize hand once after one second of start
        if(!handInitialised){
                initialWait += Time.deltaTime;
                if(initialWait > 1f){
                    OVRInput.Controller c = OVRInput.GetConnectedControllers();
                    if(c == OVRInput.Controller.LTrackedRemote || c == OVRInput.Controller.LTouch){
                        //
                    }
                    //
                    handInitialised = true;                
                }
        }
...