2017-01-23 71 views
1

我開發了一個可能在XBOX上運行的UWP應用程序。如何在UWP應用程序中檢測遊戲控制器按鈕(ABXY)

我想檢測遊戲手柄控制器上的按鈕是否被按下(A B X或Y)。

我想我需要使用點擊事件?如果它在點擊事件上,我需要在點擊事件中檢查什麼?

綜觀此篇其確定觸發是否已經按下..

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 
} 

我假定有檢查ABXY按鈕中的一個是否被按下的等效方式?我將在下次有機會時檢查。

在另一方面,這篇博客文章看起來真的有用的人與發展中國家UWP爲Xbox一個http://grogansoft.com/blog/?p=1278

更新開始了: 看起來我可以調用GetCurrentReading()得到一個GamepadReading結構。並從中獲得GamepadButtons的狀態。

回答

3

即使用戶單擊遊戲板按鈕,也會觸發從CoreWindow或任何其他UWP控件發出的KeyDown事件。你可以找到值,如在檢查VirtualKey枚舉所以基本方法GamepadAGamepadB他們迫切看起來是這樣的:

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; 
    } 
} 

你要訂閱的事件(例如,在構造函數):

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

嗯好的。我也會嘗試。我或你的方法中哪一個是普遍接受的方法? (我還沒有測試過我的方法)。 –

+0

我認爲你的方法太複雜了,無法獲取按鈕是否被點擊的信息。它會在遊戲和我認爲的這樣的事情中更有用。 –

相關問題