Вопрос

Я пытаюсь сделать вращение игрового объекта, установив начальную и конечную точку и х кадров, чтобы сделать движение. Затем интерполировать начало и конечный угол, чтобы сделать это.

Это хорошо работает, но я пытаюсь сделать максимально возможный маршрут как вариант (в отличие от «сделать самый длинный маршрут»). В большинстве случаев он работает, но если вращение идет выше 360 или ниже 0, я не знаю, как обнаружить его и изменить числа. (Например, если я хочу взять максимальный маршрут от 270 до 90, кратчайший маршрут идет выше 360/0, поэтому никогда не используется, поэтому 270 должен стать -45, чтобы интерполировать до 90). Я ужас, объясняя, и я не родной английский, чтобы привернуть его, поэтому я буду использовать псевдокод того, что у меня есть.

 thing.start_angle = 180
 thing.end_angle = 90
 thing.angle = interpolate(thing.start_angle, thing.end_angle, position)

Мне так нравится (для подробного контроля времени над «если угол> MAX_ALL, а затем угол - 1»), но я не могу найти «правило» для того, как обнаружить, будет ли угол поворота ... Как я могу найти Если вращение будет ниже 0 или выше 360, действовать соответственно?

Это было полезно?

Решение

Угол будет обернуть, если

thing.end_angle - вещь .start_ange> = 180 или <-180

(Предполагая угловой диапазон от 0 до 379).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top