【初心者Unity】複数のカメラの使い方(複数カメラ表示・カメラ切り替え)
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
1.はじめに
本記事では、複数のカメラの取り扱い方法について、基本的な内容を解説していきます。
- 複数のカメラ(視点)を同時に表示する方法
- 他のカメラ(視点)に切り替える方法
目標:
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キーでカメラが切り替わるのが確認できます。