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

13

Как рекомендовали многие, я использую редактор карт Tiled для создания карты для своей игры, и это здорово, особенно потому, что libgdx framework также предоставляет API для карт из Tiled.

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

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

Интересно, есть ли лучший способ сделать весь этот процесс определения области столкновения? Любое предложение будет высоко ценится.

Тае Сунг Шин
источник

Ответы:

22

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

Идея 1: повторяющиеся узоры на ваших плитках

Должна ли ваша система быть достаточно гибкой, чтобы поддерживать какую-либо возможную область столкновения, или вы можете разбить ее на конечный набор форм плиток, с которыми вы можете строить, и рассматривать их как особые случаи? Вот пара ресурсов, чтобы прочитать эту идею:

Идея 2: игнорировать карту тайлов

Да, полностью игнорируйте плитку и сохраните другое полигональное представление вашей области столкновения. Затем наложите эту геометрию поверх вашей карты на основе плитки и обработайте столкновения с ней. Если вам не нужна физика, проверьте следующий ресурс:

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

Идея 3: Пиксельное идеальное обнаружение столкновений

Используйте идеальные коллизии пикселей и используйте отдельную маску или просто альфа-канал в ваших тайлах для кодирования ваших переменных зон коллизий. Для вдохновения, проверьте следующее руководство:

Дэвид Гувея
источник