Бесплатно зарегистрируйся и получай уведомления о новых проектах по работе

Поделиться:

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

w
Заказчик
Отзывы фрилансеров: + 3 0 - 0
Зарегистрирован на сайте 5 лет и 11 месяцев
Бюджет: 5000 руб
69.23 $ — 58.14 €
Для игры в жанре 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). В качестве юнитов подойдут любые бесплатные ассеты/примитивы.
На выходе хочется получить один/два компонента, без разбрасывания логики по нескольким классам/интерфейсами.
Разделы:
Опубликован:
09.05.2021 | 03:03 [последние изменения: 10.05.2021 | 16:25]

Теги: Разработка игр на Unity, недорого, FL.ru