Найти в Дзене
Уроки по Unreal Engine

Кажется, что такая тривиальная мелочь

Мини карта, передвижение с помощью кликов по ней, рамку обзора камеры на карте сделать. Но на самом деле это вообще не просто. Миникарту решил брать из world partition, но на самом деле нет инструментов, чтобы взять данные оттуда. Казалось бы, в движке есть инструмент для создания мини карты, который делает все необходимое. Но есть нюанс, эта карта исключительно для редактора, а не для игры. И как только вы запускаете игру - актор миникарты удаляется. Мне пришлось сделать инструмент, который делает дубликат этого актора, чтобы использовать данные. Можно было бы делать через render target, но мне показалось, что это слишком ресурсоемкая задача. Затем, передвижение с помощью кликов. В камере я делал заготовку под это. Поэтому единственная задача была - преобразовать правильным образом пиксельные координаты виджета в мировые. Потому что сам виджет может быть любого размера, мир тоже может быть разным. Например если есть несколько карт. В общем нюансов море. А сейчас нужно сделат

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

Миникарту решил брать из world partition, но на самом деле нет инструментов, чтобы взять данные оттуда. Казалось бы, в движке есть инструмент для создания мини карты, который делает все необходимое. Но есть нюанс, эта карта исключительно для редактора, а не для игры. И как только вы запускаете игру - актор миникарты удаляется.

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

Можно было бы делать через render target, но мне показалось, что это слишком ресурсоемкая задача.

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

А сейчас нужно сделать визуализацию игрока на карте в виде рамки. Это тот ещё ад. Скорее всего я откажусь от рамки, которая будет отражать реальные границы обзора. Потому что тут требуется огромное количество математики. То есть получить данные вьюпорта, найти там 4 угла. Определить их местоположение в мировом пространстве, выполнить трассировку перпендикулярно камере по ландшафту. Таким образом получим 4 точки, которые видим. Это 4 вектора. Затем их перенести в виджет, сконвертировать в пиксельные координаты с учетом масштаба виджета. И затем по этим новым 4 точкам провести линии и тут самое интересное, потому что штатных средств для отрисовки линий у виджета - нет. Может, конечно, есть и другие методы, но мне больше ничего в голову не пришло. И все это надо выполнять каждый кадр, если камера передвигается.

Скорее всего я просто сделаю иконку игрока и просто буду ее перемещать и вращать на миникарте.