AI に対して感覚データを提供する AI フレームワークには、実行するロジックを決定できる Behavior Tree や、環境に関する情報の取得が可能な Environmental Query System (EQS) がありますが、これらに加えて AI Perception システム と呼ばれるツールも使用できます。このシステムを使用すると、AI が何かによってダメージを受けた場合、または AI が何かを見た場合などに、ポーンが、ノイズが発生している場所など環境からデータを受信することができます。これは、反応リスナーとして機能し、登録された刺激元を収集する AI Perception コンポーネント によって実現できます。
刺激元が登録されると、 On Perception Updated イベント (またはターゲット選択で On Target Perception Updated イベント) が呼び出され、このイベントを使用して新しいブループリント スクリプトを起動したり、Behavior Tree のブランチの検証に使用する変数を更新したりできます。
AI Perception コンポーネント
AI Perception コンポーネント は [Components] ウィンドウからポーンの AIController ブループリントに追加可能な コンポーネント の一種です。このコンポーネントは、「リッスン対象の感覚」、「それら感覚に使用するパラメータ」、「感覚検出時の反応方法」を定義する際に使用します。また、いくつかの異なる関数を使用して、「何が感知されたのか」、「どのアクタが感知されたのか」について情報を取得したり、特定の種類の感覚を無効または有効にすることもできます。
AI Perception コンポーネント を追加するには、ブループリントの [+ (コンポーネントを追加)] ボタンをクリックして [AIPerception] を選択します。

AI Perception コンポーネント が追加されたら、[Details (詳細)] パネル内でそのプロパティにアクセスできます。
AI Perception プロパティ
AI Perception コンポーネント の 詳細 パネルで利用可能な共通のプロパティに加えて、知覚する 感覚 のタイプを [AI Perception] および [Senses Config] セクションで追加することができます。感覚 の種類に応じて、様々なプロパティが利用可能です。それにより、 感覚 がどのように知覚されるかを調整することができます。

Dominant Sense プロパティを使用すると、検知されたアクタの位置を決定するときに他の感覚よりも優先度が高い 感覚 の割り当てが可能です。これは、[Senses Config] セクションで設定したいずれかの感覚に設定するか、 「None」 に設定します。
AI Damage
AI を Event Any Damage、Event Point Damage、Event Radial Damage などのダメージ イベントに反応させたい場合は、 [AI Damage Sense Config] を使用します。 Implementation プロパティ (デフォルトはエンジン クラス AISense_Damage となっています) を使用してダメージ イベントの処理方法を決定できますが、C++ コードを使用して独自のダメージ クラスも作成できます。

プロパティ | 説明 |
---|---|
Implementation | これらのエントリに使用する AI 感覚クラス (デフォルトは AISense_Damage)。 |
Debug Color | AI デバッグ ツールを使用しているとき、デバッグ ラインを描画する色。 |
Max Age | この感覚によって生成された刺激が消えるまでの時間を決定します (「0」の場合は消えません)。 |
Starts Enabled | 与えられた感覚が有効状態で開始するのか、手動で有効/無効にする必要があるのかを決定します。 |
AI Hearing
AI Hearing 感覚は、 Report Noise Event によって生成された音の検出に使用します。Report Noise Event は、例えば、放射物が何かに当たった時に AI Hearing 感覚に登録できる音を生成します。

プロパティ | 説明 |
---|---|
Implementation | このエントリに使用する AI 感覚クラス (デフォルトは AISense_Hearing) 。 |
Hearing Range | AI Perception システムがこの感覚を知覚できる距離です。 |
Lo SHearing Range | これは、 Hearing Range のデバッガで異なる半径を表示するために使用します。 |
Detection by Affiliation | 敵、中立、味方 がこの感覚をトリガーできるかどうかを決定します。 |
Debug Color | AI デバッグ ツールを使用しているとき、デバッグ ラインを描画する色です。 |
Max Age | この感覚によって生成された刺激が消えるまでの時間を決定します (「0」の場合は消えません)。 |
Starts Enabled | 与えられた感覚が有効状態で開始するのか、手動で有効/無効にする必要があるのかを決定します。 |
AI Prediction
これは、PredictedActor の予測位置を PredictionTime の秒数で Perception システムから要求します。

プロパティ | 説明 |
---|---|
Debug Color | AI デバッグ ツールを使用しているとき、デバッグ ラインを描画する色。 |
Max Age | この感覚によって生成された刺激が消えるまでの時間を決定します (「0」の場合は消えません)。 |
Starts Enabled | 与えられた感覚が有効状態で開始するのか、手動で有効/無効にする必要があるのかを決定します。 |
AI Sight
[AI Sight] の設定では、パラメータを定義することができます。それにより、AI キャラクターがレベルでオブジェクトを「視認」することができるようになります。アクタが Sight Radius に入ると、AI Perception システムは更新を知らせ、見たアクタを認識します (例えば、プレイヤーが Sight Radius に入ると、視覚を持つ AI はそのプレイヤーを認識します) 。

プロパティ | 説明 |
---|---|
Implementation | このエントリに使用する AI 感覚クラス (デフォルトは AISense_Sight です) 。 |
Sight Radius | この感覚が知覚し始めることができる最大の距離です。 |
Lose Sight Radius | ターゲットが視覚で認識されなくなる最大距離です。 |
Peripheral Vision Half Angle Degrees | AI がどの程度遠くまで見えるのかを示します。値は、範囲全体ではなく、前方ベクトルに対して測定された角度を表します。 実行時に値を変更するには、ブループリントで SetPeripheralVisionAngle を使用します。 |
Detection by Affiliation | 敵、 中立、 味方 がこの感覚をトリガーできるかどうかを決定します。 このプロパティは、チーム用の視界を設定するために使用できます。現在、 Affiliation は C++ でのみ定義できます。ブループリントの場合、 [Detect Neutrals] オプションを使用してすべてのアクタを検出してから、 タグ を使用して アクタ タイプを除外することができます。 |
Auto Success Range from Last Seen Location | ゼロより大きい場合、AI は、ここで指定した範囲内にある限り、すでに視覚したことのあるターゲットを常に認識することができます。 |
Point of View Backward Offset | 視点は、円錐計算のために距離を後退します。近距離のクリッピングと組み合わせて、これはすぐ近くの認識と周辺視野として作用します。 |
Near Clipping Radius | クリッピング距離に近く、視点の後方オフセットで使用されます。これはすぐ近くの認識と周辺視野として作用します。 |
Debug Color | AI デバッグ ツールを使用しているとき、デバッグ ラインを描画する色。 |
Max Age | この感覚によって生成された刺激が消えるまでの時間を決定します (「0」の場合は消えません)。 |
Starts Enabled | 与えられた感覚が有効状態で開始するのか、手動で有効/無効にする必要があるのかを決定します。 |
AI Team
これは、同じチームの誰かが近くにいることを Perception コンポーネントの所有者に通知します (半径は、イベントを送信するゲームプレイコードによって送信されます)。

プロパティ | 説明 |
---|---|
Debug Color | AI デバッグ ツールを使用しているとき、デバッグ ラインを描画する色。 |
Max Age | この感覚によって生成された刺激が消えるまでの時間を決定します (「0」の場合は消えません)。 |
Starts Enabled | 与えられた感覚が有効状態で開始するのか、手動で有効/無効にする必要があるのかを決定します。 |
AI Touch
AI Touch を設定すると、AI が何かにぶつかったとき、または何かが AI にぶつかったときを検出することができます。例えば、ステルス ベースのゲームでは、プレイヤーを敵の AI に触れさせずに後をつけさせたい場合があります。この感覚を使用すると、プレイヤーがいつ AI に触れるかを決定し、さまざまなロジックで応答することができます。

プロパティ | 説明 |
---|---|
Debug Color | AI デバッグ ツールを使用しているとき、デバッグ ラインを描画する色。 |
Max Age | この感覚によって生成された刺激が消えるまでの時間を決定します (「0」の場合は消えません)。 |
Starts Enabled | 与えられた感覚が有効状態で開始するのか、手動で有効/無効にする必要があるのかを決定します。 |
Perception イベント
[Events] セクションでは、AI Perception システムがアップデートを受信したとき、または AI Perception コンポーネントがアクティブ化または非アクティブ化されたときに何が起こるかを定義できます。

プロパティ | 説明 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
On Perception Updated | ![]() このイベントは、Perception System が更新を受信したときに発生し、更新を通知したアクタの配列を返します。 |
||||||||||||||||
On Target Perception Info Updated | ![]() 特定のターゲットの認識情報が更新されたことを、すべてのバインドされたオブジェクトに通知します。通知は、受信した刺激に対して、または刺激の構成に応じて状態が変化したときにブロードキャストされます。 |
||||||||||||||||
On Target Perception Updated | ![]() このイベントは、Perception System が更新を受信したときに発生し、更新を通知したアクタを返します。また、追加情報を分割して取得できる AI Stimulus 構造体も返します。 ![]()
|
||||||||||||||||
On Component Activated | AI Perception がアクティブ化されたときに発生するイベントです。 | ||||||||||||||||
On Component Deactivated | AI Perception コンポーネントが非アクティブ化されたときに発生するイベントです。 |
Perception 関数を呼び出す
以下の関数は、Perception システムから情報を取得したり Perception システムに影響を与えたりするためにブループリントを通して呼び出すことができます。
関数 | 説明 |
---|---|
Get Actors Perception | 対象のアクタについて検知されたものをすべて取得し、検知されたアクタのデータ構造を返します。 |
Get Currently Perceived Actors | 対象の感覚で知覚されているすべてのアクタを返します。感覚が指定されていない場合、現在何らかの方法で知覚されているすべてのアクタが返されます。 |
Get Known Perceived Actors | 対象の感覚で知覚された (そしてまだその感覚が消えていない) アクタを返します。感覚が指定されていない場合は、知覚されたすべてのアクタが返されます。 |
Get Perceived Hostile Actors | 期限切れになっていない敵対的なアクタ、正常に検出された刺激を感知した敵対的なアクタのリストを返します。ブループリントでメソッドをオーバーライドして、必要なアクタのリストを返すこともできます。 |
Request Stimuli Listener Update | 指定したターゲット刺激リスナーのプロパティを AI Perception システムに手動で更新させます。 |
Set Sense Enabled | 指定された 感覚クラス を有効または無効にします。 これは、特定の感覚がターゲット コンポーネント インスタンスに対してすでに設定されている場合にのみ機能します。 |
Stimuli Source
AI Perception Stimuli Source コンポーネントで、所有しているアクタに、Perception システム内の指定された感覚の刺激元として自動的に登録することができます。主な用途としては、視覚に基づいて刺激を知覚するように設定された AI Perception コンポーネントを持つ AI キャラクターが挙げられます。その後、アクタ (アイテム ピックアップ アクタなど) で Stimuli Source コンポーネントを使用し、それを視覚の刺激として登録することができます (これにより AI がレベル内のアクタを「見る」ことができます) 。
AI Perception Stimuli Source を追加するには、ブループリントの [+ (コンポーネントを追加)] ボタンをクリックして [AIPerception Stimuli Source] を選択します。

AI Perception Stimuli Source コンポーネントが追加されたら、 [Details (詳細)] パネル内でそのプロパティにアクセスできます。
Stimuli のプロパティ
AI Perception Stimuli Source コンポーネントの [Details (詳細)] パネルでは、AI Perception に対する次の 2 つのオプションがあります。

プロパティ | 説明 |
---|---|
Auto Register as Source | 所有しているアクタに関して指定された感覚の刺激を自動的に登録するかどうかを決めます。 |
Register as Source for Senses | 刺激元として登録する感覚の配列です。 [+] 記号をクリックして刺激元を追加し、次にドロップダウンをクリックして目的の感覚を割り当てます。 ![]() |
AISense クラスに基づいたカスタムの感覚を割り当てることもできます。
Stimuli 関数を呼び出す
以下の関数は、AI Perception Stimuli Source コンポーネントのブループリントから呼び出すことができます。
関数 | 説明 |
---|---|
Register for Sense | 所有しているアクタを指定された感覚クラスの刺激元として登録します。 |
Register with Perception System | Register as Source for Senses プロパティと Register for Sense 関数の呼び出しを通じて指定された感覚で、所有しているアクタを刺激元として登録します。 Auto Register as Source プロパティが有効な場合は、この関数を呼び出す必要はありません。 |
Unregister from Perception System | 所有しているアクタの感覚の刺激元としての登録を解除します。 |
Unregister from Sense | 所有しているアクタに関して指定された感覚の刺激を登録解除します。 |
AI Perception デバッグ
ゲームの実行中に「' (アポストロフィ)」キーを押し、次にテンキーの「4」を押して知覚情報を表示することで、AI デバッグ ツールを使用して AI Perception をデバッグできます。

詳細については、AI デバッグ ツールページおよび「Perception」のセクションを参照してください。