Unityで作る3D脱出ゲームの作り方を紹介している記事その15です。
僕が所属しているオンラインサロンの
先生である嶋津さんが作成された動画を
見ながら勉強した内容について、
「3D脱出ゲームの作り方」
としてまとめている記事になります。
その15となるこの記事では、
「カメラのズームをする方法」
についてお伝えしています。
参考となる動画はこちらです。
【Unity3D】脱出ゲームの作り方 # 15カメラのズーム
Udemyの場合は
セクション8
65.ズームカメラの実装
66.戻るパネルの実装
についての内容です。
この動画で勉強すること
▶︎カメラのズームを実装して視点の変更をする。
目標1
ズームカメラ用のC#スクリプトを作成する。
=>ズームカメラの処理を書くスクリプトを作る。(CameraZoomObjスクリプト)
=>クリック判定をする関数を書く。
目標2
ズームをする場所にクリック判定をつける。(今回は宝箱)
=>宝箱(Chest)にCameraZoomObjスクリプトをつける。
=>宝箱(Chest)にイベントトリガーをつけて設定する。
=>宝箱(Chest)にコライダーをつける。(Box Collider)
目標3
ズーム用のカメラを作る。
=>宝箱(Chest)の子要素にcameraを作る。
=>cameraの位置調整などを行う。
=>ズームカメラの設定を行う。
目標4
宝箱をクリックした時にズームカメラへ切り替える処理を作る。
=>CameraManagerスクリプトにコードを書く。
=>CameraZoomObjスクリプトの編集をする。
目標5
ズーム状態から元の位置に戻る処理を作る。
=>元の位置に戻る時にクリックするPanelを作る。(BackPanel)
=>CameraManagerスクリプトにコードを書く。
CameraZoomObjスクリプトのコード
カメラのズームを行うために作成した
CameraZoomObjのコードは
以下となります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraZoomObj : MonoBehaviour
{
[SerializeField] Camera zoomCamera = default;
// クリックしたら、用意してあるカメラに切り替える
public void OnClickThis()
{
Debug.Log("カメラ切り替え");
CameraManager.instance.SetZoomCamera(zoomCamera);
}
}
CameraManagerスクリプトのコード
カメラのズーム処理を行うために
今回編集を行ったCameraManagerの
コードは以下となります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraManager : MonoBehaviour
{
// カメラの切り替え
// どこにどのカメラを有効にするのか
// どこに
// ・mainの全体を回転するカメラ
// ・ズームしたときのカメラ
Camera currentCamera;
Camera mainCamera;
// 全体を回転するカメラのポジションを作成
[SerializeField] Transform[] mainCameraTransforms = default;
int currentMainPosition = default;
//どのファイルからでも関数が実行できるようにする
public static CameraManager instance;
private void Awake()
{
instance = this;
}
private void Start()
{
mainCamera = Camera.main;
currentCamera = Camera.main;
currentMainPosition = 0;
currentCamera.transform.position = mainCameraTransforms[currentMainPosition].position;
currentCamera.transform.rotation = mainCameraTransforms[currentMainPosition].rotation;
}
public void TurnLeft()
{
currentMainPosition--;
if(currentMainPosition < 0)
{
currentMainPosition = mainCameraTransforms.Length-1;
}
currentCamera.transform.position = mainCameraTransforms[currentMainPosition].position;
currentCamera.transform.rotation = mainCameraTransforms[currentMainPosition].rotation;
}
public void TurnRight()
{
currentMainPosition++;
if(currentMainPosition >= mainCameraTransforms.Length)
{
currentMainPosition = 0;
}
currentCamera.transform.position = mainCameraTransforms[currentMainPosition].position;
currentCamera.transform.rotation = mainCameraTransforms[currentMainPosition].rotation;
}
public void SetZoomCamera(Camera camera)
{
currentCamera.gameObject.SetActive(false);
camera.gameObject.SetActive(true);
currentCamera = camera;
}
public void OnBackButton()
{
mainCamera.gameObject.SetActive(true);
currentCamera.gameObject.SetActive(false);
currentCamera = mainCamera;
}
}
カメラのズームで勉強したことのまとめ
3D脱出ゲームの作り方その15
「カメラのズーム」で勉強した
内容についてのまとめです。
・カメラのズームを行うには、
まずズームカメラ用の
C#スクリプトを作成します。
・次にズームをする場所に
クリック判定を作り、
ズーム用のカメラを作成します。
・そしてクリックした時に
ズームカメラに切り替える処理を
C#スクリプトに書きます。
・最後にズーム状態から元の位置へ
戻る処理をスクリプトに書きます。
今回の内容を実践してPlayボタンで
実行すると、
宝箱をクリックした時に
ズームした視点へカメラを
切り替えられるようになります。
以上で「カメラのズーム」の
目標は達成です!