おもちゃバコ

主に趣味について

Unity: アスペクト比を固定する方法を考える(2D/縦持ち)

こんにちは

Unityでスマホ用の2Dゲームを作る際にアスペクト比はどうするんだろうと思って調べました.
今回はその時の備忘録です.

カメラは平行投影(Orthographic)を対象としているので,透視投影でも使えますが見栄えが変わるかも...
また,スマホ縦持ちを想定しています(横持でも考え方は一緒のはずです).


参考文献

ほとんど参考にさせていただきました.
pengoya.net


開発環境

Unity 2020.3.25.f1
Windows10 Home 21H2


Orthographic Sizeとは

アスペクト比の固定はOrthographic Sizeを弄ることで実現します.

Orthographic Sizeとは,画面縦半分に何Unit入るかです(多分).

The orthographicSize is half the size of the vertical viewing volume.
The horizontal size of the viewing volume depends on the aspect ratio.

docs.Unity3D.com

docs.unity3d.com
ogamita777.hatenablog.com


スクリプト

メインカメラにアタッチするスクリプトです.

特に解説することは無いのでプログラムコメントに書いておきます.

画面サイズ変更時の処理

画面サイズ変更はUpdate()で解像度を見張ることで実現しています.

画面サイズ変更用のコールバック(イベント)はまだなさそうです(?).

answers.unity.com
stackoverflow.com

注意点

メインカメラのSizeはあらかじめターゲットとする解像度のサイズに合わせておいた方が良いです.

スクリプトを実行したときに設定されるSizeに変更するとSceneを弄るときに楽です.
f:id:lambda410:20211231115759p:plain


追記(22/01/04)

上のコードだと解像度によっては上手く固定されないことが発覚しました.

以前アスペクト比を無理やり固定したことがあったので,その時のソースコードを共有します.
アスペクト比は固定されますが,上下の余白にゴミが表示されたかも.


まとめ

縦持ち用のアスペクト比固定について考えてみました.

もしかしたらビルドしたとき余白にゴミが映るかもしれないので,次はその対策について考えたいと思います.