Ограничение atan2 до определенных угловых диапазонов - PullRequest
1 голос
/ 31 марта 2012

Я хочу, чтобы спрайт игрока вращался в соответствии с положением курсора мыши.
Я использую atan2, чтобы настроить скрипт поворота на 360 градусов для моего спрайта Player.

atan2(XMouse-XPlayer,YMouse-YPlayer) - 90

Используя это, 90 градусов направлены вверх, 0 - прямо вправо, 270 градусов - прямо вниз. Мне нужно, чтобы спрайт проигрывателя располагался на левой стороне экрана и смотрел на правую сторону экрана только во время его вращения (то есть он не может смотреть назад).

Мне нужно ограничить свои углы обоими условиями; меньше 90 градусов ИЛИ больше 270 градусов.

В идеале, я бы хотел установить 0 градусов прямо вверх, тогда мне нужно только установить мои условия на Углы менее 180 градусов (один условный, а не два).

Можно ли это сделать?

Ответы [ 3 ]

0 голосов
/ 21 апреля 2012

Если вы используете радианы, то условие для проверки состоит в том, что abs(theta) < PI/2 всегда верно. Вот изображение из Википедии, просто чтобы показать вам, что я имею в виду. enter image description here

0 голосов
/ 15 января 2019

Чтобы иметь 0 градусов прямо вверх и движение по часовой стрелке от 0 до 360 градусов

используйте формулу:

f (x, y) = 180-90 * (1 + знак (y)) * (1-знак (x ^ 2)) - 45 * (2 + знак (y)) * знак (x)

    -180/pi()*sign(x*y)*atan((abs(y)-abs(x))/(abs(y)+abs(x)))
0 голосов
/ 31 марта 2012

Да.Используйте min() и max() (хотя вы еще не сказали, на каком языке вы работаете ...)

...