2Dで「2キャラクターを常に画面内に収めるカメラ制御」セットアップガイド
目次
【概要】
Unity 6とCinemachine 3.x環境では、Target Group Cameraを使い、複数キャラを自動で画面内に収める2Dカメラを構築できます。「Cinemachine Group Framing」がデフォルト無効なため、必ず有効化して設定することがポイントです。
1. パッケージ・プロジェクト準備
- Unity 6プロジェクト(2D/URPどちらもOK)を作成
- 「Cinemachine」パッケージ(例:3.1.3)をPackage Managerからインストール
2. シーンにキャラクターを配置
- 2Dオブジェクト(Sprite等)でPlayer1、Player2を作成し、適当な位置に配置
3. Target Group Cameraの作成
- Hierarchyで右クリック → Cinemachine → Targeted Cameras → Target Group Camera
- すると以下が自動生成されます:
- CinemachineCamera(Virtual Camera, Hierarchyに表示)
- Target Group(CinemachineTargetGroupコンポーネント付き、別オブジェクト)
4. Target Groupにキャラクター登録
- Target Groupオブジェクトを選択
- Inspectorの「CinemachineTargetGroup」→「Targets」リストに、Player1/Player2のTransformをドラッグ&ドロップ
5. Virtual Camera側の設定確認
- CinemachineCameraを選択し、Inspectorで
- 「Tracking Target」等がTarget Groupになっていることを確認
6. Cinemachine Group Framingの有効化・設定(超重要)
- CinemachineCameraのInspector下部「Cinemachine Group Framing」セクションを探す
- 「Enable」(有効化)チェックボックスをONにする
- 必要に応じて以下を調整:
- Framing Mode:「Horizontal And Vertical」
- Dead Zone Width/Height:0(=必ず画面内)
- Ortho Size Range:自動ズームの最小・最大範囲
- Damping:追従のなめらかさ
7. メインカメラの確認
- Main CameraのInspectorで「Projection(投影)」がOrthographic(正投影)であることを確認
8. キャラクター移動テスト(新Input System例)
using UnityEngine;
using UnityEngine.InputSystem;
public class SimpleMoveNewInput : MonoBehaviour
{
public float speed = 5f;
private Vector2 moveInput = Vector2.zero;
private PlayerControls controls;
private void Awake()
{
controls = new PlayerControls();
controls.Player.Move.performed += ctx => moveInput = ctx.ReadValue<Vector2>();
controls.Player.Move.canceled += ctx => moveInput = Vector2.zero;
}
private void OnEnable() => controls.Player.Enable();
private void OnDisable() => controls.Player.Disable();
void Update()
{
Vector3 delta = new Vector3(moveInput.x, moveInput.y, 0) * speed * Time.deltaTime;
transform.position += delta;
}
}
InputActionsアセットの設定・C#クラス生成はUnity公式マニュアル参照
9. 動作確認
- ゲームを再生し、キャラクターを動かす
- 2人が離れるとカメラがズームアウト、近づくとズームインし、必ず両者が画面内に収まることを確認
10. シーン構成例(Hierarchy)
Main Camera(Cinemachine Brain付き/Orthographic)
CinemachineCamera(Virtual Camera)
Target Group(CinemachineTargetGroup付き)
Player1(SpriteRenderer付き)
Player2(SpriteRenderer付き)

11. 補足
- 「Cinemachine Group Framing」は必ず明示的にEnableにすることが必須
- 3人以上のキャラクターにもそのまま拡張可能
- WeightやRadiusでカメラ追従の印象を微調整できる
- Unity 6+Cinemachine 3.x標準の「Target Group Camera」はVirtual CameraとTarget Groupを別オブジェクトとして生成するのが仕様
12. 公式リファレンス
【まとめ】
Unity 6+Cinemachine 3.xの最新仕様では:
- 「Target Group Camera」でVirtual CameraとTarget Groupが自動で別々に作成される
- 「Cinemachine Group Framing」はデフォルトで無効なので、必ず有効化(Enable)して使う
- これで「2キャラクター(または複数)が常に画面内に収まる」ダイナミックな2Dカメラが実現
訪問数 24 回, 今日の訪問数 1回
ディスカッション
コメント一覧
まだ、コメントがありません