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の作成

  1. Hierarchyで右クリック → Cinemachine → Targeted Cameras → Target Group Camera
  2. すると以下が自動生成されます:
    • CinemachineCamera(Virtual Camera, Hierarchyに表示)
    • Target Group(CinemachineTargetGroupコンポーネント付き、別オブジェクト)

4. Target Groupにキャラクター登録

  1. Target Groupオブジェクトを選択
  2. Inspectorの「CinemachineTargetGroup」→「Targets」リストに、Player1/Player2のTransformをドラッグ&ドロップ

5. Virtual Camera側の設定確認

  • CinemachineCameraを選択し、Inspectorで
    • 「Tracking Target」等がTarget Groupになっていることを確認

6. Cinemachine Group Framingの有効化・設定(超重要)

  1. CinemachineCameraのInspector下部「Cinemachine Group Framing」セクションを探す
  2. 「Enable」(有効化)チェックボックスをONにする
  3. 必要に応じて以下を調整:
    • 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回

C#,Cinemachine,Unity,Unity6

Posted by hidepon