Levetta ArcadeArcade stick

Questa pagina descrive la programmazione di base per le levette Arcade di Xbox One che utilizzano [Windows.Gaming.Input.ArcadeStick]per arcadesticke le API correlate per la piattaforma UWP (Universal Windows Platform).This page describes the basics of programming for Xbox One arcade sticks using Windows.Gaming.Input.ArcadeStick and related APIs for the Universal Windows Platform (UWP).

Leggendo questa pagina scoprirai:By reading this page, you'll learn:

  • come ottenere un elenco di levette Arcade collegate e i relativi utentihow to gather a list of connected arcade sticks and their users
  • come rilevare se una levetta Arcade è stata aggiunta o rimossahow to detect that an arcade stick has been added or removed
  • come leggere l'input da una o più levette Arcadehow to read input from one or more arcade sticks
  • comportamento dei bastoni Arcade come dispositivi di spostamento dell'interfaccia utentehow arcade sticks behave as UI navigation devices

Panoramica delle levette ArcadeArcade stick overview

Le levette Arcade sono dispositivi ideali per riprodurre la sensazione delle macchine Arcade d'azione, grazie ai loro controlli digitali ad alta precisione.Arcade sticks are input devices valued for reproducing the feel of stand-up arcade machines and for their high-precision digital controls. Le levette Arcade sono dispositivi di input ideali per i combattimenti testa a testa o per altri giochi in stile Arcade e sono adatte per qualsiasi gioco che funziona bene con i controlli digitali.Arcade sticks are the perfect input device for head-to-head-fighting and other arcade-style games, and are suitable for any game that works well with all-digital controls. Le levette Arcade sono supportate nelle app UWP per Windows 10 e Xbox One tramite lo spazio dei nomi Windows.Gaming.Input.Arcade sticks are supported in Windows 10 and Xbox One UWP apps by the Windows.Gaming.Input namespace.

Xbox One Arcade Sticks è dotato di un joystick digitale a 8 vie, sei pulsanti di azione (rappresentati come a1-a6 nell'immagine seguente) e due pulsanti speciali (rappresentati come S1 e S2); si tratta di dispositivi di input digitali che non supportano controlli o vibrazioni analoghi.Xbox One arcade sticks are equipped with an 8-way digital joystick, six Action buttons (represented as A1-A6 in the image below), and two Special buttons (represented as S1 and S2); they're all-digital input devices that don't support analog controls or vibration. Xbox One Arcade Sticks è dotato anche di pulsanti di visualizzazione e di menu usati per supportare la navigazione dell'interfaccia utente, ma non sono destinati a supportare i comandi di gioco e non è possibile accedervi facilmente come pulsanti del joystick.Xbox One arcade sticks are also equipped with View and Menu buttons used to support UI navigation but they're not intended to support gameplay commands and can't be readily accessed as joystick buttons.

Arcade Stick con joystick 4 direzionale, 6 pulsanti di azione (a1-a6) e 2 pulsanti speciali (S1 e S2)

Spostamento interfaccia utenteUI navigation

Per semplificare il carico rappresentato dal supporto di numerosi dispositivi di input per lo spostamento interfaccia utente e per aumentare la coerenza tra giochi e dispositivi, la maggior parte di dispositivi di input fisici funzionano simultaneamente come dispositivi di input logici separati denominati controller di spostamento interfaccia utente.In order to ease the burden of supporting many different input devices for user interface navigation and to encourage consistency between games and devices, most physical input devices simultaneously act as a separate logical input device called a UI navigation controller. Il controller di spostamento interfaccia utente fornisce un vocabolario comune per i comandi di spostamento interfaccia utente ai dispositivi di input.The UI navigation controller provides a common vocabulary for UI navigation commands across input devices.

Come controller di spostamento dell'interfaccia utente, i bastoni Arcade mappano il set di comandi di navigazione necessario ai pulsanti joystick e Visualizza, menu, azione 1e azione 2 .As a UI navigation controller, arcade sticks map the required set of navigation commands to the joystick and View, Menu, Action 1, and Action 2 buttons.

Comando di navigazioneNavigation command Input levette ArcadeArcade stick input
SuUp Joystick in altoStick up
GiùDown Joystick in bassoStick down
SinistraLeft Joystick a sinistraStick left
DestraRight Joystick a destraStick right
VisualizzazioneView Pulsante VisualizzaView button
MenuMenu Pulsante MenuMenu button
AccettaAccept Pulsante Azione 1Action 1 button
AnnullaCancel Pulsante Azione 2Action 2 button

Le levette Arcade non mappano alcuno dei set facoltativi dei comandi di spostamento.Arcade sticks don't map any of the optional set of navigation commands.

Rilevare e monitorare le levette ArcadeDetect and track arcade sticks

Il rilevamento e il rilevamento dei bastoni Arcade funzionano esattamente come per i gamepad, tranne che con la classe ArcadeStick invece della classe Gamepad .Detecting and tracking arcade sticks works in exactly the same way as it does for gamepads, except with the ArcadeStick class instead of the Gamepad class. Per altre informazioni, vedere Gamepad e vibrazione .See Gamepad and vibration for more information.

Lettura della levetta ArcadeReading the arcade stick

Dopo aver identificato la levetta Arcade desiderata, sei pronto a raccogliere il relativo input.After you identify the arcade stick that you're interested in, you're ready to gather input from it. Tuttavia, diversamente da altri tipi di input, le levette Arcade non comunicano modifiche dello stato generando eventi.However, unlike some other kinds of input that you might be used to, arcade sticks don't communicate state-change by raising events. Puoi leggere lo stato corrente regolarmente eseguendo il polling.Instead, you take regular readings of their current state by polling them.

Polling della levetta ArcadePolling the arcade stick

Il polling cattura un'istantanea della levetta Arcade in un momento preciso nel tempo.Polling captures a snapshot of the arcade stick at a precise point in time. Questo approccio alla raccolta di input è una scelta ottimale per la maggior parte dei giochi, perché la logica viene in genere eseguita in un ciclo deterministico anziché essere basata sugli eventi. è anche più semplice interpretare i comandi di gioco dall'input raccolto tutti insieme in una sola volta rispetto a molti input singoli raccolti nel tempo.This approach to input gathering is a good fit for most games because their logic typically runs in a deterministic loop rather than being event-driven; it's also typically simpler to interpret game commands from input gathered all at once than it is from many single inputs gathered over time.

Puoi eseguire il polling di una levetta arcade chiamando GetCurrentReading; questa funzione restituisce una lettura ArcadeStickReading che contiene lo stato della levetta Arcade.You poll an arcade stick by calling GetCurrentReading; this function returns an ArcadeStickReading that contains the state of the arcade stick.

Nel seguente esempio viene eseguito il polling di una levetta Arcade per rilevarne lo stato corrente.The following example polls an arcade stick for its current state.

auto arcadestick = myArcadeSticks[0];

ArcadeStickReading reading = arcadestick->GetCurrentReading();

Oltre allo stato della levetta Arcade, ogni lettura include un timestamp che indica precisamente quando è stato recuperato lo stato.In addition to the arcade stick state, each reading includes a timestamp that indicates precisely when the state was retrieved. Il timestamp è utile per la relazione con la temporizzazione delle precedenti letture o con la temporizzazione della simulazione del gioco.The timestamp is useful for relating to the timing of previous readings or to the timing of the game simulation.

Lettura dei pulsantiReading the buttons

Ognuno dei pulsanti di un arcade stick — le quattro direzioni del joystick, sei pulsanti di azione e due pulsanti speciali — forniscono una lettura digitale che indica se è premuto (in basso) o rilasciato (su).Each of the arcade stick buttons—the four directions of the joystick, six Action buttons, and two Special buttons—provides a digital reading that indicates whether it's pressed (down) or released (up). Per migliorare l'efficienza, le letture dei pulsanti non sono rappresentate come singoli valori booleani; sono invece tutti compressi in un singolo bit rappresentato dall'enumerazione ArcadeStickButtons .For efficiency, button readings aren't represented as individual boolean values; instead, they're all packed into a single bitfield that's represented by the ArcadeStickButtons enumeration.

Nota

I Arcade Stick sono dotati di pulsanti aggiuntivi usati per la navigazione dell'interfaccia utente, ad esempio i pulsanti Visualizza e menu .Arcade sticks are equipped with additional buttons used for UI navigation such as the View and Menu buttons. Questi pulsanti non fanno parte dell'enumerazione ArcadeStickButtons e possono essere letti solo accedendo alla levetta Arcade come dispositivo di spostamento interfaccia utente.These buttons are not a part of the ArcadeStickButtons enumeration and can only be read by accessing the arcade stick as a UI navigation device. Per ulteriori informazioni, vedi Dispositivo di spostamento interfaccia utente.For more information, see UI Navigation Device.

I valori dei pulsanti vengono letti dalla proprietà Buttons della struttura ArcadeStickReading.The button values are read from the Buttons property of the ArcadeStickReading structure. Poiché questa proprietà è un campo di bit, viene usato un mascheramento bit per bit per isolare il valore del pulsante che ti interessa.Because this property is a bitfield, bitwise masking is used to isolate the value of the button that you're interested in. Il pulsante viene premuto (in basso) quando è impostato il bit corrispondente; in caso contrario, viene rilasciato (su).The button is pressed (down) when the corresponding bit is set; otherwise, it's released (up).

Nell'esempio seguente viene determinato se è stato premuto il pulsante azione 1 .The following example determines whether the Action 1 button is pressed.

if (ArcadeStickButtons::Action1 == (reading.Buttons & ArcadeStickButtons::Action1))
{
    // Action 1 is pressed
}

Nell'esempio seguente viene determinato se il pulsante azione 1 è rilasciato.The following example determines whether the Action 1 button is released.

if (ArcadeStickButtons::None == (reading.Buttons & ArcadeStickButtons::Action1))
{
    // Action 1 is released (not pressed)
}

In alcuni casi può essere utile determinare quando un pulsante passa da premuto a rilasciato o rilasciato a premuto, se più pulsanti vengono premuti o rilasciati o se un set di pulsanti viene disposto in un determinato modo, ad alcuni non è stato — premuto.Sometimes you might want to determine when a button transitions from pressed to released or released to pressed, whether multiple buttons are pressed or released, or if a set of buttons are arranged in a particular way—some pressed, some not. Per le informazioni su come rilevare tali condizioni, vedi Rilevare le transizioni del pulsante e Rilevare le disposizioni complesse del pulsante.For information on how to detect these conditions, see Detecting button transitions and Detecting complex button arrangements.

Eseguire l'esempio InputInterfacingRun the InputInterfacing sample

L'esempio InputInterfacingUWP (github) dimostra come utilizzare le levette Arcade e i diversi tipi di dispositivi di input insieme e come si comportano queste unità come controller di spostamento interfaccia utente.The InputInterfacingUWP sample (github) demonstrates how to use arcade sticks and different kinds of input devices in tandem, as well as how these input devices behave as UI navigation controllers.

Vedere ancheSee also