【Unity 6】CinemachineとTimelineで作るカメラ演出|首振りからFollowまで
Unity 6とCinemachine 3.xで、Timelineを使ったカメラ演出を作ります。柱・地面・Cubeをカラフルに色分けした舞台を用意し、2台のカメラを切り替える「首振り版」から、プレイヤーに付いて動く「Follow版」まで進めます。
Timelineで映画のような演出を作る
Cinemachineは、UnityのTimelineと組み合わせるとさらに便利になります。Timelineに2台のCinemachine Cameraを並べると、カメラの切り替えを時間で指定できます。この章では、その場で首を振るカメラ(首振り版)を作ってから、プレイヤーに付いて動くカメラ(Follow版)に発展させます。
Timelineそのものの使い方(ウィンドウの開き方、トラックとクリップ、音の追加)は、【Unity 6】Timeline入門|Cubeを動かして、C#から演出を再生してみようで詳しく解説しています。この章はTimelineの準備から書いてあるので、その記事を読んでいない方もそのまま進められます。
完成イメージ
3秒の短い演出を作ります。1台目のカメラ(WideCamera)が舞台全体を映し、途中から2台目のカメラ(CloseCamera)へ1秒かけてなめらかに切り替わります。プレイヤーは演出の間、AutoMoveで左から右へ動き続けます。
| 時間 | 映るカメラ | 画面の見え方 |
|---|---|---|
| 0〜1秒 | WideCamera | 斜め上から舞台全体を見下ろす |
| 1〜2秒 | WideCamera → CloseCamera(ブレンド) | カメラが下がりながら近づく |
| 2〜3秒 | CloseCamera | 低い位置からプレイヤーを見る |

準備:舞台を用意する
この記事では、CinemachineとTimelineの2つのパッケージを使います。Package Managerで、どちらも入っているか確かめます。
Window→Package Management→Package Managerを開きます。- パッケージの一覧を
Unity Registryに切り替えます。 CinemachineとTimelineを検索します。まだ入っていないほうはInstallを押します。すでに入っている場合は、そのまま進めて構いません。
背景が無いと、カメラが動いても画面の変化が分かりません。先に、地面と柱を置いて色を付けます。Unity 6(6000.6.7f1)とCinemachine 3.xで動作を確認しています。Cinemachine 3.xを入れたUnity 6のプロジェクトで進めます。
- Hierarchyで右クリック →
3D Object→Planeを作り、名前をGroundにします。Inspectorの Transform を Position(0, -0.5, 0)、Scale(3, 1, 3)にします。 3D Object→Cubeを作り、名前をPillar1にします。Position(-4, 0.5, 3)、Scale(1, 2, 1)にします。高さが2の柱を地面に立たせるため、中心のYを 0.5 にしています。Pillar1をCtrl + D(MacではCmd + D)で複製し、Pillar2〜Pillar5にします。X を-2、0、2、4に変えます(Y と Z はそのままです)。- Projectウィンドウで右クリック →
Create→Materialを3つ作り、GroundGreen、PillarOrange、CubeBlueという名前にします。Inspectorの Base Map の色を、それぞれ5A8F4A、E8833A、3A7BE8にします。 GroundGreenをGroundに、PillarOrangeをPillar1〜Pillar5にドラッグして付けます。- 3D Object → Cube を作り、名前を
Playerにします。Position を(0, 0, 0)にして、CubeBlueをドラッグして付けます。柱(Z が3)より手前にあり、高さ1のCubeが地面にちょうど乗ります。 - Projectウィンドウで右クリック → Create →
MonoBehaviour Scriptを選び、名前をAutoMoveにします。ダブルクリックで開き、次のコードに書き換えます。
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;
}
}
- AutoMove を Player にドラッグして付けます。再生するとPlayerが左から右へ(そして往復して)動きます。
AutoMoveは、Playerを左右に往復させる教材用の簡単なスクリプトです。Timelineのプレビュー(再生ボタンを押さずに時間を動かす確認)では動かないので、動きを見るときは再生してください。

首振り版:2台のカメラをTimelineで切り替える
まず、カメラの位置は固定して、常にプレイヤーの方を向く設定にします。プレイヤーが動くと、カメラはその場で首を振って追いかけます。
カメラ2台を作る
GameObject→Cinemachine→Cinemachine Cameraを2回選び、2つ作ります。名前をWideCameraとCloseCameraにします。Hierarchyではどちらも一番外側のオブジェクトにしておきます(Main Cameraや他のカメラの子にしません)。WideCameraの Transform を Position(-7, 8, -9)にします。CloseCameraの Transform を Position(3, 1, -6)にします。
2台とも、Inspectorで次のようにします。
- Tracking Target にプレイヤーをドラッグする
- Lens の Field Of View を
60にする - Position Control を
Noneにする - Rotation Control を
Hard Look Atにする

Tracking Targetを指定するだけでは、カメラは動きも回転もしません。Rotation Control の Hard Look At で「ターゲットの方を向く」、Position Control の None で「TransformのPositionの場所に置く」を指示しています。
Timelineを用意する
Timelineの基本操作を詳しく知りたい方は、【Unity 6】Timeline入門|Cubeを動かして、C#から演出を再生してみようもご覧ください。
- 空のGameObject
CutsceneDirectorを作ります。 Window→Sequencing→TimelineでTimelineウィンドウを開きます。メニューに Timeline が見当たらないときは、Package Managerで Timeline を入れてください。- Hierarchyで
CutsceneDirectorを選び、TimelineウィンドウのCreateを押して保存します。 - Timelineウィンドウの左側(トラック名が並ぶ場所)の空白で右クリック →
Cinemachine Trackを追加します。 - トラックの右側のスロットに、Hierarchyの
Main Cameraをドラッグします。Cinemachine Brain は Main Camera に付いています。
Timelineを作る(Create を押す)ときは、Hierarchyで CutsceneDirector を選んでから押してください。検証では、Cinemachine Cameraを選んだまま押すと、そのカメラにPlayable Directorが付き、CinemachineCamera should not be a child of CinemachineCamera or CinemachineBrain というエラーが表示されました。このエラーが出たときは、カメラに付いたPlayable Directorを取り除き、Cinemachine Cameraの親子関係を確認してから、CutsceneDirector を選び直してTimelineを作り直します。なお、これは今回の検証環境で確認した例で、必ず起きるという意味ではありません。
ショットを並べる
- Cinemachine Trackで右クリック →
Add Cinemachine Shot Clipでクリップを2つ作ります。 - 1つ目のクリップを選び、Inspectorの Cinemachine Shot のカメラ欄に
WideCameraをドラッグします。Start0、Duration2にします。 - 2つ目のクリップには
CloseCameraをドラッグし、Duration2、Start1にします。先にDurationを入れてからStartを入れると、クリップの長さがそろいます。 - 1秒から2秒の間でクリップが重なり、重なった部分に斜めの線が出ます。この1秒間がブレンド(切り替え)です。

確認する
Timelineのルーラー(時間の目盛り)をクリックして、Gameビューを見ます。
- 0秒:斜め上から舞台全体が見えます。
- 1.5秒:カメラが下がり、プレイヤーが画面の中央付近に残ったまま、柱が横に流れます。
- 2.5秒:低い位置のCloseCameraに切り替わっています。
この版でカメラの位置が動くのは、ブレンドの1秒間だけです。その前後は、カメラを置いたまま首だけがプレイヤーを追います。
Follow版:プレイヤーに付いて動くカメラにする
首振り版ではカメラの場所を自分で決めていました。Follow版では、カメラの場所もプレイヤーからの「相対位置」で決め、プレイヤーが動くとカメラも一緒に動きます。Cinemachineの追従カメラ(Follow)と同じ考え方です。2台目だけを変えて、ブレンドのあとはプレイヤーを追いかけるようにします。
| 項目 | 首振り版 | Follow版 |
|---|---|---|
| Position Control | None | Follow |
| カメラの位置 | TransformのPositionで決める | プレイヤーの位置 + Follow Offset |
| プレイヤーが動いたとき | 首だけが回る | カメラも移動する |
| 向いている場面 | 定点からの撮影 | 追跡シーン |
- Hierarchyで
CloseCameraを選び、Ctrl + D(MacではCmd + D)で複製して名前をFollowCameraにします。 FollowCameraの Position Control をFollowに変えます。- Follow Offset を
(0, 2, -6)にします。プレイヤーからZ方向に6手前、高さ2の位置にカメラが来ます。 - Binding Mode が
World Spaceになっていることを確かめます(初期値です)。プレイヤーが回転しても、カメラが回り込まなくなります。 - Position Damping は各軸 1 にします。これで追いかけ方が滑らかになります。
- Timelineの2つ目のクリップを選び、Hierarchyから
FollowCameraをドラッグして、カメラ欄をCloseCameraからFollowCameraに入れ替えます。クリップの名前もFollowCameraに変わります。

Followを使うと、Transformの Position に入力した値は、Follow Offsetによって上書きされます。カメラの位置を変えたいときは、Follow Offsetの数値を変えてください。
確認する
Timelineのルーラーをクリックして、Gameビューを見ます。次のようになっていれば成功です。
- 0秒:WideCameraの全景です。斜め上から柱5本とプレイヤーが見えます。
- 1.5秒:ブレンドの途中です。カメラが下がって近づき、柱が横に流れます。
- 2.5秒:FollowCameraに切り替わっています。プレイヤーのすぐ後ろ、少し上から、柱を背景にプレイヤーを見ます。
ブレンドのあとは、カメラはプレイヤーからのFollow Offsetの位置を目指して、Position Dampingの分だけ遅れながら滑らかに付いてきます。
Timelineの演出が終わったあとに映るカメラは、Cinemachine BrainがPriorityなどを見て、通常どおりに選びます。終わったあとも決まったカメラを映したいときは、そのカメラのPriorityを高くしてください。
Timelineでうまくいかないときは
| こうなった | 原因 | 直し方 |
|---|---|---|
CinemachineCamera should not be a child of CinemachineCamera or CinemachineBrain と表示される | Cinemachine Cameraが他のカメラの子になっている、またはカメラ自身にPlayable Directorが付いている | Cinemachine CameraをHierarchyの一番外側に置き、Playable Directorは CutsceneDirector だけに付ける |
Timelineウィンドウに Create だけが出ている | CutsceneDirector 以外のオブジェクトを選んでいる | CutsceneDirector を選び直す |
| Gameビューが切り替わらない | Cinemachine Shotクリップのカメラ欄が空、またはTrackにMain Cameraをバインドしていない | クリップを選んでカメラを指定し、Trackに Main Camera をドラッグする |
| カメラが動かない・回らない | Tracking Targetを指定しただけになっている | Rotation Control と Position Control を設定する |
| 切り替えが一瞬で終わる | 2つのクリップが重なっていない | クリップを重ねて、重なった長さを切り替えの秒数にする |
| Followにしたところ、入力したPositionが戻る | Follow Offsetがカメラの位置を決めている | Follow Offsetの数値を変える |
ほかのUnity・C#の記事は、学習シリーズ一覧から、学ぶ順番に探せます。










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