#はじめに
この記事はAI Perception の紹介と使い方の続きとなります。
実は記事を書いて以来AIPerceptionを使っていなかったのですが、最近Twitterで「AI Perceptionに新しい機能が実装されてる~」とありましたので、簡単に使い方を調べてみました。
プロジェクトに関しては前回と同じもので構いません。
#AISense_Prediction
これは「指定されたアクタが指定秒数後に予測される位置」を教えてくれるものです。
AIPerceptionに刺激を与えるにはRequest Pawn Prediction Eventを使用します。
Request Pawn Prediction Eventにより刺激情報を与えることが出来ました。次は受け取る方法です。
SightやHearingと同じ手順で結果を受け取ることが出来ます。
結果はStimulus Locationに格納されています。
以下はデバッグ表示まで含めた使い方の例です。AI Controller側に処理を書いています。
配列のGetで2を指定していますが、この数値は
AIPerceptionコンポーネントのSenses Configから由来しています。
##AISense_Predictionの使い所
使い所としてはシューターゲームにあるような障害物に隠れたプレイヤーを炙り出すためのグレネード投擲位置を求める時や逃げ回るプレイヤーを追い詰めるための爆発物設置とかにも使えると思います。
#AISense_Damage
続いてご紹介するのはダメージ情報を知覚するためのAISense_Damageです。
このSenseに対し刺激情報を与えるためにはReport Damage Eventを使用します。
Report Damage Eventで与えられた刺激情報を受け取る方法は、他のSenseと同じです。
StrengthではReport Damage Eventにて指定したAmountが取得出来ます。
Stimulus LocationはEvent Location。Receiver 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にアタッチした時の違いを見ていただければと思います。