Есть несколько ответов на этот вопрос, в зависимости от вашего подхода.
1.Подход на основе спрайтов (где у вас есть изображение лабиринта)
Убедитесь, что спрайт прозрачный и непрозрачный только на областях стены (изображение PNG может иметь прозрачность).После того, как вы это сделаете, вы сможете прикрепить многоугольный коллайдер для автоматического создания коллайдера.Если изображение слишком большое / сложное, как вы сказали, вы можете разделить его на несколько разных изображений (например, на 4 квадранта), а затем расположить их и прикрепить многоугольный коллайдер к каждому объекту.В общем, чем проще коллайдер, тем он точнее и эффективнее.
Недостатком вышеупомянутого подхода является то, что вам приходится выполнять много ручной работы.Если вы знали, что у вас было много нарисованных от руки лабиринтов, для которых вам понадобилось бы создавать коллайдеры для этого, возможно, стоило бы автоматизировать процесс, описанный выше, с помощью сценария, но это может быстро усложниться, если вы не знаете, что вам нужно ».делаешьПо сути, скрипт автоматизации может рекурсивно разделить спрайт на квадранты, создать соответствующий GameObjects
и добавить PolygonColliders
к каждому из них.
Разделение изображения вручную в программе для редактирования фотографий или создание алгоритма для создания лабиринта и коллайдеров может быть быстрее для вас, чем автоматизация, в зависимости от того, сколько вы хотите получить в коде.
2.Подход, основанный на алгоритмах
К счастью, в Интернете есть много учебных пособий по лабиринту.Большинство из них предназначены для 3D-лабиринтов, но логика та же, что и для создания 2D-лабиринтов.Если вам интересна эта опция, то я нашел учебники по теме здесь и здесь .Чтобы добавить столкновение после создания лабиринта в каждом из этих руководств, вы можете добавить BoxCollider2D
к каждой стороне каждой ячейки, в которой есть стена (или, если вы используете префаб, добавьте BoxCollider2D
к префабу).