2017-01-23 4 views
1

J'ai développé une application UWP qui pourrait potentiellement fonctionner sur XBOX.Comment détecter les pressions de bouton du contrôleur de jeu (ABXY) dans les applications UWP

Je souhaite détecter si les boutons du contrôleur de la manette ont été enfoncés (soit A B X ou Y).

Je pense que je dois utiliser l'événement click? Si c'est sur l'événement click, de quoi ai-je besoin pour vérifier l'événement click?

regardant ce poste qui détermine si un déclencheur a été pressé ..

Controller support for Xbox one in Windows UWP

/* 
* Note: I have not tested this code. 
* If it is incorrect, please do edit with the fix. 
*/ 
using Windows.Gaming.Input; 

// bla bla bla boring stuff... 

// Get the first controller 
var controller = Gamepad.Gamepads.First(); 

// Get the current state 
var reading = controller.GetCurrentReading(); 

// Check to see if the left trigger was depressed about half way down 
if (reading.LeftTrigger == 0.5;) 
{ 
    // Do whatever 
} 

Je présume qu'il est un moyen équivalent de vérifier si l'un des boutons de ABxy ont été pressés ?. Je vérifierai la prochaine fois que j'aurai une chance.

Sur une autre note, ce billet de blog semble vraiment utile pour les personnes qui commencent avec le développement UWP pour Xbox One http://grogansoft.com/blog/?p=1278

Mise à jour: On dirait que je peux appeler GetCurrentReading() pour obtenir une structure GamepadReading. et à partir de là, obtenez l'état du GamepadButtons.

Répondre

3

L'événement KeyDown de CoreWindow ou tout autre contrôle UWP sera même lorsque l'utilisateur a tiré clique sur les boutons gamepad. Vous pouvez trouver des valeurs telles que GamepadA et GamepadB dans l'énumération VirtualKey si la méthode de base pour vérifier leur pression pourrait ressembler à ceci:

private void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args) 
{ 
    if (args.Handled) 
    { 
     return; 
    } 

    switch (args.VirtualKey) 
    { 
     case VirtualKey.GamepadA: 
      // Gamepad A button was pressed 
      break; 

     case VirtualKey.GamepadB: 
      // Gamepad B button was pressed 
      break; 

     case VirtualKey.GamepadX: 
      // Gamepad X button was pressed 
      break; 

     case VirtualKey.GamepadY: 
      // Gamepad Y button was pressed 
      break; 
    } 
} 

Vous devez vous abonner l'événement (par exemple dans le constructeur):

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown; 
+0

Hmm ok. Je vais essayer aussi. Lequel des miens ou de vos approches est celui généralement accepté? (Je n'ai pas encore testé mon approche). –

+0

Je pense que votre approche est trop compliquée pour obtenir simplement l'information si le bouton a été tapé. Ce sera plus utile dans les jeux et ce genre de choses je pense .. –