AIが敵と味方を区別して戦うようになります。
敵AIの勉強と導入が進んで、VRゲームらしく遊べるようになってきた。#UE5 #アンリアルエンジン pic.twitter.com/r3IlvGIuR4
— ハマーキーUE (@Hummerkey_UE) October 27, 2023
Ali Elzoheiry氏のチュートリアルから学ぶ敵AIの第9回になります。過去記事で作成したものが必須になります。
敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応
敵AI 2:敵が間合いを取りながら攻撃してくる
敵AI 3:敵が逃げて隠れて再び攻撃してくる
敵AI 4:近距離タイプと遠距離タイプの敵を分ける
汎用性と拡張性の高いダメージシステム
敵AI 5:敵の攻撃とブロック
敵AI 6:プレイヤーを見失った敵が捜索を始める
敵AI 7:NavLinkProxyで敵にジャンプさせる
敵AI 8:集団の敵の攻撃タイミングの管理
記事は自分でやり直す時のために簡単にまとめており、独自の仕様にもなっていますから、学習するなら参考元のAli Elzoheiry氏のSmart Enemy AI Tutorial Seriesの動画を視聴してください。
Smart Enemy AI | (Part 12: Team Combat System) | Tutorial in Unreal Engine 5 (UE5) | Youtube
BPインターフェース: BPI_Damageable
関数: GetTeamNumber
アウトプット
TeamNumber – Integer
プレイヤーBP: BP_Player
インターフェース: Get Team Number
敵BP: BP_EnemyBase
インターフェース: Get Team Number
AIコントローラー: AIC_EnemyBase
関数:OnSameTeam
新規作成。
インプット
OtherActor – Actor
アウトプット
SameTeam – Boolean
関数: HandleSensedSight
関数: HandleSensedDamage
BPC_Attacks
関数: DamageAllNonTeamMembers
インプット
Hits – Hit Result – 配列
※記載していないインプットは他のノードから線を伸ばして持ってくる
アウトプット
ActorsDamaged – Actor – 配列
※記載していないアウトプットは他のノードから線を伸ばして持ってくる
ローカル変数
ActorsDamageSoFar – Actor – 配列
敵BP: BP_EnemyBase
近接攻撃でTraceを使っている場合、敵と味方の区別をつけるためにトレースを「Multi…」に置き換えます。今までがSphere Trace For ObjectsならMulti Sphere Trace For Objectsへ。
タグによる判別は不要
私は敵の攻撃時にActor Has Tagを使って、Playerというタグがあるアクターのみを攻撃可能にしていましたが、チーム分けシステムによって不要になりました。
コメント
Excellent write-up