Это просто.
Не делайте этого (в снаряде :: move ()):
xVel=0;
yVel=0;
И пуля будет продолжать двигаться.
Еще одна проблема здесь:
if(keystates[SDLK_SPACE])
{
yVel-=14;
}
В основном вы не должны делать -=
. Анкет Либо замените его на yVel = -14
(Все пули всегда будут перемещаться со скоростью постоянной скорости) или обнаруживают момент «вниз» (IE Клавиша не нажимала в предыдущем кадре и нажимается в текущем), и только тогда -= 14
. Анкет Такие вещи (обнаружение события Keyup/Keydown) может быть проще, если вы обрабатываете события ключей, которые вы получаете (в вашем основном цикле) вместо того, чтобы вызовать SDL_GetKeyState
.