Установите координаты vector2 по расстоянию перемещения и степени

У меня есть Vector2 в моей 2D-игре, и сейчас я хотел бы установить свои vector2 x и y, вычислив их, используя вращение в градусах.

Нужно ли мне использовать PI для расчета новых координат X и Y, а затем добавить расстояние перемещения в секунду, чтобы получить правильные координаты?

Пример: допустим, степень равна 90, что означает, что мой игровой объект будет двигаться вперед со скоростью 5 плавающих единиц в секунду, тогда Y будет 5,10,15, а если степень будет 180, то X будет увеличиваться на 5 каждую секунду, это просто , но как это сделать для других степеней, таких как 38 268 и т. д.?


person user3025332    schedule 22.05.2014    source источник


Ответы (1)


Обычное соглашение состоит в том, что 0 градусов указывает в положительном направлении X, и по мере увеличения угла вы поворачиваете направление против часовой стрелки. Ваше соглашение, кажется, таково, что 0 градусов указывает в отрицательном направлении X, а угол увеличивается по часовой стрелке, поэтому прежде всего вы должны перевести свой угол, скажем, alpha, в единицу с обычным соглашением, скажем, beta

beta = 180.0 - alpha

Далее, тригонометрические функции предполагают радианы, которые идут от 0 до 2, а не от 0 до 360, поэтому вы должны перевести beta в угол в радианах, скажем, theta

theta = 2.0*PI*beta/360.0

Наконец, cos(theta) дает изменение X при перемещении на 1 единицу в направлении, заданном theta, а sin(theta) дает изменение Y. Итак, вам нужно

X = X + D * cos(theta)
Y = Y + D * sintheta)

для расстояния D. Используя ваше соглашение, это означает

X = X + D * cos(2.0*PI*(180.0-alpha)/360.0)
Y = Y + D * sin(2.0*PI*(180.0-alpha)/360.0)
person thus spake a.k.    schedule 22.05.2014