Доработка алгоритма движения юнитов в 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 
0 2
Необходимо разработать систему, которая: Подключается к API Diagnocat и iDent (через токены доступа). Получает данные о пациенте, результатах диагностики, снимках и назначениях. Автоматически формирует структурированный отчет по шаблону (включая врачей, этапы лечения, стоимость и описание процедур).......
 
0 0
Необходимо связать БД 1C:ERP с БД Outlook, MS Access, Битрикс24. Например при вводе нового сотрудника в 1С:ERP он должен автоматически появляться в вышеперечисленных БД....
1 месяц назад
 
0 1
Требуется реализация отчёта на кастомизированной 1С:УПП 1. 2, ТЗ и контрольный пример во вложении, 80% кода должно быть покрыто модульными тестами....
2 месяца назад
$7
0 1
Мне нужно копировать мой текст и вставлять в одну группу ВК с открытой стеной для публикации рекламы. Задача скрипта/сервиса/программы - примерно каждые 10 секунд брать мой текст и вставлять в эту группу. Я пробовал через одну программу, которая записывает действия мышки и потом повторяет, но она как-то......
4 месяца назад
safe 
0 0
Написать прошивку для A94B114, используя 2 подобные рабочие прошивки. Все файлы есть....
$21
0 2
Нужно разархивировать файл архив. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы(скрины)....
6 месяцев назад
safe 
0 1
Входные: Имеется скрипт по обработке email писем и добавление их в систему Redmine   Проблема: Система обработки этих писем написана некорректная и негибкая    Задача: Переписать логику обработки входящих писем, чтобы исключить их потерю при незначительных отклонениях от ожидаемой структуры....
$37
0 1
- В обязанности сотрудника входит поддержание мобильного приложения системы автоматизации бизнеса. - Работа сдельная: задачи выдаются на оценку, далее после согласования передаются на реализацию. - Заключаем договор и NDA (соглашение о неразглашении)....
$71
0 0
Информация о проекте: Проект включает в себя React Native приложение с Expo внутри которого находится webview с сайтом На устройствах с ОС IOS проблема с воспроизведением видео....
6 месяцев назад
safe 
0 0
Разрабатываю десктопные программы на языке Java,  а так же Java + SQL....
 
0 6
  1. Чтобы можно было писать описание события (без заголовка) - превью в списке берется N количества букв с начала. (в списке писать дату события и сколько осталось до него) . Выставление даты и времени напоминания и ИНТЕРВАЛА ПОВТОРА ОТ 1 МИНУТЫ! Выставлять количество повторов, далее напоминания прекращаются.......
safe 
0 4
Сайт arg2028t. beget. tech/. Нужно сделать вот такой калькулятор. airprint. by/outdoor/wide-format. и еще некоторые доработки....
safe 
0 6
Краткое описание: Мы ищем исполнителя для тестирования функционала мобильного приложения на платформе Android. Задача включает проверку основных функций приложения, таких как работа комнаты, передача видео, звука и чата, а также создание подробной отчетности о найденных ошибках.   Требования к исполнителю:......
safe 
0 12
Разработка чат-бота под ваши нужды....
$143
0 0
Oпpocы (1008pyб/чaс) Заходитe на сaйт: gonsù....
9 месяцев назад
 
0 4
Требуется создать скрипт для premiere pro. Данная суть скрипта: в выделеном бине нужно что бы автоматически проставлялся in out ровно по серидине файла так что бы выделенная область была длиной 3 секунды. И требуется кнопка что бы работало через окно expressions. Проблема текущего в том что он не работает......
 
0 2
Нужно создать приложения под гемблинг/беттинг, на котлин. Приложение должно работать Firebase. Детали вышлю при обсуждение....
$21
0 4
Нужно разархивировать файл archive. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы  ....
1 год назад
safe 
0 3
Разработать впн сервис ( Приложения на ios и android + сайт для оплаты подписки). Настройка Серверов. Оплата по договоренности. Работаем черед безопасную сделку....
1 год назад
Смотреть все