Unity 2Dで「カメラを背景からはみ出させない」方法
Cinemachine Confiner 2D 最新チュートリアル
はじめに
2Dゲーム開発で「プレイヤーを追いかけるカメラが背景の外まで映ってしまう」経験はありませんか?
この記事では、Unity 6 + Cinemachine 3.xを使って、カメラが必ず背景内に収まる設定方法を、初心者の方にも分かりやすく解説します。
完成イメージ
- プレイヤーを操作しても、カメラは背景画像の範囲からはみ出さずに追従します。
- 2Dゲームでよくある「画面の見切れ」や「マップ外が映る」問題を一発で解消できます。
準備・必要なもの
- Unity 6.0.0以降(この記事は6000.0以降を前提)
- Cinemachine 3.1.3(Package Managerからインストール)

シーン構成
最終イメージ:次からの項で実装していきます
- Background(背景画像)カメラが移動できる範囲を定義します。
- Player(キャラクター)
- CinemachineCamera(仮想カメラ:Cinemachine 2D Camera)
操作手順
1. 背景にBox Collider 2Dを追加
- HierarchyでBackgroundオブジェクトを選択します。
- Inspectorから「Add Component」→「Box Collider 2D」を追加します。
- Box Collider 2Dのサイズを背景画像に合わせて調整してください。

2. Cinemachine 2Dカメラを作成
- Hierarchy上で右クリックします。
- 「Cinemachine > Targeted Cameras > 2D Camera」を選択します。

3. Cinemachine Confiner 2Dの追加と設定
- 作成したCinemachineCameraを選択します。
- Inspector下部の「Add Extension」ボタンをクリックします。
- リストから「CinemachineConfiner2D」を選択します。

- Inspectorで「Bounding Shape 2D」に「Background(Box Collider 2D)」を指定します。
- DampingやSmoothing Distanceは初期値のままで構いません(必要に応じて微調整します)。

4. カメラのターゲットにPlayerを指定
- CinemachineCameraの「Follow」欄にPlayerオブジェクトをドラッグ&ドロップします。

5. 実行と動作確認
- ゲームを再生し、プレイヤーを動かしてみてください。
- カメラはBox Collider 2Dで囲まれた背景範囲の中だけを追従し、背景の外には出ません。
よくある質問・トラブルシューティング
Q. カメラが端でピタッと止まらず、滑るように見える場合は?
A. DampingやSmoothing Distanceを調整してください。
Q. カメラの映る範囲が背景より大きくて外が見切れる場合は?
A. 「Oversize Window」は通常OFF、Box Collider 2Dのサイズも微調整しましょう。
Q. 背景が複雑な形でも対応できる?
A. Polygon Collider 2Dも利用可能です。
Q. 背景のColliderが子オブジェクトでも大丈夫?
A. 問題ありません。ただしColliderが有効かどうかは確認してください。
参考リンク
まとめ
Cinemachine Confiner 2Dを使えば、2Dゲームで「カメラのはみ出し」問題がすぐに解決できます。
ぜひ自分のUnityプロジェクトで試してみてください!

● 背景画像やマップのサイズにピッタリ合わせるコツ
- Box Collider 2DはInspector上で手動調整できますが、背景画像のSprite Rendererサイズと完全一致させたい場合は、Colliderの「Edit Collider」でガイドを見ながら合わせると便利です。
- 背景画像自体が動的に変わる(例:マップ切り替え)場合は、Colliderもスクリプトで自動調整すると確実です。
● 複雑な地形・ステージへの応用
- 直線的な矩形範囲でなくてもPolygon Collider 2Dを使えば、L字・複雑なエリアにも対応できます。
- 複数エリア(マップ)の切り替え時は、ConfinerのBounding Shapeを切り替えることで柔軟に管理できます。
● カメラのズーム・移動速度調整
- CinemachineCameraの「Orthographic Size」をスクリプトで変更すれば、ズームイン・ズームアウト演出もOK。
- 端で急にカメラが止まるのが気になる場合は「Damping」「Smoothing Distance」を活用しましょう。
● 移動ターゲットを途中で切り替えたい
- 「Follow」対象はスクリプトから自由に差し替え可能。イベントシーンなどで追いかける対象を変える演出もできます。
よくあるエラーとその解決法
● エラー1:カメラが背景外まで移動してしまう
- 原因1: Bounding Shape 2Dに指定しているColliderが正しくセットされていない→ InspectorでCollider参照が外れていないか再確認。
- 原因2: Box Collider 2Dのサイズが背景より小さい→ 「Edit Collider」で背景全体をカバーするように調整。
● エラー2:「Confiner 2D Extension is missing bounding shape」などの警告が出る
- 原因: Confiner 2DにColliderが未設定→ Inspectorの「Bounding Shape 2D」が空欄の場合、必ずBackgroundオブジェクトのBox Collider 2Dをドラッグして指定。
● エラー3:カメラの映る範囲が広すぎて見切れてしまう
- 原因: カメラの「Orthographic Size」が大きすぎる、もしくはColliderが小さすぎる→ カメラサイズを小さくするか、Colliderを広げて調整。
- Oversize Windowオプションが有効になっている場合、画角がはみ出しても強制的に見せる仕様になるので、原則OFF推奨。
● エラー4:Colliderを複数指定しても動かない
- 注意: Bounding Shape 2Dに指定できるのは一つのColliderのみ→ 複数マップを切り替えたい場合は、対象マップのColliderを都度切り替える実装を。
● エラー5:Play中にColliderを変更してもカメラ範囲が更新されない
- 解決法: CinemachineConfiner2D.InvalidateCache() をスクリプトから呼び出すことで、Colliderの変更を即時反映できます。
// 例: 背景のColliderを切り替えた直後
var confiner = virtualCamera.GetComponent<CinemachineConfiner2D>();
confiner.InvalidateCache();
裏技・上級者向けTips
- カメラ追従に「Group Framing」も併用可能→ 複数のキャラクターやターゲットを常に画面内に入れたい場合は「Cinemachine Target Group」+「Confiner 2D」の組み合わせが強力です。
- イベント時にカメラを一時停止したいとき→ CinemachineCameraの「Follow」や「LookAt」を一時的に外す/他の空オブジェクトに切り替える方法も便利です。
まとめ
Cinemachine Confiner 2Dは、工夫次第で2Dゲームの「自然なカメラワーク」や「特殊な演出」も柔軟に実現できます。
トラブルがあっても基本的にはColliderの設定とInspectorの再確認が解決の糸口です。
困ったら本記事のエラー集を見返してみてください!
ディスカッション
コメント一覧
まだ、コメントがありません