「カメラがプレイヤーを追う」そんな風に感じている方は多いんです。
実際に実装してみると、どう計算すればいいのか分からない。
カメラがプレイヤーの位置に直接移動してしまうと、カクカクした動きになってしまう。
滑らかに追従させるには、数学的な計算が必要。
カメラの追従計算は、ベクトル計算と補間処理を組み合わせることで実現できます。
この記事では、カメラがプレイヤーを滑らかに追う仕組みを、Unity実装例とともに解説します。
- カメラがプレイヤーを追う計算方法が分からない…
- 直接位置を設定すると、カクカクした動きになってしまう。
- 滑らかに追従させる方法を知りたい。
✨ この記事でわかること
- カメラ追従計算の基本となるベクトル計算
- 滑らかな追従を実現する補間処理
- オフセットを使ったカメラの配置方法
- Unityでの実装手順とコード例
- 初心者でも理解できる計算の考え方
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
カメラ追従計算とは何か(ゲーム制作目線)

カメラ追従計算は、プレイヤーの位置に基づいて、カメラの位置を滑らかに更新する処理です。
単純にプレイヤーの位置にカメラを配置するだけでは、カクカクした動きになってしまいますよね。
そこで、目標位置に向かって徐々に近づける補間処理を使うのがポイントです。
カメラ追従計算の基本要素は、以下の3つです。
- 目標位置の計算:プレイヤーの位置から、カメラの配置位置を計算
- 補間処理:現在位置から目標位置へ、滑らかに移動
- オフセット:プレイヤーから見たカメラの相対位置
Unityでは、Vector3.LerpやVector3.SmoothDampなどの関数を使って、滑らかな追従を実現。
ゲームでの具体的な使い道

カメラ追従計算が、ゲームでどう使われているか確認してみましょう。
3Dアクションゲーム
3Dアクションゲームでは、プレイヤーキャラクターの背後から追従するカメラが使われます。
プレイヤーの位置から、一定のオフセット(後ろ上方向など)を加えた位置を目標として、カメラを滑らかに移動。
横スクロールアクション
横スクロールアクションでは、プレイヤーが移動するとカメラが横方向に追従。
X軸方向の位置をプレイヤーに合わせ、Y軸とZ軸は固定する実装が一般的ですね。
レースゲーム
レースゲームでは、車の後ろから追従するカメラが使われますね。
車の速度に応じて、カメラの追従速度を調整すれば、より自然な動きを実現できますね。
RPGのフィールド移動
RPGのフィールド移動では、プレイヤーキャラクターを中心にカメラが追従。
プレイヤーが急に方向転換しても、カメラが滑らかに追従すれば、プレイ感が向上します。
- 3Dアクションゲームの背後追従カメラ
- 横スクロールアクションの横方向追従
- レースゲームの車追従カメラ
- RPGのフィールド移動での追従
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

カメラ追従計算は、「目標位置を計算 → 現在位置から目標位置へ補間」という流れで実現できます。
目標位置の計算
プレイヤーの位置を基準に、カメラの目標位置を計算しましょう。
例えば、プレイヤーの後ろ上方向に配置する場合、以下のように計算します。
- プレイヤーの位置を取得
- オフセット(例:後ろ方向-5、上方向+3)を加算
- これがカメラの目標位置
補間処理による滑らかな移動
目標位置が分かっても、すぐにその位置に移動させてはいけませんね。
Vector3.LerpやVector3.SmoothDampを使って、現在位置から目標位置へ徐々に近づけていくんです。
これにより、カメラが滑らかに追従。
毎フレームの更新処理
カメラ追従計算は、毎フレーム(Update関数など)で実行する必要がありますね。
プレイヤーが移動するたびに、目標位置を再計算し、補間処理でカメラを移動させる仕組みです。
- カメラ追従計算は、目標位置の計算と補間処理の組み合わせ
- 直接位置を設定せず、補間処理で滑らかに移動させる
- オフセットを使うことで、プレイヤーから見たカメラの相対位置を定義
- 毎フレーム更新すれば、常に滑らかに追従する
Unityで実装する際の注意点(代表例)

Unityでカメラ追従計算を実装する際の注意点を見ていきましょう。
基本的な追従実装(Lerpを使う方法)
Vector3.Lerpを使った、基本的な追従実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class CameraFollow : MonoBehaviour { public Transform target; // 追従するターゲット(プレイヤーなど) public Vector3 offset = new Vector3(0, 3, -5); // カメラのオフセット public float followSpeed = 2f; // 追従速度 void LateUpdate() { // 目標位置を計算 Vector3 targetPosition = target.position + offset; // Lerpで滑らかに移動 transform.position = Vector3.Lerp( transform.position, targetPosition, Time.deltaTime * followSpeed ); } } |
SmoothDampを使った実装
Vector3.SmoothDampを使うと、より自然な減速効果を得られますよ。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class CameraFollow : MonoBehaviour { public Transform target; public Vector3 offset = new Vector3(0, 3, -5); public float smoothTime = 0.3f; // 減速時間 private Vector3 velocity = Vector3.zero; void LateUpdate() { Vector3 targetPosition = target.position + offset; // SmoothDampで滑らかに移動(減速効果あり) transform.position = Vector3.SmoothDamp( transform.position, targetPosition, ref velocity, smoothTime ); } } |
回転も追従させる場合
カメラの回転もターゲットに追従させる場合の実装です。
|
1 2 3 4 5 6 7 8 9 10 11 |
void LateUpdate() { Vector3 targetPosition = target.position + offset; transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * followSpeed); // 回転も追従させる Vector3 direction = target.position - transform.position; Quaternion targetRotation = Quaternion.LookRotation(direction); transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * followSpeed); } |
LateUpdateを使う理由
カメラ追従計算は、LateUpdateで実行するのがおすすめです。
Updateは他のオブジェクトの移動処理より先に実行されることがあるため、LateUpdateを使えば、プレイヤーの移動処理が完了した後にカメラを更新できます。
オフセットの調整
オフセットの値を調整すれば、カメラの配置を変更できます。
- X軸:左右の位置
- Y軸:上下の位置
- Z軸:前後の位置(通常は負の値で後ろに配置)
インスペクターで値を調整しながら、最適な配置を見つけるのがポイントです。
追従速度の調整
followSpeedやsmoothTimeの値を調整すれば、追従の速度や滑らかさを変更できます。
- 値が大きい:速く追従するが、動きが硬くなる
- 値が小さい:遅く追従するが、滑らかになる
ゲームの雰囲気に合わせて、適切な値を見つけることが大切ですね。

まとめ

この記事では、カメラ追従計算について見てきました。
重要なポイントをおさらいします。
- カメラ追従計算は、目標位置の計算と補間処理の組み合わせで実現される
- 直接位置を設定せず、Vector3.LerpやVector3.SmoothDampで滑らかに移動させる
- オフセットを使うことで、プレイヤーから見たカメラの相対位置を定義できる
- LateUpdateで実行すれば、プレイヤーの移動処理完了後にカメラを更新できる
- 追従速度やオフセットの値を調整すれば、様々なカメラワークを実現できる
カメラ追従計算は、ゲーム開発で頻繁に使われる重要な技術です。
滑らかなカメラワークは、プレイヤー体験を大きく向上させますね。
ベクトル計算と補間処理を組み合わせれば、自然な追従を実現できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、カメラ追従計算を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント