Это мой первый пост, так что терпите меня. Я постараюсь объяснить свою проблему как можно более ясным. Во-первых, позвольте мне сказать, что я плохо разбираюсь в математике. Я провалил это в школе, и мне безмерно больно, что я не могу понять простые математические концепции, тем более что я люблю кодировать. Кто-то, кто хочет программировать, но не может выполнять базовые математические операции? Плохая комбинация. Ааа в любом случае, к проблеме.
Какой-то контекст. Пишу игру по типу астероидов. Все идет неплохо, и я преодолел все препятствия на данный момент благодаря этому сайту (спасибо!) И 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();
Поэтому на каждом этапе игры я хочу повернуть корабль в любом направлении, в котором хочет двигаться игрок, градус за градусом. Любая помощь с этим будет принята с благодарностью!
Спасибо за чтение!