Unity

【Unity】Game Creator 2 Perception(知覚・ステルスシステム)完全解説

【Unity】Game Creator 2 Perception(知覚・ステルスシステム)完全解説

当サイトを閲覧いただきありがとうございます。

本記事では、Game Creator 2のモジュールのひとつである「Perception」(知覚・ステルスシステム)について詳しく解説します。

PerceptionはAIエージェントに「感覚器」を与えるモジュールです。Sight(視覚)/Hearing(聴覚)/Smell(嗅覚)/Feel(第六感)の4センサと、Awarenessメーター、Evidence(痕跡)による状況認知までを統合的に扱えます。

公式ドキュメント:Game Creator 2 Documentation


Perceptionとは

  • Perceptionコンポーネントを任意GameObjectにアタッチ → 4つのSensorを自由に組み合わせて検知
  • 全センサの結果はAwareness(0〜1の値)にまとめられ、AI判断を簡潔化
  • Evidenceで「世界が変化した事実」(開いたドア等)を検知可能
  • Relay(知識の伝達)で仲間のPerceptionにも情報を渡せる

導入

  1. Asset StoreからPerceptionモジュールを購入
  2. Window > Package Manager からインストール
  3. Game Creator > Install...Perception.Examples にサンプルシーンとUIプレハブ
  4. インストール先:Assets/Plugins/GameCreator/Installs/Perception.Examples/

Awareness(認識度メーター)

0(未認知)〜 1(完全に認知)。Perceptionコンポーネントが追跡中の各GameObjectごとに保持します。

Stage(段階名)

Stage範囲
None0 〜 0.05
Suspicious0.05 〜 0.5
Alert0.5 〜 0.95
Aware0.95 〜 1

Tracking(追跡対象の登録)

Perceptionは自動では何も追跡しません

  • Track Awareness Instruction:対象を追跡開始
  • Untrack Awareness Instruction:追跡終了
  • 典型:敵Prefabの On Start TriggerでPlayerをTrackする

Awarenessを上げる

  • 各Sensor(Sight/Feel)が自動で増加させる
  • Increase Awareness Instructionで手動増加も可能(Maximum Levelを指定して「Alert以上には上げない」等の制限が可能)

忘却(Forgetting)

  • Forget Speed:刺激が途絶えた後にAwarenessが下がる速度
  • Forget Delay:刺激が止まってから減衰が始まるまでの猶予(秒)
  • Aware段階に達した後は例外
    • Can Forget = false ならAwareのまま忘れない
    • Can Forget = true ならForget Delayの代わりにDurationフィールドで忘却開始時間を長めに設定可(戦闘モードを維持するのに有用)

Sight(視覚)

Settings

  • Update:Every Frame/Interval/Manual
  • Detection Speed:視認時のAwareness増加速度の上限(光量や距離で下がる)
  • Layer Mask:遮蔽物として扱う物理レイヤ(raycast用)
  • Optics:視点となるボーン(デフォルトはヒップで、隠れやすい仕様)

Luminance連動

Use Luminance をONにすると光量が検知に影響します(Dim Threshold 未満は不可視、Lit Threshold 以上で最大速度)。

  • Night Vision風にするにはDim=0、Lit=0.1など低めに設定

Primary/Peripheral Cone

Primary(主視野):角度・半径・高さで定義した円錐範囲。100%の検知速度です。

Peripheral(周辺視野):Primaryを拡張する範囲。距離に応じて検知速度が減衰します。

PeripheralのRadius値はPrimaryに加算されます(Primary=5・Peripheral=2 → 実際7まで)。


Hearing(聴覚)

Settings

  • Use Obstruction:Obstructionコンポーネントによる遮音を考慮するか(性能コストあり)
  • Min / Max Intensity:検知できる音量範囲(上限超/下限以下は無視)
  • Decay Time:音が耳に残る秒数(残響感)

Emit Noise

Emit Noise Instructionで任意地点に音を発生させます:

  • Position / Radius:音の原点・到達距離
  • Tag:音の種類を識別する文字列
  • Intensity:音量

反応

On Hear Triggerで反応します。Tagで「笛 → Suspicious、銃声 → Aware」のような出し分けが可能です(自動でAwarenessが上がるわけではない点に注意)。

Din(アンビエントノイズ)

音がDinより小さいと聞こえません。雷鳴中の囁きがかき消される、といった表現が作れます。

  • Global Din:シーン全体の既定音量
  • Local Din:Dinコンポーネントで球状の局所ノイズを置く(Radius/Roll off/Level/Audio Sourceの同期)

Obstruction(遮音・遮視)

  • Collider必須コンポーネント
  • Noise Damping / Sight Damping:通過時の減衰係数(0=完全遮断、1=無遮断)
  • 透明ガラスなど「見えるが音は通らない」表現にはレイヤ設定で切り分け

Smell(嗅覚)

Settings

  • Update:Every Frame/Interval/Manual
  • Radius:匂いを嗅ぎ取れる最大距離
  • Use Obstruction:Obstructionで匂いを遮るか
  • Min Intensity:嗅ぎ取れる下限強度

Emit Scent

Emit Scent で匂いを発散させます:

  • Source:匂いの発生源GameObject
  • Tag:識別用文字列
  • Dispel Duration:消散までの秒数
  • Diffusion Rate:拡散速度
  • Intensity:初期強度(時間で減衰)

Scent Trail(匂いの足跡)

同じTagで複数発散すると時系列で連結された足跡になり、AIが順に辿れます(breadcrumb的)。

反応と追跡

  • On Smell Triggerで検知反応
  • キャラの Move ToFollow Scentオプションと組合せるとトレイル追跡動作を再現可能

Dissipation(消散係数)

Set Dissipation でScentの消散時間をグローバルに変更可能です。値0は影響なし、値1で消散時間が倍になります。


Feel(第六感)

Settings

  • Update:Every Frame/Interval/Manual
  • Detection Speed:Awareness上昇速度
  • Radius:検知半径
  • Layer Mask:障害物判定

自動Awareness

対象がRadius内に入るとAwarenessが自動で増加します(Sight等と違い、光量・視線角度は考慮しない)。

用途

  • 背後の気配を感じる「第六感」演出
  • Radiusを広げInterval更新にすればソナー的表現も可能

Luminance(輝度)とCamouflage(偽装)

Luminanceコンポーネント

  • Lightコンポーネントに併設し、「このLightはSight検知に影響する」ことを示す
  • Multiplier:Light Intensityに掛ける係数(Dimな部屋で絵作り優先でIntensity=2、実効Luminance=1などに調整)
  • Layer Mask:どのオブジェクトがLuminanceを遮るか(Colliderベース)
  • 透明ガラスで光を通したい場合は、そのガラスのColliderをLayer Maskから外す

Environment Luminance

Change Global Luminance Instructionでシーン全体の最低光量を変更(環境光の模擬)できます。

Camouflageコンポーネント

  • Sight Damping(0〜1):自分の可視性を乗算で減らす
  • 動的プロパティで変化可:
    • Local Variableと連動した透明化スキル
    • Statと連動したステルス値の向上
    • 停止中/移動中で可視性を切替

Evidence(痕跡)

用途

「開いたドア」「倒された椅子」のような世界の変化をAIに気付かせる仕組みです。

Evidenceコンポーネント

  • Tag:Evidenceの種類識別子
  • On Sight:視覚で検知可能にする
  • Emit Noise:改変時に音を発する(TagをNoise Tagとして再利用)
  • Emit Scent:改変時に匂いを発する(TagをScent Tagとして再利用)

Tampering(改変)

Tamper Evidence で「改変済み」にします。Restore Evidence で元に戻します。

同じTagの複数Evidence

1つを検知すれば同Tagの全Evidenceが検知済み扱いになります。「3つのドアが開いていても、最初の1つで1回だけ反応」などに有用です。

検知

  • On Notice Evidence Trigger:Evidenceを発見したとき
  • On Tamper Evidence Trigger:EvidenceがTamper/Restoreされたとき(2.1.3で追加)

Debug

Playモード中、EvidenceコンポーネントにIs Tamperedフィールドが表示され、現在の改変状態を確認できます。


Relay(知識の共有)

Relay Awareness Knowledge

Instruction Relay Awareness Knowledge:Perception AのAwareness情報をPerception Bに丸ごとコピーします(Bの既存情報は失われない)。

「警備兵AがPlayerを見つけたら、近隣の警備兵Bにも叫んで知らせる」のような挙動が簡潔に書けます。

Relay Evidence Knowledge

Instruction Relay Evidence Knowledge:Evidence発見情報を別Perceptionに伝達します。

  • 受け手側で On Relayed Evidence Triggerが発火
  • 同じくAwarenessの伝達側には On Relayed Awareness Triggerが発火

User Interface

同梱プレハブをドラッグ&ドロップで動くデモUIを提供しています。

  • Awareness UI:特定GameObject(通常Player)に対する周辺エージェントのAwarenessを集約表示。Tagフィルタで敵のみ表示可
  • Luminance UI:対象の光量(Lit/Dim)をバー表示
  • Noise UI:聞こえている最大ノイズとDinを表示
  • Smell UI:嗅ぎ取っている最強Scentをバー表示

各UIはUpdate: Intervalに切替えれば性能改善できます。


Visual Scriptingリファレンス

Instructions(13)

Perception(2)

命令機能主なパラメータ
Track Awareness対象の追跡開始Perception/Target
Untrack Awareness追跡解除Perception/Target

Perception > Awareness(3)

命令機能主なパラメータ
Increase AwarenessAwarenessを加算Increment/Maximum Level/Perception/Target
Decrease AwarenessAwarenessを減算Decrement/Perception/Target
Relay Awareness Knowledge別Perceptionに知識伝達Perception/Target

Perception > Evidence(3)

命令機能主なパラメータ
Tamper EvidenceEvidenceを「改変済み」にするEvidence
Restore EvidenceEvidenceを元に戻すEvidence
Relay Evidence KnowledgeEvidence知識を別Perceptionに伝達Source/Target

Perception > Hear(2)

命令機能主なパラメータ
Emit Noise音を発生Position/Radius/Tag/Intensity
Global DinグローバルDin値を変更Din/Transition

Perception > See(1)

命令機能主なパラメータ
Change Global Luminanceグローバル輝度を変更Luminance/Transition

Perception > Smell(2)

命令機能主なパラメータ
Emit Scent匂いを発散Source/Dispel Duration/Diffusion Rate/Tag/Intensity
Set Dissipation消散係数を変更Dissipation/Transition

Conditions(7)

Perception(2)

条件判定主なパラメータ
Compare AwarenessAwareness値を比較Perception/Target/Value
In Awareness Stage指定Stage群に入っているかPerception/Target/Stage

Perception > Evidence(1)

条件判定主なパラメータ
Is Evidence TamperedEvidenceがTamper済みかEvidence

Perception > Hear(2)

条件判定主なパラメータ
Can Hear Noise新しいNoiseを聞き取れるかPerception/Position/Radius/Intensity
Hears Noise Tag指定TagのNoiseを聞いているかPerception/Noise Tag/Value

Perception > See(2)

条件判定主なパラメータ
Can See指定GameObjectを視認できるかPerception/Target
Compare Luminance At指定対象のLuminance値を比較Target/Value

Perception > Smell(2)

条件判定主なパラメータ
Can Smell Scent新しいScentを嗅げるかPerception/Position/Radius/Intensity
Smells Scent Tag指定TagのScentを嗅いでいるかPerception/Scent Tag/Value

Events(8)

Perception(2)

イベント発火タイミング
On Change Awareness LevelAwareness値が変化
On Change Awareness StageStageが変化

Perception > Awareness(1)

イベント発火タイミング
On Relayed Awareness他エージェントからAwareness知識を受信

Perception > Evidence(3)

イベント発火タイミング
On Notice EvidenceEvidenceを新規発見
On Tamper EvidenceEvidenceがTamper/Restoreされた
On Relayed Evidence他エージェントからEvidence知識を受信

Perception > Hear(1)

イベント発火タイミング
On Hear音を聞いた

Perception > See(1)

イベント発火タイミング
On See追跡対象を視認した

Perception > Smell(1)

イベント発火タイミング
On SmellScentを嗅いだ

Tipsと注意点

  • センサのUpdate:Every Frameは精度高いが重い。大量エージェントにはInterval/Manualと Processor Update の組合せを検討
  • Awarenessの設計は段階で考える:Suspicious/Alert/Awareの3段階で挙動を切替えるのが定石(State Machine/Behavior Tree側でStage条件に使う)
  • Forgettingの秒数調整:Aware直後に一瞬で忘れると不自然。戦闘中なら10〜30秒程度のDurationが目安
  • Obstructionはコスト高:オープンワールドならUse ObstructionをOFFに。屋内ステルスではON
  • HearingとDinの単位感覚:すべて0〜1で揃える。音量の絶対値ではなく「プレイヤーが静か/普通/騒がしい」の相対関係で設計
  • ScentとSmellのDissipation:風・換気の表現に使える。開けた場所で値を上げ、洞窟内で0にするなど
  • LuminanceはColliderベース:メッシュにColliderを付け忘れると光漏れで意図しない視認性が出る
  • EvidenceのTag重複は便利だが、デザイン意図と合致させる。同Tagは「まとめて1回検知」の挙動になる
  • Relayは知識の差分伝搬:既存知識は消えない。全員のAwarenessを統一したい場合は、受け手側でもIncrease Awarenessを発火して補正
  • Night VisionはDim Thresholdを極小に設定するだけで簡単に表現可能。ゴーグルON/OFFのInstructionで切替

実践的な使い方 ― やりたいこと別の構成ガイド

「こういう知覚・ステルス表現を実現したい」場合にどの機能を使うか、パターン別にまとめます。

敵の視界コーンに入ると発見される

プレイヤーが敵の前方視界に入るとAwarenessが上がり、完全に認知されると戦闘に移行するパターンです。

使うもの設定
SensorSight
追跡開始敵のOn Startで Track Awareness(Target = Player)
Awareness段階Suspicious → Alert → Awareで行動を段階的に変化
Behavior連携AwarenessのStageをState Machineの遷移条件に使用

暗闇で見つかりにくいステルスシステム

暗い場所ではプレイヤーが敵に発見されにくくなるパターンです。

使うもの設定
SightUse LuminanceをON
Dim Thresholdこの値未満の明るさでは対象が見えない
Luminanceコンポーネントライト付近のオブジェクトに配置して明るさ値を設定

ステルスゲームでのみONにすることが推奨されています。

草むらや迷彩服で発見されにくくする

プレイヤーがしゃがんだり特定アイテムを装備すると視認性が下がるパターンです。

使うもの設定
コンポーネントCamouflage(プレイヤーに付ける)
Sight Damping0〜1の係数。低いほど見つかりにくい
動的切替しゃがみ中のみDampingを低く設定(Instructionで切替)

Sight Dampingが0.25なら、結果的な可視性が25%に減少します。

銃声や足音で敵が気づく

発砲音や走行音で付近の敵のAwarenessを上げるパターンです。

使うもの設定
SensorHearing(敵に付ける)
音の発生Emit Noise 命令(位置、Intensity、Radiusを指定)
Din(環境騒音)周囲の騒音レベル。IntensityがDin以下の音は聞こえない

雷雨中にDinを高くすれば走行音が埋もれる表現が可能です。

背後に忍び寄ると第六感で察知する(ボスの反撃)

視界に入っていなくても極近距離で存在を感じ取るパターンです。

使うもの設定
SensorFeel(ボスに付ける)
Radius近距離(2〜3m程度)
Detection Speed高めに設定(即座に察知)

Radiusを広げればソナー的表現も可能です。

プレイヤーが開けたドアに衛兵が気づく(Evidence)

プレイヤーの残した痕跡(開いたドア、壊れた窓)をAIが発見して警戒するパターンです。

使うもの設定
コンポーネントEvidence(ドアのGameObjectに付ける)
Tag証拠の種別を識別する文字列(例: open-door
検知敵のSightがこのオブジェクトを視認した際にEvidenceを発見として処理

同じTagの複数Evidenceは、1つ発見すれば全部検知済み扱いになります。

仲間同士で情報を共有する(Relay)

1体の敵がプレイヤーを発見したら、付近の仲間にも知らせて全員が警戒状態になるパターンです。

使うもの設定
機能Relay(知識の伝達)
使い方発見した敵が Relay Awareness 命令で周囲のPerceptionに情報を渡す

Relayは差分伝搬です。全員のAwarenessを完全同期したい場合は、受け手でもIncrease Awarenessを補助的に実行します。

発見後に視界を外れても一定時間は追跡を続ける(忘却制御)

敵がプレイヤーをAwareまで認知した後、すぐには忘れず一定時間追跡モードを維持するパターンです。

使うもの設定
Forget SpeedAwarenessが下がる速度
Forget Delay刺激が途絶えてから減衰が始まるまでの猶予秒数
Aware後の特別設定Can Forget = true + Durationを長めに設定(例: 20〜30秒)

コインや石を投げて敵の注意を逸らす(囮)

プレイヤーが投擲したオブジェクトの着弾点に敵を誘導するパターンです。

使うもの設定
音の発生着弾点で Emit Noise(Tag = distract、Intensity = 低め)
敵の反応On Hear イベントで Increase Awareness(Maximum LevelをSuspiciousに制限)
移動Awarenessが上がったらBehavior側で Move To(音源位置)を実行

囮音のIntensityはDinより高く、かつ戦闘レベルには達しない値(0.3〜0.5程度)に設定するのがポイントです。

血の匂いで追跡犬が追いかける(Smell応用)

負傷したキャラが移動するたびに匂いの痕跡を残し、追跡犬がそれを辿るパターンです。

使うもの設定
匂いの発散負傷キャラに Emit Scent(Tag = blood、Diffusion Rateで広がり速度を設定)
追跡犬PerceptionにSmellセンサを付与
反応On Smell イベントで Move To(Scent源の方向に移動)

Dissipationを低くすると痕跡が長く残り追跡が容易になります。

画面上に「発見されつつある度合い」を表示する(Awareness UI)

プレイヤーが敵にどの程度認知されているかをHUDに表示するパターンです。

使うもの設定
Awareness UICanvas上にPrefabを配置
TargetPlayer(表示対象)
フィルタTagでどの敵グループのAwarenessを表示するか制限

ステルスゲームの「発見メーター」として定番のUIパターンです。


関連する他モジュール

  • Behavior:Perceptionで得たAwareness/StageをState/Tree/GOAP/Utilityの条件に
  • Characters:Feel・SightのOpticsボーンに紐付け、RelayはNPC群で連携
  • Stats:Awareness変化をHP/MPの演出に結びつける/Statによる能力付与(ステルス値)
  • Quests:Evidence発見でTask完了
  • Dialogue:Aware到達で会話開始/被発見バークを挿入
  • Shooter / Melee:Awareness段階で戦闘行動の切替(巡回→警戒→戦闘)

公式リンク


まとめ

本記事では、Game Creator 2の「Perception」モジュールについて解説しました。

Sight・Hearing・Smell・Feelの4センサをAwarenessメーターに統合し、Luminance(光量)・Camouflage(偽装)・Din(環境騒音)・Obstruction(遮蔽)で検知難度を細かく調整できます。Evidence(痕跡)とRelay(知識共有)により、ステルスゲームに必要な「世界の変化に気づくAI」「仲間に情報を伝達するAI」が構築可能です。

Visual ScriptingではInstruction 13種・Condition 7種・Event 8種が用意されており、Behaviorモジュールとの連携でステルスゲームの敵AIを完全にノーコードで実現できます。

全記事一覧 ― Game Creator 2 完全ガイド シリーズ総合案内senkohome.com/gamecreator2-series-index/

それでは次の記事も閲覧いただけると幸いです。