1
我在SDL和C++中构建了一个空间射手,该移动至今仍在运行。 问题是,如果我按下,让我们说UP,然后添加右键(现在我同时向上和向右按),船停留很短时间。SDL移动停止
当它向上移动+右,同样发生,如果我放开第二个按键,移动停止,我必须再次按下键开始。
我想它与持有和添加按键有关的问题。如果有人能告诉我在哪里看,这将是很好的。
我正在使用SDL2。
Uint8 const *keystate = SDL_GetKeyboardState(NULL);
keystate = SDL_GetKeyboardState(NULL);
while(exit == false) {
if(SDL_PollEvent(&event) != 0) {
if(event.type == SDL_QUIT) {
exit = true;
}
if (keystate[SDL_SCANCODE_LEFT]) {
ship.move(-2, 0);
}
if (keystate[SDL_SCANCODE_RIGHT]) {
ship.move(2, 0);
}
if (keystate[SDL_SCANCODE_UP]) {
ship.move(0, -2);
}
if (keystate[SDL_SCANCODE_DOWN]) {
ship.move(0, 2);
}
if (keystate[SDL_SCANCODE_SPACE]) {
ship.shoot();
}
}
SDL_BlitSurface(ship.getSurface(), NULL, surface, ship.getRect());
SDL_UpdateWindowSurface(window);
SDL_FillRect(surface, NULL, 0);
}
它不是固定的类似的东西:
if (keystate[SDL_SCANCODE_DOWN] && keystate[SDL_SCANCODE_RIGHT) {
ship.move(2, 2);
}