ゲーム開発備忘録

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

【ゼロからアンリアルエンジン5】〔AI編〕④AIPerceptionを使ってNPCに”目”と”耳”を持たせよう

目次

 

はじめに

注意

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

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

 

前回

namiton.hatenablog.jp

 



今回は前回のプロジェクトから引き続き、NPCに視界を持たせます。

現在はプレイヤーとNPCの直線距離で追いかけるようにしているため、NPCの後ろからバレずに近づくという行為はできません。そこで視界を持たせることでよりリアルなNPCを作りたいと思います。

 

解説

①感覚コンポーネントの追加

BP_NPC_Controllerを開きます。

 

コンポーネントの追加からAIPerceptionを選択します。



②視覚の設定

パーセプションの詳細からSensesConfigの+を押して追加します。

AI Sight configは視界の追加です。

Detection by Affiliation (所属による検出)はすべてチェックを入れておきましょう。

 

③聴覚の設定

もう一つはAI Hearing configを設定します。

こちらもDetection by Affiliationにすべてチェックを入れておきましょう。

また、聞いた音を忘れるMaxAgeの設定もできます。

 

④イベントの作成

感覚を受け取ると呼ばれるイベントを作成します。

 

まず引数のActorsは感覚が受取ったアクタ≒見たキャラクターなどを返します。

今回はプレイヤーを見た、もしくはなにかしらの音を聞いた、で処理を分岐させます。

 

▼全体

 

▼まずNPCと受け取ったアクタ間の感覚情報を引き出します。

▼構造体を分解し、LastSensedStimuliから感覚ごとに分岐させます。

▼視覚についてはプレイヤー以外を排除したいので判定を入れたのち、結果を表示します。

▼視覚については発生した音がプレイヤー由来かどうかの判定は入れていません。

ココは仕様によりますが、NPCが音だけで敵か味方か判定するのは困難のため。

 

デバッグしてみよう

移動されると困るので、ビヘイビアツリーが走らないように切断しておきます。


デバッグツールをショートカットに登録しておきます。

編集→プロジェクト設定

 

アクティベーションキーを任意のキーにしてください。

また、テンキーのないキーボードの場合はカテゴリースロットも別のキーに振りましょう。


ゲーム中にアクティベーションキーを入力するとAIのデバッグ画面に入ります。

 

カテゴリースロットの5(デフォルトだとテンキーの5)を入力すると視野の情報が表示されます。

 

設定を変更してみて視野に変化があることを確認してみてください。

 

このようにAIデバッグツールを使用するとブラックボードのキーの値やナビメッシュなどAIに関する様々な情報を表示できます。

 

デバッグ時はログが呼ばれていることを確認しましょう。

 

⑥爆発するエフェクトが出るアクタを作ろう

NPCの耳に対するアクションを確認するために音のなるアクタを作成します。

アクタを継承したブループリント、BP_SparkGrenadeを作成します。

 

StaticMeshコンポーネントを追加して、

Cylinderを割り当てます。

 

5秒おきに爆発するナイアガラエフェクトを出すノードを作成します。

 

レベル上に配置して5秒おきに再生エフェクトが出れば成功です。

 

NPCがこの爆発を検出できるようにする

アクタにNPCが音を検出できるようにする仕組みを追加します。

Tagに追加したものはこちらで分岐できるので音の種類に応じた処理も可能です。

 

こちらも詳細から距離を変更できるので確認してみましょう。

個々の範囲はMaxRangeから編集できるので、こちらも併せて設定&検証してみましょう。

 

次回は感覚を元に行動するようにビヘイビアツリーを編集します。

最後に

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

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

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

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