【Unity入門】カメラの表示を切り替える方法
fpsゲームを作る場合など、カメラを複数台用意して切り替えたい場合がありますよね。
この記事では、カメラの切り替える方法についてわかりやすく解説していきます!
流れは目次を参照してください。
この記事の目次
今回できるもの
カメラオブジェクトを二つ用意して、ボタンを押したら切り替わるようにします。
![](https://mogi0506.com/wp-content/uploads/2019/05/名称未設定.mov-4.gif)
動画でみたい場合はこちらからどうぞ
準備
カメラを切り替えるための準備をしていきましょう。
環境を作る
まずはカメラが切り替わったことをわかりやすくするために地面と、球を作成し、カメラで映るようにしていきましょう。
地面を作成
地面を作るにはCubeオブジェクトを作成しましょう。
作り方はHierarchyビューでCreate>3D Object > Cubeを押してください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-13.51.56.png)
Cubeオブジェクトが出来上がりました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-13.54.08.png)
地面として扱いたいので、サイズを大きくします。
Cubeオブジェクトを選択した状態でScaleのXとZを両方とも100にしてください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-13.55.32.png)
これでサイズが大きくなり、地面が作成できました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-13.58.58.png)
球を作成
球を作成して地面の上に置いていきます。
球の作成方法は、HierarchyビューでCreate > 3D Object > Sphereを押すことでできます。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-14.06.18.png)
球が作成できました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-14.08.47.png)
位置を調整して球が地面の上に来るようにしましょう。
地面と球の位置を両方0にしてから調整するとやりやすいと思います。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-14.12.28.png)
カメラで映るようにする
カメラの位置を調整して後ろから球が映るようにしていきましょう。
カメラの位置を調整するには、カメラオブジェクトを選択した状態で、
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-14.20.45.png)
Sceneビューの上にある方向キーのようなボタンを選択してください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-14.20.53.png)
球が映るように調整していきます。
![](https://mogi0506.com/wp-content/uploads/2019/05/名称未設定.mov-2.gif)
最終的にGameビューに下記の画像のように映るようにしてください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-15.13.53.png)
二つ目のカメラを作る
カメラを作る
カメラを切り替えるために二つ目のカメラを作りましょう。
作り方は、HierarchyビューでCreate > Cameraを押すことで作れます。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-15.25.20.png)
下記がカメラが出来上がった時の図です。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-15.26.33.png)
作成したカメラの名前を『subCamera』としてください。
名前の変え方は、作成したカメラを選択した状態で右クリック>Renameです。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-15.38.27.png)
『subCamera』と書き換えます。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-15.38.41.png)
上から映るようにする
作成したカメラの位置を変更して上から球を写すようにしましょう。
subCameraの映す向きを変更して下を向くようにします。
やり方はsubCameraを選択した状態でRotationのxを『90』にしてください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-15.45.36-1.png)
その後に位置を調整して上からカメラが映すようにしましょう。
![](https://mogi0506.com/wp-content/uploads/2019/05/名称未設定.mov-3.gif)
最終的にGameビューに下記の画像のように映るようにしてください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.10.49.png)
ボタンを押したらカメラを切り替える
カメラを切り替える仕組み
カメラを切り替えるには、映したいカメラではないカメラコンポーネントをオフにすれば良いだけです。
例えば、最初の段階ではサブカメラがGameビューに表示されているとします。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.16.35.png)
この状態で最初からあるカメラの映像を表示させたければ、『subCamera』オブジェクトについているカメラコンポーネントをオフにします。
やり方は、『subCamera』オブジェクトを選択した状態でinspectorからカメラコンポーネントのチェックを外すしてください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-19.36.11.png)
チェックを外すと『subCamera』オブジェクトが消えたので、最初からあるカメラの映像がGameビューに表示されるようになります。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.22.49.png)
カメラオブジェクトのオン/オフをスクリプトで制御して、ボタンを押した時にできるようにしていきましょう。
スクリプトを記述
スクリプトを記述していくのですが、まずは空のオブジェクトを作ってそこにスクリプトをつけましょう。
空のオブジェクトにスクリプトをつける
やり方は、HierarchyビューでCreate>Create Emptyを押して空のオブジェクトを作ります。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.33.14.png)
名前を『GameManager』としましょう。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.33.28.png)
次に作ったオブジェクトにスクリプトをつけていきます。
GameManagerオブジェクトを選択した状態で、InspectorからAddComponentを押し、
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.34.55.png)
New Scriptを選択してください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.35.06.png)
スクリプトの名前を『GameManager』としましょう。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.35.19.png)
これでGameManagerオブジェクトのコンポーネントとしてスクリプトが追加されました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-17.36.47.png)
このスクリプトに処理を記述していきましょう。
スクリプトに記述
記述内容は、
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour {
//カメラを格納する変数
public Camera Camera;
public Camera subCamera;
//キャンバスを格納
public GameObject Canvas;
// Use this for initialization
void Start () {
//初めはサブカメラをオフにしておく
subCamera.enabled = false;
}
// Update is called once per frame
void Update () {
}
//ボタンを押した時の処理
public void PushButton()
{
//もしサブカメラがオフだったら
if (!subCamera.enabled)
{
//サブカメラをオンにして
subCamera.enabled = true;
//カメラをオフにする
Camera.enabled = false;
//キャンバスを映すカメラをサブカメラオブジェクトにする
Canvas.GetComponent<Canvas>().worldCamera = subCamera;
}
//もしサブカメラがオンだったら
else
{
//サブカメラをオフにして
subCamera.enabled = false;
//カメラをオンにする
Camera.enabled = true;
//キャンバスを映すカメラをカメラオブジェクトにする
Canvas.GetComponent<Canvas>().worldCamera = Camera;
}
}
}
ボタンに関数をセットする
スクリプトの中でボタンに追加する関数を作りました。
ボタンを作成して関数をセットしましょう。
ボタンを作成するにはまずCanvasを作成する必要があります。
Canvasの作成
作成方法は、HierarchyビューでCreate > UI > Canvasです。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.14.54.png)
キャンバスにカメラを設定していきましょう。
Canvasオブジェクトを選択した状態でinspectorからRender Modeを『Screen Space – Camera』に変更します。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.15.07.png)
どのカメラがキャンバスを映すのか設定します。
Render Cameraの部分にCameraオブジェクトをドラッグ&ドロップしてください。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.15.24.png)
これでカメラオブジェクトがセットされました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.46.06.png)
キャンバスが作成できたので、キャンバスの子階層にボタンを作りましょう。
ボタンを作成
ボタンはキャンバスを選択した状態で、Create > UI > Buttonで作成できます。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.51.53.png)
これでボタンが作成できました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.56.15.png)
Gameビューを見るとボタンが球よりも後ろにあるのでキャンバスの位置を変えましょう。
キャンバスの位置はPlane Distanceで変更することができます。
値を『1』に変更しましょう。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.57.56.png)
キャンバスの位置を変更するとボタンが球よりも前に来るようになりました。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-22.59.58.png)
ボタンの位置を変更して球よりも少し上になるようにしましょうか。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-23.06.23.png)
ボタンに関数をセットする
この段階でボタンに『GameManager』というオブジェクトをセットして、その中にあるPushButton関数をセットしましょう。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-23.09.58-1.png)
ボタンに関数をセットするやり方がわからない方はこちらの記事をどうぞ『よくわかるButtonの使い方-Buttonの理解をグッと深めよう!』
変数をセットする
最後にスクリプトに変数をセットしましょう。
Camera、subCamera、Canvasオブジェクトをそれぞれドラッグ&ドロップでセットしていきます。
![](https://mogi0506.com/wp-content/uploads/2019/05/スクリーンショット-0031-05-13-23.20.22.png)
それでは実行してボタンを押した時にカメラが切り替わるか確かめてみましょう。
実行結果は、
![](https://mogi0506.com/wp-content/uploads/2019/05/名称未設定.mov-4.gif)
無事にカメラが切り替わっていますね!
まとめ
カメラを切り替える方法について解説してきました。
この記事では、カメラが二台でしたが応用すれば複数台でも切り替えることができます。
気が向いたらやってみてください!