Как я могу заставить вещи двигаться правильно под углами в Java - PullRequest
0 голосов
/ 09 июля 2011

У меня есть класс 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 все определяют точки на линии. Я только немного знаю о Триге, поэтому любая помощь будет фантастической. Спасибо!

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

1 Ответ

0 голосов
/ 09 июля 2011

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

double scaleY = Math.cos(angle);

до

double scaleY = -Math.cos(angle);
...