@LoVD1NG
Новичок

Как правильно осуществить поворот танка в 2D игре на Java?

Всем доброго времени суток! Совсем недавно начал осваивать программирование, поэтому если режет глаза - извиняйте. Решил сделать в 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, но не объектов. Я могу сделать так, что отображаться это будет так как мне нужно, но по факту это будет лишь поворот изображения, а реальное положение объекта в пространстве будет иным, что повлечет за собой неправильные игровые ситуации, когда танк например врежется в воздух, или за него зацепится, если я конечно правильно это всё понял. Возможно для кого то из вас это окажется знакомым, или просто очень лёгкой задачей, прошу объяснить мне пожалуйста, как это реализовать. Благодарю за внимание.
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы