SDL で簡単なゲームを作成しています。私は数え切れないほどのチュートリアルを経験してきましたが、ジョイスティックを完全に無視しているため、明らかに何かを見逃していました
私のコンストラクタで
SDL_JoystickEventState(SDL_ENABLE);
joystick = SDL_JoystickOpen(0);
私の更新では、実際にジョイスティックを初期化したことを確認するテストを呼び出しています
if (SDL_NumJoysticks() <= 0)
{
done = true;
}
ここにも私のプレーヤーの更新があります
void World::playerMovement()
{
SDL_Event event;
while (SDL_PollEvent (&event))
{
switch (event.type)
{
case SDL_QUIT:
done = true;
break;
case SDL_JOYAXISMOTION:
if ( ( event.jaxis.value < -3200 ) || (event.jaxis.value > 3200 ) )
{
test = true;
}
break;
}
}
}
テストは単にブール値であり、真になると敵がスポーンし始めることを意味します。メインでチェックも実行します
if (SDL_Init( SDL_INIT_VIDEO | SDL_INIT_JOYSTICK ) < 0)
{
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
done = true;
}
ゲームを実行すると、通常どおりロードされますが、ジョイスティックをどれだけ動かしても、test が true に設定されません。
また、代わりに while poll イベント ループで以下を使用してみました。
if (event.type == SDL_JOYAXISMOTION)
{
if(SDL_JoystickGetAxis(joystick, 1) > 0)
{
test = true;
}
}
私が見逃したアイデアはありますか?