Tongkat arkade

Halaman ini menjelaskan dasar-dasar pemrograman untuk tongkat arkade Xbox One menggunakan Windows. Gaming.Input.ArcadeStick dan API terkait untuk Universal Windows Platform (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 berperilaku 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. Arcade stick adalah perangkat input yang sempurna untuk head-to-head-fighting dan permainan gaya arkade lainnya, dan cocok untuk setiap game yang bekerja dengan baik dengan kontrol semua digital. Tongkat arkade didukung di aplikasi UWP Windows 10 dan Xbox One oleh Windows. Namespace layanan Gaming.Input.

Xbox One 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); ini adalah perangkat input digital yang tidak mendukung kontrol atau getaran analog. Xbox One 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 sebagai tombol joystick.

Arcade stick with 4-directional joystick, 6 action buttons (A1-A6), and 2 special buttons (S1 and S2)

Navigasi UI

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
Turun Tetap menunduk
Left Lengket ke kiri
Hak 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 arkade bekerja dengan cara yang persis sama seperti yang dilakukan 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 mengkomunikasikan perubahan status dengan menaikkan peristiwa. Sebagai gantinya, Anda mengambil pembacaan rutin tentang status mereka saat ini dengan melakukan polling .

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 didorong oleh peristiwa; biasanya juga lebih mudah untuk menafsirkan perintah permainan 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 game.

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 ladang bit tunggal 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 ArcadeStickButtons dari 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 ke dilepaskan atau dilepaskan untuk ditekan, apakah beberapa tombol ditekan atau dilepaskan, atau jika satu set tombol diatur dengan cara tertentu—beberapa ditekan, beberapa tidak. Untuk informasi tentang cara mendeteksi kondisi ini, lihat Mendeteksi transisi tombol dan Mendeteksi pengaturan tombol yang kompleks.

Menjalankan sampel InputInterfacing

Sampel InputInterfacingUWP (github) menunjukkan cara menggunakan tongkat arkade dan berbagai jenis perangkat input secara bersamaan, serta bagaimana perangkat input ini berperilaku sebagai pengontrol navigasi UI.

Lihat juga