我正在尝试将ps3控制器用于我正在创建的游戏。我将sharpDX.DirectInput扩展下载到我的visual studio XNA解决方案中,并在Taking input from a joystick with C# .NET中使用了Valdemar答案中看似简单的代码。我已经把问题缩小到他无法找到控制器的指针,也没有找到其他USB连接设备(如键盘)的指导。它确实适用于我的笔记本电脑的集成键盘。这是我的代码:
directInput = new DirectInput();
// Find a Joystick Guid
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Gamepad, DeviceEnumerationFlags.AllDevices))
guid = deviceInstance.InstanceGuid;
//create joystick
if (guid!=Guid.Empty)
controller = new Joystick(directInput, guid);
问题是控制器保持为空,这意味着guid保持为空,这意味着GetDevices方法找不到游戏手柄。这很奇怪,因为控制器在Windows 7中完美运行,在设备管理器中可见为HID,也可用作Windows类的Microsoft通用控制器。
不过,我在使用Microsoft.DirectX.directInput时遇到了同样的问题。感谢阅读:)
答案 0 :(得分:1)
一种可能的解决方案是将DeviceType.Gamepad更改为DeviceType.Joystick
答案 1 :(得分:0)
我仍然不知道为什么它不起作用。但我尝试了更好的东西。在youtube上有一个教程,我安装了一个驱动程序,将DS3控制器“转换”为一个xbox控制器。换句话说,Windows现在认为连接了一个xbox控制器。
现在我可以使用专为xbox 360控制器设计的xna库的GamePad类。
http://steamcommunity.com/app/258970/discussions/0/613937306592303709/?l=dutch阅读此链接的评论,了解更多更新的驱动程序。