Unityで3Dアプリを作成している時に時々必要となってくることの中に複数のカメラの切替えというものがあるのではないかと思います。
ここでは2台のカメラの切り替えのやり方を例を挙げて説明したいと思います。
まずはじめにカメラについてですが、新しくプロジェクトを作成するとメインカメラ(MainCamera)は自動的に作成されていると思います。
そのため、2台のカメラの切り替えをするためにはもう1台カメラを追加する必要があります。
目次
1.サブカメラの作成
はじめに、サブカメラの作成方法についてになります。
サブカメラの作成方法は以下の通りです。
ヒエラルキーウインドウ内の「+」をクリックすることでプルダウンメニューを開きます。
その中に表示されている「Camera」を選択します。
これにより「Camera」が作成されてヒエラルキーウインドウ内に表示されますので名前を「Sub Camera」に変更しておきます。
2.カメラ切替えスクリプト作成
次に、2台のカメラ切替え用のスクリプト作成になります。
先程と同様、今度はプロジェクトウインドウ内の「+」をクリックすることでプルダウンメニューを開きます。
その中に表示されている「C#Script」を選択します。
これにより「C#Script」が作成されてプロジェクトウインドウ内に表示されますので、
名前を「CameraController」に変更しておきます。
2.1.スクリプト内容
スクリプトをダブルクリックして開きます。
スクリプト内を以下の内容にします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour
{
public GameObject mainCamera;
public GameObject subCamera;
void Start()
{
// メインカメラ、サブカメラオブジェクトを取得して変数に割付
mainCamera = GameObject.Find("Main Camera");
subCamera = GameObject.Find("Sub Camera");
// サブカメラは初期状態では無効化
subCamera.SetActive(false);
}
void Update()
{
// マウスの左ボタンが押された時
if (Input.GetMouseButtonDown(0))
{
// メインカメラ、サブカメラオブジェクトの有効、無効フラグを反転させる
//true→false、false→trueに切替える
mainCamera.SetActive(!mainCamera.activeSelf);
subCamera.SetActive(!subCamera.activeSelf);
}
}
}
スクリプトの内容はおよそ以下の通りです。
public変数mainCamera、subCameraを宣言し、Start内でFind()を使用して"Main Camera"、"Sub Camera"を探し出して変数に割り付けています。
以下の例では、Start内で、
subCamera.SetActive(false);
としておくことで、はじめは、サブカメラを「false」にして無効化しています。
これにより、メインカメラからの画像が初期状態では表示されます。
その後は、Update内での
if (Input.GetKeyDown(KeyCode.Space)){}
で、この例ではマウスの左ボタンをクリックするたびにmainCameraとsubCameraの有効無効が切り替わることで表示が切り替わります。
3.空オブジェクト作成と割付
スクリプト作成後は、ヒエラルキービュー内の「+」から「Create Empty」を選択し、空オブジェクトを作成、名前を「CameraController 」にしておきます。
このオブジェクトに先程のスクリプトをドラッグ&ドロップしてアタッチします。
このオブジェクト「CameraController 」を選択しインスペクターウインドウ内に詳細を表示させます。
表示された「CameraController 」スクリプト内のpublic変数「mainCamera」と「subCamera」にそれぞれヒエラルキーウインドウ内のオブジェクト「mainCamera」と「subCamera」をドラッグ&ドロップしてアタッチします。
以上が、Unityのシーン内でのカメラの切替え方法の一例とその説明になります。