ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】〔AI編〕①プレイヤーを追いかけるAIを作ろう

目次

 

はじめに

注意

UE5.0.2の現在の情報です。

今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。

 

前回

namiton.hatenablog.jp

 

 

解説

①ナビメッシュの配置

AIがマップ上を移動するにはナビメッシュと言われるアクタを配置して移動ができる範囲を指定する必要があります。

 

アクタを配置からNavMeshBoundVolumeを配置します。

 

表示→ナビゲーション、もしくはPキーを押すことで移動範囲を可視化することができます。

 

ブラシセッティングの値を調整してマップ全体を囲うように配置します。

これでAIの移動範囲を指定することができました。

 

②ブラックボードに変数を追加

AIがプレイヤーを追いかけるにはプレイヤーの位置を取得する必要があります。

そのためにプレイヤーの参照を渡すために変数を作成します。

 

前回作成したBB_NPCを開きます。

新規キーからObjectとVectorの2つの変数を追加します。

それぞれ名前をChaseActorKey,LocationKeyにして、

ChaseActorKeyはBaseClassをActorにします。

 

③ビヘイビアツリーの編集

ビヘイビアツリーを編集してプレイヤーを追いかけるロジックを組みます。

 

BT_NPCを開きます。

ルートノードの下からドラッグして

Sequenceノードを出します。

 

SequenceからMoveToを検索して配置します。

 

MoveToの詳細からブラックボードキーにChaseActorKeyを設定します。


このようになっていたら完成です。

これでChaseActorKeyに設定されたアクターへ移動できるようになりました。

 

④ChaseActorKeyにプレイヤーの参照を設定

BP_NPC_Controllerからブラックボードが持っているChaseActorKeyにプレイヤーキャラの参照を持たせます。

 

BP_NPC_Controllerを開きます。

イベントグラフからどのブラックボードを使うか指定するノードUseBlackboardを配置します。アセットには作成したものを設定しましょう。

 

GetPlayerPawnからプレイヤーの操作キャラを取得します。

また存在するか検証するためIsVaildでチェックしてあげましょう。

 

ブラックボードコンポーネントからオブジェクト型を設定するSetValueasObjectノードを配置します。

 

KeyNameは型の名前です。
ChaseActorKeyを指定してプレイヤーのPawnを接続します。

 

最後にビヘイビアツリーを開始させるRunBehaviorTreeノードに接続し

使用するビヘイビアツリーを指定します。

 

NPCキャラをマップ上に配置して実行してみましょう。

 

ぴったりとくっついてくるはずです。

 

アニメーションしていないと思うので修正します。
※ バージョンによってアップデートで修正されました。
アニメーションしている場合は飛ばしていただいて問題ありません。

⑤アニメーションさせる

アニメーションの詳しい説明は以下の記事で解説しているのでここでは詳しく説明を行いませんので予めご了承ください。

namiton.hatenablog.jp

 

ABP_Mannyを複製してABP_NPCとリネームします。

 

BP_NPC_CharacterのメッシュからAnimClassをABP_NPCに変更します。

 

ABP_NPCを開き、AnimGraphからShouldMoveの接続を変更します。

 

ちゃんとアニメーションするようになりました。

 

⑥ソーシャルディスタンスさせる

ご時世的に『 密です 』なので

一定の距離を保つようにします。

 

ビヘイビアツリーを開き、MoveToのAcceptableRadiusの値を大きくします。

試しに200にしてみましょう。

 

S o c i a l・D i s t a n c e !!

 

次回はあきらめるAIを作ります。

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。