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);
}