Заставьте шар двигаться в направлении

Я хочу, чтобы шар двигался в определенном направлении, как я даю число от 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 - вы потеряете позицию мяча.

Создайте MoveX и MoveY перед циклом

Другие вопросы по тегам