Я создаю мобильную игру VR, и я управляю этой игрой с помощью контроллера PS3. Контроллер очень хорошо работает в редакторе Unity со всеми кнопками и осями. А когда подключаю контроллер к телефону android, все кнопки работают и ось тоже. Проблема в том, что когда я создаю игру в Android, кнопки работы только оси не работают. Хотя я много раз менял настройки диспетчера ввода, это тоже ничего не дало. И сделал несколько вещей вроде:
Эта строка кода получает значение оси:
float steering = CrossPlatformInputManager.GetAxis("Horizontal");
Итак, я попытался получить значение от кнопки и сделать виртуальную кнопку с именем "joystickButton2" вот так:
bool speed = CrossPlatformInputManager.GetButton("joystickButton2");
это тоже не работает.
Заменяю класс CrossPlatformInputManager на обычный Input
класс и он аналогичен классу CrossPlatformInputManager.
bool speed = Input.GetButton("joystickButton2");
Я пытался получить ключ самостоятельно с помощью функции GetKey, например:
bool speed = Input.GetKey (KeyCode.joystickbutton2);
Ничего не произошло. Я пробовал много вещей и несколько вещей, но все равно работала только ось, а кнопки - нет.





Думаю, я нашел решение.
Проблема заключалась в том, что Android считывает входные данные с контроллера PS3 непостоянным образом, как и кнопка X на joystickButton14, поэтому я сделал простой цикл для всех кнопок и отобразил результат в самой игре на Android, а когда я подключаю контроллер, так что Я точно знаю, какой у joystickButton номер.
public Text ButtonNumber;
void Update (){
for (int i = 0 ; i =< 100 ; i++ ){
string JoyStick = "joystickButton"+ i.ToString();
if (input.GetKey(KeyCode.JoyStick)){
ButtonNubmber.text = i.ToString();
}}}
Надеюсь, это кому-то поможет.