Создание генератора карт из 3д тайлов на Unity
Делаю подобие игры Pixel Dungeon, только в 3д варианте. Начал с генератора подземелий. Задумка такая, есть некий набор 3д тайлов, из которых будет собираться случайная карта. Я уже определил способ соединений этих тайлов между собой.
На тайлах висит скрипт, в котором есть информация о точках стыка, я их именую анкорами. Если есть свободный анкор у первого тайла и есть свободный анкор у второго, то я могу скрепить эти тайлы между собой.
Дальше я приступил к генератору, криво косо я пытался что-то сделать, но чего то путного у меня не вышло. Генератор просто случайно выбирал тайлы и прикреплял их. Разумного поведения я не увидел в генераторе. Точнее создатель не смог его туда вложить. В итоге я понял, что просто рандомно склеивая тайлы меж собой, не выйдет ничего хорошего. Дальше я начал думать, как переделать генератор.
Пока в голову пришли вот такие примерные шаги (ниже рисунок):
- Собрать заранее большие комнаты из тайлов, и случайно расположить их на сцене.
- Пустить лучи из анкоров (из красных квадратиков комнат).
- На некой точке луча (красного), пустить другие перпендикулярные ей лучи (оранжевые лучи), чтобы точно получить пересечения.
- Использовать каким-то образом пересечения лучей для построения коридоров.
Вопросы у меня возникают уже с первого пункта, как правильно устанавливать комнаты, чтобы они не спавнились в миллионах километров друг от друга, как правильно пускать лучи, чтоб они между собой пересекались (Physics.Rayсast() наверно не поможет) и еще куча мелких вопросов, возможно которые я смогу решить. Прошу помочь с основными пунктами.
Возможно я изобретаю велосипед, и уже давно существуют более изящные решения, но я пока не смог найти того, что мне подходит. Укажите мне пожалуйста дорогу. Спасибо.
Отслеживать
1,512 1 1 золотой знак 9 9 серебряных знаков 16 16 бронзовых знаков
задан 6 дек 2020 в 23:20
97 9 9 бронзовых знаков
Создание миникарты на Unity
Всем привет. Представляю вашему вниманию перевод статьи из блога, посвященному разработке на Unity — The Knights of Unity. В ней пойдет речь о создании миникарты. Я также реализовал описанное в статье и выложил это на Битбакете.
Что требуется для создания миникарты в игре на Unity? Наверно вы будете удивлены, но это проще, чем вы думаете и даже не требует навыков программирования! Далее я постараюсь шаг за шагом объяснить, как это сделать.
Основные идеи миникарты
Миникарты (или радары) предназначены для отображения информации о том, что нас окружает. В первую очередь, миникарта должна быть отцентрирована по главному персонажу. Затем, вместо реальных моделей на ней нужно использовать удобочитаемые обозначения, поскольку миникарты зачастую довольно небольшие, и игрок может не распознать информацию, которую миникарта пытается предоставить.
Большинство миникарт представляют собой окружность, и мы постараемся создать такую же. Также на ней часто можно найти дополнительные кнопки и надписи. Их мы тоже попробуем создать.
Подготовка сцены
Начнем с добавления кое-чего на сцену. Я создал сцену с Unity-тян (она будет игроком) и двумя роботами (которые будут противниками).
Теперь добавим вторую камеру. Просто выберите пункт главного меню GameObject -> Camera и переименуйте созданную камеру как Minimap Camera. Теперь сделайте эту камеру дочерним объектом по отношению к Unity-тян (это позволит камере следовать за ней) и поднимите ее на 10 единиц выше головы Unity-тян, повернув при этом вниз.
Настройка камеры миникарты
Для получения хорошего результата установите позицию компонента Transform в 0, 10, 0 и поворот в 90, 0, 0. Камера должна показывать приблизительно вот это:
Хорошо, но это еще не миникарта. Если вы сейчас запустите сцену, изображение с камеры будет просто отображаться на экране. Мы должны сообщить игре, что хотим представить миникарту как UI-элемент.
Отображение в UI-элемент
Для этого нам потребуется Render Texture. Вы можете легко создать ее, выбрав пункт главного меню Assets -> Create -> Render Texture. Создайте и переименуйте как Minimap Render Texture.
Теперь выберите камеру Minimap Camera и назначьте в инспекторе полю Target Texture созданную ранее Minimap Render Texture.
Если вы попробуете запустить сцену, то заметите, что нигде не видно изображения с камеры Minimap Camera. Изображение теперь скрыто в созданной Minimap Render Texture.
Давайте теперь создадим Canvas для добавления на него UI-элементов. Выберите пункт меню GameObject -> UI -> Canvas и Canvas появится на сцене.
На Canvas нужно добавить объект Raw Image, чтобы с его помощью использовать Render Texture. Выберите пункт меню GameObject -> UI -> Raw Image, переименуйте созданный объект как Minimap Image и назначьте в инспекторе полю Texture нашу Minimap Render Texture.
В результате у нас получился UI-элемент, который отображает изображение с камеры Minimap Camera!
Сделаем его в виде окружности. Для этой цели я приготовил простую текстуру-маску:
Создайте новый UI-элемент Image, добавьте на него компонент Mask, в инспекторе задайте полю Source Image нашу текстуру-маску и сделайте объект Minimap Image дочерним по отношению к Mask (подсказка: отключите Mipmaps для текcтуры-маски для лучшего визуального эффекта).
После этих действий наша миникарта будет выглядеть вот так:
Белая миникарта на белом фоне выглядит не очень хорошо. Давайте добавим изображение с контуром поверх нее:
Чтобы было проще перемещать всю эту конструкцию, я сгруппировал ее в отдельный пустой объект, назвав его Minimap.
Наконец, давайте переместим созданную миникарту в верхний правый угол экрана.
Выглядит хорошо, неправда ли? Но это все еще ненастоящая миникарта — это камера, отображающая игру сверху. Если вы знакомы со слоями, то вероятно догадываетесь, что я сделаю далее!
Развлекаемся со слоями
Нам нужен по крайней мере один дополнительный слой. Перейдите в меню Edit -> Project Settings -> Tags and Layers и добавьте новый слой Minimap.
Теперь создадим три сферы. Одну синего цвета, расположенную в позиции, где стоит Unity-тян. Наилучшим способом будет сделать сферу дочерней по отношению к Unity-тян. Убедитесь, что слой сферы установлен как Minimap.
Проделайте похожие действия с роботами, только вместо синих сфер используйте красные.
Теперь самая лучшая часть! Выберите камеру Main Camera и убедитесь, что ее свойство Culling Mask не содержит отмеченным слой Minimap.
Теперь выберите камеру Minimap Camera и сделайте с ней обратное действие. Отставьте отмеченным только слой Minimap и отключите все остальные.
Теперь вы видите что-то похожее на настоящую миникарту!
Последние штрихи
Возможно вы захотите внести несколько корректировок. Прежде всего, давайте изменим цвет отсечения камеры Minimap Camera на светло-серый и установим свойство Clear Flags как Solid Color, чтобы фон миникарты лучше контрастировал с синей и красными сферами.
Теперь вы можете добавить на миникарту любые другие UI-элементы. Для примера я добавил текст. И вот конечный результат!
Миникарта создана так, чтобы немедленно обновлять свою позицию при перемещении персонажа. Если кто-то из роботов тоже переместится, это будет также отображено.
И это конец урока по миникарте!
Дизайн уровня-карты для игры в Unity3D
Мы занимаемся разработкой игр с механиками из роблокса.
Ищем человека который сможет по референсам сделать карту для 3Д платформера.
Референс я выдам в виде игры, вам нужно будет скачать роблокс, зайти в нее, поиграть и приступить к работе
Карту нужно делать в unity 3d
5 дней 1500 UAH
5 дней 1500 UAH
Есть опыт работы в unity 3d и с платформерами. Готов взяться за проект
Є досвід роботи у unity 3d і з платформерами. Готовий взятись за проєкт
14 дней 1000 UAH
14 дней 1000 UAH
Добрый день, готов разработать карту как на видео. Предлагаю обсудить детали в личных сообщениях
Добрий день, готовий розробити карту як на відео. Пропоную обговорити деталі в особистих повідомленнях
15 августа, 22:23 |
Карту нужно прям скопировать с предоставленного референса или только взять за основу и придумать похожее?
Кирилл Попов Swixy
16 августа, 2:08 |
Скопировать виды препятствий и сделать похожую карту
16 августа, 11:19 |
Чи треба додати механіки керування гравцем і інтерфейс? Чи виключно карту?
Кирилл Попов Swixy
16 августа, 12:39 |
Исключительно карту. Контроллер с персонажем уже готовы. Часть карты тоже, но обычно у разработчиков которые хорошо справляются с механиками есть недочеты в творческих моментах. Для этого и ищу человека который совмещает в себе навыки разработчика (т.к нужно делать в юнити) и навыки левел-дизайнера. По сути есть куча крутых референсов, в которые можно зайти, посмотреть как выглядят препятствия, скопировать 1в1 и расставить в другой последовательности.
Раскройте свои творческие способности
Загрузите самую популярную в мире платформу разработки для создания многоплатформенных 2D- и 3D-игр и интерактивного контента.
Unity 2022 LTS is here. Download now
Три этапа разработки на Unity
1. 1. Загрузите Unity Hub
Выполните установку и настройку согласно инструкциям на экране.
2. 2. Выберите версию Unity
Установите последний, один из предыдущих выпусков или бета-версию Unity с новейшими разрабатываемыми функциями.
3. 3. Создайте проект
Творите с чистого листа или выберите шаблон для ускоренной разработки проекта. Смотрите обучающие ролики различных уровней, чтобы без проблем воплотить свои идеи в жизнь.
Системные требования Unity Hub
ОС: Windows 7 SP1+, 8, 10, только 64-разрядные версии; Mac OS X 10.13+; Ubuntu 16.04, 18.04; CentOS 7.
Графический процессор: Видеокарта с поддержкой DX10 (версия шейдеров 4.0).
Что такое Unity Hub?
Unity Hub позволяет управлять установленными версиями редактора Unity, создавать новые проекты и использовать уже готовые.
Упростите себе работу
Unity Hub включает увлекательные траектории обучения, которые помогут новичкам влиться в творческий процесс.
Загрузить шаблон Runner
Новый шаблон Runner от Unity упрощает создание ваших уникальных и высококачественных игр в популярном жанре, которые будут по-настоящему выделяться в магазинах приложений.
Настройте его с Creative Mods
Работайте над играми с задором и удовольствием. Решая небольшие головоломки, которые мы называем Creative Mods, вы сможете с легкостью реализовать свой уникальный стиль и идеи в игре.
Поделитесь готовой игрой
Демонстрируйте навыки и получайте быстрые отзывы. Всего несколько действий отделяют вас от публикации интерактивной версии вашей игры в браузере!
Планы и цены
Мы предлагаем множество тарифов для самых разных отраслей и уровня знаний.
Ни один из них не требует от вас авторских отчислений.
Версии
Просмотрите и загрузите разные версии Unity.
Выпуски Unity с долгосрочной поддержкой (LTS)
Версия для разработчиков, которым нужна максимальная стабильность и поддержка проектов. В выпуске с долгосрочной поддержкой объединены все функции и улучшения, выпущенные за год. Эта версия устанавливается по умолчанию. Как правило, она рекомендуется для этапа, когда можно остановиться на конкретном выпуске Unity.
Технологический поток
Версии технологического потока подойдут разработчикам, которые ценят возможность первыми опробовать новые функции и подготовиться к новым проектам. Эти версии в основном рекомендуются для подготовительного этапа, ознакомления и разработки прототипов, но их можно использовать и с заделом на переход на новый выпуск LTS в будущем, что позволит заранее освоить новые функции.
Тестируемые технологии
Получите доступ к нашей новейшей функциональности раньше всех. Ваши отзывы помогут нам повысить ее качество.