SDL游戏杆射击角度C ++

时间:2018-06-30 22:01:15

标签: c++ 2d sdl game-physics joystick

在使用SDL游戏杆的c ++ 2D平台游戏中,我的拍摄机制出现了一些问题。当我将操纵杆指向任何方向时,子弹似乎都朝着正确的方向移动。当我没有将操纵杆指向任何方向但按下射击按钮时,我希望子弹沿着玩家所面对的方向(0或-180)沿水平线移动,但是现在角度似乎是-108ish

这是我用来获取操纵杆相对于玩家位置的角度的代码。

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的角度前进;如果我的玩家朝右,则我不移动操纵杆,那么如何使子弹以-180度的角度运动。感。

0 个答案:

没有答案