Это мой первый пост, поэтому, пожалуйста, потерпите меня. Я постараюсь быть настолько ясным, насколько смогу, о моей проблеме.
Прежде всего, позвольте мне сказать, что я сосу на математику. Я потерпел неудачу в школе, и мне до бесконечности больно, что я не могу понять простые математические понятия, тем более что я люблю кодировать Кто-то, кто хочет программировать, и не может выполнять основные математические операции? Плохая комбинация
Aaaanyway, к проблеме.
Некоторый контекст. Я пишу игру типа астероидов. Это идет довольно хорошо, и я преодолел все мои препятствия до сих пор благодаря этому сайту (спасибо!) И Google. Я искал решение своей проблемы, но всегда кажется, что я сталкиваюсь с решением, которое либо не работает, либо я просто не понимаю и не могу включить его в свой код.
Проблема связана с вращением корабля. У меня есть класс джойстика на экране, который возвращает угол, на который нажимается джойстик. Я использую этот угол, чтобы направить корабль в том же направлении.
То, что я хочу сделать, это постепенно повернуть судно в направлении, на которое пользователь хочет идти, используя кратчайший поворот влево или вправо. Я мысленно думаю: «Как, черт возьми, я пойду сказать… 350 градусов от 5 градусов, идти налево?». Я не знаю ...
Вот мой код розыгрыша:
public void draw(Canvas canvas){
canvas.save();
canvas.rotate((float) (fAngle + 90), (float) (dX + (mShip.getIntrinsicWidth() / 2)), (float) (dY + (mShip.getIntrinsicHeight() / 2)));
mShip.setBounds((int)dX, (int)dY, (int)dX + mShip.getIntrinsicWidth(), (int)dY + mShip.getIntrinsicHeight());
mShip.draw(canvas);
canvas.restore();
}
Угол передается в переменную fAngle из метода getangle джойстика. Угол увеличивается на 90 градусов из-за того, что изображение обращено.
user.fAngle = oJoystick.getAngle();
Таким образом, на каждом игровом тике я хочу поворачивать корабль в любом направлении, куда игрок хочет идти, градус за градусом. Любая помощь с этим будет принята с благодарностью!
Спасибо за чтение!