Salah satu dari keuntungan utama dari konsol OUYA adalah, para pemain dapat menggunakan kontroler yang sebenarnya! Berikut ini adalah spesifikasi dari kontroler OUYA
- empat tombol digital (O, U, Y, and A)
- D-pad (tombol arah panah) empat arah
- dua joystick analog (LS, RS)
- dua tombol digital yang dapat diaktifkan saat joystik ditekan kebawah (L3, R3)
- dua tombol bumper/bemper digital (L1, R1)
- dua tombol trigger analog (L2, R2)
- satu touchpad, yang dapat dikonfigurasi sebagai mouse (sama seperti touchpad pada laptop)
Catatan: Tombol trigger analog juga dapat digunakan sebagai tombol digital, dengan jarak 0.5 dari nilai analognya.
Karena interface kontroler sangat penting, kami telah membuat dokumentasi yang memudahkan kalian untuk menggunakannya.
OuyaController memiliki konstanta spesifik untuk tombol dan aksis (arah panah). Seperti yang terlihat dibawah ini.
public static final int BUTTON_O;
public static final int BUTTON_U;
public static final int BUTTON_Y;
public static final int BUTTON_A;
Kalau kalian menginginkan /fleksibilitas yang lebih saat membaca kondisi kontroler yang kapapun kalian inginkan, kalian bisa menggunakan kelas/class dari OuyaController. Pertama-tama, ini artinya perintah kalian harus memforward/mengalihkan panggilan dari onKeyDown, onKeyUp, atau onGenericMotionEvent kepada OuyaCOntroller:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean handled = OuyaController.onKeyDown(keyCode, event);
return handled || super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
boolean handled = OuyaController.onKeyUp(keyCode, event);
return handled || super.onKeyUp(keyCode, event);
}
@Override
public boolean onGenericMotionEvent(MotionEvent event) {
boolean handled = OuyaController.onGenericMotionEvent(event);
return handled || super.onGenericMotionEvent(event);
}
Begitu OuyaController sudah mendapat eventnya, kalian bisa membaca instance dari kelas/class nya dengan salah satu cara ini: identitas dari alat/device id ataupun nomor pada pemain/player number
OuyaController c = OuyaController.getControllerByDeviceId(deviceId);
OuyaController c = OuyaController.getControllerByPlayer(playerNum);
Nah, sekarang untuk membaca nilai dari tombol dan sumbu/arah panah pun mudah:
float axisX = c.getAxisValue(OuyaController.AXIS_LSTICK_X);
float axisY = c.getAxisValue(OuyaController.AXIS_LSTICK_Y);
boolean buttonPressed = c.getButton(OuyaController.BUTTON_O);
Dengan cara ini, kalian bisa memfokuskan dalam membuat game kalian, dan tidak terbebani oleh masalah penanganan pada input.