[Unreal Engine 5]pawn sensingを使って見つけたプレイヤーを追いかけるAIを作る

NPCと戦う機能を作る

AIキャラクターと戦う機能を作る part3

こちらのようなAIキャラクターと戦う機能を作っています。本記事では下の動画のように、キャラクターにpawn sensingを使って視界を持たせ、視界に入ったプレイヤーを追いかけるようにする機能を作ります。

基本設計

「Pawn Sensing」という機能を使うことで、視界を設定し、その視界にPawnが入っているかどうかを知ることができます。
「Pawn Sensing」でプレイヤーを発見したら、ブラックボードの変数に発見したというフラグを立てておき、ビヘイビアツリーでフラグが立っていればプレイヤーを追いかけ、立っていなければ歩き回るという条件分岐を作ります。

ブラックボードに変数を作る

「BB_battle_ai」を開きます。

「新規キー」を押して新規キーを追加し、boolean型の「find_player」という名称にします。

Pawn Sensingを設定する

「BP_battle_ai」を開きます。

左上のコンポーネントパネルの追加から、pawn sensingを検索して追加します。

「pawn sensing」を選択して視界を設定していきます。

右の詳細パネルで、見える距離「Sight Radius」を2000、周辺視野角「Peripheral Vision Angle」を60に設定しておきます。

「pawn sensing」のイベント欄の「On See Pawn」を選択します。

すると「On See Pawn(PawnSensing)」がイベントグラフに追加されます。
「On See Pawn(PawnSensing)」はPawnが視界に入ったときに呼ばれるイベントです。

「On See Pawn(PawnSensing)」の続きに以下のようにノードを追加します。
こうすることで、プレイヤーが視界内に入ったとき、先ほど作成したブラックボードの変数「find_player」がTrueになります。

ビヘイビアツリーに条件分岐を作る

「BT_battle_ai」を開きます。

「Sequence」を右クリック→デコレーターを追加から「Blackboard」を選択します。

追加したデコレーターに以下の設定をしていきます。

「オブザーバーを中止」を「Self」に設定します。
「Key Query」を「Is Not Set」に設定します。
「Blackboard Key」を「find_player」に設定します。

次に、先ほど作成したデコレーター付きの「Sequence」をコピー&ペーストして右に置きます。
ペーストしたほうのデコレーターの「Key Query」を「Is Set」に設定します。
さらに、「Selector」を追加して、「Selector」からそれぞれの「Sequence」に繋ぎます。

これで「find_player」がFalseの時は左の「Sequence」で歩き回り、Trueの時は右の「Sequence」で、この後作るプレイヤーを追いかける処理に入ります。

プレイヤーを追いかけるタスクを作る

新規タスクから「BTTask_BlueprintBase」を選択して、新しいタスクを作ります。名称は「BTTask_chase_player」としておきます。

「BTTask_chase_player」を開きます。

左の「マイブループリント」「関数」オーバーライドから「Receive Execute AI」を選択して、「Event Receive Execute AI」を追加します。
「Event Receive Execute AI」の続きに以下のようにノードを追加します。

「BT_battle_ai」を開きます。

先ほど作成した「BTTask_chase_player」を右の「Sequence」に繋ぎます。

ここまで実装して、冒頭の動画のようにプレイヤーを発見したらプレイヤーを追いかけるキャラクターを作ることが出来ます。

コメント

タイトルとURLをコピーしました