Игровой движок: система координат и вращение спрайта

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

Итак, вот как выглядит обычная игровая система координат (в большинстве реализаций Canvas верхний левый угол используется как (0,0), а ось Y идет вниз):

Нормальные координаты

Для спрайтов было бы естественно принять верхний левый угол в качестве позиции спрайта.

Теперь посмотрим, как происходит вращение. Если в общей системе координат ось Y идет вверх, вращение происходит против часовой стрелки, если угол положительный. И нулевой угол указывает вправо. Если ось Y идет вниз, то вращение по часовой стрелке:

angles

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

спрайты повернуты

Какую систему координат рекомендуется использовать в игровых движках? И, собственно, что предпочтительнее - в градусах или радианах?

Спасибо, Серж.


person zserge    schedule 21.03.2012    source источник


Ответы (1)


Вы не должны предполагать, что все спрайты повернуты и перевёрнуты. Вы должны использовать программные коды в своем игровом движке в соответствии с вашими потребностями.

Для выбора системы координат я выберу точку привязки в центре спрайта, когда я работаю над играми с перспективой сверху вниз; Я буду выбирать точку привязки в левом верхнем углу спрайта, когда работаю над играми с горизонтальным скроллером (например, Марио). Конечно, с 3D-миром все по-другому. Это зависит от того, как двигаются ваши спрайты. Точку привязки следует размещать в месте, которое не часто перемещается.

person Community    schedule 21.03.2012
comment
Спасибо, я понимаю по поводу точки привязки, и я согласен с вами. Это зависит от типа игры, и игровой движок должен предоставлять механизмы для установки точки привязки. Но я не понимаю, что вы подразумеваете под программированием кодов в движке, извините. - person zserge; 21.03.2012
comment
Выполняйте вращение и переворачивание программных кодов, применяя матрицу преобразования. - person Raptor; 21.03.2012