Как обрабатывать ввод через Bluetooth в Google Cardboard?

Я использую Google Cardboard SDK вместе с Unity 3D для создания первого учебного пособия по Unity (катите мяч) для Google Cardboard. Мне нужно переместить основной мяч игрока (белый в учебнике), чтобы собрать маленькие желтые кубики. Теперь Google Cardboard позволяет отслеживать только голову вместе с одним переключателем (магнитная / проводящая пена) из коробки. Чтобы двигай мяч, мне нужно прикрепить контроллер.

Это мой план -> Купить джойстик. Подключите его к Ардуино. Подключите Bluetooth-модуль к Arduino.

Мне нужно знать, как получать данные Bluetooth в игре. Должен ли код находиться внутри метода void Update() основного скрипта проигрывателя?

Любая помощь будет оценена по достоинству. Благодарю вас :)


person Rohan Das    schedule 18.07.2015    source источник


Ответы (1)


Не понимаю, зачем вам Ардуино.

Я сделал картонную игру (типа авиасимулятора). Купил геймпад Ipega 9028 на aliexpress. связал его с моим андроидом/айфоном и все. (если в вашем телефоне нет bluetooth... в этом случае вам следует инвестировать в новый телефон, а не в новый Arduino :))

в вашем приложении единства вам сначала нужно связать ключи и сохранить их в PlayerPrefs, потому что у вас нет возможности узнать, какая кнопка / ось преобразуется в какой номер кнопки единства / номер оси.

так в менеджере ввода в юнити нужно определить все возможные кнопки и оси для джойстика №1. а потом юнити создать меню привязки клавиш. там вы должны сделать так, чтобы пользователь нажимал кнопку «Привязать» для каждой опции (например, двигаться, стрелять, подниматься, опускаться и т. д.), и как только он нажимает ее, вам нужно иметь 2 «цикла for». один ищет ввод для всех номеров кнопок (Input.GetButton), а другой ищет ввод для всех осей джойстика (Input.GetAxis). в соответствии с именами, которые вы создали для них в диспетчере ввода.

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

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

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

я надеюсь, что это ясно.

p.s. также получите USB-джойстик, чтобы вам было легко тестировать на своей машине для разработки.

person Alon Schachter    schedule 19.07.2015
comment
К сожалению, мне нужно сделать свой собственный контроллер для этого проекта :( Я провел небольшое исследование и планирую использовать WiFi-модуль ESP8266 с Arduino. Unity 3D может обрабатывать ввод через класс TcpClient. Как вы думаете, это сработает? - person Rohan Das; 20.07.2015