プレイヤーに合わせてカメラを動かす-cinemachine-【Unityメモ】

今回はプレイヤーを追いかけるようにカメラを動かしてみす。プレイヤーが画面の中心に来るようにする感じですね。

はじめに

Unityのバージョンは2021.3.14f1です。

カメラを動かす方法はいくつかありますが、「Cinemachine」のパッケージを使っていきます。

実装開始

キー操作で動くプレイヤーを作成した後に、プレイヤーを追いかけるカメラを実装していきます。

動くオブジェクト(Player)の作成

「2D Object」→「Sprites」→「Circle」を追加します。

名前をPlayerに変更して「Rigidbody2D」をアタッチします。GravityScaleは0に。

下記スクリプトを作成してアタッチします。

using UnityEngine;

public class Movement : MonoBehaviour
{
    private float speed = 5.0f;
    private Rigidbody2D _rb;
    private Vector2 movement;

    private void Awake()
    {
        _rb = GetComponent<Rigidbody2D>();
    }
    private void Update()
    {
        movement.x = Input.GetAxisRaw("Horizontal");
        movement.y = Input.GetAxisRaw("Vertical");
        _rb.velocity = movement * speed;
    }
}

下記のように左右キーでプレイヤーが動きます。カメラ位置が固定されているので、範囲外にプレイヤーが行くと見えなくなります。

カメラをオブジェクトの配下に

下記のようにMainCameraをPlayerの配下に移動してみます。

下記のように、プレイヤーに合わせてカメラも動くので常に中心にプレイヤーが来ます。

分かりやすいように床と壁のようなものを作成してあります。

Cinemachineを利用

次にCinemachineを使ってカメラを動かしていきます。

画面上部「Window」にある「Package Manager」を選択します。

「Packages:Unity Registry」にして、右の検索窓に「cinema」と入力。「Cinemachine」を選んで「Install」を選びます。

インストールが完了後、「GameObject」→「Cinemachine」→「2D Camera」を選びます。

「CM vcam1」が追加されるので、「CinemachineVirtualCamera」のFollowにPlayerをセットします。

これでカメラがプレイヤーを追いかけます

カメラの範囲設定

このままだとカメラはどこまでもついてくるので、カメラの移動範囲を設定してみます。

「CM vcam1」のインスペクターにある「Add Extension」から「CinemachineConfiner」を選択。

CreateEmptyで空のオブジェクトを追加して名前を「CinemachineConfiner」にします。

「AddComponent」から「PolygonCollider2D」をアタッチ。

「EditCollider」から頂点をマウスで設定、もしくはPointsのElementで座標を指定できます。

下記のように壁と床が端になるように設定。

「CM vcam1」の「Cinemachine Confiner」の「Bunding Shape 2D」に適用します。

これでカメラの範囲設定完了、動かすと、下記のようにカメラは範囲内でプレイヤーを追いかけます。

他にも遅延して追いかけるなどの設定もできます。

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