У меня возникли некоторые проблемы с механикой стрельбы в моей игре на платформе c ++ 2D с использованием джойстика SDL. Когда я направляю джойстик в любом направлении, пуля, кажется, движется в правильном направлении. Когда я не направляю джойстик в любом направлении, но нажимаю кнопку «стрелять», я хочу, чтобы пуля шла по горизонтальной линии в направлении, в котором находится игрок (либо 0, либо -180), но сейчас угол кажется -108. .
Это код, который я использую, чтобы получить угол наклона джойстика относительно положения игроков.
controller_y = SDL_JoystickGetAxis(j, 1); // get controller y axis
controller_x = SDL_JoystickGetAxis(j, 0); // get controller x axis
int deltax = xpos - controller_x; // diference in x pos
int deltay = ypos - controller_y; // diference in Y pos
angle = atan2(-deltay, -deltax) * 180 / PI;
и в своей функции обновления я обновляю позицию маркеров следующим образом:
box.x += speed *(cos(angle*PI / 180)) * delta;
box.y += speed *(sin(angle*PI / 180)) * delta;
Когда я не перемещаю джойстик в любом направлении, значения x и y джойстика обычно ниже 500 и больше -500. Поэтому мой вопрос заключается в том, как заставить пулю двигаться под углом -180, если мой игрок направлен влево, а я не перемещаю джойстик и угол 0, если мой игрок направлен вправо, когда я не двигаю джойстик, если это чувство.