Як я можу визначити складну зону зіткнення поверх карти плитки?


13

Як рекомендують багато людей, я використовую редактор карт « Кахельна карта», щоб створити карту для своєї гри, і це особливо добре, тому що рамка libgdx також надає API для карт з плитки.

Я розумію, я можу визначити стикаються плитки чи ні в редакторі карт, щоб я міг вирішити будь-яке зіткнення в своєму коді. Але зараз я переживаю ситуацію, що мені потрібно розділити плитку на місця, що стикаються і не стикаються. Вручну я думаю, що я можу визначити точки та лінії меж двох областей і програмно вирішити це. Але це багато трудомістких робіт.

Тож я дуже гуглив і знайшов цього редактора з фізики. Це здається чудовим інструментом для автоматизації процесу, про який я згадував вище. Однак система працює з кожним розпакованим зображенням, і я не впевнений, що це спрацює, навіть якщо я розпакую зображення для його роботи.

Цікаво, чи є якийсь кращий спосіб зробити весь цей процес визначення зони зіткнення. Будь-яка пропозиція буде дуже вдячна.

Відповіді:


22

Як завжди, я просто кину на стіл кілька ідей. Звичайно, існує кілька способів підходу до цієї проблеми. Я опишу три, які мені вдалося запам’ятати, і ви вирішуєте, який (якщо такий є) із цих підходів хороший для вашого проекту.

Ідея 1: повторювані візерунки на ваших плитках

Чи потрібна ваша система бути достатньо гнучкою, щоб підтримувати будь-яку можливу зону зіткнення, чи ви можете її розбити на обмежений набір плиткових фігур, які ви можете побудувати, і розглядати їх як особливі випадки? Ось пара ресурсів, щоб прочитати цю ідею:

Ідея 2: Ігноруйте карту плитки

Так, повністю ігноруйте мапу плитки та зберігайте інше, полігональне подання зони зіткнення. Потім накладіть цю геометрію на карту на основі плитки та обробіть зіткнення з нею. Якщо вам фізика не потрібна, перевірте наступний ресурс:

В іншому випадку, я думаю, ви могли б скористатися інструментом, з яким ви пов’язані.

Ідея 3: ідеальне виявлення зіткнення пікселів

Використовуйте ідеальні зіткнення пікселів та використовуйте окрему маску або просто альфа-канал у ваших плитках для кодування змінних зон зіткнення. Для натхнення перевірте наступне керівництво:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.