我正在使用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;
}
}
仍有重置问题。有时它有效,有时它不会......想法?