Система ресурсов и их сбора в стратегии [3D]

Необходимый элемент механики для любой стратегии, основанной на сборе ресурсов и строительстве базы. В данном случае, речь у нас пойдет о харвестерах, сборщиках ресурсов. Ранее мы публиковали материалы с частичной реализацией подобной механики, но теперь, мы пойдем немного дальше. Здесь мы разработали и написали с нуля, логику взаимодействия скриптов и игровых объектов. Помимо сбора ресурсов, так же, реализован механизм управления полями ресурсов. Кроме этого, появилась возможность создавать разные типы ресурсов: железо, кремний и т.п. Поля ресурсов теперь могут автоматически восстанавливаться с заданными параметрами.


Сборщики ресурсов:
  • Настройки количества ресурсов, которые юнит может брать за один проход (объем ковша).
  • Настройки максимального количества ресурсов, которые юнит может перевозить.
  • Настройка времени, загрузки / выгрузки ресурсов.
  • На старте, юнит автоматически ищет ближайшее поле ресурсов.
  • Если станция выгрузки занята, юнит будет ожидать своей очереди.
  • Если поле ресурсов иссякло, юнит переходит в режим ожидания.
  • Можно переназначить юнита на другое поле ресурсов.
  • Можно переназначить юнита на другую станцию выгрузки.
Менеджер ресурсов:
  • Генерация ресурсов, через инспектор Unity, на основе шаблона.
  • Настройка времени, восстановления полей.
  • Настройка объема, за которое происходит восстановление.
  • Настройка количества ресурсов, которое будет возрождаться за один проход.
  • Каждый ресурс это отдельный объект.
  • Для оптимизации процессов, восстановление полей - поочередное.
  • Менеджер автоматически создает список грузов, на основе существующих полей.


Рассмотрим внимательней структуру фабрики (станция выгрузки ресурсов). Это может быть прустой объект или меш, обязательно с коллайдером и скриптом Factory. А черним объектом фабрики должен быть специальный триггер FactoryTrigger, этот триггер необходим для организовывать очередь ожидания сборщикам, перед выгрузкой ресурсов.


Обратите внимания, что этот триггер должен быть дочерним объектом.


Радиус триггера нужно установить в два или три раза больше, чем размеры сборщика. Триггер будет автоматически создавать очереди ожидания, для всех сборщиков, которые входят в радиус триггера.

Префаб ресурса:


Это объект с коллайдером в режиме триггера.

Далее, префаб этого ресурса мы используем для генерации поля:


Здесь можно настроить радиус рандомного разброса ресурсов и их общее количество.

Набор компонентов для сборщика:


На объекте обезательно должен быть коллайдер и риджитбади в режиме кинематики.

Все остальные детали можно самостоятельно изучить в проекте. В коде присутствую комментарии. Внимательно изучите сцену и объекты на ней, перед внедрением в свою игру.

P.S.
Отдельно отметим, что система не регулирует ИИ навигацию юнитов, а лишь отдает ей команды. Поэтому, если нужно заменить стандартную навигацию на другую, то это не составит особых проблем, главное чтобы там был схожий базовый функционал.

Скачать проект:
https://boosty.to/null-code/posts/b3ff25ac-f2a5-4dfc-b961-65f2aff0d19e
Тестировалось на: Unity 2019.2.10

Комментариев 1

Офлайн
NerzOff 1 ноября 2019
спасибо за статью!
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика