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

Бюджет 83$ / 5000
руб
в месяц
Создан: 3 года назад
На модерации
Описание
Для игры в жанре 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

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

safe$22
9 0
требуется готовую онлайн анкету на django по приему на работу перенести в whatsapp, telegram и viber. Нужно чтобы кандидат мог с удобством заполнять анкету с телефона, а все заполненные им данные по всем позициям автоматически загружались в нашу базу данных. В нашей базе будет создаваться резюме кандидата......
safe 
28 0
В наличии массив кадастровых номеров (КН), необходимо путем запроса на ПКК определить примерные географические координаты каждого объекта из массива КН (ОКС, ЗУ), вывести в результирующий файл эти ко-ты и ряд сопутствующих данных по этому КН....
1 год назад
safe 
44 1
Необходимо разработать бек и фронт мини-сервиса таким образом, чтоб его можно было развернуть внутри другого проекта....
safe$1111
23 0
Стоит на Бизнесе для своих нужд на простеньком базовом шаблоне, складываю туда контент потихоньку. Нужно начинать приводить в соответствие что бы публика сразу не убегала, а как то цеплялась, да и продвигать не торопясь. Шаблон где порвался от вставки баннеров подправить, для мобилок может сверстать.......
safe$22
55 0
Парсер для сайта stockx. com на питоне (selenium/pyppeteer). Необходим следующий функционал: 1. На главной странице с поиском по ключевым словам найти первый результат из поиска (ссылку на страницу товара) ....
1 год назад
safe$44
49 0
Трипланарная транспортная задача (отправители - транспорт - получатели) генерация исходных данных трехэтапное решение 1....
safe$1111
48 0
Требуется написать парсер маркетплейса, у которого есть только мобильное приложение (IOS, Android). Есть исходный код Android приложения (Java + Kotlin), реверснутый через JADX. Необходимо парсить данные о товарах, полученные по артикулу. За подробностями тг: @markermann)....
1 год назад
 
38 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
36 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
37 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
31 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
40 1
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
$22
59 1
В Геткурсе нужно сделать интеграцию со Сбербанком для оформления рассрочки/кредита. Основная задача – передача суммы и номера заказа при переходе для оформления рассрочки и возврат сведений при удачном оформлении. Эквайринг от Сбербанка к Геткурсу подключён, а готовой интеграции для рассрочки нет. Если......
1 год назад
 
96 0
Нужно сделать бот перехватчик заказов по фильтру такси Максим!...
1 год назад
$33
75 1
Как можно загрузить готовое фото из галереи, если приложение просит загрузить фото и при этом открывает камеру телефона? Нужно вместо использования реальной камеры смоделировать вход камеры и при этом загрузить фото из галереи....
1 год назад
 
117 3
Очень простой криптообменник в виде веб-сайта. Без смарт-контрактов и т. Все платежи вручную....
Смотреть все