【Unity】複数のカメラの切り替え方!【Cinemachine, Virtual Camera】

【PR Unityアセットストア】パブリッシャーセール開催中!

凍った川や湖が表現できるマテリアルやシェーダーのアセットIce World がクーポンコード「NATUREMANUFACTURE2024」で無料でゲットできます
7月25日 23:59まで

Ice World

はじめに

カメラの切り替えは、ゲームや映像作品において重要な演出の一つです。これを活用することで、より臨場感のある演出やスムーズなシーン切り替えを実現することができます。

本記事では、Cinemachineを使った、Virtual Cameraの切り替え方法について紹介します。

Cinemachineとは

Cinemachineは、Unityが提供する、Virtual Camera(仮想的なカメラ)の制御や編集を行うためのツールです。誰でも無料で使えます。Cinemachineを使うことで、複数のVirtual Cameraを簡単に切り替えたり、カメラの位置や角度を自動的に調整したりすることができます。

Cinemachineは、映画やテレビドラマで使われるカメラワークをゲームに応用することができるように設計されています。これにより、プレイヤーにより深い没入感を与えたり、よりダイナミックな演出を作り出すことができます。

Cinemachineの導入

インストール

使用するには、Window > Package Managerを開き、Unity Registryからインポートします。

Virtual Cameraの作成

Cinemachineでは、カメラの位置をヒエラルキーからVirtual Cameraを複数作成しておきます。切り替わったことがわかるように、それぞれの位置を変えます。

優先順位づけ

Virtual Camera のインスペクターにある、Priority の高いものが優先されてカメラに表示されるので、作成したVirtual Camera にそれぞれ設定します。

カメラの切り替え方法

アクティブ・非アクティブを切り替える

表示しているVirtual Cameraを非アクティブにすることで、他の優先順位が高いVirtual Cameraの視点に切り替わります。

最もPriority の高いVirtual Camera を非アクティブにすると、次に優先度の高いものが表示されます。

Priorityが同じカメラの場合は、ヒエラルキーで上の方が優先されます。

これはCinemachineでなくとも、使える方法になります。カメラコンポーネントがアタッチされたオブジェクトのアクティブを切り替えることで、カメラ切り替えができます。

スクリプトによる切り替え

ちなみに、Priority はスクリプトからも変更可能です。

using UnityEngine;
using Cinemachine;

public class CameraSwitcher : MonoBehaviour
{
    public CinemachineVirtualCameraBase vcam1;
    public CinemachineVirtualCameraBase vcam2;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            vcam1.Priority = 1;
            vcam2.Priority = 0;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            vcam1.Priority = 0;
            vcam2.Priority = 1;
        }
    }
}

このコードでは、CinemachineのVirtual Cameraが「優先度(Priority)」を持っており、優先度の高い方が優先的に表示されます。キー入力に応じて、優先度を切り替えることで、Virtual Cameraを切り替えることができます。

おわりに

カメラの切り替えは、プレイヤーによる自由なカメラ操作と、ゲーム演出の両方を実現するために重要な機能です。

今回紹介した方法で簡単に実装することができます。また、切り替え時のアニメーションも簡単に設定することができるので、試してみましょう。

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