LINUX.ORG.RU
ФорумGames

Collision system in 2d games

 


0

1

Пишу движок для 2д-стратегий. Самый простой пример при стыке двух спрайтов — когда один движется — другой на месте. Для первого спрайта мы знаем текущие координаты, и координаты, которые он будет иметь при смещении. Допустим, если у него на пути другой спрайт — то остановиться (или скорректировать вектор движения). Когда спрайты прямоугольный, то тут всё более-менее понятно, как узнать, будут ли 2 спрайта взаимодействовать. Но если допустим есть спрайт какого-то юнита, то часть пикселей там прозрачная, тоесть они не должны влиять на стыковку. Еще идея для прощёта взаемодействия — это щитать спрайты «круглыми» , а не квадратными, хотя и это не то.

Вопрос: есть ли литература, описывающая эту проблему игроделия. Ну и, конечно же, буду рад почитать советы лорчан :-)

Зачем тебе в стратегии непрерывное пространство? Делай сетку.

А вообще Bound Box.

O02eg ★★★★★
()

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

Проявить фантазию и разделить данные которые используются для определения коллизии (форму юнита) и для отрисовки? И да, для поиска пути лучше иметь границу в пару раз больше той что используется для определения столкновений, чтобы никто при развороте друг в дружке не застрял.

Gary ★★★★★
()

Если хочешь - использую маску, а вообще O02eg предложил оптимальное решение.

Cooler ★★★★
()

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

Artificial_Thought ★★★★
()

я бы делал bounding box или контуром, в зависимоси от желания и количества свободного времени.

gavlig ★★★
()

Делай маску при загрузке/создании спрайта: пробегай по всем пикселям в RGBA картинки и сохраняй биты: 0 - прозрачный, 1 - непрозрачный. Затем сравнивай.

Но вообще, тут больше сетка подойдёт: каждый объект находится на своей клетке и может перейти только в свободную клетку. Вот тут немного про коллизии в battle city писали: http://habrahabr.ru/post/142126/

Esh ★★★★
()
Ответ на: комментарий от Esh

Но вообще, тут больше сетка подойдёт

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

rumly111
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.