Подключите нашего Telegram-бота для уведомлений о новых проектах
Алгоритм расположения текста над регионами карты
Разместить заказ
m
Заказчик
Отзывы фрилансеров:
+ 3
- 0
Зарегистрирован на сайте 3 года и 9 месяцев
Бюджет:
15 000 руб
184.06 $ — 161.57 €
Исполнитель определен:
Sergey Starcheus
Нужно разработать алгоритм размещения текста по линии поверх регионов карты в наиболее подходящем месте внутри региона.
Карта выполнена через tilemap.
Сам тестовый проект на unity с 2 картами приложен. Его достаточно просто запустить.
Нужно доработать метод drawText класса TilemapController.
Остальные методы изменять нельзя.
Для вывода текста по линии используется готовый класс
EasyTextDeformer который уже встроен. Ему задаются позиции по которым рисуется линия.
Можно реализовать отризовку текста и по другому, но это нужно согласовать.
Что дано:
1. Регионы. Состоят из точек тайлмап карты, цвета и названия.
List<CellPoint> points; // 0x0 4x6 – это точки на карте, а не мировые координаты transform!
2. Tilemap tilemap; – стандратный unity Tilemap. С помощью него можно получать координаты клеток в пространстве (transform)
Что нужно сделать:
1. Первый алгоритм:
Рассчитать координаты для размещения текста в регионе, чтобы он максимально вписался в регион (с учетом отступов).
Причем не прямым квадратом, а текст бы размещался по линии как в представленном примере. То есть текст может изгибаться, поворачиваться, уменьшаться или увеличиваться в размере и.т.д.
2. Второй алгоритм:
размещает текст строго горизонтально, то есть он не может его поворачивать или изгибать, только менять размер.
То есть можно передать параметр, чтобы указать какой из алгоритмов использовать.
bool onlyHorizontal = true;
3. Изменять размер шрифта(нужно учитывать что это может быть любой шрифт, не только arial), но не менее указанного размера(минимальный размер шрифта определяется переменной).
Что нужно учитывать:
1. Регионы могут состоять из кластеров клеток которые располагаются на других островах или континентах. Тут нужно размещать текст поверх самого крупного из них. Например на примере 1. Слева сверху есть государство Майя. Текст тут нужно расположить поверх самого крупного острова. Над остальными островами не нужно его рисовать.
2. Текст не должен быть вверх ногами. Нужно ограничить максимальные углы повората переменными.
3. Нужно только рассчитать координаты точек, шрифт и transform позиции и scale для компонента Text<EasyTextDeformer>. Подключать какую то внешнюю библиотеку можно только после согласования.
Как запустить:
Открыть папку проекта через unity hub. И открыть сцену SampleScene и запустить.
Логика в файле TilemapController.cs. Там сразу запускается tilemap и выводится карта.
А дальше уже нужно подкорректировать функцию
public void drawText(Region region).
Поменять карту на большую можно указав widthMap и heightMap в TilemapController.
Карта выполнена через tilemap.
Сам тестовый проект на unity с 2 картами приложен. Его достаточно просто запустить.
Нужно доработать метод drawText класса TilemapController.
Остальные методы изменять нельзя.
Для вывода текста по линии используется готовый класс
EasyTextDeformer который уже встроен. Ему задаются позиции по которым рисуется линия.
Можно реализовать отризовку текста и по другому, но это нужно согласовать.
Что дано:
1. Регионы. Состоят из точек тайлмап карты, цвета и названия.
List<CellPoint> points; // 0x0 4x6 – это точки на карте, а не мировые координаты transform!
2. Tilemap tilemap; – стандратный unity Tilemap. С помощью него можно получать координаты клеток в пространстве (transform)
Что нужно сделать:
1. Первый алгоритм:
Рассчитать координаты для размещения текста в регионе, чтобы он максимально вписался в регион (с учетом отступов).
Причем не прямым квадратом, а текст бы размещался по линии как в представленном примере. То есть текст может изгибаться, поворачиваться, уменьшаться или увеличиваться в размере и.т.д.
2. Второй алгоритм:
размещает текст строго горизонтально, то есть он не может его поворачивать или изгибать, только менять размер.
То есть можно передать параметр, чтобы указать какой из алгоритмов использовать.
bool onlyHorizontal = true;
3. Изменять размер шрифта(нужно учитывать что это может быть любой шрифт, не только arial), но не менее указанного размера(минимальный размер шрифта определяется переменной).
Что нужно учитывать:
1. Регионы могут состоять из кластеров клеток которые располагаются на других островах или континентах. Тут нужно размещать текст поверх самого крупного из них. Например на примере 1. Слева сверху есть государство Майя. Текст тут нужно расположить поверх самого крупного острова. Над остальными островами не нужно его рисовать.
2. Текст не должен быть вверх ногами. Нужно ограничить максимальные углы повората переменными.
3. Нужно только рассчитать координаты точек, шрифт и transform позиции и scale для компонента Text<EasyTextDeformer>. Подключать какую то внешнюю библиотеку можно только после согласования.
Как запустить:
Открыть папку проекта через unity hub. И открыть сцену SampleScene и запустить.
Логика в файле TilemapController.cs. Там сразу запускается tilemap и выводится карта.
А дальше уже нужно подкорректировать функцию
public void drawText(Region region).
Поменять карту на большую можно указав widthMap и heightMap в TilemapController.
Разделы:
Опубликован:
29.09.2021 | 18:27 [поднят: 29.09.2021 | 18:27]