前回の続き。敵がプレイヤーと間合いを取りつつ攻撃してくるAIです。
前回と同じく自分で見返す用のメモ程度ですから、参考元である
Smart Enemy AI | (Part 4: EQS) | Tutorial in Unreal Engine 5 (UE5) | Youtube
を視聴した方が良いです。
このシリーズのPart 4以降、EQSを多く使います。
その前に日本語のチュートリアルでEQSを勉強しておいたほうが良いでしょう。基本をわかっていないとチンプンカンプン間違いなしです。
【UE4/UE5ゲーム制作講座】EQSを使って逃げる敵を作ってみよう!【AI入門】 | Youtube
【UE4 AI入門】EQSの基本 | Youtube
【Unreal Engine】EQSを使ってプレイヤーを取り囲む・一定の距離を保つ方法【逆引きUE】【AI入門】 | Youtube
敵キャラクターのアニメーションブループリント
名前: ABP_EnemyBase
・サードパーソンテンプレートにあるABP_Mannyを複製してABP_EnemyBaseにしています。
敵がプレイヤーと間合いを取りつつ攻撃してくるAIですから、敵がプレイヤーをロックしてカニ歩きするようなブレンドスペースのアニメーションを用意する必要があります。
Sword And Shield Idle | Mixamo
└剣と盾を装備したキャラクターのIdleアニメーション。
Sword And Shield Walk | Mixamo
Sword And Shield Run | Mixamo
└この中からWalkとRunそれぞれForward、Backward、Left Strafe、Right Strafeの4方向のアニメーションを使って、ブレンドスペースを作成する。
AIのチュートリアルであるためブレンドスペースの作成方法は解説していません。
キャラクターの方向(Direction)を取得する | 経験値0からのUE5
イベントグラフ
敵の方向を示す変数のDirectionと、敵がプレイヤーをFocus中であることを示す変数のIsFocusingTargetが必要です。

・ABP_Mannyでは最初からSequenceのThen 2まで使われています。Then 3とThen 4を追加しています。
【変数】
Direction – Float
└Calculate Directionから変数へ昇格。
IsFocusingTarget – Boolean
└Is Validから変数へ昇格。
AnimGraph > Locomotion > Idle

・ブレンド Poses by boolというノードを使い。敵がプレイヤーをFocus中かどうかでIdleアニメーションを切り替えています。
当然ながらFocus中(Ture)のIdleアニメーションは武器を持って構えているもの。
AnimGraph > Locomotion > Walk / Run
ブラックボード
ブループリントインターフェース
BPI_EnemyAIに関数を追加します。
関数: GetIdealRange
敵キャラクターのブループリント
インターフェース: Get Ideal Range

【変数】
Attack Radius – Float
└リターンノードから変数へ昇格。デフォルト値は150。
Defend Radius – Float
└リターンノードから変数へ昇格。デフォルト値は350。
AIコントローラー
イベントグラフ

【変数】
AttackRadiusKeyName – Name
└Set Value as FloatのKey Nameから変数へ昇格。デフォルト値をAttackRadiusにする。
DefendRadiusKeyName – Name
└Set Value as FloatのKey Nameから変数へ昇格。デフォルト値をDefendRadiusにする。
EnvQueryCntext
名前: EQS_Context_AttackTarget
環境クエリ(EQS)
名前: EQS_State

・ルートから線を伸ばしてPoints: Circleを配置。

・Points: Circleで右クリックしてテストを追加 > Pathfinding。

・Points: Circleで右クリックしてテストを追加 > Distance。
Float ValueのMinとMaxを設定することで、移動先のポイントを2つだけに限定させています。

ビヘイビアツリー
デコレーター: BTDecorator_IsWithinIdealRange
名前: BTDecorator_IsWithinIdealRange
新規作成。

【変数】
IdealRange – Blackboard Key Selector
└新規作成。目玉アイコンを開けておく。カテゴリをKeys(キー)にしています。
AttackTarget – Blackboard Key Selector
└新規作成。目玉アイコンを開けておく。カテゴリをKeys(キー)にしています。
【ローカル変数】
ErrorMargin – Float
└減算する(-)の左下からローカル変数へ昇格。デフォルト値を50.0にする。
タスク: BTTask_MoveToIdealRange
名前: BTTask_MoveToIdealRange
新規作成。

【変数】
IdealRange – Blackboard Key Selector
└新規作成。目玉アイコンを開けておく。カテゴリをKeys(キー)にしています。
AttackTarget – Blackboard Key Selector
└新規作成。目玉アイコンを開けておく。カテゴリをKeys(キー)にしています。
ビヘイビアツリー
中央のAttack&Cooldowm
・前回作成したChasePleyerSequenceをAttackに改名しています。そこで右クリックしてデコレーターを追加 > Cooldown。
・Cooldownのオブザーバーを中止をLower Priority、Cool Down Timeを5.0にしています。敵は5秒に1回攻撃してくるようになります。
・BTTask_MoveToIdealRangeのIdeal RangeをAttackRadius、Attack TargetをAttackTargetにする。
右のStrafeの左のSequence
・BTDecorator_IsWithinIdealRangeの詳細↓
・BTTask_SetMovementSpeedのSpeedをSprintingにする。
・BTTask_MoveToIdealRangeのIdeal RangeをDefendRadius、Attack TargetをAttackTargetにする。
右のStrafeの右のSequence
・BTTask_SetMovementSpeedのSpeedをWalkingにする。
・Run EQS Queryの詳細↓

・その右のMove ToはAcceptable Radiusを10.0、Blackboard KeyをPointOfInterestにする。
・その右のWaitはWait Timeが0.3、Random Deviationが0.2。これで0.1~0.5のランダムな値になります。
参考元
Smart Enemy AI | (Part 4: EQS) | Tutorial in Unreal Engine 5 (UE5) | Youtube
ちゃんとしたゲームらしくなった
前回に引き続き、今回のチュートリアルも難しかったですが、クオリティが高くて満足です。敵が突っ込んでくるだけじゃなくて間合いを取るようになるだけで、ちゃんとしたゲームっぽくなります。
前回と同様に、自分でやり直す時のためにブログにまとめているメモ程度のものですから参考にはなりにくいでしょう。Ali Elzoheiry氏のチュートリアルを見ることをオススメします。
コメント
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI […]
[…] 敵AIの第3回になります。過去記事で作成したものが必須になります。 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]
[…] 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI […]