2016-06-05 1 views
0

Comment puis-je accéder aux coordonnées des deux manettes Xbox One dans une application UWP? Aussi, comment puis-je détecter quand les boutons X, Y, A et B sont enfoncés?Coordonnées de la manette Xbox One Controller (dans l'application UWP)

Edit: Je reçois une exception de type "System.InvalidOperationException" dans System.Linq.dll quand j'utilise Gamepad.Gamepads.First() dans la méthode MainPage dans MainPage.xaml.cs

+0

Copie possible: http://stackoverflow.com/questions/31977767/controller-support-for-xbox-one-in-windows-uwp – Konstantin

+0

Essayez 'Gamepad.Gamepads.First()' après un délai de 3 secondes ou plus. – Bells

Répondre

2

Vous devrait regarder gaming technologies for UWP et en particulier Windows.Gaming.Input API.

En bref: Une fois que vous aurez accès à votre gamepad:

var controller = Gamepad.Gamepads.First(); 

Vous commencez à lire GamepadReadings de lui:

var reading = controller.GetCurrentReading(); 

Chaque lecture contient des données sur les joysticks, les déclencheurs et les boutons.

var leftThumbstickX = reading.LeftThumbstickX; 
var aButton = (reading.Buttons & GamepadButtons.A); 
+0

Gamepad.Gamepads.Count renvoie 0 pour moi même lorsque mon contrôleur Xbox One est allumé pendant que l'application s'exécute sur Xbox. Par conséquent, j'ai une exception à l'énoncé suivant: var controller = Gamepad.Gamepads.First(); Une idée de comment résoudre ce problème? – Dhruv

+0

J'ai reçu une exception de type "System.InvalidOperationException" dans System.Linq.dll lorsque j'utilise Gamepad.Gamepads.First() dans la méthode MainPage dans MainPage.xaml.cs – Dhruv

+0

Cela signifie que votre contrôleur n'est pas visible pour application. Si vous le connectez à un PC et à votre application UWP sur un PC, cela fonctionne-t-il? – Konstantin

1

Vous ne savez pas sur les miniatures, mais vous pouvez détecter les boutons de la manette comme n'importe quel autre événement de touche.

Connectez-vous à l'événement KeyUp de votre page ou à l'événement global Window.Current.CoreWindow.KeyUp et recherchez les boutons de la manette comme VirtualKey.GamepadB.

Cela fonctionne lorsque l'application fonctionne sur XBox One et également lorsque vous connectez le contrôleur XBox One à votre PC à l'aide d'un câble USB.

+0

Le D-pad et les thumbsticks déclenchent également des événements key-up. Vous pouvez voir les keycodes réels pour chacun ici: https://github.com/Microsoft/TVHelpers/blob/master/tvjs/src/DirectionalNavigation/directionalnavigation-1.0.0.0.js#L701 – Bart

+0

Merci, c'est beaucoup plus facile à utiliser que d'interroger les lectures du Gamepad. –