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

Unityゲーム作成で、解像度・アスペクト比に合わせてカメラのサイズを調整するメモです。主にスマートフォンゲームで使えそうな感じのものです。

はじめに

Unityのバージョンは2021.3.14f1です。2Dゲームを例としています。

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

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

調整開始

まずはスマートフォンの縦画面を想定したUI画面を用意します。今回は、以前作成した2Dシューティングを利用して対応してみます。(何でも問題ないです)

9:16の縦画面を想定して作成しているため、問題なく表示されます。

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

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

カメラのサイズ変更

カメラの表示範囲を調整するのではく、カメラのサイズ変更(Orthographic Size)を行い対応してみます。カメラにアタッチしているスクリプトを下記内容に変更。

using UnityEngine;

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

     void Start()
    {
        Camera _Camera = GetComponent<Camera>();

        float screenW = (float)Screen.width;
        float screenH = (float)Screen.height;

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

下記の様にパラメータを設定します。

簡単な説明

カメラサイズは初期値の5で作成してあります。Size=Y軸の表示したい画素数/PPU/2になります。(5=1600/160/2)。

なので、パラメータのPPUには160をセット。この辺の細かいことは下記の公式リファレンス参考。

実行画面

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

実際には上限と下限を決めて、余白を埋める背景を用意しておくのが良いかな。

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