Unity Rapid Proto について
Unity Rapid Protoは、短いゲームプレイ案をプレイ可能なUnityプロトタイプにするスキルです。中核となる仕組みに絞り、最大3本のC#スクリプト、シーン設定手順、テストチェックリストを作成します。
主な機能
- 01案を中核となる仕組みに絞る
- 02最大3本のC#スクリプトを生成
- 03シーン設定手順を提示
- 04Play後のテストチェックリスト
- 056ジャンルのテンプレート
活用シーン
- 01Unityでゲームプレイの仕組みを試す
- 02簡易な2Dまたは3Dプロトタイプの作成
- 03生成されたスクリプトを使ったシーン設定
- 04Play後のプロトタイプ動作確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ juliankerignard/ unity-skills --skill unity-rapid-protoインストール後、Claude Code で/unity-rapid-protoを入力して読み込まれたか確認します。
同梱ファイルreferences/proto-templates.md
詳細
Unity Rapid Proto
このスキルでできること
生のゲームプレイアイデアを、プレイ可能なUnityプロトタイプに変換します。GDDも、計画も、アーキテクチャも不要です。メカニクスをテストするために必要な最小限のコードを作成します。
生成するもの:
- 1~3個のC#スクリプト(MonoBehaviourのみ)
- シーンのセットアップ手順(ヒエラルキー、コンポーネント、値)
- 動作を確認するための「Playを押す」チェックリスト
前提条件
- 既存のUnityプロジェクト
Assets/Prototypes/フォルダー(ない場合は作成します)- プロトタイプ化するコンセプトを1~2文で説明できること
判断ツリー
Type de prototype ?
|
+-- 3D gameplay ?
| +-- Deplacement + exploration --> Template 3D Platformer
| +-- Tir / combat --> Template FPS
| +-- Placement strategique --> Template Tower Defense
| +-- Course automatique --> Template Runner / Endless
|
+-- 2D gameplay ?
| +-- Deplacement top-down --> Template Top-Down 2D
| +-- Puzzle / grille --> Template Puzzle (grid-based)
| +-- Platformer 2D --> Adapter Template 3D Platformer en 2D
|
+-- Pas sur ?
+-- Commencer en 3D (plus visuel, plus facile a debloquer)
クイックスタート
- ユーザーがアイデアを1~2文で説明します
- 中心となるメカニクスを1つ特定します
- スクリプトを生成します(最大3個、各100行以内)
- シーンのセットアップ手順を記述します
- テスト用チェックリストを提示します
ステップごとのガイド
ステップ1:アイデアを理解する
ユーザーに、アイデアを最大1~2文で説明するよう依頼します。追加の詳細は尋ねないでください。デザイン文書は作成しないでください。
以下を抽出します:
- 主な動詞(ジャンプ、撃つ、配置する、回避する、収集する)
- 空間的な状況(2D/3D、カメラ視点)
- 終了条件(スコア、タイマー、生存、パズルの解決)
ステップ2:中心となるメカニクスを特定する
プロトタイプ化するメカニクスを1つだけ選びます。アイデアに複数のメカニクスが含まれている場合は、主要なゲームプレイループを定義するものを選びます。
絞り込みの例:
- 「敵のウェーブから基地を守るために塔を建てるゲーム」→ 中心となるメカニクス:タレットの配置+経路追従
- 「魔法の能力とクラフト要素があるプラットフォーマー」→ 中心となるメカニクス:移動+ジャンプ(ほかの要素は後から追加します)
- 「クラス制のマルチプレイヤーFPS」→ 中心となるメカニクス:移動+レイキャスト射撃
ステップ3:最小限のコードを生成する
基本構成:
PlayerController.cs:移動+主なアクション(最大80行)- 必要に応じてゲームプレイスクリプトを1~2個(各最大60行)
コードのルール:
- MonoBehaviour uniquement, pas de ScriptableObject
- Input.GetKey / Input.GetAxis (ancien systeme, plus simple)
- Valeurs hardcodees (pas de SerializeField sauf si vraiment utile)
- Visuels = primitives Unity (Cube, Sphere, Capsule, Plane)
- Pas de namespace, pas de pattern, pas d'event system
- Un seul fichier = une seule responsabilite evidente
- 1 commentaire par bloc non-evident, pas plus
Input System に関する注記(Unity 6以降):プロジェクトでNew Input System(Unity 6のデフォルト)を使用している場合は、
Input.*の呼び出しを次のように置き換えてください:
Input.GetKey(KeyCode.Space)→Keyboard.current[Key.Space].isPressedInput.GetKeyDown(KeyCode.Space)→Keyboard.current[Key.Space].wasPressedThisFrameInput.GetAxis("Horizontal")→Gamepad.current.leftStick.x.ReadValue()またはInputActionInput.GetMouseButton(0)→Mouse.current.leftButton.isPressed素早くプロトタイプを作る場合は、従来のInput Managerのほうが簡単です。
Edit > Project Settings > Player > Active Input Handlingを確認してください。
ステップ4:セットアップ手順を記述する
次の順序を厳守して提示します:
- シーン:新しいシーンを作成するか、SampleSceneを使用します
- 作成するオブジェクト(名前、プリミティブ、位置、スケールを指定)
- 各オブジェクトに追加するコンポーネント
- 必要に応じて親子のヒエラルキー
- 必要なタグとレイヤー
- カメラのセットアップ(位置、回転)
形式:
## Setup Scene
1. Creer un objet **Player** : Capsule a position (0, 1, 0)
- Ajouter `PlayerController.cs`
- Ajouter Rigidbody (Use Gravity: true, Freeze Rotation X/Z)
2. Creer un objet **Ground** : Plane a position (0, 0, 0), scale (5, 1, 5)
- Tag: "Ground"
ステップ5:「Playを押す」チェックリスト
Playを押したときに起こることを、正確に列挙します:
## Test checklist
- [ ] Le joueur se deplace avec WASD/fleches
- [ ] Le joueur saute avec Space et retombe
- [ ] Les ennemis apparaissent toutes les 3 secondes
- [ ] Le score augmente quand on touche un ennemi
- [ ] Game Over s'affiche quand la vie atteint 0
ジャンル別テンプレート
references/proto-templates.md に、設定済みのテンプレートが6種類あります:
| ジャンル | スクリプト | 主なオブジェクト |
|---|---|---|
| 3Dプラットフォーマー | PlayerController + MovingPlatform | Capsule + CharacterController、Planes、Cubes |
| FPS | FPSController + EnemyHealth + Spawner | Capsule + 子カメラ、赤いCubes |
| 見下ろし型2D | PlayerMovement2D + Bullet + EnemyPatrol2D | スプライト、Rigidbody2D、正投影カメラ |
| パズル(グリッド) | GridManager + Tile | 生成されたQuads、勝利を表示するUI Text |
| ランナー/エンドレス | RunnerPlayer + ObstacleSpawner + ScoreManager | 自動前進するCapsule、3つのレーン |
| タワーディフェンス | Turret + EnemyPath + TurretPlacer | ウェイポイント、OverlapSphere、InvokeRepeating |
厳格なルール
必ず:
- ビジュアルにはUnityのプリミティブ(Cube、Sphere、Capsule、Plane)を使用します
- 勝利/敗北条件、またはフィードバックループを含めます
Input.GetKey/Input.GetAxis(旧Input System)を使用します- 値(速度、ライフ、ダメージ)はハードコードします
- コードは
Assets/Prototypes/<NomPrototype>/に記述します - 各スクリプトを頭の中でテストします:コンパイルできるか?目に見える動作をするか?
絶対にしないこと:
- プロトタイプあたり3つを超えるスクリプト
- 1スクリプトあたり100行を超えるコード(PlayerControllerは80行まで)
- アーキテクチャの導入:SO、イベント、マネージャー、シングルトンは使用しません
- ドキュメントやREADMEの作成
- コメントを大量に記述すること(わかりにくいブロックにつき1行まで)
- ワークフロー上どうしても必要な場合を除き、SerializeFieldを使用すること
- 名前空間、インターフェース、抽象クラス、ジェネリックを使用すること
- 外部アセット、追加パッケージ、Asset Storeを使用すること
関連スキル
- プロトタイプが動作し、本番環境へ移行したい場合は、
/unity-code-gen(Unity Code Gen)を使用して適切なパターンで再構成します - プロトタイプにバグがある場合は、
/unity-debug(Unity Debug)を使用します - プロトタイプ用のカスタムシェーダーが必要な場合は、
/shader(Unity Shader Generator)を使用します - 2Dプロトタイプ(プラットフォーマー、トップダウン)の場合は、詳細なパターンについて
/2d(Unity 2D)を使用します
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| プレイヤーが動かない | スクリプトが正しいGameObjectにアタッチされていることを確認します。CharacterControllerまたはRigidbodyが存在することを確認します。 |
| プレイヤーが床をすり抜ける | 床にColliderがあることを確認します。プレイヤーにColliderとRigidbody(またはCharacterController)があることを確認します。 |
| ジャンプが機能しない | グラウンドチェックを確認します:レイキャストはVector3.downを向き、距離はプレイヤーの高さの半分よりわずかに大きくする必要があります。 |
| 衝突が検出されない | 2つのオブジェクトの少なくとも一方にRigidbodyがあることを確認します。OnTriggerEnterを使用する場合、Colliderの「Is Trigger」にチェックを入れる必要があります。 |
| カメラが揺れる | カメラのロジックをUpdateではなくLateUpdateに移動します。 |
| 敵が出現しない | prefabが割り当てられていること、またはInstantiateが正しい参照を使用していることを確認します。InvokeRepeatingがStartで呼び出されていることを確認します。 |
| スコアが表示されない | TextまたはTextMeshProUGUIへの参照を確認します。CanvasにEventSystemがあることを確認します。 |
| プロトタイプの動作が遅すぎる | Update内のDebug.Logを削除します。大量のInstantiate/Destroyを行っていないことを確認します(必要に応じて基本的なプールに切り替えます)。 |