Всем доброго времени суток! Совсем недавно начал осваивать программирование, поэтому если режет глаза - извиняйте. Решил сделать в Java 2D игру с помощью информации имеющейся в сети, но столкнулся с одной проблемой. Хочется реализовать перемещение игрока ( в данном случае танка) не так, чтобы при нажатии одной или нескольких кнопок UP, DOWN, LEFT и RIGHT танк моментально менял направление и перемещался в нём, а несколько приближенно к реальности, а именно таким образом, что соответствующими клавишами LEFT и RIGHT выполнялся бы поворот объекта в том или ином направлении, а само перемещение клавишами UP и DOWN. Сам мой класс Player, а именно его метод update выглядит типично :
public void update(){
if(up && y>0) dy = -speed;
if(down && y<GamePanel.HEIGHT -h) dy=speed;
if(right && x <GamePanel.WIDTH - w) dx = speed;
if(left && x>0) dx = - speed;
if (up && left || up && right || down && left || down && right ) {
double angle = Math.toRadians(45);
dy = dy * Math.sin(angle);
dx = dx * Math.cos(angle);
}
y += dy;
x += dx;
dy = 0;
dx = 0;
}
Мысль такая, что надо создать переменную, которая будет содержать в себе значение угла между вектором направления и тригонометрическим нулём к примеру. Нажатие LEFT или RIGHT будут изменять это значение в ту или иную сторону, соответственно перемещение объекта в пространстве по координатам будет определяться с помощью этого угла и скорости перемещения при нажатии клавиш UP или DOWN. Проблема в том, что я не знаю как это реализовать, так как в сети существует много информации о том, как поворачивать в том или ином направлении изображения в методах draw, но не объектов. Я могу сделать так, что отображаться это будет так как мне нужно, но по факту это будет лишь поворот изображения, а реальное положение объекта в пространстве будет иным, что повлечет за собой неправильные игровые ситуации, когда танк например врежется в воздух, или за него зацепится, если я конечно правильно это всё понял. Возможно для кого то из вас это окажется знакомым, или просто очень лёгкой задачей, прошу объяснить мне пожалуйста, как это реализовать. Благодарю за внимание.