Unity mendukung API Input Game ControllerPerangkat untuk mengontrol objek dan karakter dalam permainan.
Lihat di Glossary standar yang disediakan oleh Apple sebagai bagian dari API Input Unity standar.
Memanggil Input.GetJoystickNames
akan menghitung nama semua pengontrol yang terpasang. Nama mengikuti pola: [$profile_type,$connection_type] joystick $number by $model
. $profile_type mungkin baik "basic" atau "kecuali", $connection_type adalah "kabeld" atau "wireless". Ini bisa digunakan untuk mendeteksi jenis pengontrol yang terhubung. Perlu memeriksa ulang daftar ini setiap beberapa detik untuk mendeteksi jika pengontrol telah terpasang atau terpisah. Berikut ini contoh C#:
private bool connected = false;
IEnumerator CheckForControllers() {
while (true) {
var controllers = Input.GetJoystickNames();
if (!connected && controllers.Length > 0) {
connected = true;
Debug.Log("Connected");
} else if (connected && controllers.Length == 0) {
connected = false;
Debug.Log("Disconnected");
}
yield return new WaitForSeconds(1f);
}
}
void Awake() {
StartCoroutine(CheckForControllers());
}
Ketika pengontrol terdeteksi Anda dapat menyembunyikan kontrol sentuh di layar atau mengubahnya ke input pengontrol suplemen. Tugas berikutnya adalah untuk memeriksa input Game Controller.
Skema input yang sebenarnya sangat tergantung pada jenis permainan yang Anda berkembang. Tapi sangat penting tentang membaca kapak dan tombol negara. Ambil tahap permainan 2D berikut sebagai contoh sederhana:
Pemain mengontrol karakter kacang, yang dapat bergerak tepat atau kiri, melompat dan api pada orang jahat. Secara default, sumbu Unity Input “Horizontal” dipetakan ke pengontrol permainan profil dasar D-pad dan tongkat analog kiri pada pengontrol profil yang diperpanjang. Jadi kode yang digunakan untuk memindahkan karakter kembali dan ke depan cukup sederhana:
float h = Input.GetAxis("Horizontal");
if (h * rigidbody2D.velocity.x < maxSpeed)
rigidbody2D.AddForce(Vector2.right * h * moveForce);
Anda dapat mengatur tindakan melompat dan api dalam pengaturan Input Unity.
Akses dari menu editor Unity sebagai berikut: Edit > Project SettingsPengumpulan yang luas dari pengaturan yang memungkinkan Anda untuk mengkonfigurasi bagaimana Fisika, Audio, Jaringan, Grafik, Input dan banyak bidang lain dari jangkauan proyek Anda. More info
Lihat di Glossary, kemudian pilih kategori Input.
Pilih tombol joystick “A” untuk aksi “Jump” dan “X” untuk “Fire”.
Buka tindakan berikut dalam pengaturan Unity Input dan tentukan “joystick button 14” untuk “Jump” dan “joystick button 15” untuk “Fire”.
Penanganan kode kemudian terlihat seperti ini:
if (Input.GetButtonDown("Jump") && grounded) {
rigidbody2D.AddForce(new Vector2(0f, jumpForce));
}
if (Input.GetButtonDown("Fire")) {
Rigidbody2D bulletInstance = Instantiate(rocket, transform.position, Quaternion.Euler(new Vector3(0,0,0))) as Rigidbody2D;
bulletInstance.velocity = new Vector2(speed, 0);
}
Lembar kecurangan berikut harus membantu Anda melacak input pengontrol di Pengaturan Unity Input:
Name | KeyCode | Axis |
---|---|---|
A | tombol joystick 14 | sumbu joystick 14 |
B | tombol joystick 13 | sumbu joystick 13 |
X | tombol joystick 15 | sumbu joystick 15 |
Y | tombol joystick 10 g | sumbu joystick 12 |
Left Stick | N/A | Axis 1 (X) - Horizontal, Axis 2 (Y) - Vertikal |
Tongkat kanan | N/A | Axis 3 - Horizontal, Axis 4 - Vertikal |
D-pad Up | tombol joystick 4 | Profil dasar hanya: Axis 2 (Y) |
D-pad kanan | tombol joystick 5 | Profil dasar hanya: Axis 1 (X) |
D-pad Down | tombol joystick 6 | Profil dasar hanya: Axis 2 (Y) |
D-pad Left | tombol joystick 7 | Profil dasar hanya: Axis 1 (X) |
Pause | tombol joystick 0 | N/A |
L1/R1 | tombol joystick 8 / tombol joystick 9 | sumbu joystick 8 / sumbu joystick 9 |
L2/R2 | tombol joystick 10 / tombol joystick 11 | sumbu joystick 10 / sumbu joystick 11 |
Unity hanya mencakup kerangka Pengontrol Game dalam proyek jika script dalam referensi proyek Input.GetJoystickNames
. Unity iOS Runtime memuat kerangka secara dinamis, jika tersedia.
Apple dokumentasi secara eksplisit menyatakan bahwa input pengontrol harus opsional dan permainan Anda harus dapat dimainkan tanpa mereka.