Unityで2Dカメラをプレイヤーに追従させたい。でも、どうやって実装すればいいか分からない。
多くの学生が最初に悩むのが、この部分です。
実は、基本的な追従は意外とシンプルに実装できます。
この記事では、Unityで2Dカメラ追従を作る方法について、滑らかに追うカメラ演出の作り方を解説します。
✨ この記事でわかること
- カメラ追跡の基本:プレイヤーにカメラを追従させる方法と、動きがガクガクする原因
- スムース追従と揺れ防止:Lerpを使った滑らかな追従とジャンプ時の揺れを防ぐ方法
- カメラの境界設定:ステージ端で止まるように制限する方法
- Cinemachineの導入:公式パッケージでより高度なカメラ制御

2Dカメラ追従は、ゲームの操作感に大きく影響します。まずは、基本的な追従から始めましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
カメラ追跡の基本実装

カメラ追従は、カメラの位置をプレイヤーの位置に合わせることで実現します。
以下のスクリプトで、基本的な追従ができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using UnityEngine; public class CameraFollow : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private Vector3 offset; void LateUpdate() { transform.position = target.position + offset; } } |
このコードで、カメラがプレイヤーを追います。
ただし、この方法だとカメラがガクガク動くことがあります。
滑らかに追従させる方法は次の章で解説します。
スムース追従の実装

スムース追従は、Lerpを使うことで実現できます。
以下のコードで、滑らかに追従するカメラができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using UnityEngine; public class SmoothCameraFollow : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private float smoothSpeed = 0.125f; [SerializeField] private Vector3 offset; void LateUpdate() { Vector3 desiredPosition = target.position + offset; Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed); transform.position = smoothedPosition; } } |
このコードで、カメラが滑らかにプレイヤーを追います。
smoothSpeedの値を変えると、追従の速度が調整できます。
0.125fだと少し遅めなので、0.2fくらいから始めるのも良いでしょう。

スムース追従は、ゲームの操作感に大きく影響します。実際に動かしながら、最適な値を探してみてください。
揺れ防止の方法

プレイヤーがジャンプする際、カメラが上下に揺れないようにします。
Y軸の追従を制限することで、揺れを防げます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using UnityEngine; public class StableCameraFollow : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private float smoothSpeed = 0.125f; [SerializeField] private Vector3 offset; void LateUpdate() { Vector3 desiredPosition = target.position + offset; desiredPosition.y = transform.position.y; // Y軸は固定 Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed); transform.position = smoothedPosition; } } |
これで、カメラは横方向のみ追従し、縦方向は固定されます。
これにより、ジャンプ時の揺れを防げます。
カメラの境界設定

カメラが動ける範囲を制限することで、ステージの端でカメラが止まります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; public class BoundedCameraFollow : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private float smoothSpeed = 0.125f; [SerializeField] private Vector3 offset; [SerializeField] private float minX = 0f; [SerializeField] private float maxX = 100f; void LateUpdate() { Vector3 desiredPosition = target.position + offset; desiredPosition.x = Mathf.Clamp(desiredPosition.x, minX, maxX); Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed); transform.position = smoothedPosition; } } |
これで、カメラはminXからmaxXの範囲内でしか動きません。
ステージの端でカメラが止まるようになります。
Cinemachineの導入

Cinemachineを使うと、より高度なカメラ制御ができます。
Cinemachineは、Unityの公式パッケージです。
導入方法は次の通りです。
- Window → Package Manager
- Cinemachineを検索してインストール
- Hierarchyで右クリック → Cinemachine → 2D Camera
Cinemachineを使うと、以下の機能が簡単に使えます。
- スムース追従
- 揺れ防止
- カメラの境界設定
- 複数のカメラの切り替え
初心者には、スクリプトで実装する方が理解しやすいですが、Cinemachineも便利です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
実践的なカメラ追従を学ぶには

ここまで、Unityで2Dカメラ追従を作る方法について解説してきました。
ただし、実際のゲーム制作では、さらに多くの要素が必要になります。
アニメーション、エフェクト、UI、サウンドなど、全体を体系的に学ぶには、専門の講座が効率的です。
Unity入門の森では、2Dアクションゲームの作り方を、基礎から完成まで丁寧に解説しています。
コードの意味から、なぜその実装方法を選ぶのかまで、しっかり理解できる内容になっています。
2Dアクション制作に特化した講座なら、効率的にスキルアップできます。
ゲーム制作でスキルを上げたい方は、ぜひチェックしてみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

Unityで2Dカメラ追従を作る方法について解説しました。
要点のまとめ
- カメラ追従は、カメラの位置をプレイヤーの位置に合わせる
- Lerpを使うと、滑らかに追従できる
- Y軸を固定することで、揺れを防げる
- Cinemachineを使うと、より高度なカメラ制御ができる
基本を押さえれば、あとは応用していくだけです。
まずは、ここで紹介したコードを実際に動かしてみてください。
動かしながら理解を深めていくのが、上達への近道です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント