Unity

【Unity】Game Creator 2 基本的なゲームの作り方 完全解説

【Unity】Game Creator 2 基本的なゲームの作り方 完全解説

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

本記事では、Game Creator 2のコア機能と他のツールを組み合わせて「よくあるゲーム機能をどう実現するか」を解説します。

「〇〇をやりたいけど何を使えばいい?」という疑問に答えることを目的とした、実践的なゲーム制作ガイドです。

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


GC2 でゲームを作る際の基本的な考え方

「全部 GC2 で作る」必要はない

GC2 はゲーム制作のすべてを担うエンジンではなく、ゲームプレイのロジック層を高速に組むためのツールキットです。

  • GC2 が得意なこと:キャラクター制御、カメラワーク、イベント駆動のゲームロジック、セーブ&ロード、オーディオ管理
  • GC2 以外に任せること:UIレイアウト、パーティクル、シェーダー、物理マテリアル、地形、NavMeshのベイクなど
  • 自作スクリプトの出番:数値計算が複雑なもの(独自の弾道計算など)、リアルタイム通信、プロシージャル生成

「イベント → 条件判定 → 命令実行」がすべての基本

GC2 のゲームロジックは、3つの要素の組み合わせだけで成り立ちます。

Trigger(何が起きたら)→ Conditions(条件を満たしていれば)→ Actions(何をする)

どんなに複雑に見えるゲームでも、個々の挙動は「ドアの前でボタンを押した → 鍵を持っていれば → ドアを開ける」のような小さなイベント駆動の積み重ねです。

「状態」は Variables で管理する

ゲームの進行状態(フラグ、スコア、残弾数、現在のフェーズ等)はすべて Variables に保存します。Variables を中心に設計すれば:

  • どこからでも参照できる(Global Variables)
  • セーブ&ロードに自動対応する
  • Conditions で簡単に分岐できる

小さく作って、つなげる

GC2 の Actions は「1つのことをする命令の列」です。複雑なロジックを1つの巨大な Actions に詰め込むのではなく:

  1. 小さな Actions を複数作る(ドアを開ける、アイテムを渡す、カメラを切り替える…)
  2. Trigger でそれらを呼び出す
  3. Conditions で分岐する

この粒度で作ると、再利用・デバッグ・修正がすべて容易になります。


GC2 の設計思想を理解する3つのキーワード

High-Level Scripting

GC2 の命令は「人間が考える粒度」で設計されています。

やりたいこと通常のUnityスクリプトGC2 の命令
キャラを地点Aに歩かせるNavMeshAgent.SetDestination + コルーチンで到着待ち + アニメーター制御Move To(1命令)
カメラを三人称に切り替えるCinemachineのVCam優先度切替 or 手書きChange To Shot(1命令)
BGMをフェードアウトして別の曲に切り替えるAudioSource×2のクロスフェードスクリプトFade All MusicPlay Music(2命令)

低レベルの計算は GC2 が内部で処理するので、「何をしたいか」だけを記述すれば動きます

Property による動的値解決

多くの命令のパラメータは Property(動的な値供給元)として定義されています。例えば「移動先」を指定する際:

  • 固定座標(Vector3直打ち)
  • Playerの現在位置
  • 特定のMarkerの位置
  • 変数に保存された座標
  • Main Cameraの位置

…をドロップダウンで切り替えられます。「固定値」と「実行時に決まる値」をコードを書かずに切り替えられるのが、GC2で柔軟な設計ができる理由です。

Signals による疎結合

直接参照でも動きますが、Signal(名前付きメッセージのブロードキャスト)を使うと:

  • 送信側と受信側が互いの存在を知らなくてよい
  • プレハブ化・シーン分割に強い
  • 後から受信者を増やせる(boss-defeated シグナルを受けて扉が開く、BGMが変わる、UIが更新される…)

大規模になるほど Signal ベースの設計が効いてきます。


「やりたいこと」→「使う機能」逆引きマップ

キャラクターの動き

やりたいこと使う機能(コア)補足
プレイヤーをWASDで動かすCharacter(Player Unit → Directional)設定するだけ、命令不要
ポイント&クリック移動Character(Player Unit → Point & Click)DriverをNavMesh Agentに
NPCを巡回させるMove To をMarker連鎖Triggerを On Start + Restart Instructions でループ
NPCをプレイヤーに追従させるStart FollowingMin/Max Distanceを設定可能
追従を止めるStop Following
キャラの移動速度を変えるChange Movement SpeedDuration付きでスムーズ変化
ジャンプJumpMotion UnitでJump Force等を設定
ダッシュ(回避)Dash方向・速度・時間を指定
瞬間移動TeleportLocationを指定
ラグドール化(吹き飛ばし)Start Ragdoll
ラグドールから復帰Recover Ragdoll起き上がりアニメ自動選択
死亡(ラグドール+入力停止)Kill Character自動でインタラクト無効化+ラグドール化
復活Revive Character自動で起き上がり+制御復帰
特定アニメーション(一回再生)Play Gesture完了待ち可
特定アニメーション(ループ)Enter StateLayerで重ね可
プレイヤー入力を無効化Is Controllable をfalseにカットシーン中などに使用
足音を地形ごとに変えるFootsteps + Material Soundsテクスチャ判定で自動切替
2D横スクロール移動Axonometry → Side-Scroll XYRotation側も同設定に
アイソメトリック移動Axonometry → Isometric 8 Directions

カメラ

やりたいこと使う機能(コア)補足
三人称カメラCamera Shot:Third PersonOrbit TargetにPlayer指定
一人称カメラCamera Shot:First PersonHeadに追従
固定カメラ(バイオハザード風)Camera Shot:Fixed複数配置してTriggerで切替
カットシーン中にカメラを移動Camera Shot:Follow + Change To ShotDurationでスムーズ遷移
ロックオンカメラCamera Shot:Lock On対象を指定するだけ
見下ろしカメラ(ディアブロ風)Third Person(Pitch固定高め)Min/Max Pitchを同値に
2D横スクロール風Camera Shot:Follow(Z軸固定)Axonometryと合わせる
カメラのShotを切り替えChange To ShotDuration指定で遷移演出
前のShotに戻すRevert To Previous Shotスタック式に管理される

ゲーム進行・イベント

やりたいこと使う機能(コア)補足
ゲーム開始時に何か実行Event On Startシーンロード完了時に1回発火
プレイヤーが領域に入ったらEvent On Trigger EnterColliderをIs Triggerに
特定タグのオブジェクトが入ったらEvent On Trigger Enter TagTag指定で絞り込み
オブジェクトをクリックしたらEvent On Interact + HotspotインタラクションUI自動表示
一定時間ごとに実行Event On Interval秒数指定
キー入力で実行Event On Input ButtonInput Systemアセット指定
条件付き分岐Conditionsコンポーネント複数Branchで多分岐も可
Actionsの途中で条件チェックCheck Conditionsfalseなら以降をスキップ
フラグ管理Global Name Variables(Boolean)Set Bool / Compare Boolean
スコア管理Global Name Variables(Number)Increment Number で加算
タイマー(制限時間)Local Variable + On Interval で毎秒デクリメント0になったら Emit Signal で通知
カットシーンIs Controllable(false) → Shot切替 → キャラ移動 → Is Controllable(true)
シーン遷移Load SceneTransitions Extensionで演出追加
Signal で通知Emit Signal
Signal を受信して実行Event On Receive SignalID一致で発火

オブジェクトの制御

やりたいこと使う機能(コア)補足
ドアを開ける(回転アニメ)Change RotationDuration + Easingで自然な動き
ドアを開ける(Animator)Set Animator TriggerAnimator Controller側で遷移定義
オブジェクトを出現させるSet Active(true) or Instantiateプレハブから生成も可
オブジェクトを消すSet Active(false) or Destroy一時的ならActive、永久ならDestroy
オブジェクトを移動させるChange PositionDuration付きでエレベーター等
オブジェクトの色を変えるChange Material ColorDurationでフェード可
物理で吹き飛ばすAdd Force 3D / Add Explosion Force 3DRigidbody必須
プレハブを生成InstantiatePosition/RotationをPropertyで動的指定
オブジェクトプーリングPool Prewarm事前生成でInstantiate負荷軽減
コライダーの有効化/無効化Enable Collider / Disable Collider
親子関係を変更Set Parent / Clear Parent
パーティクル再生Unity標準ParticleSystem + Set Active or InstantiateGC2専用命令はないが問題なし

UI(ユーザーインターフェース)

やりたいこと使う機能(コア)補足
テキスト表示(スコア等)Change TextTMP対応
テキストを変数の値で更新Change Text のValueにPropertyでVariable指定リアルタイム更新は On Interval
HPバーSlider + Change SliderStatsモジュールなら自動バインディング
メニューの表示/非表示Canvas Group Alpha + Canvas Group Interactableフェードイン/アウト
ボタンクリックで処理実行ButtonのOnClick → Run Actions
画像を差し替えるChange ImageSpriteを動的指定

音声・演出

やりたいこと使う機能(コア)補足
BGMを再生するPlay Musicループ再生、フェード対応
BGMを切り替えるFade All MusicPlay Musicクロスフェード
効果音を鳴らすPlay Sound Effect空間音対応、自動ピッチ揺らぎ
環境音(雨、風)Play Ambientループ、複数同時再生可
キャラの声を再生Play Speech1キャラ1クリップ同時制限
音量設定(オプション画面)Change Master Volume 等 + Slider UIGlobal Variableに保存可
スローモーションTime ScaleLayer指定でブレンド可能
画面フェードCanvas Group Alpha(黒ImageのCanvas Group)Duration指定で滑らか
ライトの明滅Light Intensity / Light ColorDuration付きでスムーズ変化

セーブ&ロード

やりたいこと使う機能(コア)補足
ゲームを保存するSave Gameスロット番号指定
ゲームを読み込むLoad Game / Load Latest Game
セーブデータを消すDelete Game
セーブの存在確認Has Save At Slot / Has Save
オブジェクトの状態を保存対象にするRemember コンポーネント位置・回転・Active状態等
変数を保存するGlobal Variablesは自動保存対象LocalもRemember付きGameObjectのものは可
カスタムデータを保存するIGameSave インターフェース実装(C#)クラウドセーブ差替も可能
ゲームをリセットReset Game指定シーンに遷移

AI・NPCの挙動(コアのみ)

やりたいこと使う機能(コア)補足
NPCを巡回させるMove To(Marker指定)×複数 + Restart InstructionsOn Start でループ
NPCをその場で待機させるWait Seconds + Enter State(Idleアニメ)
NPCに話しかけられるようにするOn Interact + HotspotDialogueモジュールでリッチ会話
プレイヤーを追いかけるNPCStart Following(TargetにPlayer指定)Min/Max Distanceで距離感調整
敵がプレイヤーを見つけたら攻撃On Trigger Enter(検知エリア)→ 攻撃ActionsPerceptionモジュールでリアルな索敵
ランダムな行動Conditionsで乱数分岐Behaviorモジュールで本格AI
NPCの注視Start Looking At目線を向ける

Behaviorモジュールを入れると:ステートマシン、ビヘイビアツリー、GOAP、Utility AI の4方式が使え、複雑なAIを視覚的に構築できます。

戦闘(コアのみ)

やりたいこと使う機能(コア)補足
HPを管理するGlobal/Local Variable(Number)Statsモジュールでより体系的に
ダメージを与えるSubtract Numbers でHP変数を減算
死亡判定Compare Decimal(HP ≤ 0)→ 死亡Actions
死亡演出Kill Character自動でラグドール化+入力無効
攻撃アニメーションPlay Gesture攻撃モーションのクリップ指定
攻撃判定(近接)On Trigger Enter(武器のCollider)→ ダメージ処理Meleeモジュールで本格化
攻撃判定(遠距離)Instantiate(弾プレハブ)+ Rigidbody + TriggerShooterモジュールで本格化
無敵時間Set InvincibleDuration指定で自動解除
ノックバックDash(後方に短時間)or Add Force 3DDashはアニメ付きで制御しやすい
ターゲット管理Set Target / Cycle Next TargetLock Onカメラと連携

Melee / Shooterモジュールを入れると:コンボシステム、パリィ、Motion Warp、リコイル、弾道計算、照準、武器切替などが専用アセット+UI付きで組めます。


コア機能だけで作るゲームロジックの実践パターン

以下に、GC2コアだけで実装できる33の実践パターンを紹介します。

パターン一覧

#パターン名カテゴリ
4.1鍵付きドアの開閉インタラクション
4.2会話(Dialogueモジュールなし)演出・UI
4.3スコアシステムゲーム進行
4.4移動する足場・エレベーターギミック
4.5タイマー(制限時間)ゲーム進行
4.6チェックポイントとリスポーンゲーム進行
4.7カットシーン演出
4.8Signalによる複数オブジェクトの連動設計パターン
4.9Hotspotを使ったインタラクト可能オブジェクトインタラクション
4.10固定カメラのエリア切替(バイオハザード風)カメラ
4.11NPCの巡回と追跡の切り替えAI
4.12簡易ダメージシステム戦闘
4.13ロックオンカメラと対象切り替えカメラ・戦闘
4.14セーブ・ロード画面セーブ
4.15BGMとエリア環境音の管理音声
4.16スローモーション演出演出
4.17プロップ装着と見た目の切り替えキャラクター
4.18Dashを使った回避アクション戦闘
4.19Physicsを使ったオブジェクト破壊ギミック
4.20Overlapを使った範囲検知戦闘・検知
4.21Nested Accessで対象の変数を動的参照設計パターン
4.22ワープ/ファストトラベル移動
4.23スイッチ&レバーで扉を開くギミック・パズル
4.24敵スポーン(ウェーブ制)戦闘
4.25宝箱(ランダム報酬)インタラクション
4.26押せるブロック(パズル)ギミック・パズル
4.27トラップ(ダメージ床・落石)ギミック
4.28はしご/つたの昇降移動
4.29水中移動(泳ぎ)移動
4.30NPCのスケジュール行動AI
4.31QTE(クイックタイムイベント)演出・入力
4.32コレクティブル(収集要素)ゲーム進行
4.33パーティ/仲間の追従移動・AI

4.1 鍵付きドアの開閉

最も基本的な「条件付きインタラクション」のパターンです。

必要なもの:

  • Door オブジェクト(Trigger + Hotspot付き)
  • Global Variable:has_key(Boolean、初期値false)
  • 鍵オブジェクト(拾うと has_key をtrueにする)

Doorの Trigger設定:

Event: On Interact
→ Conditions:
    Branch 1: [Compare Boolean: has_key == true]
        → Change Rotation (ドアを90度回転、Duration: 0.8, Easing: EaseInOut)
        → Play Sound Effect (ドア開閉SE)
    Branch 2: [Always True (else相当)]
        → Play Sound Effect (施錠SE)
        → Change Text ("鍵がかかっている")

鍵オブジェクトの Trigger設定:

Event: On Interact
→ Set Bool (has_key = true)
→ Play Sound Effect (取得SE)
→ Set Active (鍵オブジェクト = false)
→ Change Text ("鍵を手に入れた")

4.2 会話(Dialogueモジュールなし)

簡易的なテキスト表示なら、コアだけで対応できます。

構成:

  • Canvas上にText(TMP)+ 背景Imageを持つパネル(Canvas Group付き)
  • NPCにTrigger(On Interact)+ Hotspot

NPCの Trigger設定:

Event: On Interact
→ Is Controllable (Player, false)
→ Canvas Group Alpha (会話パネル = 1, Duration: 0.3)
→ Change Text ("こんにちは、旅人さん。")
→ Wait Seconds (2)
→ Change Text ("この先の洞窟には気をつけてね。")
→ Wait Seconds (2)
→ Canvas Group Alpha (会話パネル = 0, Duration: 0.3)
→ Is Controllable (Player, true)

Dialogueモジュールを入れると:選択肢付き分岐会話、話者アイコン、テキスト送り(クリック待ち)、条件分岐ノードなどが標準UIスキン付きで使えます。

4.3 スコアシステム

構成:

  • Global Variable:score(Number、初期値0)
  • Canvas上のText(TMP)にスコア表示

得点オブジェクトの Trigger設定:

Event: On Trigger Enter Tag (Tag: "Player")
→ Increment Number (score, +100)
→ Change Text (スコアText の Value を score Variable の Property に)
→ Play Sound Effect (得点SE)
→ Destroy (このオブジェクト)

4.4 移動する足場・エレベーター

Trigger設定:

Event: On Start
→ Change Position (上の位置, Duration: 3, Easing: EaseInOut)
→ Wait Seconds (2)
→ Change Position (下の位置, Duration: 3, Easing: EaseInOut)
→ Wait Seconds (2)
→ Restart Instructions

注意:GC2のCharacterは独自のCharacterController/NavMeshAgent/Rigidbodyで制御されるため、Unityの Set Parent で足場の子にしてもキャラが追従しない場合があります。対策として、足場が動く間 Move Direction でキャラに同じ移動ベクトルを与えるか、足場側をRigidbody(Is Kinematic)にしてCharacterのDriverをRigidbodyに変更する方法があります。

4.5 タイマー(制限時間)

構成:

  • Global Variable:time_left(Number、初期値60)
  • Trigger:On Interval(1秒)でデクリメント

Trigger設定:

Event: On Interval (1秒)
→ Increment Number (time_left, -1)
→ Change Text (タイマーUI の Value を time_left Variable の Property に)
→ Check Conditions: [Compare Decimal: time_left <= 0]
    → Emit Signal ("game-over")

ゲームオーバー受信側:

Trigger Event: On Receive Signal ("game-over")
→ Is Controllable (Player, false)
→ Canvas Group Alpha (ゲームオーバー画面 = 1)
→ Time Scale (0)

4.6 チェックポイントとリスポーン

チェックポイントの Trigger設定:

Event: On Trigger Enter Tag (Tag: "Player")
→ Set Point (checkpoint_position = このオブジェクトの Position Property)
→ Play Sound Effect (チェックポイントSE)

リスポーン(死亡Signal受信):

Trigger Event: On Receive Signal ("player-died")
→ Revive Character (Player)
→ Teleport (Player, Location = checkpoint_position の Variable Property)

4.7 カットシーン(カメラ演出+キャラ移動)

Trigger設定:

Event: On Trigger Enter Tag (Tag: "Player")
→ Is Controllable (Player, false)
→ Change To Shot (アングルA, Duration: 1.5)
→ Move To (NPC → Marker_NPC_Position)
→ Wait Seconds (1)
→ Change To Shot (アングルB, Duration: 1.0)
→ Play Gesture (NPC, 手を振るアニメ)
→ Wait Seconds (1.5)
→ Change To Shot (アングルC, Duration: 0.8)
→ Change Text ("ここから先は危険だ。")
→ Wait Seconds (2)
→ Canvas Group Alpha (会話パネル = 0, Duration: 0.3)
→ Revert To Previous Shot (Duration: 1.0)
→ Is Controllable (Player, true)

ポイント:

  • Change To Shot のDurationを0以上にするとスムーズにブレンド遷移する
  • Revert To Previous Shot でカットシーン前のShotに戻せる(Shotはスタック管理)
  • Move To は到着まで次のInstructionを待つ(Wait to Completeがデフォルト ON)

4.8 Signalによる複数オブジェクトの連動

1つのイベントで複数の独立したオブジェクトに通知するパターンです。

状況: ボスを倒したら、扉が開く + BGMが変わる + UIが更新される

ボスの死亡判定:

→ Subtract Numbers (boss_hp, ダメージ量)
→ Check Conditions: [Compare Decimal: boss_hp <= 0]
    → Kill Character (Boss)
    → Emit Signal ("boss-defeated")

扉オブジェクト(受信側1):

Trigger Event: On Receive Signal ("boss-defeated")
→ Change Rotation (扉, 90度, Duration: 1.5)
→ Play Sound Effect (重い扉が開くSE)

BGM管理オブジェクト(受信側2):

Trigger Event: On Receive Signal ("boss-defeated")
→ Fade All Music (Duration: 2.0)
→ Wait Seconds (1.0)
→ Play Music (勝利BGM, Transition In: 1.0)

ボス側は Emit Signal を1回呼ぶだけです。受信側が何個あっても変更不要で、各受信側はプレハブ化して再利用可能です。

4.9 Hotspotを使ったインタラクト可能オブジェクト

GameObject: Chest
  - Collider (Is Trigger = true)
  - Hotspot コンポーネント:
      Target: Player
      Mode: On Interaction Focus
      Spots:
        - Characters > Look At        ← プレイヤーが箱に目を向ける
        - UI > Show Floating Text ("開ける") ← 頭上にテキスト表示
        - Materials > Change Material (ハイライトマテリアル) ← 光る演出
  - Trigger コンポーネント:
      Event: On Interact
      → Set Bool (chest_opened = true)
      → Set Animator Trigger (Chest の Animator, "Open")
      → Play Sound Effect (箱を開けるSE)
      → Emit Signal ("chest-01-opened")

4.10 固定カメラのエリア切替(バイオハザード風)

各部屋にCamera Shot(Fixed Position)を1つずつ配置し、部屋の境界にTrigger Colliderを配置します。

Event: On Trigger Enter Tag (Tag: "Player")
→ Change To Shot (Shot_RoomB, Duration: 0.5)
  • Duration: 0 にすると即座に切り替わり、クラシックなホラーゲーム風に
  • Duration: 0.3〜1.0 にするとシネマティックなスムーズ遷移に

4.11 NPCの巡回と追跡の切り替え

コアのみで「巡回→発見→追跡→見失い→巡回に戻る」を実現するパターンです。

巡回Actions:

Trigger Event: On Start
→ Move To (Marker_A)
→ Wait Seconds (2)
→ Move To (Marker_B)
→ Wait Seconds (2)
→ Move To (Marker_C)
→ Wait Seconds (2)
→ Restart Instructions

発見Trigger(検知エリア):

Event: On Trigger Enter Tag (Tag: "Player")
→ Set Bool (is_chasing = true)
→ Start Following (NPC, Target: Player, Min: 1.5, Max: 2.0)
→ Enter State (NPC, 走りアニメ State, Layer: 5)

見失いTrigger(検知エリアから出た):

Event: On Trigger Exit Tag (Tag: "Player")
→ Set Bool (is_chasing = false)
→ Stop Following (NPC)
→ Stop State (NPC, Layer: 5, Transition: 0.3)
→ Run Actions (巡回Actionsを再実行)

限界:この方法は状態が2つ(巡回/追跡)なら管理できますが、3つ以上になるとTriggerとVariableの数が爆発します。複雑なAIにはBehaviorモジュールを推奨します。

4.12 簡易ダメージシステム

プレイヤーの攻撃Trigger(入力受付):

Trigger Event: On Input Button (Attack ボタン)
→ Check Conditions: [Is Available: Player]
    → Play Gesture (Player, 攻撃アニメ, Wait to Complete: false)
    → Wait Seconds (0.2)            ← アニメの振り始めまで待つ
    → Enable Collider (武器 Collider)
    → Wait Seconds (0.3)            ← 攻撃判定の持続時間
    → Disable Collider (武器 Collider)

敵側のダメージ受信Trigger:

Event: On Trigger Enter Tag (Tag: "PlayerWeapon")
→ Check Conditions: [Is Invincible: Enemy == false]
    → Subtract Numbers (enemy_hp, 25)
    → Set Invincible (Enemy, Duration: 0.5)   ← 連続ヒット防止
    → Play Gesture (Enemy, 被弾アニメ)
    → Play Sound Effect (ヒットSE)
    → Check Conditions: [Compare Decimal: enemy_hp <= 0]
        → Kill Character (Enemy)
        → Emit Signal ("enemy-defeated")

4.13 ロックオンカメラと対象切り替え

敵が範囲内に入ったら候補追加:

Event: On Trigger Enter Tag (Tag: "Enemy")
→ Add Target Candidate (Player, Target: 入ってきた敵)

ロックオンON:

Trigger Event: On Input Button (LockOn ボタン)
→ Cycle Closest Target (Player)
→ Change To Shot (Shot_LockOn, Duration: 0.3)

ターゲット切替:

Trigger Event: On Input Button (CycleTarget ボタン)
→ Cycle Next Target (Player)

4.14 セーブ・ロード画面

セーブボタン押下:

→ Save Game (Slot = current_slot の Variable Property)
→ Play UI Sound (セーブ完了SE)
→ Change Text (メッセージ, "セーブしました")

ロードボタン押下:

→ Conditions:
    Branch 1: [Has Save At Slot: current_slot]
        → Load Game (Slot = current_slot の Variable Property)
    Branch 2: [Always True]
        → Play UI Sound (エラーSE)
        → Change Text (メッセージ, "データがありません")

4.15 BGMとエリア環境音の管理

洞窟エリアに入った時:

Event: On Trigger Enter Tag (Tag: "Player")
→ Fade All Music (Duration: 1.5)
→ Fade All Ambient (Duration: 1.5)
→ Wait Seconds (0.5)
→ Play Music (洞窟BGM, Transition In: 2.0)
→ Play Ambient (水滴の音, Spatial Blending: 0.8, Target: 水源の位置)
→ Play Ambient (コウモリの鳴き声, Spatial Blending: 0.5)
  • Musicチャンネルはループ再生。Fade All Music で現在のBGMを止めてから新しい曲を再生
  • Ambientチャンネルもループ再生。複数同時再生可能(風 + 虫の声 + 川の音など)
  • Spatial Blending を0〜1で設定。0 = 2D(どこでも同じ音量)、1 = 3D(距離減衰あり)

4.16 スローモーション演出

必殺技ヒット時の演出:

→ Time Scale (0.2, Blend Time: 0.1, Layer: 1)    ← 全体を0.2倍速に
→ Shake Camera Burst (Duration: 0.3, Magnitude: 0.5, Roughness: 10)
→ Wait Seconds (0.5, Mode: Unscaled Time)        ← リアルタイムで0.5秒待つ
→ Time Scale (1.0, Blend Time: 0.3, Layer: 1)    ← 通常速度に戻す
  • Wait Seconds のModeを Unscaled Time にすると、TimeScaleに影響されずリアルタイムで待機
  • Characterの Update TimeUnscaled Time にしたキャラはスロー中も通常速度で動きます

4.17 プロップ装着と見た目の切り替え

武器を拾って装備する:

Event: On Interact (武器オブジェクト)
→ Set Active (地面に落ちている武器モデル = false)
→ Attach Prop (Player, Type: Instance, Prop: 武器Prefab, Bone: RightHand)
→ Set Bool (has_weapon = true)
→ Play Sound Effect (装備SE)
→ Enter State (Player, 武器を持ったLocomotion State, Layer: 3)
  • Attach Prop はBone(装着先ボーン)を指定し、Position/Rotationでオフセットを調整
  • Remove Prop / Drop Prop(落とす)で外せます。Drop Prop は物理で落下します

4.18 Dashを使った回避アクション

Trigger Event: On Input Button (Dodge ボタン)
→ Conditions:
    Branch 1: [Compare Boolean: can_dodge == true] AND [Is Grounded: Player]
        → Set Bool (can_dodge = false)
        → Set Invincible (Player, Duration: 0.4)
        → Dash (Player, Direction: 入力方向, Velocity: 8, Duration: 0.4)
        → Wait Seconds (0.8)        ← クールダウン
        → Set Bool (can_dodge = true)
  • Dash は方向・速度・持続時間を指定してキャラを高速移動させる専用Instruction
  • Set Invincible と組み合わせて回避中の無敵フレームを実現
  • Boolean変数でクールダウンを管理し、連続回避を防止

4.19 Physicsを使ったオブジェクト破壊

Event: On Interact (爆弾を使う)
→ Set Active (壊れるオブジェクト = false)
→ Instantiate (破片 Prefab, Position: オブジェクトの位置)
→ Add Explosion Force 3D (破片の各Rigidbody,
    Origin: 爆発中心, Radius: 5, Force: 500, Force Mode: Impulse)
→ Play Sound Effect (爆発SE)
→ Shake Camera Burst (Duration: 0.3, Magnitude: 0.8, Roughness: 15)
→ Emit Signal ("wall-destroyed")

4.20 Overlapを使った範囲検知

→ Overlap Sphere 3D (Center: Player の位置, Radius: 5,
    Store In: nearby_enemies (Local List Variable), Layer Mask: Enemy レイヤー)
→ Conditions:
    Branch 1: [List Is Empty: nearby_enemies == false]
        → [nearby_enemies の各要素にダメージ処理を実行]
        → Play Sound Effect (範囲攻撃SE)
    Branch 2: [Always True]
        → Play Sound Effect (空振りSE)
  • Overlap Sphere 3D / Overlap Box 3D でコライダーを持つオブジェクトを検索
  • 結果はList Variableに格納される(Layer Maskでフィルタ可能)

4.21 Nested Accessで対象の変数を動的参照

Variablesの Nested Access(スラッシュ区切りの入れ子参照)を使い、「現在のターゲットのHP」のように動的な対象の値を参照するパターンです。

ダメージ処理:

→ Increment Number (current_target/hp, -25)
    ↑ 「current_target が指す GameObject の Local Variable "hp"」を -25 する
→ Check Conditions: [Compare Decimal: current_target/hp <= 0]
    → Kill Character (current_target の Character)

ターゲットが変わっても参照パスを書き換える必要がありません(Variableの値が変わるだけ)。

4.22 ワープ/ファストトラベル

同一シーン内のワープ実行:

→ Canvas Group Interactable (ワープ選択UI = false)
→ Play Sound Effect (ワープ開始SE)
→ Canvas Group Alpha (白幕 = 1, Duration: 0.4)
→ Teleport (Player, Location = ワープ先 Marker の Position)
→ Change To Shot (ワープ先エリアの Camera Shot, Duration: 0)
→ Wait Seconds (0.2)
→ Canvas Group Alpha (白幕 = 0, Duration: 0.5)
→ Play Sound Effect (ワープ到着SE)
→ Is Controllable (Player, true)

別シーンへのワープ:

→ Canvas Group Alpha (黒幕 = 1, Duration: 0.5)
→ Save Game (slot: 0)
→ Set Point (spawn_position = ワープ先の座標)
→ Load Scene ("TargetScene")

白幕/黒幕のフェードで瞬間移動の「飛び」を隠すのがポイントです。

4.23 スイッチ&レバーで扉を開く

スイッチのTrigger設定(各スイッチ共通):

Event: On Interact
→ Conditions:
    Branch 1: [Compare Boolean: this_switch_activated == false]
        → Set Bool (this_switch_activated = true)
        → Set Animator Trigger (スイッチ Animator, "Activate")
        → Play Sound Effect (スイッチSE)
        → Increment Number (switch_count, +1)
        → Check Conditions: [Compare Decimal: switch_count >= 3]
            → Emit Signal ("all-switches-on")

扉の受信側:

Trigger Event: On Receive Signal ("all-switches-on")
→ Play Sound Effect (重い扉SE)
→ Change Position (扉, 上方向に移動, Duration: 2.0, Easing: EaseInOut)

4.24 敵スポーン(ウェーブ制)

ウェーブ開始Trigger:

Trigger Event: On Receive Signal ("start-wave")
→ Increment Number (current_wave, +1)
→ Check Conditions:
    Branch 1: [Compare Decimal: current_wave == 1]
        → Set Number (enemies_alive = 3)
        → Instantiate (敵A Prefab × 3)
    Branch 2: [Compare Decimal: current_wave == 2]
        → Set Number (enemies_alive = 5)
        → Instantiate (敵A × 2 + 敵B × 3)
    Branch 3: [Compare Decimal: current_wave == 3]
        → Set Number (enemies_alive = 1)
        → Instantiate (ボス Prefab)

全滅チェック(Signal受信):

Trigger Event: On Receive Signal ("enemy-killed")
→ Check Conditions: [Compare Decimal: enemies_alive <= 0]
    → Wait Seconds (2)
    → Emit Signal ("start-wave")    ← 次ウェーブ開始

4.25 宝箱(ランダム報酬)

Event: On Interact
→ Set Number (random_roll, From: Random Property [Min: 1, Max: 100])
→ Conditions:
    Branch 1: [Compare Decimal: random_roll <= 10]    ← 10%: レア
        → Change Text (通知, "伝説の剣を手に入れた!")
    Branch 2: [Compare Decimal: random_roll <= 40]    ← 30%: アンコモン
        → Change Text (通知, "回復薬×3 を手に入れた")
    Branch 3: [Always True]                           ← 60%: コモン
        → Change Text (通知, "コイン×50 を手に入れた")

Set Number のFromにRandom Property(Min〜Max範囲のランダム値)を指定して乱数を変数に格納し、Conditionsの分岐で確率テーブルを実現します。

4.26 押せるブロック(パズル)

ブロック押し(プレイヤーの前方に力を加える):

Trigger Event: On Update
→ Conditions: [Is Input Held Down: Push ボタン] AND [Is Grounded: Player]
              AND [Raycast 3D: Player の前方 1m, Layer: Block]
    → Enter State (Player, 押すアニメ, Layer: 3)
    → Add Force 3D (ブロック, Direction: Playerの Forward, Force: 300)

ブロックが目的位置に到達:

Event: On Trigger Enter (ブロック)
→ Change Position (ブロック, 目的位置の中心にスナップ, Duration: 0.2)
→ Is Kinematic 3D (ブロック = true)    ← これ以上動かないように固定
→ Emit Signal ("block-puzzle-complete")

4.27 トラップ(ダメージ床・落石)

ダメージ床(乗っている間ダメージ):

[ダメージループ]
Trigger Event: On Interval (0.5秒)
→ Check Conditions: [Compare Boolean: player_on_trap == true]
    → Increment Number (player_hp, -5)
    → Play Sound Effect (ダメージSE)
    → Check Conditions: [Compare Decimal: player_hp <= 0]
        → Emit Signal ("player-died")

落石トラップ(タイミング回避):

Trigger Event: On Interval (3秒)
→ Instantiate (警告エフェクト Prefab, 落下地点の地面)
→ Wait Seconds (1.0)    ← 警告表示時間(プレイヤーが逃げる猶予)
→ Instantiate (岩 Prefab, スポーン位置)
→ Wait Seconds (3.0)
→ Destroy (落ちた岩)

4.28 はしご/つたの昇降

Event: On Interact (はしご下端の Hotspot)
→ Set Bool (on_ladder = true)
→ Is Controllable (Player, false)
→ Teleport (Player, Marker_LadderBottom)    ← はしごの真正面にスナップ
→ Change Rotation (Player, はしご正面方向, Duration: 0.2)
→ Enter State (Player, はしご昇りアニメ State, Layer: 5)
→ Change Position (Player, Marker_LadderTop の Position,
    Duration: 3.0, Easing: Linear)          ← 一定速度で上昇
→ Play Gesture (Player, はしごから降りるアニメ)
→ Teleport (Player, はしご上端の着地位置)
→ Stop State (Player, Layer: 5, Transition: 0.3)
→ Is Controllable (Player, true)
→ Set Bool (on_ladder = false)

Is Controllable(false) で通常の移動入力を無効化してからはしご移動を行うのがポイントです。

4.29 水中移動(泳ぎ)

水に入った時:

Event: On Trigger Enter Tag (Tag: "Player")
→ Set Bool (is_swimming = true)
→ Change Movement Speed (Player, Speed: 2.0, Duration: 0.3)
→ Enter State (Player, 泳ぎアニメ State, Layer: 5)
→ Change To Shot (水面用 Shot, Duration: 0.5)
→ Play Sound Effect (水に入るSE)
→ Play Ambient (水中環境音)

水から出た時:

Event: On Trigger Exit Tag (Tag: "Player")
→ Change Movement Speed (Player, Speed: 4.0, Duration: 0.3)
→ Stop State (Player, Layer: 5, Transition: 0.3)
→ Revert To Previous Shot (Duration: 0.5)
→ Fade All Ambient (Duration: 1.0)

4.30 NPCのスケジュール行動

Trigger Event: On Interval (5秒)
→ Conditions:
    Branch 1: [time_of_day >= 6 AND < 12]
        → Move To (NPC, Marker_Shop)        ← 午前:店で仕事
        → Enter State (NPC, 作業アニメ, Layer: 3)
    Branch 2: [time_of_day >= 12 AND < 18]
        → Move To (NPC, Marker_Square)      ← 午後:広場で休憩
        → Enter State (NPC, 座りアニメ, Layer: 3)
    Branch 3: [Always True]
        → Move To (NPC, Marker_Home)        ← 夜:家に帰る
        → Enter State (NPC, 睡眠アニメ, Layer: 3)

current_schedule「既にその行動中か」をチェックし、毎Interval同じMove Toが発火しないようにするのが重要です。

4.31 QTE(クイックタイムイベント)

QTEの開始:

→ Set Bool (qte_active = true)
→ Canvas Group Alpha (QTE_UI = 1, Duration: 0.1)
→ Time Scale (0.5, Blend Time: 0.1, Layer: 1)    ← スローモーションで緊張感

正しいボタンが押された:

Trigger Event: On Input Button (X ボタン)
→ Check Conditions: [Compare Boolean: qte_active == true]
    → Set Bool (qte_active = false)
    → Emit Signal ("qte-success")

Time Scale でスロー + Unscaled Time のIntervalでゲージを減らすことで「スローモーション中でも入力受付は通常速度」を実現します。

4.32 コレクティブル(収集要素)

Event: On Trigger Enter Tag (Tag: "Player")
→ Increment Number (collectibles_found, +1)
→ Play Sound Effect (収集SE)
→ Set Active (このオブジェクト = false)   ← Remember で状態保存
→ Check Conditions: [Compare Decimal: collectibles_found >= collectibles_total]
    → Emit Signal ("all-collected")

Remember コンポーネントで Set Active(false) 状態をセーブに保存すれば、ロード後も取得済みのものは消えたままになります。

4.33 パーティ/仲間の追従

仲間を加入させる:

Event: On Interact (仲間NPCに話しかける)
→ Set Bool (party_member_1_active = true)
→ Start Following (仲間1, Target: Player, Min Distance: 2.0, Max Distance: 3.5)
→ Change Text (通知, "○○が仲間に加わった!")

複数仲間の隊列(距離をずらす):

仲間1: Start Following (Target: Player, Min: 2.0, Max: 3.5)
仲間2: Start Following (Target: 仲間1, Min: 2.0, Max: 3.5)
仲間3: Start Following (Target: 仲間2, Min: 2.0, Max: 3.5)

隊列を作るには「仲間2は仲間1をFollow」のようにチェイン構造にします。


GC2 と他のアセット・ツールとの共存

GC2はUnityのフレームワークの特定の領域だけを担当するツールキットです。

GC2が占有する領域(競合注意)

以下はGC2が内部的にフル制御しており、同じ領域を担当する別のアセットを併用すると動作が競合する可能性が高いものです。

GC2が制御する領域競合するアセットの例競合理由
キャラクター移動・回転・物理Opsive UCC、Invector TPC、KCC、ECM2等同じGameObjectの移動制御を奪い合う
カメラ管理Cinemachineを「メインカメラ制御」として使用両方がMain CameraのPosition/Rotationを毎フレーム上書き
セーブ&ロードEasy Save等を「GC2管理下のデータにも適用」する場合同じデータを二重に保存して不整合
オーディオ再生管理別のオーディオマネージャGC2のVolume階層と競合

GC2が関与しない領域(自由に選択可能)

以下の領域はGC2がまったく制御しないため、Unity標準でもサードパーティアセットでも好きなものを使えます

領域GC2との関係
UIレイアウト・設計GC2は Change Text 等で「値を書き込む」だけ
パーティクル・VFXGC2は Instantiate / Set Active で生成するだけ
地形・レベルデザインGC2のCharacterがその上を歩くだけ
シェーダー・マテリアルGC2は Change Material Color 等で外部操作するのみ
NavMesh・パス計算GC2のDriverが「利用する」だけ
Animator Controller設計GC2のGesture/Stateはその上の薄いラッパー
物理(Rigidbody・Joint・Cloth)GC2は Add Force 等を提供するが物理設定自体には関与しない
ネットワークGC2はシングルプレイ前提。ネット層は完全に別
プロシージャル生成GC2は生成後のオブジェクトを操作するだけ
ポストプロセス・カメラエフェクトGC2のCameraは位置と回転のみ管理

競合判定の原則

あるアセットをGC2と併用できるか?
    ├── そのアセットは「GC2のCharacter」を制御しようとするか?
    │       → Yes → 競合する
    │       → No  → 共存可能
    ├── そのアセットは「Main CameraのPosition/Rotation」を毎フレーム制御するか?
    │       → Yes、かつGC2のCamera Shotも使いたい → 競合する
    │       → Yes、だがGC2のカメラ機能は使わない → 共存可能
    │       → No  → 共存可能
    └── そのアセットはGC2が関与しない領域を担当するか?
            → Yes → 自由に使える

注意が必要な「グレーゾーン」のアセット

  • Cinemachine:GC2のCamera Shotと同じMain Cameraを操作すると毎フレーム奪い合い。別カメラ(ミニマップ等)に使うなら共存可能
  • Animancer:GC2のCharacterのAnimatorを直接操作すると衝突。GC2 Character以外のGameObjectなら問題なし
  • Playmaker / Unity Visual Scripting:共存可能。公式ドキュメントに明記されています
  • DOTween / LeanTween:GC2が管理しないオブジェクトに対してなら問題なし

コアだけでは大変なこと(GC2モジュールの価値)

GC2モジュールの最大の強みはGC2のVisual Scripting・Variables・セーブ&ロードと完全に統合されていることです。

インベントリ(アイテム管理)

コアのみだと: List Variableにアイテム IDを格納し、手動で追加・削除のロジックを組み、Bag UIを一から構築する必要があります。

Inventoryモジュールがあると: Itemアセットで定義 → Bagコンポーネントで管理、これだけで完結。Runtime Item(個別インスタンスの概念)、Equipment(装備スロット)、Currency(通貨)、Merchant(商店)、Tinker(クラフト/解体)、Loot Table(確率ドロップ)が全部入りです。

AI(複雑なNPC行動)

コアのみだと: 状態が4〜5個を超えると、どのTriggerがどの状態に対応するか追跡が困難になります。

Behaviorモジュールがあると: State Machine/Behavior Tree/GOAP/Utility AIの4方式が使え、ランタイムで現在の実行ノードが視覚化されデバッグが劇的に楽になります。

戦闘(近接/遠距離)

コアのみだと: コンボ(A→A→Bで3段攻撃)をConditionsで組むと入力バッファやタイミング窓の実装が非常に煩雑です。

Melee/Shooterモジュールがあると: SkillアセットのSequencerでフェーズ管理、ComboアセットでInput Bufferが先行入力を自動吸収、Shieldアセットのパリィ機能が標準で使えます。

知覚(Perception)

コアのみだと: 球状のTrigger Colliderでは視野角の概念がなく、壁の向こうも検知してしまいます。

Perceptionモジュールがあると: Sight/Hearing/Smell/Feelの4センサ、Awareness(段階的認知)、Luminance(明暗)+Camouflage(偽装)で本格的なステルスシステムが組めます。

ステータス・RPG数値体系

コアのみだと: ダメージ計算式をMath命令の列で毎回記述し、装備補正を手動管理する必要があります。

Statsモジュールがあると: Formulaアセットで式を一箇所に定義、Stat Modifierで装備補正を自動管理、Status Effectで状態異常を定義するだけで実装できます。

コアだけでは「辛い」ラインの目安

領域コアで十分な範囲モジュール推奨の境界
アイテム拾う→フラグON→使う(3種類以下)アイテムリスト表示、スタック、装備、売買
会話固定テキスト表示 + Wait選択肢分岐、条件分岐、繰り返し会話
AI巡回 + 追跡(2〜3状態)4状態以上、動的優先度、計画的行動
戦闘ボタン→攻撃→当たったらダメージコンボ、パリィ、リコイル、照準
知覚範囲トリガーで発見視野角、段階認知、隠密、痕跡
数値HP + 攻撃力(2〜3値)5値以上、計算式、装備補正、状態異常
クエストBooleanフラグで進行管理タスク階層、ジャーナルUI、自動追跡

モジュール間の連携と組み合わせ

GC2モジュールの真価はモジュール同士が連携することにあります。

代表的な組み合わせ

  • Stats × Melee / Shooter:Hitの発生時にFormulaでダメージ自動計算。Equipmentによる Stat Modifierが自動反映
  • Stats × Inventory:装備スロットに装備すると Stat Modifier が自動適用。外せば戻る
  • Perception × Behavior:Awarenessが Alert に達したら State Machine が追跡に遷移
  • Dialogue × Stats:会話ノードの条件に「STR ≥ 15」を設定。力が足りないと選択肢が出ない
  • Quests × Dialogue:NPC との会話内で Quest を受注し、報告時に報酬が自動発火
  • Inventory × Dialogue × Quests:典型的RPG構成。アイテム収集→Task完了→報酬

推奨組み合わせ(ジャンル別)

ジャンル推奨モジュール構成
アクションRPGStats + Inventory + Melee + Behavior
シューターShooter + Stats + Inventory + Perception
ステルスPerception + Behavior + (Melee or Shooter)
アドベンチャー/謎解きInventory + Dialogue + Quests
RPG(古典的)Stats + Inventory + Dialogue + Quests + Behavior
サバイバルInventory + Stats + Perception + Behavior
格闘Melee + Stats

モジュールの導入判断基準

判断フローチャート

「この機能はコアだけで作れるか?」
    → Yes、かつ実装が簡易(〜30分) → コアで作る
    → Yes、だが相当な工数がかかる → モジュール検討
    → No(概念自体がコアにない) → モジュール必須 or カスタムスクリプト

おすすめの導入順序

  1. まずコアだけで作ってみる — 基本が分かっていないとモジュールも使いこなせない
  2. ゲームジャンルの中核になるモジュールを1〜2個入れる
    • RPGならStats + Inventory
    • アドベンチャーならDialogue + Inventory
    • アクションならMelee or Shooter
  3. プレイテストして足りないものを追加する — 必要になってから買う
  4. AI系(Behavior + Perception)は敵が複数種類になった段階で検討 — 1種類の単純な敵ならコアで十分

よくある実装パターン集

シーン遷移(ローディング付き)

Trigger Event: On Interact (ドアに触れる)
→ Is Controllable (Player, false)
→ Canvas Group Alpha (黒幕 = 1, Duration: 0.5)
→ Save Game (slot: 0)
→ Load Scene ("NextStage", Async: true)

Transitions Extension(無償) を使えば、ローディング画面やフェード演出を専用コンポーネントで設定できます。

複数エンディング

Global Variables:
  - ending_flag (Number): 0=未決定, 1=Good, 2=Bad, 3=True

最終シーンの Conditions:
  Branch 1: [ending_flag == 1] → Good End カットシーン
  Branch 2: [ending_flag == 2] → Bad End カットシーン
  Branch 3: [ending_flag == 3] → True End カットシーン
  Branch 4: [Always True]       → Normal End

ゲーム中の選択や行動で ending_flag を書き換えていく設計です。

デイナイトサイクル(昼夜切替)

Global Variable: time_of_day (Number, 0〜24)

Trigger Event: On Interval (0.1秒)
→ Increment Number (time_of_day, +0.01)
→ Check Conditions: [Compare Decimal: time_of_day >= 24]
    → Set Number (time_of_day = 0)

GC2の Change Animator Float で time_of_day をAnimatorに渡し、Animator側でライト制御するハイブリッド手法が楽です。


トラブルシューティングと設計のコツ

よくある問題と解決法

問題原因解決法
Actionsが動かないTriggerのEventが発火していないLog Text を先頭に入れて発火確認
キャラが動かないPlayer Unit未設定 or Is Controllable がfalseInspectorでPlayer Unitを確認
Move Toで目的地に着かないStop Distanceが大きい or NavMesh未ベイク設定確認
変数が反映されないLocalとGlobalを間違えているシーン間共有ならGlobal
セーブが効かないRememberコンポーネントがない保存したいオブジェクトにRememberを付ける
Hotspotが反応しないColliderがない or Is TriggerでないCollider(Is Trigger = true)が必要
On Interactが発火しないInteraction Radiusに入っていないCharacter > Motion > Interaction > Radius確認
音が鳴らないAudioClip未設定 or Volume 0パラメータ+Master Volume確認

設計のコツ

  1. 変数名は英語でスネークケースplayer_hphas_key_bluequest_01_complete
  2. Signal名は 主語-動詞 形式boss-defeateddoor-openedtimer-expired
  3. Signalをお気に入り登録する — 打ち間違い防止
  4. 1 Actions = 1 責務 — 単機能にする
  5. Conditionsは上から優先 — 最も限定的な条件を最初のBranchに
  6. Hotspotは全インタラクト対象に付ける — プレイヤーに「何ができるか」を常に示す
  7. On Trigger Enter Tag を活用する — Tagフィルタで不要な発火を防ぐ

パフォーマンス意識

  • On Update / On Fixed Update は毎フレーム実行されるので必要最小限に(On Interval で代用検討)
  • Instantiate を大量に使う場合は Pool Prewarm で事前プーリング
  • 使わなくなったActions/Triggerは Set Active(false) で止める
  • NavMesh Agent使用時に大量のNPCがいるとパスファインディング負荷が上がる。On Interval の間隔を広めに

公式リンク


まとめ

本記事では、Game Creator 2でゲームを作る方法を実践パターンとともに解説しました。如何だったでしょうか。

重要なポイントを振り返ります。

  1. Trigger + Actions + Conditions + Variables の4つを覚えれば、大半のゲームロジックは組めます
  2. GC2が占有するのはキャラクター制御・カメラ管理・ゲームロジック・セーブ&ロードの4領域。それ以外は自由に選択できます
  3. 他のアセットと競合するかの判断基準は「GC2のCharacter/Cameraと同じGameObjectを制御しようとするかどうか」
  4. 「インベントリ管理」「複雑なAI」「戦闘の操作感」「段階的な知覚」「RPG数値体系」はコアだけだと実装コストが跳ね上がる — ここがモジュールの価値
  5. モジュール同士が連携するとさらに価値が倍増します(Stats × Meleeでダメージ自動計算、Perception × Behaviorで知覚駆動AIなど)

「小さなイベント駆動の積み重ね」で考えれば、コア+必要なモジュールの組み合わせで、ほとんどのゲームジャンルに対応できます。

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

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