Я использую комбинацию SDL и OpenGL в своего рода проекте ускоренного курса, чтобы научить себя, как все это работает. Меня действительно интересует только OpenGL как способ использования ускорения в 2D-играх, поэтому мне просто нужно это для работы в 2D-плоскости.
У меня сегодня было много проблем с моей текущей проблемой, я хотел бы, чтобы объект указывал на мышь, пока нажата кнопка мыши, и затем, конечно, оставался бы направленным в этом направлении после того, как мышь поднята.
void Square::handle_input() {
//If a key was pressed
if( event.type == SDL_KEYDOWN ) {
//Adjust the velocity
switch( event.key.keysym.sym ) {
case SDLK_UP: upUp = false; yVel = -1; break;
case SDLK_DOWN: downUp = false; yVel = 1; break;
case SDLK_LEFT: leftUp = false; xVel = -1; break;
case SDLK_RIGHT: rightUp = false; xVel = 1; break;
case SDLK_w: wUp = false; sAng = 1; break;
case SDLK_s: sUp = false; sAng = -1; break;
}
}
//If a key was released
else if( event.type == SDL_KEYUP ) {
//Adjust the velocity
switch( event.key.keysym.sym ) {
case SDLK_UP: upUp = true; yVel = 0; break;
case SDLK_DOWN: downUp = true; yVel = 0; break;
case SDLK_LEFT: leftUp = true; xVel = 0; break;
case SDLK_RIGHT: rightUp = true; xVel = 0; break;
case SDLK_w: wUp = true; sAng = 0; break;
case SDLK_s: sUp = true; sAng = 0; break;
}
}
//If a mouse button was pressed
if( event.type == SDL_MOUSEBUTTONDOWN ) {
switch ( event.type ) {
case SDL_MOUSEBUTTONDOWN: mouseUp = false; mousex == event.button.x; mousey == event.button.y; break;
case SDL_MOUSEBUTTONUP: mouseUp = true; break;
}
}
}
И затем это вызывается в конце моего вызова Object :: Move, который также обрабатывает перевод x и y
if (!mouseUp) {
xVect = mousex - x;
yVect = mousey - y;
radAng = atan2 ( mousey - y, mousex - x );
sAng = radAng * 180 / 3.1415926l;
}
Прямо сейчас, когда я нажимаю, объект поворачивается и направлен вниз влево, но больше не меняет направление. Я бы очень признателен за любую помощь, которую я мог получить здесь. Я предполагаю, что здесь может быть проблема с событиями состояния и опроса, но из всех обучающих программ, которые я прошел, я был почти уверен, что исправил это. Я только что врезался в стену, и мне нужен совет!