我正在 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;
}
}
}
测试只是一个布尔值,一旦为真将意味着我的敌人开始产卵。我还检查了 main
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;
}
}
有什么想法是我错过的吗?