(8)複数のカメラを切り替える

「複数のカメラ」を画面内に配置して、それらのカメラを切り替える方法を学びます。

1)カメラをもう1台作る(Sub Camera)

・デフォルト(最初の設定)では、画面内には「Main Camera」というカメラが1つだけ存在しています。

スクリーンショット 2016-02-12 10.18.24

ここにもう1台カメラを増やします。

・「Hierarchy」→「Create」→「Camera」をクリック

スクリーンショット 2016-02-12 10.18.41

・名前は「Sub Camera」に変更しましょう。

スクリーンショット 2016-02-12 10.18.55

・「Sub Camera」を「Main Camera」と異なる見え方(視点)に変更してください。

スクリーンショット 2016-02-12 10.19.17

・見え方を変更したら、「GameObject」→「Align With View」をクリックしましょう。

スクリーンショット 2016-02-12 10.21.26

これで複数のカメラの準備ができました。

次に、この複数のカメラを切り替えるスクリプトを作成します。

2)複数のカメラを切り替えるスクリプト

・いつものように、まずは「C#」スクリプトを作成。

・名前を「CameraController」と変更しましょう。

・変更したらダブルクリック

*下記のコードを記載しましょう。

*今回は「GetButton()」を使用するので注意!

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {

	// 変数を定義する(データを入れる箱を作る)
	public Camera mainCamera;
	public Camera subCamera;

	void Start () {

		// ゲーム開始時点では「サブカメラ」を「無効(オフ)」にしておく。
		subCamera.enabled = false;
	
	}

	void Update () {

		// もしも「Fire2」のボタンを「押し続けている間」は
		if(Input.GetButton("Fire2")){

			// メインカメラを「無効(オフ)」にする。
			mainCamera.enabled = false;

			// サブカメラを「有効(オン)」にする。
			subCamera.enabled = true;

		} else { // そうでない間(Fire2ボタンを離している間)は

			// メインカメラを「有効(オン)」にする。
			mainCamera.enabled = true;

			// サブカメラを「無効(オフ)」にする。
			subCamera.enabled = false;
		}
	}
}

・コードが書けたらチェックして、次に、このスクリプトを付けるオブジェクトを作成します。

3)「CameraController」オブジェクトを作成する。

・「Hierarchy」→「Create」→「Create Empty」を作成

・名前を「CameraController」に変更

(ポイント)

*「Create Empty」は中身が空っぽのオブジェクトです。今回のように、スクリプトを付ける目的で使用することが多いので覚えておきましょう。

・名前を変更したら、「CameraController」スクリプトをドラッグ&ドロップ。

・その次に「Main Camera」と「Sub Camera」をドラッグ&ドロップでセット

スクリーンショット 2016-02-12 12.02.03

(重要なポイント!)

*ここでカメラをセットできない人は下記を確認しましょう。

アセット内に<追っかけカメラの「Camera」スクリプト>が存在する場合は、そのスクリプトの名前を「ChaseCamera」に変更してください。(Camera→ChaseCameraに変更)

・ここまでできたら「再生ボタン」を押してみましょう。

・「Fire2」に設定してあるボタンを押すとカメラが切り替われば成功です。

(+ポイント)

コンソール画面に「There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.」と表示されている場合の解決方法。

これはシーンの中に「audio listener」が2つ存在しているという警告です。

「audio listener」「camera」オブジェクトに最初から備わっている機能(コンポーネント)です。

スクリーンショット 2016-06-10 20.52.47

今回はサブカメラの「audio listener」は不要なので外しておきましょう。

「歯車」をクリック→「Remove Component 」をクリック。

スクリーンショット 2016-06-10 20.53.45

これで警告文は消えます。


(プログラミングポイント)

「if else文」の構造を覚えよう!

if (   条件   ){

もしも条件が揃った場合には、この{ }の中の命令を実行する。

} else {

そうでない場合には、こちらの{ }の中の命令を実行する

}