Edited at

【UE4】AI Perception の紹介と使い方 その2

More than 1 year has passed since last update.


はじめに

この記事はAI Perception の紹介と使い方の続きとなります。

実は記事を書いて以来AIPerceptionを使っていなかったのですが、最近Twitterで「AI Perceptionに新しい機能が実装されてる~」とありましたので、簡単に使い方を調べてみました。

プロジェクトに関しては前回と同じもので構いません。


AISense_Prediction

これは「指定されたアクタが指定秒数後に予測される位置」を教えてくれるものです。

AIPerceptionに刺激を与えるにはRequest Pawn Prediction Eventを使用します。

2017-07-17_16h54_32.png

Request Pawn Prediction Eventにより刺激情報を与えることが出来ました。次は受け取る方法です。

SightやHearingと同じ手順で結果を受け取ることが出来ます。

2017-07-17_17h07_40.png

結果はStimulus Locationに格納されています。

以下はデバッグ表示まで含めた使い方の例です。AI Controller側に処理を書いています。

2017-07-17_17h10_17.png

配列のGetで2を指定していますが、この数値は

2017-07-17_17h08_06.png

AIPerceptionコンポーネントのSenses Configから由来しています。


AISense_Predictionの使い所

使い所としてはシューターゲームにあるような障害物に隠れたプレイヤーを炙り出すためのグレネード投擲位置を求める時や逃げ回るプレイヤーを追い詰めるための爆発物設置とかにも使えると思います。


AISense_Damage

続いてご紹介するのはダメージ情報を知覚するためのAISense_Damageです。

このSenseに対し刺激情報を与えるためにはReport Damage Eventを使用します。

2017-07-17_17h57_14.png

こんな感じで使います。

2017-07-17_18h00_42.png

Report Damage Eventで与えられた刺激情報を受け取る方法は、他のSenseと同じです。

2017-07-17_18h04_25.png

StrengthではReport Damage Eventにて指定したAmountが取得出来ます。

Stimulus LocationEvent LocationReceiver LocationではHit Locationが取得できます。


AISense_Damageについて

正直な所「Apply DamageとかAny Damageで良くねぇ?」って感じです。

使い所に関しても思いつかないです。


AIPerceptionStimuliSourceComponent

このコンポーネントはAI Perceptionを解説しているこちらの海外のサイト書籍でも刺激情報源となるアクタに追加してくださいと紹介されるコンポーネントなのですが、自分が今回の記事を書くために作ったプロジェクトでは追加しなくても普通に動いてました。(追加するのを忘れてた)

ですので、追加しなかった場合は追加した場合と比べてどのような変化があるのかというのが分かりません。

とりあえず他のサイトでは追加するように紹介されているので、追加しておいたほうが良いと思います。

何かこのコンポーネントについてわかったことがあれば追記していきます。


おまけ

UE4.18.3ではCharacter側にAIPerceptionを付けても動作しますが、ここで紹介した2つのAISenseについてはAIController側に付いたAIPerceptionでないと動作しません。

詳しくは【UE4】AIPerceptionをAIControllerとCharacterにアタッチした時の違いを見ていただければと思います。