Быстрый способ сделать AI врага в UE5
Чтобы создать базовый вражеский искусственный интеллект создаем новый блюпринт - Character, с названием AI_BP.
Потому что мы хотим, чтобы у него была возможность двигаться, и у него уже будет капсула-компонент и т.д. Открываем блюпринт и выбираем меш из темплейт-проекта ThirdPerson или пака с персонажем.
Подвиньте его вниз до нижнего края капсулы и поверните по направлению синей стрелочки, обычно это -90.
Добавляем PawnSensing Comonent
Меняем угол обзора на 60, например
Добавляем ивент на то, когда в угол зрения попадает актор Pawn
Добавляем булевую переменную IsSeePlayer и на ивент OnSeePawn ставим ей значение True
Создаем новый кастомный ивент FollowPlayer и запускаем его после установки переменной IsSeePlayer
На ивент FollowPlayer нам нужно прикрепить возможность данного блюпринта двигаться за игроком. Добавляем ноду Branch для проверки переменной IsSeePlayer, если она верна - запускаем ноду AI MoveTo
В ноду AI MoveTo надо подать два входа. Ссылку на себя на плюпринт BP_AI, через функцию self. И TargetActor - на блюпринт игрока. Это можно сделать двумя способами - взяв значение из ноды OnSeePawn или через GetPlayerCharacter
Добавляем в сцену BP_AI и NavMeshBounds Volume, увеличив его по размеру сцены.
Для того, чтобы подключить анимации к перемещению BP_AI нам понадобится BlendSpace1D и AnimBlueprint. Назовем их ABP_AI и BS_LocoAI
Блендспейс позволит нам переключаться между тремя анимациями Idle, Walk и Run.
Параметр, который будет управлять блендингом - Speed. Поэтому задаем Name для Horizontal Axis - Speed. Максимальное значение этого параметра будет 600, такое же как Max Walk Speed в CharacterMovement компоненте BP_AI. Выбираем три анимации для вашего персонажного скелета - Idle, Walk и Run. Удерживая Ctrl вы можете блендить анимации на графе превью.
В AnimGraph недавно созданного ABP_AI вытаскиваем наш блендспейс и подключаем в Output Pose
Для того чтобы управлять параметром Speed в аним блюпринте, делаем Promote to variable и получаем переменную Speed
Переходим в EventGraph и кастуем к BP_AI из TryGetPawnOwner. Берем CharacterMovement компонент, получаем из него Velocity и преобразуем вектор в флоат, через фукцию Length. Это значение подаем в переменную Speed.
Переходим BP_AI и назначаем компоненту Mesh - AnimClass - ABP_AI
Теперь если вы нажмете Play персонаж будет бегать за игроком, когда он попадает в поле его зрения. Хорошо давайте добавим ему атаку.
В BP_AI создаем новую булевую переменную CanAttack. Делаем бранч из MoveAI и если переменная CanAttack true, то ставим ей значение False, дабы избежать повторных атак, до завершения анимации атаки, которую мы выберем.
Так же активируем CanAttack в ивенте OnSeePawn
Для того, чтобы проигрывать анимационные монтажи, в ABP_AI в AnimGraph нужно добавить DefaultSlot
Возвращаемся в BP_AI. После того как мы установили в ивенте FollowPlayer значение CanAttack на false, запускаем Delay на 0,1 секунду и после подключаем ноду Play Anim Montage, в ней выбираем монтаж с нужной нам анимацией.