我正在为一个项目使用 XInput,但我在使用 xbox 控制器时遇到了问题。当我使用 B 按钮返回到以前的状态时,它注册按钮按下的速度如此之快,以至于它继续推回使用 B 按钮退出的多个状态。
if( ( player1.GetState().Gamepad.wButtons & XINPUT_GAMEPAD_B ) || ( player2.GetState().Gamepad.wButtons & XINPUT_GAMEPAD_B ) ) {
return ESC_BUTTON;
}
我尝试通过添加一个& 1
但输入从不注册来重置缓冲区。有没有简单的方法来解决这个问题?
更新:
current = (DWORD)( ( start - GetTickCount() ) / 1000.f );
if( current > 0.005f )
{
if( ( player1.GetState().Gamepad.wButtons & XINPUT_GAMEPAD_B ) || ( player2.GetState().Gamepad.wButtons & XINPUT_GAMEPAD_B ) )
{
start = GetTickCount();
return ESC_BUTTON;
}
}
仍然有重置的问题。有时它有效,有时它不...想法?