쉽습니다.
이 작업을 수행하지 마십시오 (발사체 :: move ()) :
xVel=0;
yVel=0;
그리고 총알은 계속 움직일 것입니다.
또 다른 문제는 다음과 같습니다.
if(keystates[SDLK_SPACE])
{
yVel-=14;
}
기본적으로, 당신은하지 말아야합니다 -=
. 그것을 교체하십시오 yVel = -14
(모든 총알은 항상 상수 속도로 움직입니다) 또는 "키 다운"모멘트를 감지합니다 (즉, 이전 프레임에서는 키가 누르지 않았으며 현재 프레임으로 누르면). -= 14
. 이런 종류의 일 (KeyUp/KeyDown 이벤트 감지)이 호출하는 대신받는 주요 이벤트 (메인 루프)를 처리하는 경우 더 간단 할 수 있습니다. SDL_GetKeyState
.