Unity 6 入門チュートリアル:Cinemachineでゲームのカメラを自由に動かそう!
対象:Unity 6 / Cinemachine 3.x / C#初学者向け
Unityには、ゲームのカメラ操作を簡単に実現できる Cinemachine(シネマシン) という公式パッケージがあります。
通常、カメラをプログラムで動かすには、プレイヤーの位置を取得し、カメラの位置や角度を計算する必要があります。
しかし、Cinemachineを使えば、Inspectorで設定するだけでプレイヤーを追いかけるカメラや、映画のように視点を切り替える演出を作れます。

今回は3Dゲームを題材に、次の機能を段階的に学びます。
- STEP 1:Cinemachineをインストールする
- STEP 2:プレイヤーを追いかけるカメラを作る
- STEP 3:カメラの追従速度や位置を調整する
- STEP 4:2台のカメラを滑らかに切り替える
- STEP 5:C#スクリプトでカメラを切り替える
- 発展:Timelineを使って映画のような演出を作る
1. Cinemachineの仕組み
最初に理解しておきたいのは、Cinemachine CameraとMain Cameraの役割の違いです。

| 要素 | 役割 |
|---|---|
| Main Camera | 実際のゲーム画面を描画する |
| Cinemachine Brain | 使用するカメラを決定し、切り替えを処理する |
| Cinemachine Camera | 追従対象、位置、角度などを設定する |
基本的に、複数のCinemachine Cameraを作っても、実際の描画に使うMain Cameraは1台で構いません。追従カメラの作り方、カメラの切り替えと遷移
2. Cinemachineをインストールする(STEP 1)
Unity 6で新しい3Dプロジェクトを作成してください。
次の順に操作します。
Window → Package Management → Package Managerを開く- パッケージの一覧を
Unity Registryに切り替える Cinemachineを検索するInstallを押す

インストール後は、GameObject → Cinemachine にカメラ作成用のメニューが表示されます。
Unity 6ではCinemachine 3.xを使用する構成を想定します。古いCinemachine 2.xのチュートリアルとはメニュー名やInspectorが異なります。Unity公式マニュアル
3. プレイヤーを用意する
最初は複雑なキャラクターを使わず、Capsuleをプレイヤーの代わりにします。
GameObject → 3D Object → Capsule
名前を Player に変更します。
Transformの位置は次のように設定します。
| オブジェクト | Position | Scale |
|---|---|---|
| Player | (0, 1, 0) | (1, 1, 1) |
| Plane(床) | (0, 0, 0) | (5, 1, 5) |
Capsuleの下端が床と接する状態になります。
次に、プレイヤーを自動で左右に動かすスクリプトを作成します。
AutoMove.cs
using UnityEngine;
public class AutoMove : MonoBehaviour
{
[SerializeField]
private float speed = 2f;
[SerializeField]
private float distance = 5f;
private Vector3 startPosition;
private void Start()
{
startPosition = transform.position;
}
private void Update()
{
float x = Mathf.PingPong(
Time.time * speed,
distance * 2f
) - distance;
transform.position =
startPosition + Vector3.right * x;
}
}
このスクリプトをPlayerに追加します。
再生すると、Playerが左右を往復します。ここで使用しているのはtransform.positionを直接変更するシンプルな教材用の移動であり、物理演算による移動ではありません。
4. プレイヤーを追いかけるカメラを作る(STEP 2)
GameObject → Cinemachine → Targeted Cameras → Follow Camera を選びます。
作成されたオブジェクトを CM_FollowCamera に変更します。
Inspectorで次の設定をします。
| 項目 | 設定 |
|---|---|
| Tracking Target | Player |
| Position Control | Follow |
| Rotation Control | Rotation Composer |
Follow Cameraを使って作成した場合、Position ControlやRotation Controlは初期設定済みの場合があります。
Unity公式でも、Follow Cameraは追従対象をTracking Targetに指定して使用する方法として案内されています。追従カメラの作り方、Cinemachine Cameraの公式マニュアル
Follow Cameraを作成すると、Rotation Controlには Rotation Composer が設定されます。Rotation Composerは、Tracking Targetが画面内の狙った位置に映るように、カメラの向きを自動で調整する部品です。
通常、Cinemachine Cameraを作成するとMain Cameraに Cinemachine Brain が追加されます。念のため、Main CameraのInspectorで追加されていることを確認してください。

カメラの位置を調整する
FollowコンポーネントのFollow Offsetを、まず次のようにしてみてください。
X = 0
Y = 3
Z = -6
これはPlayerを基準にしたカメラ位置のずれを表します。対象の回転やFollowのBinding Modeによって実際の配置方向は変わるため、今回はPlayerの回転を変更せずに試します。
再生すると、Playerが動くのに合わせてカメラも追いかけます。
5. カメラの追従を滑らかにする(STEP 3)
Cinemachineの大きな特徴が Damping(ダンピング) です。
Dampingは、カメラが目標にどのくらい滑らかに追いつくかを調整します。
Cinemachine 3.xでは、位置の追従は Position Damping(X・Y・Zの3軸)で調整します。カメラとプレイヤーの基本的な距離はFollow Offsetで決め、Position Dampingは「追従の反応の速さ」を決める値です。向きの追従を調整するRotation Composerにも別のDampingがあります。
Dampingが小さい
カメラが素早く追従する

Dampingが大きい
カメラが遅れて滑らかに追従する

FollowコンポーネントのPosition Dampingを変更し、違いを比較してみましょう。
最初は0.2、1、3などに変更して比較すると、動きの違いを理解しやすくなります。
操作して確認:Position Damping
次のデモで、Position Dampingの値による追従の遅れを模式的に確かめられます。スライダーを0〜3の範囲で動かし、0.2、1、3付近で、青い対象とオレンジのカメラ枠の動きを比べてみましょう。これは理解を助ける模式図であり、Unity内部の計算そのものではありません。実際の動きはUnityで確認してください。
Position Dampingの値を変えて、カメラ枠が対象に追いつくまでの遅れを比べます。Unityの実際の動作を厳密に再現したものではありません。
6. 2台目のカメラを作る(STEP 4)
次は、2つのカメラを切り替える演出を作ります。
1台目の CM_FollowCamera を複製し、名前を CM_SideCamera にします。
2台目もTracking TargetはPlayerに設定し、Follow Offsetを変えます。
| 設定 | 1台目 | 2台目 |
|---|---|---|
| 名前 | CM_FollowCamera | CM_SideCamera |
| Tracking Target | Player | Player |
| Follow Offset | (0, 3, -6) | (6, 3, 0) |
| Position Damping | 1 | 1 |
これで、背後からの視点と横方向からの視点ができます。
まず CM_SideCamera のGameObjectを非アクティブにしておきます。
カメラの切り替えを滑らかにする
Main Camera のInspectorで Cinemachine Brain を確認してください。
次のように設定します。
- Default Blend:Ease In Out
- Time:1秒
この設定により、カメラを切り替えたときに1秒間かけて滑らかに視点が移動します。CinemachineのBlendは画面のフェードではなく、カメラ位置や向きなどを補間する仕組みです。カメラの切り替えと遷移、Cinemachine Brain
切り替えるカメラは、GameObjectの有効・無効のほかに、Cinemachine Cameraの Priority(優先度) でも決まります。有効なカメラのうちPriorityが最も高いものをBrainが選び、同じ値の場合は最後に有効になったものが選ばれます。

7. C#でカメラを自動的に切り替える(STEP 5)
今度は、3秒ごとに視点を切り替えてみましょう。
空のGameObject CameraManager を作り、次のスクリプトを追加します。
CameraSwitcher.cs
using System.Collections;
using UnityEngine;
public class CameraSwitcher : MonoBehaviour
{
[SerializeField]
private GameObject cameraA;
[SerializeField]
private GameObject cameraB;
[SerializeField]
private float interval = 3f;
private IEnumerator Start()
{
if (cameraA == null || cameraB == null)
{
Debug.LogError("カメラを設定してください");
yield break;
}
if (cameraA == cameraB)
{
Debug.LogError("異なる2台のカメラを設定してください");
yield break;
}
cameraA.SetActive(true);
cameraB.SetActive(false);
while (true)
{
yield return new WaitForSeconds(interval);
cameraA.SetActive(false);
cameraB.SetActive(true);
yield return new WaitForSeconds(interval);
cameraB.SetActive(false);
cameraA.SetActive(true);
}
}
}
Inspectorで次のように設定します。
| フィールド | 設定 |
|---|---|
| Camera A | CM_FollowCamera |
| Camera B | CM_SideCamera |
| Interval | 3 |
再生すると3秒ごとにカメラが切り替わります。
カメラ切り替えの流れ
| 経過時間 | 有効なカメラ | 視点 |
|---|---|---|
| 開始〜3秒 | Camera A(CM_FollowCamera) | 背後視点 |
| 3秒〜6秒 | Camera B(CM_SideCamera) | 横視点 |
| 6秒〜 | Camera Aへ戻る(以後3秒ごとに繰り返し) | 背後視点 |
3秒ごとに切り替えを開始。BrainのDefault Blendが1秒なら、通常は切り替え開始から約1秒間で遷移します。
ここで重要なのは、スクリプトが直接Main Cameraの位置を動かしていないことです。
スクリプトは、使用するCinemachine Cameraを切り替えているだけです。実際のカメラ移動はCinemachine Brainが担当します。
なお、今回はGameObjectの有効・無効で切り替えましたが、Priority(優先度)を変更する方法もあります。カメラの切り替えと遷移
8. 発展:Timelineで映画のような演出を作る
Cinemachineは、UnityのTimelineと組み合わせるとさらに便利になります。
例えば、次のようなオープニング演出です。
10秒間のオープニング演出例
| 時間(例) | ショット | 内容 |
|---|---|---|
| 0〜4秒 | 全景 | ステージ全体を見せる |
| 4〜7秒 | 接近 | プレイヤーに近づく |
| 7〜10秒 | 追従 | 通常のゲームカメラ(追従カメラ)に移る |
最初にステージ全体を見せ、プレイヤーに近づき、最後に通常のゲームカメラに移る構成です。
作成手順は次のとおりです。
- 空のGameObject
CutsceneDirectorを作る Window → Sequencing → Timelineを開くCutsceneDirectorを選択してTimelineアセットを作る- Cinemachine Trackを追加する
- トラックにMain CameraのCinemachine Brainをバインドする
- Cinemachine Shotクリップを配置し、それぞれ使用するCinemachine Cameraを指定する
- クリップを重ねると、カメラ間を滑らかに切り替えられる
Timelineによる制御中は、通常のPriorityによるカメラ選択よりTimelineの指定が優先されます。CinemachineとTimeline
9. よくあるトラブル
| 現象 | 確認すること |
|---|---|
| カメラが追従しない | Tracking TargetにPlayerが設定されているか |
| 画面が変わらない | Main CameraにCinemachine Brainがあるか |
| カメラ切り替えが一瞬 | Default BlendがCutになっていないか |
| 思った位置から映らない | Follow Offset、Binding Mode、Rotation Controlを確認 |
| 切り替えが動かない | スクリプトの参照、GameObjectの有効状態を確認 |
10. 練習課題
ここまでの内容を定着させるために、次の課題に挑戦してみましょう。
CM_FollowCameraのFollow Offsetを変えて、「高い位置から見下ろす視点」と「低い位置から見上げる視点」を作り、見え方の違いを一言ずつメモする- Position Dampingを0、1、3に変えて再生し、プレイヤーの往復に対するカメラの遅れ方の違いを観察する
- Default Blendを
Cutに変えて、切り替えが一瞬になることを確認する。確認したらEase In Outに戻す - 正面から映す3台目のカメラ
CM_FrontCameraを追加し、A → B → C → A の順に切り替わるようCameraSwitcherを改造する - (発展)GameObjectの有効・無効ではなく、Priorityを変更する方法で切り替えを実装する
確認ポイント:スクリプトからMain Cameraの位置を直接動かしていないこと。カメラの動きはすべてCinemachine Brainが担当していること。
まとめ
Cinemachineを使うと、カメラ位置の計算を自分で実装しなくても、さまざまなカメラ演出を作成できます。
今回学んだのは、カメラ追従、Damping、複数カメラの切り替え、ブレンド、そしてTimelineとの連携です。
特に初学者には、Main Cameraは実際に映すカメラ、Cinemachine Cameraは撮影方法を指示するカメラ、という考え方が重要です。
次の発展教材としては、マウスやゲームパッドで視点を回転させるカメラ、壁にめり込まないカメラ、2D横スクロールゲーム用のカメラが適しています。
公式資料:Unity Cinemachine 3.1 マニュアル
※ Unity 6 / Cinemachine 3.xを基準に構成。実際のUnity Editorでの動作確認は未実施です。インストールされたパッケージの版によって、一部のメニュー表示は異なります。










ディスカッション
コメント一覧
まだ、コメントがありません