CG関係の備忘録ブログ

主にZBRUSH、blender

UE5 敵の動きをつくる(うろうろ)

参考動画

【UE5初心者講座】#3 AI機能を使って敵キャラクター(NPC)を作ろう! - YouTube

 

敵の行動範囲を設定
ビュー上の箱+→ボリューム→NavMeshBoundsVolumeで
レベルの中央に配置

詳細のブラシセッティングで大きさを調整しレベル全体が覆われるようにする

Pを押すと敵の行動範囲が緑色で設定される

 

敵キャラクターをつくる
BPフォルダに行き新しいフォルダー→ENEMY
中に入ってブループリントクラス→すべてのクラス→AIで検索→AIControlerを選択→名前をBP_AIControler

ブラウザRM→AI→ビヘイビアツリー名前をBT_AIEnemy
ブラウザRM→AI→ブラックボード→名前をBB_AIEnemy

プレイヤーをEnemyフォルダにコピー

イベントグラフを全部消す
CameraBoom、FollowCameraも消す

(Self)を押し、詳細→ポーン→AIControlerClassを作成したBP_AIControlerしコンパイル

戻って名前をBP_AIEnemy

 

関連付け
AIControlerを開き、イベントグラフのBeginPlayから引っ張り、Runで検索、RunBehaviorTreeを選択、BTAssetにBT_AIEnemyを指定しコンパイル・セーブ

BT_AIEnemyを開き、右側BehaviorTreeのBlackboardAssetにBB_AIEnemyを指定する

 

タスクを作成(ランダムな場所を決めて移動する)
上の新規タスク→名前をBTTask_RandomLocationとし保存
左側の関数のオーバーライドプルダウンからReceiveExecuteAIを選択、ControlledPawnから出してGetActorLocationを出す

Md→GetRandomReachablePointInRadiusを選択、ReturnValueとOriginをつなげ、Radiusを500にする

※GetRandomReachablePointInRadius
Originの位置から半径500内のランダムな位置を取得する
(Originはエネミーの位置を入れている)

RandomLocationから引っ張り、SetBlackboardValueasVectorを選択、ReceiveExcuteAIとSetBlackboardValueasVectorをつなぐ
Keyから変数へ昇格、左側の変数したの名前をTargetLocationKey、表示をオンにする(目のアイコン)
最後にFinishExecuteにつなぐ

GetRandomReachablePointInRadiusのReturnValueとFinishExecuteのSuccessをつなぐ
コンパイル・保存

BT_AIEnemyに戻る
ルートから引っ張り、Sequenceを作成

SequenceからTasks内のBTTask_RandomLocationを選択
SequenceからTasks内のMoveToを選択

右上のブラックボードをクリック、新規キー→Vector、名前をTargetLocationとし保存、ビヘイビアツリーにもどる
BTTask_RandomLocationを選択し、デフォルトのTargetLocationKeyをTargetLocationにする

MoveToを選択し、詳細→ブラックボード→BlackboardKeyをTargetLocationにする

SequenceからTasks内のWaitを選択
Waittimeを5秒→1秒に変更

ビヘイビアツリーを開いた状態でAlt+Pで実行させると、挙動が可視化される