
Приветствую начинающих разработчиков. В данной статье мы научимся создавать мини карту для нашей игры. Не будем долго затягивать, и приступим сразу к делу.
Первым делом нам необходимо создать специальную текстуру(Render Texture), в которую в реальном времени будет записываться визуальная информация текстур игрового мира, и из которой в дальнейшем эта информация будет транслироваться непосредственно на нашей мини карте. То-есть эта текстура является посредником между получением визуальной информации, и трансляции её в мини карту.
Создадим данную текстуру с помощью окна Project (ПКМ - Create - Render Texture).

Назовём данную текстуру MiniMapTexture. А в инспекторе в поле Size укажем значения, например, 175. Это размер нашей мини карты.

Чтобы мы могли записывать информацию в нашу созданную текстуру, нам необходимо создать камеру. Для этого с помощью окна Hierarchy создадим новую камеру (ПКМ - Camera), и вложим её внутрь нашего игрового персонажа. Объект новой созданной камеры назовём MiniMap.

Теперь перейдём к настройке компонентов данной камеры. В окне Inspector для этой камеры удалим все лишние компоненты, оставив только компоненты Transform и Camera.
Теперь произведём следующие настройки компонента Transform:
- В поле Rotation по оси X установим значение 90, чтобы развернуть нашу камеру, чтобы она смотрела сверху вниз.
- В поле Position по оси Y укажем число 20, чтобы отдалить камеру подальше от персонажа. Это число можете отрегулировать сами, как Вам удобно.

Теперь настроим компонент Camera:
- В поле Clear Flags укажем значение Solid Color. Теперь та область камеры, в которую не попадают никакие объекты, будет отображать тот цвет заливки, который указан в поле Background, поэтому, по желанию можете этот цвет изменить.
- В поле Culling Mask проставьте галочки напротив тех слоёв, которые должны отображаться на мини карте. По умолчанию галочки у Вас стоят на всех слоях, но чуть позже мы к этому полю ещё вернёмся.
- В поле Projection указываем значение Orthographic, чтобы данные на миникарте отобржались в 2д формате.
- В поле Size можете поиграться сами, и определить для себя лучшее значение. У меня в этом поле стоит значение 8.
- Ну и самое главное, в поле Target Texture переносим нашу созданную ранее текстуру из окна Project. Благодаря этому действию, весь игровой мир, который наблюдает наша камера, переносится в нашу текстуру MiniMapTexture.

Отлично! В нашей текстуре в режиме реального времени отображается всё то, что видит наша камера. Теперь нам необходимо из этой текстуры произвести трансляцию на нашу мини карту.
Мини карта это интерфейс UI. Поэтому создадим объект канвас(UI - Canvas).
Внутри канваса создадим объект UI - Image, который будет служить нашей рамкой. Назовём данный объект Border. Теперь настроим его компоненты:
- В компоненте Rect Transform укажем ширину и высоту этого изображения по 270. А позицию мини карты укажем справа-внизу (bottom right), и позицию по X = -150, а позицию по Y = 150.
- В компоненте Image в поле Color укажите цвет рамки для вашей мини карты.

Внутри нашей рамки, то-есть объекта Border создадим объект UI - Raw Image, в которой и будет транслироваться мини карта. Назовём данный объект, например, Map. Настроим его компоненты:
- В компоненте Rect Transform укажем ширину и высоту этого изображения по 250. А позицию мини карты укажем справа-внизу (bottom right), и позицию по X = -135, а позицию по Y = 135.
- В компоненте Raw Image в поле Texture перетащите созданную ранее стекстуру из окна Project.

Ещё раз убедитесь, что в окне Hierarchy у Вас следующая иерархия:

Если вы сделали всё правильное, то у Вас должна получится полностью рабочая мини карта:

Бонус
Довольно часто главный персонаж на мини картах заменён на какую-нибудь иконку, например на стрелочку. Давайте в качестве бонуса это реализуем.
Первым делом с помощью окна Hierarchy создадим пустой объект внутри нашего парсонажа(ПКМ - Create Empty). Назовём данный объект IconUser. Данному объекту в окне Inspector присвоим компонент Sprite Renderer. После чего производим следующие настройки:
- В поле Sprite перетаскиваем картинку, которая будет отображаться на мини карте, на месте нахождения вашего персонажа. У меня это обыкновенное изображение стрелочки.
- Теперь картинку нашей стрелочки необходимо повернуть таким образом, чтобы она хорошо отображалась для нашей верхней камеры MiniMap, которая смотри сверху вниз. Для этого в поле Rotation по оси X указываем значение 90.

Отлично! Теперь необходимо, чтобы наша основная камера не отображала эту иконку, поскольку эта иконка создаётся исключительно для верхней камеры, отвечающей за мини карту, а основная камера её не должна отображать. Для этого произведём 2 простых действия:
- Создадим слой Mapping, и присвоим этот слой к нашему объекту IconUser.
- Для основной нашей камеры в окне Inspector в поле Culling Mask снимите галочки со слоя Mapping. Благодаря чему, главная Ваша камера не будут отображать данную иконку.

Отлично, всё хорошо работает! Но есть одно но... Поскольку на мини карте имеется отображение нашего персонажа в виде стрелочки, то отображение самого персонажа необходимо с мини карты скрыть. Для этого создаём слой Player, и присваиваем его к нашему персонажу. Важно: не тег а слой!
Далее для нашей верхней камеры в окне Inspector в поле Culling Mask снимите галочку со слоя Player.

Готово! Теперь всё работает как надо! Иконка персонажа отображается только через верхнюю камеру, а сам персонаж только через основную камеру. Все остальные объекты отображаются и в одной и во второй камере.

Данный способ отображения иконок на мини карте можно использовать не только для вашего персонажа, но и для других важных объектов в игре.
На этом всё! Если Вам понравился гайд, жду Ваших лайков. Если остались вопрос, пишите в комментариях.

