コンテンツへスキップ

【Unity 3D ボールころころ】④ カメラを動かす


概要

カメラが、プレイヤーを追いかけて移動するようにプログラミングします。

STEP1:スクリプトファイルの作成

Assets フォルダ内にある「Scripts」を右クリックして、「作成」⇒「C# スクリプト」を選択します。ファイル名を「CameraController」とします。

Rolling-Balls3-12

ヒエラルキーにある「MainCamera」を選択し、Assets フォルダ内の「CameraController」をインスペクタービューにドラッグアンドドロップします。これで、ゲームオブジェクト「MainCamera」とスクリプト「CameraController」の紐つけができました。

Rolling-Balls4-1

STEP2:プログラミング

using UnityEngine;

public class CameraController : MonoBehaviour
{
    [SerializeField] private GameObject player;
    private Vector3 offset;

    private void Start()
    {
        offset = transform.position - player.transform.position;
    }

    private void LateUpdate()
    {
        transform.position = player.transform.position + offset;
    }
}

■ 5 行目:player(ゲームオブジェクト)
 追いかける対象のゲームオブジェクト

■ 6 行目:offset(変数)
 player とカメラの位置関係を保存しておくために利用します。

■ 10 行目:offset(Startメソッド内)
 プログラムが読み込まれたときに offset を計算します。

■ 13 行目:LateUpdate(メソッド)
 1フレームごとに1回呼び出されるメソッドです。Update メソッドの後に実行されます。

■ 15 行目:
 player の位置と offset からカメラの位置を計算し、移動させます。

スクリプト「CameraController」の中で定義したゲームオブジェクト「player」に、ヒエラルキービューにある「Player」をアタッチします。下図のように、ゲームオブジェクト「Player」をドラッグアンドドロップするとアタッチできます。

Rolling-Balls4-2

カメラが、プレイヤーを追いかけて移動するようになったと思います。実行して確かめてみてください。

「MainCamera」を、追いかけたいゲームオブジェクトの子に設定する方法もあります。こうすると、カメラは親のゲームオブジェクトを追従するようになります。とても簡単で便利なのですが、今回のボールのように、追いかける対象が回転するとカメラもそれに合わせてくるくると回ってしまいます。そのため今回はプログラミングをしてボールを追いかけるようにしました。

カメラを、追いかけたいゲームオブジェクトの子にするだけで OK

Rolling-Balls4-3

一緒に回転してしまうので、今回はこの方法は使えなかった

次は、土台に枠を作ったり、壁を作ったりして、ステージを完成させます。