我开发了一款可能在XBOX上运行的UWP应用程序。
我想检测是否按下了游戏手柄控制器上的按钮(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按钮被按下了?我下次有机会时会检查。
另一方面,这篇博客文章对于开始为Xbox One开发UWP的人来说非常有用http://grogansoft.com/blog/?p=1278
更新 看起来我可以调用GetCurrentReading()来获得GamepadReading结构。从那里得到GamepadButtons的状态。
答案 0 :(得分:4)
即使用户点击游戏手柄按钮,也会触发来自KeyDown
或任何其他UWP控件的CoreWindow
事件。您可以在VirtualKey
枚举中找到GamepadA
和GamepadB
等值,因此检查其按下的基本方法可能如下所示:
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;