Bagikan melalui


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.

Tongkat arkade dengan joystick 4 arah, 6 tombol tindakan (A1-A6), dan 2 tombol khusus (S1 dan S2)

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.

Lihat juga