初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

Unityカメラ追従スクリプト | プレイヤーを追う

Unity 基礎操作・設定

キャラは動くのに、カメラが据え置きのまま。

画面の端で操作が見づらくなり、ゲームの没入感も半減します。

プレイヤーに合わせてカメラが追いかける仕組みは、2Dアクションでも3Dでも必須の機能です。

この記事では、最小の追従スクリプトから滑らかな追従まで、段階的に解説します。

  • カメラがプレイヤーについてこず、画面外に出てしまう…
  • 追従はするが、カクカクして見づらい。
  • 2DなのにZ座標がズレて、表示がおかしくなる。

この記事でわかること

  • Transformをコピーする基本の追従スクリプト
  • Offsetでプレイヤーの少し後ろに配置する方法
  • Vector3.LerpとSmoothDampで滑らかに追う改良版
  • LateUpdateでカメラを更新する理由
  • 2Dと3DでのZ座標・LookAtの違い
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で3Dゲームが完成!/

カメラ追従が必要な理由

ゲーム画面は、カメラが映している範囲だけがプレイヤーに見えます。

ステージが広いほど、カメラをプレイヤー中心に動かさないと、周囲の状況が把握できません。

横スクロールなら左右、トップダウンなら上下、3Dアクションなら斜め後方から追う、といったパターンがあります。

ジャンル カメラの動き方
横スクロール2D X方向だけ追従し、Yは固定または緩やかに追う
トップダウン2D XとYを追い、Zはカメラの高さで固定
3Dアクション プレイヤーの後方からOffsetで追い、LookAtで向きを合わせる

基本形|Transformをそのままコピーする

いちばん単純な追従は、カメラの位置をプレイヤーの位置に毎フレーム合わせる方法です。

Main Cameraにスクリプトをアタッチし、追従対象をpublicで指定します。

using UnityEngine;

public class CameraFollowBasic : MonoBehaviour
{
    public Transform target;

    void LateUpdate
    {
        if (target == null) return;
        transform.position = target.position;
    }
}

InspectorでTarget欄にプレイヤーのTransformをドラッグすれば動きます。

ただし、このままだとカメラがプレイヤーの中心に重なり、見づらいことが多いです。

Offsetで見やすい位置にずらす

プレイヤーの少し後ろや上にカメラを置くには、Offsetを加算します。

using UnityEngine;

public class CameraFollowOffset : MonoBehaviour
{
    public Transform target;
    public Vector3 offset = new Vector3(0f, 2f, -10f);

    void LateUpdate
    {
        if (target == null) return;
        transform.position = target.position + offset;
    }
}

2Dの場合、Zは-10などマイナス値でカメラとSpriteの距離を確保します。

OffsetはSceneビューでプレイヤーを選び、カメラを好みの位置に動かしたあと、差分をメモしても決められます。

カメラ追従スクリプトの設定手順
  • STEP1
    スクリプトを作成する

    CameraFollow系のC#スクリプトを新規作成します。
  • STEP2
    Main Cameraにアタッチ

    HierarchyのMain Cameraにドラッグ&ドロップします。
  • STEP3
    Targetにプレイヤーを指定

    InspectorのTarget欄にプレイヤーGameObjectを設定します。
  • STEP4
    Offsetを調整してPlay確認

    Playモードで追従の見え方を確認し、数値を微調整します。
管理人
管理人

2DではカメラのZを変えないのがコツです。
Zだけ固定して、XとYだけ追従させると表示が安定しますよ。

LerpとSmoothDampで滑らかに追従する

位置をそのままコピーすると、カメラが硬く感じます。

Vector3.Lerpを使うと、少し遅れて追いかける自然な動きになります。

using UnityEngine;

public class CameraFollowSmooth : MonoBehaviour
{
    public Transform target;
    public Vector3 offset = new Vector3(0f, 2f, -10f);
    public float smoothSpeed = 5f;

    void LateUpdate
    {
        if (target == null) return;
        Vector3 desired = target.position + offset;
        Vector3 smoothed = Vector3.Lerp(
            transform.position, desired, smoothSpeed * Time.deltaTime);
        transform.position = smoothed;
    }
}

さらに滑らかにしたい場合は、Vector3.SmoothDampが向いています。

private Vector3 velocity = Vector3.zero;
public float smoothTime = 0.2f;

void LateUpdate
{
    Vector3 desired = target.position + offset;
    transform.position = Vector3.SmoothDamp(
        transform.position, desired, ref velocity, smoothTime);
}

smoothSpeedを上げると素早く追い、下げるとゆったり追います。

LateUpdateを使う理由

カメラの更新はLateUpdateで行うのが定番です。

プレイヤーの移動は通常Updateで処理されます。

同じUpdate内でカメラを動かすと、フレームによってはプレイヤー移動前の位置を追ってしまい、画面が揺れて見えることがあります。

LateUpdateは全てのUpdateの後に実行されるため、「プレイヤーが動いたあと」にカメラを合わせられます。

2Dと3Dでの違い

2D(Orthographicカメラ)では、Z座標を固定したままX・Yだけ追従させます。

Vector3 pos = target.position + offset;
pos.z = transform.position.z; // Zを固定
transform.position = pos;

3Dでは、Offsetで後方に下げ、transform.LookAt(target)でプレイヤーの方を向かせる構成が多いです。

本格的なカメラワークは167のCinemachineが便利ですが、仕組みを理解するうえでは手書きスクリプトが最適です。

管理人
管理人

横スクロールでは、プレイヤーが画面中央より少し右にいる配置が操作しやすいです。
OffsetのXを正の値にすると、進行方向の先が見えやすくなります。

つまずきやすいポイント

カメラ追従でよくある問題と対処です。

  • TargetがNone → Inspectorでプレイヤーを割り当て直す
  • 2DでSpriteが消える → カメラのZとOrthographic Sizeを確認
  • 追従が遅すぎる → smoothSpeedを上げる、またはLerpをやめて直接追従
  • ステージ端で背景が見切れる → カメラの移動範囲をClampで制限する

移動範囲の制限は、Mathf.Clampでカメラ座標の最小・最大を決める方法がシンプルです。

float minX = 0f;
float maxX = 50f;
Vector3 pos = transform.position;
pos.x = Mathf.Clamp(pos.x, minX, maxX);
transform.position = pos;

ステージ左端と右端の座標を空のGameObjectでマーカーしておくと、Clampの数値をSceneビューで確認しやすくなります。

また、プレイヤーが画面端にいるときだけカメラを動かし、中央付近では固定する「デッドゾーン」方式も人気です。

プレイヤーとカメラの距離が一定範囲内なら追従せず、端に近づいたら動き出す実装で、画面の揺れが減り操作感が向上します。

デッドゾーンを入れる場合は、プレイヤーとカメラのX座標差を計算し、しきい値を超えた分だけカメラを移動させる形が分かりやすいです。

最初は基本のOffset追従で動かし、プレイ感を確認してからLerpやデッドゾーンを足す、という段階的な進め方がおすすめです。

カメラ追従は159の2D物理やプレイヤー移動とセットで調整すると、操作の気持ちよさが一段上がります。

慣れてきたら167のCinemachineに移行すると、障害物回避や複数カメラの切り替えも楽に実装できます。

手書きスクリプトで仕組みを理解しておくと、Cinemachineの設定項目も読み解きやすくなります。

記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう

知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも迷わず進められる丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。

「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!

Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風3Dアクションゲームの作り方講座

  • ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
  • 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
  • スマホ化対応で実機で動かせるゲームが完成
  • アセットを使った実践的なゲーム開発手法が身につく
  • 画像・動画・全ソースコード公開の充実したサポート

ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。

全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。

「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。

初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!

まとめ

カメラ追従は、Targetを指定してLateUpdateで位置を合わせるスクリプトから始められます。

Offsetで見やすい位置にずらし、LerpやSmoothDampで滑らかさを加えましょう。

2DではZ座標固定、3DではLookAtを組み合わせるのが基本です。

2Dアクションを完成まで作りたい方は、Unity入門の森で、移動・カメラ・ステージ構成まで一連の流れを学べます。

コメント

タイトルとURLをコピーしました