Как заставить вещи правильно двигаться под углами в Java

У меня есть класс под названием Bullet в своего рода стрелялке с высоты птичьего полета. Раньше я запускал его просто так, чтобы он двигался в зависимости от введенного направления, которое могло быть только на север, юг, восток или запад. Теперь я хочу сделать так, чтобы вы могли стрелять под любым углом, но если я стреляю, он переворачивается по оси Y (это означает, что если я нацеливаюсь вверх, он идет вниз). Вот мой код (да, я не забыл преобразовать в радианы). Каждая пуля состоит из небольшой линии, и вот выдержка из метода перемещения:

double scaleX = Math.sin(angle);
double scaleY = Math.cos(angle);
x = x + (MOVE_SPEED * scaleX);
x2 = x2 + (MOVE_SPEED * scaleX);
y = y + (MOVE_SPEED * scaleY);
y2 = y2 + (MOVE_SPEED * scaleY);

x, x2, y и y2 определяют точки на линии. Я немного знаю о Триге, поэтому любая помощь была бы фантастической. Спасибо!

РЕДАКТИРОВАТЬ: я сделал ошибку ранее, сказав, что он идет вправо, а не влево и наоборот, но он идет вверх, а не вниз и наоборот, и действует правильно влево и вправо.


person Colton    schedule 09.07.2011    source источник


Ответы (1)


Это слишком очевидно, чтобы быть правильным: изменить

double scaleY = Math.cos(angle);

to

double scaleY = -Math.cos(angle);
person Ed Staub    schedule 09.07.2011
comment
Да, вскоре после того, как я попробовал это, и это сработало, я просто согласился, спасибо! - person Colton; 09.07.2011