Unity 2D について
Unity 2D は、Unity 6+での2Dゲーム開発を支援するスキルです。レンダリング、物理、Tilemap、カメラ、スプライト、ゲームプレイの定番パターンを案内します。
主な機能
- 01URP 2D Rendererの設定
- 02TilemapとRule Tileの活用
- 032D物理の設定
- 04Cinemachineカメラの設定
- 05スプライトのインポートとアトラス最適化
- 062Dゲームプレイパターンの案内
活用シーン
- 01Tilemapを使ったプラットフォームレベルの構築
- 02プレイヤーと地形の2D衝突設定
- 03ピクセルアートのスプライトとカメラの調整
- 04アトラスによるスプライト描画呼び出しの削減
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ juliankerignard/ unity-skills --skill unity-2dインストール後、Claude Code で/unity-2dを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/2d-patterns.md2d-advanced.md2d-rendering.md詳細
Unity 2D
このスキルでできること
Unity 6+ での 2D ゲーム開発をガイドします。Tilemap と Rule Tile のセットアップ、2D 物理(Rigidbody2D、Collider2D)、スプライトと Sprite Atlas の管理、URP を使った 2D ライティング(Light2D、Shadow Caster 2D)、Cinemachine によるカメラ設定、ゲームプレイのパターン(プラットフォーマー、トップダウン、パズル)を扱います。ピクセルアート、パララックススクロール、Tilemap の最適化もカバーします。
前提条件
- 2D Renderer として設定された URP を備えた Unity 6.0+
- 2D Tilemap Extras パッケージ(Rule Tile、Animated Tile)
- 2D カメラ用の Cinemachine パッケージ
- Sprite Swap が必要な場合は 2D Sprite および 2D Animation パッケージ
クイックスタート
- URP 2D を設定する:URP Renderer Asset に 2D Renderer Data を追加します。プロジェクトの Graphics Settings で割り当てます。
- Tilemap を作成する:GameObject > 2D Object > Tilemap > Rectangular を選択します。Tile Palette(Window > 2D > Tile Palette)を開いてペイントします。
- 物理を追加する:衝突用 Tilemap に Tilemap Collider 2D と Composite Collider 2D を追加します。Tilemap に Rigidbody2D(Static)を設定します。
- カメラを設定する:CinemachinePositionComposer を含む CinemachineCamera を追加します。Follow にプレイヤーを設定します。CompositeCollider2D を使って境界を設定した CinemachineConfiner2D を追加します。
- スプライトをインポートする:Filter Mode は Point(ピクセルアート)または Bilinear に設定します。PPU はタイルサイズ(16、32 など)にします。バッチ処理用に Sprite Atlas を作成します。
判断フローチャート
Type de jeu 2D ?
|
+-- Platformer ?
| +-- Classique ----------> Rigidbody2D + Tilemap + Coyote time
| | (voir references/2d-patterns.md et 2d-advanced.md)
| +-- Metroidvania -------> idem + abilities unlock
| + Cinemachine Confiner2D par zone
|
+-- Top-down ?
| +-- Action (Zelda) -----> Rigidbody2D, 8-dir, GravityScale=0
| +-- RPG / exploration --> idem + Tilemap layers + dialogue system
|
+-- Puzzle / match ?
| +-- Grid-based ---------> Tilemap ou Grid custom, pas de physics
|
+-- Visual novel / UI-heavy ?
| +-- --------------------> UI Toolkit (/uitk), pas de physics 2D
|
+-- Besoin de lumiere / ombres ?
+-- --------------------> URP 2D Renderer + Light2D
(voir references/2d-rendering.md)
ステップごとのガイド
ステップ 1:URP 2D Renderer のセットアップ
2D Renderer Data アセット(Create > Rendering > URP 2D Renderer)を作成します。URP Asset で、デフォルトの Renderer として割り当てます。カメラのインスペクターで、Renderer 2D が使用されていることを確認します。
ステップ 2:Tilemap の作成
1 つの Grid 上で レイヤー に分けて整理します:
Tilemap_Background(Sorting Layer: Background、Order 0)Tilemap_Ground(Sorting Layer: Tilemap、Order 0)+ Tilemap Collider 2D + Composite Collider 2DTilemap_Foreground(Sorting Layer: Foreground、Order 0)
プラットフォームや壁のオートタイルには Rule Tile(2D Tilemap Extras)を使用します。
ステップ 3:2D 物理の設定
プレイヤーには Rigidbody2D(Dynamic、Freeze Rotation Z)を設定します。CapsuleCollider2D または BoxCollider2D を追加します。プラットフォームには、Rigidbody2D Static とともに Composite Collider 2D(Geometry Type = Polygons)を設定します。摩擦や反発には Physics Material 2D を使用します。
ステップ 4:Cinemachine カメラのセットアップ
CinemachinePositionComposer(Dead Zone、Lookahead)を含む CinemachineCamera を設定します。レベルの境界を定義する PolygonCollider2D/CompositeCollider2D に CinemachineConfiner2D を追加します。ピクセルアートでは Pixel Perfect Camera(2D Pixel Perfect パッケージ)を有効にします。
ステップ 5:スプライトのインポートと最適化
スプライトシートをインポートします。Sprite Editor を設定してスライスします(Grid by Cell Size)。ゾーンまたはカテゴリごとに Sprite Atlas を作成します(references/2d-rendering.md を参照)。ピクセルアートでは、Filter = Point、Compression = None、PPU = タイルサイズにします。
厳守事項
- 必ず
Rigidbody2D.linearVelocity(Unity 6+)を使用し、velocityは使用しないでください - 必ず 物理処理は
FixedUpdate、入力処理はUpdateに記述してください - 必ず 衝突用 Tilemap では Composite Collider 2D を使用してください
- 必ず Sorting Layer を整理してください(Background < Tilemap < Characters < Foreground < UI)
- 絶対に Tilemap に Rigidbody2D Dynamic を設定しないでください(Static または Kinematic を使用してください)
- 絶対に 本番環境で Sprite Atlas を使わずに個別のスプライトを使用しないでください
- 絶対に 同じ GameObject に Rigidbody 3D と 2D を混在させないでください
- 絶対に スプライトの反転に負のスケールを使わず、
SpriteRenderer.flipXを使用してください
関連スキル
/proto:2D ゲームプレイの高速プロトタイピング/unity-code-gen:C# スクリプト(コントローラー、スポーナー)の生成/anim:Animator、Sprite Animation、Timeline/shader:カスタム 2D シェーダー(アウトライン、ディゾルブ、水)/perf-audit:ドローコール、バッチング、Sprite Atlas の最適化
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| スプライトが表示されない | Sorting Layer/Order の設定が正しくない | SpriteRenderer の Sorting Layer と Order in Layer を確認してください |
| Tilemap のコライダーを通り抜ける | Composite Collider がない | Tilemap に Composite Collider 2D と Rigidbody2D Static を追加してください |
| プレイヤーが壁で滑る | 横のタイルとの摩擦 | プレイヤーに Friction=0 の Physics Material 2D を設定してください |
| 2D ライトに効果がない | 2D Renderer がない | URP Asset で 2D Renderer Data が使用されていることを確認してください |
| スプライトがぼやける(ピクセルアート) | インポート設定が正しくない | Filter Mode = Point、Compression = None に設定してください |
| カメラがカクつく | FixedUpdate の外で移動している | Rigidbody2D の Interpolation = Interpolate に設定してください |
| タイル間に隙間が見える | エッジのアンチエイリアシング | PPU を統一し、Pixel Snap を有効にして、端数のスケールを使用しないでください |
| ドローコールが多い | バッチングされていない | Sprite Atlas を作成し、URP の Dynamic Batching を確認してください |