SDL джойстик угол стрельбы с ++ - PullRequest
0 голосов
/ 01 июля 2018

У меня возникли некоторые проблемы с механикой стрельбы в моей игре на платформе 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, если мой игрок направлен вправо, когда я не двигаю джойстик, если это чувство.

...