0

我正在为一个项目使用 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;
    }
}

仍然有重置的问题。有时它有效,有时它不...想法?

4

0 回答 0