← ブログへ

Unity MCP で 3D RPG:三人称操作・戦闘・クエストの進め方

遊べる 3D RPG プロトタイプを目標に、Cursor など MCP 対応 AI IDE から Unity MCP で操作・リアルタイム戦闘・敵ステートマシン・クエスト配線を進める手順。仕上げ UI は必要なときだけ。

公開日
  • Unity MCP
  • 3D RPG
  • Unity
  • combat
  • AI game development

デモできる 3D RPG プロトタイプには、まず次が要ります:調整可能な三人称移動とカメラ、最低1ループのリアルタイム近接、小さなステートマシンを持つ敵、トリガー可能なクエスト/会話、HP やクエスト進捗を示す HUD。実装順に書きます。前提は Cursor、Claude Code、Codex など MCP 対応 AI IDE から Unity MCP で開いている Unity プロジェクト(シーン、GameObject、C#)を読み書きすること——ディスクにスクリプトを貼るだけではありません。

導入:Unity MCP インストール手順。対応バージョンは公式(多くは Unity 2022.3+ / Unity 6)に従ってください。

最小プレイ可能範囲を先に決める

v1 の合格条件はこれだけで十分です:

  1. WASD 移動、マウス視点、ジャンプ;地面と緩い斜面が安定
  2. 近接攻撃1回(アニメは仮で可)で Collider 付きの敵にヒットしダメージ
  3. 敵1体:巡回 → 発見 → 追跡/攻撃;死亡後は無効化または破棄
  4. NPC1体:接近で会話/受注;目標「その敵を倒す」完了でログ更新
  5. 簡易 HUD:HP バー + クエスト1行

美術はプリミティブで可。タイトル、インベントリ、作り込み HUD は後段の UI(後述)。

プロジェクトと MCP の準備

プレイ系プロンプトの前に:

  • Unity プロジェクトが開き、対象シーンで Play できる
  • Unity MCP Server 稼働中;AI IDE で Hierarchy ルートを列挙できる(読み取りスモーク)
  • ベースラインを commit;大きな変更前にもう一度

読み取り確認:

アクティブシーンのルート GameObject を列挙。何も変更しない。

通ってから書き込み。ブリッジは localhost のみ。プロンプトの型は:Claude Code / Cursor で Unity MCP

プレイヤー:三人称操作を先に通す

最小構成(名前はプロジェクトに合わせて):

Player
├── CharacterController または Rigidbody + CapsuleCollider
├── CameraPivot(Yaw)
│   └── CameraArm(Pitch)→ Main Camera
└── AttackHitbox(トリガー、既定オフ)

入力・カメラ・パスを明示:

Assets/Scripts/Player/PlayerController.cs を作成:三人称;カメラ平面基準の WASD;マウスで yaw/pitch(pitch −30°〜60°);Space でジャンプ;Player に付与。接地は CharacterController.isGrounded など。

手触り:

移動速度おおよそ 5、軽い加速スムージング;ジャンプ約 1.2m;カメラ追従に軽い減衰。

斜面スリップ、空中操舵、カメラのめり込みを先に見る。

戦闘:受け入れ可能な近接1ループ

スキルツリーは後回し。目標は 攻撃入力 → 数フレーム Hitbox ON → ダメージ → HUD 更新

PlayerCombat.cs:LMB 攻撃、クールダウン 0.6s;ウィンドウ中 AttackHitbox 有効;IDamageable に 15 ダメージ。敵は IDamageable と現在 HP。

任意の簡易強化:

攻撃中わずかに移動ロック;命中で短い硬直;被弾後 0.4s 無敵点滅。

HP 変化はイベント/コールバックにして HUD をきれいに配線。

敵:Idle / Patrol / Chase / Attack

ビヘイビアツリーは不要。4状態で野良モブは足りる:

Idle → Patrol → Chase → Attack
         ↑________________↓(ロスト)

Assets/Scripts/Enemy/EnemyAI.cs:2点巡回;12m で Chase;2m で Attack(1.2s CD、ダメージ 8);3s ロストで Patrol;HP0 で死亡演出または SetActive(false)

NavMesh があれば NavMeshAgent。なければ単純な向き移動で週1を詰まらせない。Animator は任意。

クエストと NPC:メイン1本

「クエスト感」は 発火 → 追跡 → 完了

データは素朴に:

  • QuestId、タイトル、説明、進捗、完了フラグ
  • NPC の Interact(E またはトリガー)で会話と StartQuest
  • 敵死亡で QuestManager.NotifyKill(enemyId)

QuestManager シングルトン:slay_wolf_01(Wolf 1体);死亡で進捗;完了でログ文面更新。Wizard NPC:Trigger 内で E で受注。

会話は TMP/Text で十分。

HUD:仮置き → 必要なら仕上げ UI

未完成の間は Slider / TMP_Text

プレイヤー OnHealthChanged を HP バーへ;QuestManager の現在タイトルを画面上 TMP へ。

メニューやインベントリがデザイン級 UI(PSD/Figma、NL 生成、分割して Unity プレハブ書き出し)のときは AI Studio

  1. RPG HUD/メニューを生成または取り込み
  2. コンポーネント化して例:Assets/UI/ へ書き出し
  3. AI IDE + Unity MCP で既存イベントへ配線

構造はキャンバス、バインドと戦闘ロジックは Unity MCP。キャンバスに戦闘 FSM 一式を期待しない。

詳細:Figma から Unity UI

推奨の進め方

MCP:操作 → 近接1ループ → 敵FSM → クエスト+NPC

MCP:仮 HUD(HP/クエスト行)
        ↓(任意)
キャンバス:仕上げ UI → Unity へ

MCP:既存イベントへ配線

手触り・数値・AI・ナビ → Unity MCP。
画面全体の見た目・リスキン・再書き出し → キャンバス側。

プロンプト境界

  • パスと付与先
  • 受け入れ条件(例:Play 後10秒以内に Wolf を倒しクエスト完了表示)
  • 禁止範囲(入力系全面リファクタ禁止など)
  • 1プロンプト1関心事

必ず自分で Play 確認。MCP は反復クリックを減らすだけで、設計判断は残る。

受け入れチェック

  • 三人称を約2分操作しても明らかな貫通/制御不能がない
  • 近接が安定して当たり、CD が感じられる
  • 巡回と追跡が区別でき、死亡フィードバックがある
  • クエスト受注・完了、HUD 文言が変わる
  • HP 変化が UI に出る(仮で可)

次の一手

  1. Unity MCP インストール と読み取りスモーク
  2. 「移動 + 敵1 + クエスト1」をこの順で
  3. 見た目が必要なときだけ UI 書き出し

関連:Claude Code / Cursor と Unity MCPFigma から Unity UI

こちらの記事もおすすめです