ここではUnityのカメラ(Camera)について説明します。
※この記事で使用しているUnityのバージョン:Unity2019.1
カメラ(Camera)とは
Unityでいうところのカメラとは、シーン内の世界を撮影してゲーム画面に表示するためのものです。Unityには2D・3Dを問わずこのカメラの概念があり、カメラがシーンに1つ以上ないとゲーム画面には何も映らなくなってしまいます。
シーンを作ると最初から「Main Camera」というカメラが一つだけありますが、シーン内にはいくつでもカメラを設置することができます。複数のカメラを使って画面を切り替えたり、画面を分割したりする方法については「複数のカメラを切り替えたり画面を分割したりする方法」をご覧ください。
カメラコンポーネントの設定項目
カメラコンポーネントには次のような設定項目があります。
色々な項目がありますが、主なものをピックアップして紹介しますね。
- クリアフラグ(Clear Flag)
- カリングマスク(Culling Mask)
- 投影方法
- 有効視野(Field Of View)
- クリッピング平面(Clipping Planes)
- ビューポート領域(ViewPort Rect)
- 深度(Depth)
クリアフラグ(Clear Flag)
画面の何も描画されない部分(例えば、ゲームオブジェクトが何もないところ)をどう描画するかを決める項目です。「スカイボックス」ならスカイボックスを表示し、「ソリッドカラー」なら1つ下の項目で設定できる「背景」の色を表示します。
カリングマスク(Culling Mask)
カメラに映すゲームオブジェクトをレイヤーごとに指定できます。詳しくは別ページ「特定のゲームオブジェクトだけをカメラに映す方法」で解説していますのでそちらをご覧ください。
投影方法
「透視(Perspective)」と「平行投影(Orthographic)」の2種類があります。「透視」は遠近法を用いた表示方法、「平行投影」は遠近法を用いない表示方法です(下図参照)。
デフォルトでは3Dゲームの場合は前者、2Dゲームの場合は後者が設定されています。
有効視野(Field Of View)
ザックリ言うと、どれだけの範囲(角度)で撮影するかを設定する項目です。この値を変化させればズームイン・ズームアウトのような演出が可能です。
ただし、有効視野を大きくしすぎると表示が不自然になるので注意が必要です。
クリッピング平面(Clipping Planes)
カメラの撮影範囲を決める項目です。この範囲内にあるモノだけが画面に表示されます。
ビューポート領域(ViewPort Rect)
カメラの表示範囲を設定する項目です。W=1、H=1なら画面いっぱいに表示します。画面を分割したい場合は複数のカメラを設置し、この値を小さくすればOKです。詳しくは「複数のカメラを切り替えたり画面を分割したりする方法」をご覧ください。
深度(Depth)
複数のカメラがあるときのカメラの描画順です。大きい値のカメラが小さい値のカメラの上に描画されます。
特殊なカメラ「Main Camera」
さて、カメラの中には特殊なカメラがあります。それは「メインカメラ(Main Camera)」です。
Main Cameraは先述の通り、シーンを作成すると最初からシーンに用意されているカメラで、タグが「Main Camera」になっています。
このカメラが他のカメラと違うところは、メインカメラのカメラコンポーネントにはスクリプトから簡単にアクセスできる点です。通常、コンポーネントを取得するときはGetComponentなどを使う必要がありますが、メインカメラのカメラコンポーネントは次のように書くことで簡単に取得することが可能です。
Camera camera = Camera.main;
ちなみに「Main Camera」というタグが付いたカメラならどれでもこの方法で取得できるわけではなく、そのタグが付いたカメラの中で「最初の有効なカメラ」だけを取得できるようです。