当サイトを閲覧いただきありがとうございます。
本記事では、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にも情報を渡せる
導入
- Asset StoreからPerceptionモジュールを購入
Window > Package ManagerからインストールGame Creator > Install...のPerception.ExamplesにサンプルシーンとUIプレハブ- インストール先:
Assets/Plugins/GameCreator/Installs/Perception.Examples/
Awareness(認識度メーター)
値
0(未認知)〜 1(完全に認知)。Perceptionコンポーネントが追跡中の各GameObjectごとに保持します。
Stage(段階名)
| Stage | 範囲 |
|---|---|
| None | 0 〜 0.05 |
| Suspicious | 0.05 〜 0.5 |
| Alert | 0.5 〜 0.95 |
| Aware | 0.95 〜 1 |
Tracking(追跡対象の登録)
Perceptionは自動では何も追跡しません。
Track AwarenessInstruction:対象を追跡開始Untrack AwarenessInstruction:追跡終了- 典型:敵Prefabの
On StartTriggerでPlayerをTrackする
Awarenessを上げる
- 各Sensor(Sight/Feel)が自動で増加させる
Increase AwarenessInstructionで手動増加も可能(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 SmellTriggerで検知反応- キャラの
Move ToのFollow 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 EvidenceTrigger:Evidenceを発見したときOn Tamper EvidenceTrigger: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 EvidenceTriggerが発火 - 同じくAwarenessの伝達側には
On Relayed AwarenessTriggerが発火
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 Awareness | Awarenessを加算 | Increment/Maximum Level/Perception/Target |
| Decrease Awareness | Awarenessを減算 | Decrement/Perception/Target |
| Relay Awareness Knowledge | 別Perceptionに知識伝達 | Perception/Target |
Perception > Evidence(3)
| 命令 | 機能 | 主なパラメータ |
|---|---|---|
| Tamper Evidence | Evidenceを「改変済み」にする | Evidence |
| Restore Evidence | Evidenceを元に戻す | Evidence |
| Relay Evidence Knowledge | Evidence知識を別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 Awareness | Awareness値を比較 | Perception/Target/Value |
| In Awareness Stage | 指定Stage群に入っているか | Perception/Target/Stage |
Perception > Evidence(1)
| 条件 | 判定 | 主なパラメータ |
|---|---|---|
| Is Evidence Tampered | Evidenceが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 Level | Awareness値が変化 |
| On Change Awareness Stage | Stageが変化 |
Perception > Awareness(1)
| イベント | 発火タイミング |
|---|---|
| On Relayed Awareness | 他エージェントからAwareness知識を受信 |
Perception > Evidence(3)
| イベント | 発火タイミング |
|---|---|
| On Notice Evidence | Evidenceを新規発見 |
| On Tamper Evidence | EvidenceがTamper/Restoreされた |
| On Relayed Evidence | 他エージェントからEvidence知識を受信 |
Perception > Hear(1)
| イベント | 発火タイミング |
|---|---|
| On Hear | 音を聞いた |
Perception > See(1)
| イベント | 発火タイミング |
|---|---|
| On See | 追跡対象を視認した |
Perception > Smell(1)
| イベント | 発火タイミング |
|---|---|
| On Smell | Scentを嗅いだ |
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が上がり、完全に認知されると戦闘に移行するパターンです。
| 使うもの | 設定 |
|---|---|
| Sensor | Sight |
| 追跡開始 | 敵のOn Startで Track Awareness(Target = Player) |
| Awareness段階 | Suspicious → Alert → Awareで行動を段階的に変化 |
| Behavior連携 | AwarenessのStageをState Machineの遷移条件に使用 |
暗闇で見つかりにくいステルスシステム
暗い場所ではプレイヤーが敵に発見されにくくなるパターンです。
| 使うもの | 設定 |
|---|---|
| Sight | Use LuminanceをON |
| Dim Threshold | この値未満の明るさでは対象が見えない |
| Luminanceコンポーネント | ライト付近のオブジェクトに配置して明るさ値を設定 |
ステルスゲームでのみONにすることが推奨されています。
草むらや迷彩服で発見されにくくする
プレイヤーがしゃがんだり特定アイテムを装備すると視認性が下がるパターンです。
| 使うもの | 設定 |
|---|---|
| コンポーネント | Camouflage(プレイヤーに付ける) |
| Sight Damping | 0〜1の係数。低いほど見つかりにくい |
| 動的切替 | しゃがみ中のみDampingを低く設定(Instructionで切替) |
Sight Dampingが0.25なら、結果的な可視性が25%に減少します。
銃声や足音で敵が気づく
発砲音や走行音で付近の敵のAwarenessを上げるパターンです。
| 使うもの | 設定 |
|---|---|
| Sensor | Hearing(敵に付ける) |
| 音の発生 | Emit Noise 命令(位置、Intensity、Radiusを指定) |
| Din(環境騒音) | 周囲の騒音レベル。IntensityがDin以下の音は聞こえない |
雷雨中にDinを高くすれば走行音が埋もれる表現が可能です。
背後に忍び寄ると第六感で察知する(ボスの反撃)
視界に入っていなくても極近距離で存在を感じ取るパターンです。
| 使うもの | 設定 |
|---|---|
| Sensor | Feel(ボスに付ける) |
| 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 Speed | Awarenessが下がる速度 |
| 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 UI | Canvas上にPrefabを配置 |
| Target | Player(表示対象) |
| フィルタ | 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 公式ドキュメント
- Game Creator 2 — Unity Asset Store
- Perception 2 | Game Creator 2 — Unity Asset Store
まとめ
本記事では、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 完全ガイド(13/16)



