Tongkat arkade
Halaman ini menjelaskan dasar-dasar pemrograman untuk tongkat arkade menggunakan Windows.Gaming.Input.ArcadeStick dan API terkait untuk Platform Windows Universal (UWP).
Dengan membaca halaman ini, Anda akan mempelajari:
- cara mengumpulkan daftar tongkat arkade yang terhubung dan pengguna mereka
- cara mendeteksi bahwa tongkat arkade telah ditambahkan atau dihapus
- cara membaca input dari satu atau beberapa tongkat arkade
- bagaimana tongkat arkade berulah sebagai perangkat navigasi UI
Gambaran umum tongkat arkade
Tongkat arkade adalah perangkat input yang dihargai untuk mereproduksi nuansa mesin arkade stand-up dan untuk kontrol digital presisi tingginya. Tongkat arkade adalah perangkat input yang sempurna untuk pertarungan head-to-head dan game gaya arkade lainnya, dan cocok untuk setiap game yang bekerja dengan baik dengan kontrol semua digital. Tongkat arkade didukung di aplikasi UWP untuk aplikasi Windows 10 atau Windows 11 dan Xbox One melalui namespace Windows.Gaming.Input .
Tongkat arkade dilengkapi dengan joystick digital 8 arah, enam tombol Tindakan (direpresentasikan sebagai A1-A6 pada gambar di bawah), dan dua tombol Khusus (direpresentasikan sebagai S1 dan S2); mereka adalah semua perangkat input digital yang tidak mendukung kontrol atau getaran analog. Tongkat arkade juga dilengkapi dengan tombol Tampilan dan Menu yang digunakan untuk mendukung navigasi UI tetapi tidak dimaksudkan untuk mendukung perintah gameplay dan tidak dapat diakses dengan mudah sebagai tombol joystick.
Navigasi antarmuka pengguna
Untuk meringankan beban mendukung banyak perangkat input yang berbeda untuk navigasi antarmuka pengguna dan untuk mendorong konsistensi antara game dan perangkat, sebagian besar perangkat input fisik secara bersamaan bertindak sebagai perangkat input logis terpisah yang disebut pengontrol navigasi UI. Pengontrol navigasi UI menyediakan kosakata umum untuk perintah navigasi UI di seluruh perangkat input.
Sebagai pengontrol navigasi UI, arkade memetakan serangkaian perintah navigasi yang diperlukan ke tombol joystick dan View, Menu, Action 1, dan Action 2 .
Perintah navigasi | Input tongkat arkade |
---|---|
Naik | Tetap di atas |
Tidak berfungsi | Tetap di bawah |
Left | Lengket ke kiri |
Right | Lengket ke kanan |
Tampilan | Tombol Tampilan |
Menu | Tombol Menu |
Terima | Tombol Tindakan 1 |
Batalkan | Tombol Tindakan 2 |
Tongkat arkade tidak memetakan sekumpulan perintah navigasi opsional.
Mendeteksi dan melacak tongkat arkade
Mendeteksi dan melacak tongkat arcade bekerja dengan cara yang sama persis seperti halnya untuk gamepad, kecuali dengan kelas ArcadeStick alih-alih kelas Gamepad . Lihat Gamepad dan getaran untuk informasi selengkapnya.
Membaca tongkat arkade
Setelah mengidentifikasi tongkat arkade yang Anda minati, Anda siap untuk mengumpulkan input darinya. Namun, tidak seperti beberapa jenis input lain yang mungkin biasa Anda gunakan, tongkat arkade tidak berkomunikasi perubahan status dengan menaikkan peristiwa. Sebagai gantinya, Anda mengambil pembacaan rutin tentang status mereka saat ini dengan polling mereka.
Polling tongkat arkade
Polling menangkap rekam jepret tongkat arkade pada titik waktu yang tepat. Pendekatan pengumpulan input ini cocok untuk sebagian besar game karena logika mereka biasanya berjalan dalam perulangan deterministik daripada digerakkan oleh peristiwa; biasanya juga lebih mudah untuk menginterpretasikan perintah game dari input yang dikumpulkan sekaligus daripada dari banyak input tunggal yang dikumpulkan dari waktu ke waktu.
Anda melakukan polling tongkat arkade dengan memanggil GetCurrentReading; fungsi ini mengembalikan ArcadeStickReading yang berisi status tongkat arkade.
Contoh berikut melakukan polling tongkat arkade untuk statusnya saat ini.
auto arcadestick = myArcadeSticks[0];
ArcadeStickReading reading = arcadestick->GetCurrentReading();
Selain status tongkat arkade, setiap pembacaan menyertakan tanda waktu yang menunjukkan dengan tepat ketika status diambil. Tanda waktu berguna untuk berkaitan dengan waktu pembacaan sebelumnya atau waktu simulasi permainan.
Membaca tombol
Masing-masing tombol tongkat arkade—empat arah joystick, enam tombol Tindakan , dan dua tombol Khusus —menyediakan pembacaan digital yang menunjukkan apakah tombol ditekan (turun) atau dilepaskan (ke atas). Untuk efisiensi, pembacaan tombol tidak direpresentasikan sebagai nilai boolean individual; sebaliknya, mereka semua dikemas ke dalam satu bitfield yang diwakili oleh enumerasi ArcadeStickButtons .
Catatan
Tongkat arkade dilengkapi dengan tombol tambahan yang digunakan untuk navigasi UI seperti tombol Tampilan dan Menu . Tombol-tombol ini bukan bagian dari ArcadeStickButtons
enumerasi dan hanya dapat dibaca dengan mengakses tongkat arkade sebagai perangkat navigasi UI. Untuk informasi selengkapnya, lihat Perangkat Navigasi UI.
Nilai tombol dibaca dari Buttons
properti struktur ArcadeStickReading . Karena properti ini adalah bitfield, masking bitwise digunakan untuk mengisolasi nilai tombol yang Anda minati. Tombol ditekan (ke bawah) ketika bit yang sesuai diatur; jika tidak, itu dirilis (naik).
Contoh berikut menentukan apakah tombol Tindakan 1 ditekan.
if (ArcadeStickButtons::Action1 == (reading.Buttons & ArcadeStickButtons::Action1))
{
// Action 1 is pressed
}
Contoh berikut menentukan apakah tombol Tindakan 1 dirilis.
if (ArcadeStickButtons::None == (reading.Buttons & ArcadeStickButtons::Action1))
{
// Action 1 is released (not pressed)
}
Terkadang Anda mungkin ingin menentukan kapan tombol beralih dari ditekan untuk dilepaskan atau dilepaskan untuk ditekan, apakah beberapa tombol ditekan atau dilepaskan, atau jika satu set tombol disusun dengan cara tertentu—beberapa ditekan, beberapa tidak. Untuk informasi tentang cara mendeteksi kondisi ini, lihat Mendeteksi transisi tombol dan Mendeteksi pengaturan tombol yang kompleks.
Jalankan sampel InputInterfacing
Sampel InputInterfacingUWP (github) menunjukkan cara menggunakan tongkat arkade dan berbagai jenis perangkat input bersamaan, serta bagaimana perangkat input ini berpura-pura sebagai pengontrol navigasi UI.