Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Неправильные тайлы и карта проходимости


Автор: UniBomb 24.6.2010, 09:47
Добрый день. Как понятно из названия - карту строю из тайлов, для передвижения персонажа использую карту проходимости. Всё хорошо ровно до тех пор, пока все тайлы полностью закрашенные. Но в игре также присутствуют масса тайлов с уклонами, закруглениями и т.д.

user posted image

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

Сначала я думал в таких случаях проверять попиксельно коллизии картинки персонажа и игрового окружения, но что-то мне кажется, что это ой как долго. Есть ли другие способы?


Автор: Rpahut 24.6.2010, 13:29
Есть довольно быстрые алгоритмы попиксельного сравнения. Например - сылку найти не могу, но смысл в сравнении бит-маски целыми даблвордами. Если обязательно требуется учитывать форму произвольного тайла, то другого выбора у вас в общем то и нет. Если совсем жаба душит, можно использовать маску проходимости с пониженным разрешением. Ну или очерчивать контур ландшафта линиями и считать столкновения через векторы.

Автор: UniBomb 24.6.2010, 13:52
Цитата(Rpahut @  24.6.2010,  14:29 Найти цитируемый пост)
Есть довольно быстрые алгоритмы попиксельного сравнения.

Ох, как бы хотелось по-подробнее  smile  Я просто всегда думал, что рсчёт коллизий занимает достаточно много времени, т.к. в предыдущих наработках оперируя с отдельными пикселями получал низкую скорость обработки. Мне в принципе не обязательно пиксель-в-пиксель огибать такие ландшафты, можно и грубее (лишь бы не совсем бросалось в глаза, что ГГ левитирует над неровностями). 

Автор: Bitter 24.6.2010, 23:54
UniBomb, можно заранее каждому тайлу создать матрицу и сравнивать уже не пиксели картинки, а элементы матрицы. Так будет скорость на много быстрее, чем обращение к пикселям битмапа

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)