Доработка алгоритма движения юнитов в RTS (Unity 3d)

Бюджет 83$ / 5000
руб
в месяц
Создан: 2 года назад
На модерации
Описание
Для игры в жанре RTS необходимо реализовать алгоритм перемещения (групповые с учетом коллизий, повороты в движении и с места, маневрирование в узком пространстве) для юнитов разных типов (пешие, механизированные, авиация).

В качестве референса можно взять C&C Generals.

Что есть сейчас: все юниты имеют Rigidbody + BoxCollider + NavMeshAgent с соответствующим Agent Type.
Перемещение: классический mouseclick-to-move.
Окружение: Unity 2020 LTS, URP.
На усмотрение исполнителя доработку можно реализовать как для нативного NavMesh так и для A* Pathfinding Project.

Всего есть 4 типа юнитов в 2 группах:

1. Наземная группа. 
При перемещении группы юнитов в одну точку они должны занимать оптимальные отстоящие друг от друга позиции с учетом возможных препятствий. Например, если 4 юнита находились в сторонах света (С-Ю-З-В) и отправляются в одну точку – по возможности они должны прибыть в той же формации. В случае, если в предполагаемом месте стоит дружественный юнит – он отъезжает/отходит в сторону. Если враждебный – управляемый юнит останавливается в ближайшем возможном месте либо совершает наезд (например танк vs враждебный пехотинец).

- Пехота. 
Может поворачивать на месте, если при движении в одну точку отдан приказ на движение в противоположную сторону – пехотинец сначала останавливается, затем совершает поворот до предельного угла (задается параметром, например, если угол поворота менее 30 градусов – можно поворачивать в движении) и только потом начинает движение. Если при движении в одну точку отдан приказ на движение в точку, угол поворота между первой и второй меньше предельного – поворот так же совершается в движении.

- Механизированная техника (автомобили, мотоциклы).
 Не может поворачивать на месте. При повороте на угол больше предельного – маневр совершается по дуге согласно радиусу поворота (как обычная машина). Сейчас нативный NavMeshAgent начинает нереалистично «слайдить» одновременно с движением. Также необходимо поддержать разворот в 3 приема (при наличии пространства для маневра), если цель находится позади рядом и быстрее будет развернуться при наличии свободного места. Очень важно предусмотреть пограничные случаи: когда юниты находятся в узком пространстве (например на мосту), когда их много в одном месте и тд.


2. Воздушная группа. 
Находится на заданной высоте, при полете над возвышенностями и углублениями – повторяет рельеф поднимаясь и опускаясь, поддерживая постоянную высоту. Можно использовать NavMesh (со своим Surface), чтобы было проще повторять складки местности. Нет строгой необходимости учитывать коллизии, юниты могут проходить сквозь друг друга (однако, будет плюсом подержать их). При изменении высоты юнит должен изменять тангаж (поднимать-опускать нос, вращение вокруг оси X).

- Вертолеты.
 Скорее всего не потребуется доработок нативного NavMeshAgent, так как вертолеты умеют «слайдить». Тут требуется только поддержать вращение вокруг оси Z (крен) при поворотах.

- Самолеты.
 Не умеют «висеть на месте». При бездействии описывают круги вокруг точки. При начале движения – начинают движения описав дугу, при достижении цели – начинают описывать круги, выйдя на «орбиту» по спирали. Аналогично вертолетам должны вращаться вокруг всех осей (крен, тангаж, рысканье) при соответствующих маневрах. Также, нужно реализоваться приземление и взлет (при клике на аэродром самолет выходит на глиссаду и совершает посадку, аналогично при взлете – подьем до нужной высоты и движение в заданную точку),

Для демонстрации нужно будет собрать демку с примитивными препятствиями (Cube). В качестве юнитов подойдут любые бесплатные ассеты/примитивы.
На выходе хочется получить один/два компонента, без разбрасывания логики по нескольким классам/интерфейсами.
Категория
Источник: fl.ru

Похожие проекты

$21
0 1
Нужно разархивировать файл archive. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы  ....
1 неделя назад
safe 
0 0
Разработать впн сервис ( Приложения на ios и android + сайт для оплаты подписки). Настройка Серверов. Оплата по договоренности. Работаем черед безопасную сделку....
2 недели назад
safe$21
0 3
Нужно разархивировать файл archive. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы  ....
1 месяц назад
$214
0 1
Здравствуйте, у кого есть проект по продвижению chaturbate? Или кто-то делает?...
1 месяц назад
$21
0 0
Заказные доработки функционирующих учётно-управленческих систем на производственных предприятиях. Навыки программирования в MS SQL, VBScript, 1С, знание принципов ООП....
safe$36
0 2
Нужно опубликовать мобильное приложение для Android в Гугл маркет с аккаунта разработчика Гугл плей консоль, созданного ДО Ноября 2023. В рамках проекта, необходимо прислать приглашение мне на почту, чтобы я загрузила приложение и отправила его на модерацию, с сохранением безвременного доступа к моему......
safe$71
0 3
Сделать игру для яндекс игр, настроить рекламу в игре и помочь с публикацией игры в платформе яндекс игры. Игра - карточная игра Пасьянс Паук (косынка) Игровой процесс: Тип игры: Пасьянс Паук. Количество мастей: Игрок может выбирать количество мастей: 1, 2, 3 или 4. Подсказки: Автоматические подсказки,......
$14
0 3
Без акцента на идею, необходимо создать мобильное приложение iOs и Android, с возможностью трансляции основной информации в миниапп Tg. Интеграция с платежной системой, внутренний кошелек, две валюты. В зависимости от гео, возможность конвертации валют ч/з сервер. На старте, сервер скорее облачный. Двухфакторная......
$1200
0 0
Необходимо перевести действующую БД с версии 77 на 8 (переписать конфигурацию, настроить обработки для переноса данных).   Не типовая конфигурация по учету пенсионеров в ГУ РК....
safe$22
9 3
требуется готовую онлайн анкету на django по приему на работу перенести в whatsapp, telegram и viber. Нужно чтобы кандидат мог с удобством заполнять анкету с телефона, а все заполненные им данные по всем позициям автоматически загружались в нашу базу данных. В нашей базе будет создаваться резюме кандидата......
$714
0 2
Описание задачи: Необходимо разработать serverless функцию на базе NestJS и TypeScript для автоматизированной обработки видеофайлов, загружаемых в Yandex Cloud Storage. Функция должна выполнять конвертацию видео в формат, поддерживаемый основными веб-браузерами, с последующим сжатием до оптимального......
safe$44
49 1
Трипланарная транспортная задача (отправители - транспорт - получатели) генерация исходных данных трехэтапное решение 1....
safe 
28 1
В наличии массив кадастровых номеров (КН), необходимо путем запроса на ПКК определить примерные географические координаты каждого объекта из массива КН (ОКС, ЗУ), вывести в результирующий файл эти ко-ты и ряд сопутствующих данных по этому КН....
2 месяца назад
safe 
44 8
Необходимо разработать бек и фронт мини-сервиса таким образом, чтоб его можно было развернуть внутри другого проекта....
safe$1111
23 0
Стоит на Бизнесе для своих нужд на простеньком базовом шаблоне, складываю туда контент потихоньку. Нужно начинать приводить в соответствие что бы публика сразу не убегала, а как то цеплялась, да и продвигать не торопясь. Шаблон где порвался от вставки баннеров подправить, для мобилок может сверстать.......
safe$22
55 0
Парсер для сайта stockx. com на питоне (selenium/pyppeteer). Необходим следующий функционал: 1. На главной странице с поиском по ключевым словам найти первый результат из поиска (ссылку на страницу товара) ....
2 месяца назад
 
36 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
2 месяца назад
 
37 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
2 месяца назад
Смотреть все