【Unity】脱出ゲームでカメラズームを実装する

unity

脱出ゲームでのカメラワークって大事です。

調べても良い方法があまりなかったんですが、最近良い方法を見つけたので共有したいと思います。

下の動画のようにオブジェクトをクリックしたらズーム、戻るボタンで戻るやり方を書いていきます。

動画だとカメラが移動して見えますが、オブジェクトの中にサブカメラを用意してクリックと同時に切り替えているだけです。

戻る時には逆にメインカメラをオン、サブカメラをオフにします。

まずは、ズームのためのサブカメラを配置します。

白いカプセルをクリックしたらこのサブカメラがOnになるように実装します。

カプセルを移動してもカメラが追従するように、サブカメラはカプセルの子として配置すると良いです。

カプセルに下記のスクリプトをアタッチしサブカメラをセットします。

using UnityEngine;

public class ZoomCameraObj : MonoBehaviour
{
    [SerializeField] Camera zoomCamera;
    public void onClickThis()
    {
        //Cameraズームするのを呼び出す
        CameraManager.instance.setZoomCamera(zoomCamera);
    }
}

クリック判定するためにEvent Triggerで、上記のスクリプトを呼び出してあげます。

以下のスクリプトでズーム処理を実装します。

using UnityEngine;

public class CameraManager : MonoBehaviour
{
    [SerializeField]Transform[] cameraTransforms;
    int currentCameraPosition;

    static public CameraManager instance;

    Camera currentCamera;
    Camera mainCamera;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
    }

    public void setZoomCamera(Camera camera)
    {
        camera.gameObject.SetActive(true);
        Camera.main.gameObject.SetActive(false);
        currentCamera = camera;
    }

    public void backMainCamera()
    {
        currentCamera.gameObject.SetActive(false);
        mainCamera.gameObject.SetActive(true);
    }
}

カメラの切り替えにはSetActiveでオンオフを操作してあげるかんじです。

backMainCameraは戻るボタンが押された時に呼び出します。

Udemy

Udemyで脱出ゲームの作り方について解説しています。

https://www.udemy.com/course/unity-3d-escape-game/learn/lecture/28687266#overview

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog