Developer

【初心者Unity】複数のカメラの使い方(複数カメラ表示・カメラ切り替え)
2021.07.31
Lv1

【初心者Unity】複数のカメラの使い方(複数カメラ表示・カメラ切り替え)

1.はじめに


本記事では、複数のカメラの取り扱い方法について、基本的な内容を解説していきます。

  • 複数のカメラ(視点)を同時に表示する方法
  • 他のカメラ(視点)に切り替える方法

目標:

■複数のカメラ(視点)を同時に表示

■Spaceキーを押すと他のカメラ(視点)に切り替わる

2.複数のカメラ(視点)を同時に表示


まずは2台目のカメラ(Sub Camera)を作成しましょう。
今回は分かりやすくするために、Main Cameraと対になる位置に設置します。
(オブジェクトの前後関係を見えやすくするため、本来の位置・角度から少し変更しています。)

今回の設定のキモとなるのは、CameraコンポーネントのViewport Rectという項目です。
以下のように設定していきます。

Main Camera

Sub Camera

以上で設定は完了です。
Gameビューを見てみると画面が分割されていることが確認できます。

Viewport Rectの設定値について簡単に解説します。
Viewport Rectには、X Y W H の4つのパラメータがありますが、
X Yカメラの左下の座標(基準点)
W H基準点を始点としたカメラの表示範囲
をそれぞれ表しています。

3.他のカメラ(視点)に切り替える


※2.で行ったViewport Rectの設定は元に戻してください。

視点を切り替える方法はいくつかありますが、「使用しないカメラを無効にする」という方法が最も単純で実装しやすく、おすすめのやり方です。
シーン内の任意のオブジェクトに以下のスクリプトを設定します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraManager : MonoBehaviour
{
    public GameObject mainCamera;
    public GameObject subCamera;
    void Start()
    {
        // 各カメラオブジェクトを取得
        mainCamera = GameObject.Find("Main Camera");
        subCamera = GameObject.Find("Sub Camera");
        
        // サブカメラはデフォルトで無効にしておく
        subCamera.SetActive(false);
    }

    void Update()
    {
        // もしSpaceキーが押されたならば、
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // 各カメラオブジェクトの有効フラグを逆転(true→false,false→true)させる
            mainCamera.SetActive(!mainCamera.activeSelf);
            subCamera.SetActive(!subCamera.activeSelf);
        }
    }
}

以上で設定は完了です。
ゲームを開始するとSpaceキーでカメラが切り替わるのが確認できます。

 

連載目次リンク

「初心者のための」Unityゲーム制作 目次
 

Unity実践編 - 目次リンク

実践Unityゲームプログラミング 連載目次