Нанесение урона
Автомат
Проджектайл
Спавн проджектайла
Хит ивент
Граната
Дробовик
Практика
Сделайте снайперскую виновтовку. У игрока должна быть возможность прицеливаться, патроны должны заканчиваться, перезарядка происходит по нажатию кнопки.
Враги
Зачем нужны враги?
Они раскрывают умения игрока. Позволяют применять на них механики, которые есть в игре.
Базовые типы врагов
Обычный враг
Просто солдат, просто grunt, рядовой боец. Не создает проблем, работает указателем куда идти, служит базой для гринда, отвлекает от врагов посложнее.
Метатель
Метатель гранат, топоров и фаерболов. Заставляет искать укрытий и заставляет из укрытий стремительно выбегать. Что метает? Кидать можно гранату, гантелю или хомяка-джунгарика. Настроение будет разным. Выбор метаемого предмета задает действия игрока: молотов горит и выключает пространство, флешка слепит, паук угрожающе ползет, хомячка жалко. Граната делает укрытие ненадежным и заставляет игрока менять свое поведение
Щитовик
Броня может выступать просто как визуальное объяснение большого Х: этого врага надо бить долго, потому что он весь в доспехах. Но это может быть требование стрелять в конкретную точку врага (глаз) или атаковать только с определенной стороны.
Призыватель
Враг, призывающий врагов. Создает ситуацию выбора: убить врага или убить источник врагов. Второе выгоднее, но обычно требует навыков (отложенные на потом враги могут и убить, пока мы заняты призывателем).
Взрывной призыватель
Враги могут призывать разным образом. Собственно, сам призыватель лишь нарративное объяснение подвижной точки спавна врагов. Например, противник может вывалиться из призывателя при его смерти, что сделает цену убийства такого моба более высокой. Устранение врага здесь не решает проблему, а создает ее.
Камикадзе
Если некая штука нас преследует и взрывается, это не враг, а ракета. Если эту штуку зовут Семён и она выглядит как шестиклассник, то это враг. Камикадзе воспринимается более остро, чем ракета, именно потому что это личность, а не вещь. Нам сама эта ситуация некомфортна. А если камикадзе еще и стреляет на бегу, то опасность только усилится.
Практика
Выберите 1 тип врага и придумайте как их можно реализовать в вашем концепте:
- Как враг вписан в ваш сеттинг
- Какая у него особенность (например что он такого необычного метает или кого такого необычного призывает)
AI в Unreal Engine
Navmesh
Штука, которая показывает, где может бегать иишник. Нажмите P, чтоб видеть зону покрытия.
Создадим первого врага
Создадим основу поведения
Дерево поведения и blackboard (переменные, с которыми работает враг).
Дерево поведения
Выполняет таски (задачи) слева направо.
По сути своей это логика мышления вашего аишника.
Композит ноды
Сначала двигаемся, потом проигрываем анимацию.
Либо двигаемся, либо проигрываем анимацию.
Проигрываем анимацию, пока двигаемся.
Преследующий враг
Нам понадобится команда move to. В ней задаем радиус в котором аишник видит цель, а потом задаем саму цель.
Теперь добавляем переменную в blackboard, чтобы аишник мог с ней взамодействовать.
Задаем значение этой переменной. Теперь она хранит информацию о нашем игровом персонаже.
Добавляем мэш, чтобы враг не был невидимым, и убираем галочку эффекта на навигацию.
Прописываем логику таска и обязательно добавляем ноду Finish Execute иначе таск никогда не закончится и враг на нём застранет.
Декораторы
Это условия выполнения таска (синяя штука над move to). В движке есть парочка типовых и готовых к использованию, но мы сделаем свой, для наглядности.
В нашем декораторе мы проверяем, находится ли игровой персонаж в радиусе внимания нашего аишника. Соответственно, прикрепив этот декоратор к move to, мы получаем аишник, который обнаруживает персонажа, если тот подходит достаточно близко, и бежит к нему.
Observer abort
Это логика по которой происходит прерывание таска, варианты следующие:
- None — ничего не происходит
- Self — если условие false, прерывает текущие таски
- Lower Priority — если условие true, прерывает таски, которые ниже приоритетом
- Both — self + lower priority
Практика
Сделайте блоксхему для противника-камикадзе, а потом закодьте его!
Домашнее задание
Сделайте оружия для вашего шутера и блоксхемы для ваших врагов (можете начать их кодить).

