カメラのサイズ調整(拡大/縮小)で複数解像度に対応-orthographicSize-【Unityメモ】

Unityゲーム作成で、カメラのサイズを調整するメモです。

主にスマートフォンゲームで使えそうな感じのものです。

はじめに

「Unity 2021.3.3f1」ヴァージョンで作成、2Dゲームを例としています。

スクリプトで「カメラサイズを調整する」メモみたいなものです。

カメラ表示範囲調整

下記で「カメラの表示範囲を調整する方法」を書きました。下記の表示範囲調整の場合、縦にも横にも「余白」が発生する可能性があります。

今回は、カメラのサイズを変更して様々な解像度に対応していきます。余白を出したくない場合の方法と言う感じです。(他にも対応方法は沢山あるのであくまでも一例です)

調整開始

まずはスマートフォンの縦画面を想定した画面を用意。

以前作成した2Dシューティングを利用して対応してみます。

9:16の縦画面だと問題なく表示されています。

しかし、デバイスによっては下記の様に表示されてしまいます。

これをカメラの表示範囲調整で対応した場合、下記の様に表示されます。ちょっと横の余白が気になる感じです。

ここで、カメラの背景色を変更。作業画面ではいい感じになります。

実行すると、やはり余白が気になります。

カメラのサイズ変更

カメラの表示範囲を調整するのではく、カメラのサイズ(拡大/縮小)変更を行い対応してみます。

カメラにアタッチしているスクリプトを下記内容に変更。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AdjustCamera : MonoBehaviour
{
    [SerializeField] private Camera _Camera;
    [SerializeField] private Vector2 _aspectVec2;
    [SerializeField] private float _pixelPerUnit;

     void Start()
    {
        float screenW = (float)Screen.width;
        float screenH = (float)Screen.height;

        _Camera.orthographicSize = screenH / (screenW / (_aspectVec2.x / _pixelPerUnit)) / 2;
    }
}

下記の様にパラメータを設定。今回は、カメラサイズが5を基本に作成してあるので、Y軸1600の半分の800になるように、パラメータには160をセット(5×160=800)。

例えば、Sizeを800で画面作成していればPixelPerUnitのパラメータ値は1です。

この辺の細かいことは下記の公式リファレンス参考。

実行画面

スクリプトを変更して実行すると、画面が縦長の場合はカメラを引き、横長の場合はアップになる感じです。

タイトルとURLをコピーしました