Заставьте шар двигаться в направлении
Я хочу, чтобы шар двигался в определенном направлении, как я даю число от 0 до 360. В настоящее время мое соглашение:
0 движется вправо, 90 вниз, 180 влево и 270 вверх.
Проблема в том, что, если я поставлю что-то вроде 10, 11, 12 и т. Д., Оно вообще не будет двигаться. Некоторые цифры заставляют его двигаться под углом 45 градусов.
Мой текущий код:
float x = 0, y = 0;
float speed = 1f;
int angle = 90;
float moveX += speed * Math.cos(Math.toRadians(angle));
float moveY += speed * Math.sin(Math.toRadians(angle));
x += moveX;
y += moveY;
moveX = 0;
moveY = 0;
Если я сниму toRadians
, мяч идет в другом направлении, но все равно не работает.
Моя математика и английский ужасны, поэтому постарайтесь объяснить это как можно проще. И я не знаю различий между радианами и градусами.
2 ответа
Я не знаю различий между радианами и градусами и т. Д.
Это не совсем сайт для этого, но вот простое объяснение. Радианы и градусы - это 2 единицы измерения (например, километры и километры). Круг имеет 360 градусов или 2π радиан. Это означает, что
1 degree = π/180 (0.0174533) radians
1 radian = 180/π (57.2958) degrees
4 кардинальных направления на окружности, использующих радианы, будут 0 или 2π, π/2, π, 3π/2, соответствующих 0 или 360, 90, 180, 270 градусов.
Я хочу, чтобы мяч двигался в определенном направлении, как я даю число от 0 до 360
Теперь к вашему коду. У вас есть синтаксическая ошибка в строке
float moveX += speed * Math.cos(Math.toRadians(angle));
Вы только что объявили moveX
так что вы не добавляете к нему +=
Вы просто назначаете ему =
, То же самое с moveY
, Теперь, если вы печатаете x
а также y
после
x += moveX;
y += moveY;
вы получите правильные результаты. Я не знаю, почему после этого вы устанавливаете их в 0 - вы потеряете позицию мяча.