ジョイスティックでどのボタンが押されたかを表示する必要があるアプリケーションを開発しています。
このために、SDL を使用してジョイスティックの状態を読み取りました。コードは次のとおりです。
bool JoystickInfo::getButton (const int &joystick, SDL_GameControllerButton button)
{
SDL_JoystickUpdate();
gameController_ = SDL_GameControllerOpen (joystick);
return (bool) SDL_GameControllerGetButton (gameController_, button);
}
何らかの理由で、この関数は常に 0 (false) を返します。SDL イベントも使用してみました (ここに示すように、しかし、同じ結果が得られました。
補足:
- 上記のコードは SDL 1.2 で問題なく動作しましたが、
GameController
API には SDL 2.0 が必要です。 - 同様の方法でジョイスティックの軸の値を読み取ったところ、問題なく動作しました。
SDL_INIT()
で呼び出されSDL_INIT_EVERYTHING
ます。
軸の値を読み取るために使用するコードは次のとおりです。
double JoystickInfo::getAxis (const int &joystick, SDL_GameControllerAxis axis)
{
SDL_JoystickUpdate();
gameController_ = SDL_GameControllerOpen (joystick);
return (double) SDL_GameControllerGetAxis (gameController_, axis);
}
私が見逃しているものはありますか?