UnityでTPS風カメラを作ろう!斜め上からキャラクターを追いかけるカメラ入門

キャラクターが作業中または読者に手を振る動作。屋内での自然なゲーム開発シーン

こんにちは、くんちゃんです!

今回は、Unityでゲームを作るときによく使う「カメラがキャラクターを追いかける仕組み」を、自作スクリプトで実装してみましょう。

カメラの動きって意外と奥が深いのですが、まずはキャラクターの後ろから追いかけるTPS風カメラを作って、仕組みをしっかり理解していきます。

今回のチャレンジは、Cube(キューブ)オブジェクトを使って気軽に試せる内容になっています。
ぜひ一緒に手を動かしていきましょう!

目次

はじめに

ゲーム開発シーンでCubeキャラクターが手を振っている、ブログの導入を表すイラスト

Unityでキャラクターを操作できるようになってくると、「カメラをどう動かすか?」という課題にぶつかる方も多いのではないでしょうか?


今回は、キャラクターを後ろから追いかけるTPS(三人称視点)風のカメラを、Cinemachineを使わずスクリプトで作る方法をご紹介します。

「なんとなくCinemachineを使っているけど、カメラの仕組みを自分で理解しておきたい…」
そんな方にもピッタリのミニチャレンジです!

これまでの内容を引き継いで、前回作ったCubeプロジェクトをそのまま使っていきますので、ぜひ手元のUnityを立ち上げて一緒に試してみてください。

前回のおさらい:プロジェクトとCubeの準備

今回は前回の記事「【Unity入門】Cubeで動きを確認するプロジェクトを作ろう」の続きになります。

すでに前回のプロジェクトがある方は、特別な準備は不要です。
ヒエラルキーには、次のようなオブジェクトがあることを確認しておきましょう。

  • Player(Cube):動くキャラクター役として使用
  • Main Camera:今回はこのカメラに追従処理を追加します

プロジェクトがない方は、前回の記事を参考に、Cubeを設置したシーンを準備しておいてください。

カメラ追従の仕組みを理解しよう

カメラがCubeキャラクターを斜め後ろから追いかける様子を説明する図解風イラスト

TPS視点とは?

今回のカメラは、いわゆる「TPS(Third Person Shooter)視点」です。


これはキャラクターの後ろから少し離れた位置にカメラを置き、キャラクターの動きを常に見ながら操作する視点のことです。

市販の3Dアクションゲームやアドベンチャーゲームでよく使われているので、馴染みがある方も多いかもしれませんね。

なぜカメラを追従させるの?

プレイヤーがキャラクターを操作する際に、カメラがキャラクターを見失ってしまうと操作しづらくなってしまいます


そのため、キャラクターの移動にあわせてカメラも位置を更新し、常にキャラクターが画面の中心近くにいるようにしておくのがポイントです。

特にUnityでは、スクリプトでカメラの Transform を操作することで、こうした追従カメラを簡単に作ることができます。

LateUpdate()LookAt() の意味

今回のカメラ処理では、LateUpdate()LookAt() という2つの命令が重要な役割を果たします。

🔁 LateUpdate()

カメラ処理は Update() でも動かせますが、キャラクターの動きが終わった後に処理することで、カメラの追従がよりスムーズになります。
そのため、毎フレームの最後に呼ばれる LateUpdate() を使います。

👀 LookAt()

transform.LookAt(target) を使うことで、カメラが常に対象(プレイヤー)を向くようになります。
斜め上の視点からでも、キャラクターを見失うことなく視界に入れ続けることができます。

イメージで確認しよう

以下の画像は、カメラがプレイヤーの少し後方かつ上方に位置し、常にキャラクターを見ている状態のイメージです。

カメラがプレイヤーの少し後方かつ上方に位置し、常にキャラクターを見ている状態のイメージ

次のセクションでは、実際にこの仕組みをスクリプトで作ってみましょう!
Main Camera にカメラ制御用のスクリプトを追加していきます。

カメラ用のスクリプトを作ろう

デュアルモニターでUnityらしき画面とコードを表示し作業するフード姿の開発者

Main Camera にスクリプトを追加する

それではいよいよ、カメラがプレイヤー(Cube)を追いかけるようにするためのスクリプトを作っていきます。

このスクリプトは Main Camera にアタッチすることで動作します。

まずは Main Camera を選択し、以下の手順でスクリプトを作成します。

スクリプトファイルの作成手順

Add Componentボタンをクリックし、スクリプトファイルを作成するイメージ
  1. Hierarchyビューで「Main Camera」を選択
  2. Inspectorの「Add Component」ボタンをクリック
  3. 「New Script」を選び、スクリプト名に CameraFollow と入力して作成

スクリプトの中身を書き換えます

生成された CameraFollow.cs をダブルクリックして開き、以下のように書き換えてください。

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    // 対象となるプレイヤー(Cube)
    public Transform target;

    // カメラの相対位置(Yが高さ、Zが後ろ)
    public Vector3 offset = new Vector3(0f, 3f, -5f);

    void LateUpdate()
    {
        if (target == null) return;

        // プレイヤーの位置にオフセットを加えてカメラ位置を決定
        transform.position = target.position + offset;

        // 常にプレイヤーの方向を向く
        transform.LookAt(target);
    }
}

target にプレイヤーを指定しよう

スクリプトを保存してUnityに戻ると、Main Camera のインスペクターに TargetOffset の項目が表示されているはずです。

  • Target の欄に、ヒエラルキー内の Player(Cube) をドラッグ&ドロップ
  • Offset はデフォルト(0, 3, -5)のままでOKです
Main Camera にスクリプトがアタッチされて設定されている画面イメージ

これで準備は完了です!
次のセクションでは、実行してカメラがプレイヤーを追いかける様子を確認してみましょう。

ゲームを再生して動きを確認しよう

Gameビュー上でCubeが中央に表示されている。GIF再生中の画面

ここまでの設定ができたら、Unityエディターの上部にある「▶︎ 再生ボタン」をクリックしてゲームを実行してみましょう。

すると、カメラがプレイヤー(Cube)を少し斜め後ろ上から見下ろすような視点で追いかけるようになっているはずです。

視点が自然になっているかチェック!

確認しておきたいポイントは以下の通りです

  • プレイヤーを移動させても、常に画面内に表示されている
  • 視点がプレイヤーの少し後方+上方向にある
  • カメラがプレイヤーの方向を常に向いている(LookAt動作)

この視点になっていれば、TPS(三人称視点)カメラの基本動作は完成です!

トラブルシューティング(もしうまくいかない場合)

  • target にプレイヤー(Cube)が設定されていないと、カメラは動きません
  • プレイヤーのTransformが動いていないと、カメラの追従も見た目には変わりません
  • Main Cameraにスクリプトを付け忘れていないか確認しましょう

おまけ:カメラの視点位置を変更してみよう

様々な方向に配置されたカメラマーク付きのキャラの構図。視点の違いを説明する教材風イラスト

カメラがキャラクターを追いかけるようになったら、次はカメラの位置(offset)を変えて、いろいろな視点を試してみましょう!

offset はスクリプト内で指定されていますが、Unityのインスペクター上でも簡単に数値を編集できます。

offsetを変えるとどうなるの?

以下の表のように offset の値を変えることで、カメラの見え方がガラッと変わります!

視点の種類offset の値(X, Y, Z)特徴・用途
標準TPS視点(本記事の初期値)(0, 3, -5)斜め後ろ上からキャラを見下ろす
真後ろ視点(0, 1, -3)キャラのすぐ後ろから。迫力あり
見下ろし視点(トップビュー)(0, 10, 0)真上から。2D風や戦略系に向いている
横からの視点(サイドビュー)(5, 1.5, 0)横スクロール風ゲームでよく使われる

💡 インスペクターでの編集方法:
Main Camera を選択 → CameraFollow コンポーネント内の「Offset」の数値を自由に変更!

いろいろ試してみよう!

たったこれだけで視点の印象が大きく変わるのは面白いですよね!
ゲームに合ったカメラの視点を、数値をいじってプレビューしながら探すのもUnityの楽しみ方のひとつです。

まとめ

サムズアップして笑顔で立っている四角いキャラクター、明るい村の風景

今回のミニチャレンジでは、UnityでTPS風の追従カメラをスクリプトで実装する方法を学びました。

  • Transform.positionoffset を使って、カメラをキャラクターの後ろに配置
  • LateUpdate() を使って、キャラクターの動きに合わせてカメラが滑らかに追従
  • LookAt() で常にプレイヤーを注視
  • offset の値を変更することで、いろんな視点を試せる

Cinemachineを使わず、自分の手でカメラを動かすロジックを体験することで、カメラの仕組みがよく理解できたのではないでしょうか?

この体験は、今後Cinemachineを使うときにも「中で何が起こっているか」がイメージできるようになる土台になります。

次回予告とおわりに

草道を振り返って笑顔で手を振る少女。明るく前向きな旅立ちの雰囲気

次回は、マウスでカメラの向きを操作したり、ホイールでズームしたりといった、より自由なカメラ操作にチャレンジしていきます!

Unityでのカメラ制御は、慣れてくると本当に面白いです。
今回のようなミニチャレンジを通じて、一歩ずつカメラマスターへの道を進んでいきましょう!

お疲れさまでした✨

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次