【发布时间】:2014-03-23 19:30:43
【问题描述】:
我正在尝试使用游戏手柄来控制应用程序。这不是一个游戏,只是一个使用 Windows 窗体的普通应用程序。所以它没有游戏循环/更新过程或类似的东西。我不喜欢使用 XNA,因为我认为仅捕获按钮按下是一个巨大的过载。
我正在试验 SlimDX 和 SharpDX。据我了解,它们只是 DirectX 的包装器,对吧?
查看文档,似乎没有按下按钮的事件。所以我一直在寻找替代方案。我尝试添加一个计时器(来自 System.Windows.Forms.Timer 类),并像这样读取游戏手柄的状态:
private void timer_tick(object sender, EventArgs e)
{
State s = controller.GetState();
stateLabel.Text = s.Gamepad.Buttons == GamepadButtonFlags.A ? "A" : "";
}
计时器滴答之间的间隔足够小(我使用的是 10 毫秒),我可以看到按钮是否被按下。但是,如果按住按钮,我不想多次按下按钮 - 我需要确保在再次按下按钮之前它已被释放。在计时器的两个滴答声之间,我不知道一个按钮是被按下了两次还是只是被按住了。
我曾想过在控制器状态下使用数据包编号,但只要轻轻触动模拟摇杆或肩部触发器,它就会改变。
帮助?
【问题讨论】:
-
您将此信息提供给什么?类似文本框的东西?
-
可能是。我实际上是在尝试破解控制器,以便截瘫的人可以用她的嘴操作它,控制器的行为就像鼠标一样。 Something like this 但更针对一般计算机使用而不是游戏。我知道我可以制作一个特殊的鼠标 - 但我有很多备用控制器,我认为我可以用它们做比鼠标更多的事情。
-
非常崇高的事业。我看看能不能煮点东西让你开始。看起来一些巧妙的
bool用法可以帮助您入门。
标签: c# .net slimdx sharpdx gamepad