gpt4 book ai didi

c++ - 使用 XInput 延迟 Xbox360 游戏 handle 的轮询事件

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:41 24 4
gpt4 key购买 nike

我和我的团队目前正在使用 SDL/OpenGL 开发 2D 平台游戏,我们希望使用 Microsoft 的 XInput 库添加对 Xbox360 游戏 handle 的支持,但我们目前遇到了一个问题。

首先,读取键值的方法是这样的:

bool InputMapping::Gamepad::checkKeyState(WORD button)
{
DWORD dwResult;
DWORD idPlayer = playerID - 1;

XINPUT_STATE state;
ZeroMemory( &state, sizeof(XINPUT_STATE) );

dwResult = XInputGetState( idPlayer, &state );

if ( state.Gamepad.wButtons & button)
{
return true;
}

return false;
}

如果选定的键是否被按下,此方法返回 true 或 false。

但似乎按键的轮询发生得非常快,在菜单中,通过按钮移动它非常快,我无法控制。

有一种方法可以限制 XInput 内部轮询之间的时间,还是我应该自己做?或者你推荐我什么?

如果我没有解释清楚,请不要犹豫。

非常感谢。

最佳答案

您需要限制轮询。

XInputGetState返回游戏 handle 的当前状态。每当调用 checkKeyState() 时,您的应用程序都会对其进行轮询。您可以偶尔轮询 XInputGetState() 并更新您自己保存的按钮状态。然后使用您保存的按钮状态来确定是否按下了某个键。

但这并不能解释为什么您可以非常快速地浏览菜单。只要按住按钮,checkKeyState 就应该返回 true。

关于c++ - 使用 XInput 延迟 Xbox360 游戏 handle 的轮询事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8675743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com