这很容易。
不要这样做(在弹丸:: move()中):
xVel=0;
yVel=0;
子弹将继续前进。
另一个问题是:
if(keystates[SDLK_SPACE])
{
yVel-=14;
}
基本上,你不应该这样做 -=
. 。要么用 yVel = -14
(所有子弹都将始终以常数速度移动)或检测“钥匙向下”时刻(即键在上一个帧中尚未按下,并且在当前的框架中被按下),然后才能执行 -= 14
. 。如果您处理收到的密钥事件(在主循环中)而不是调用,则这种事情(检测键/键盘事件)可能会更简单 SDL_GetKeyState
.