【Untiy】シーン全体が画面に納まるようにしたい

またまた、行き詰まったのでメモです。

レベルごとにシーン空間が異なるというのは、よくあると思うけど、
画面に納まるようにシーンを表示したいときってないですか?

私の場合、GameSceneはレベル共通で1個しかないので、レベルによってCameraを自動調節したいなぁと思ったわけです。

悩んだ末に、なんとか出来たのでメモしておきます。

まずは、制作中のアプリ画面がこちら。
プレイ中は、Playerに焦点をあてるからいいんだけど、ゲームの性質上、こんな風に、画面全体を見渡したい時があるんです・・。

level_2.png

実際のシーンと、真横から見たイメージがこちら。

scene_1.png

scene_2.png

つまり、カメラの位置を知るためには、赤い文字で書いたyとzの値が分かるといいハズ・・

keisan.png

では、早速、計算です。
カメラは、下記の設定とします。

 X軸回転(rotation.x):θ
 視野角(field of view):α

まず、X軸回転角と視野角から、真横から見た図の回転角(β)は、下記の式で求まります。

β = θ - α/2

βさえ分かれば、あとはカンタン。
図から、下記の式が成り立つでしょ?

tan(α+β) = y/z     → y = z * tan(α+β)
tan(β) = (y - h)/(d + z)  → y = (d + z) * tan(β)

この2つの式から、yとzの値が分かるので、めでたくカメラの位置が計算できましたヽ(´▽`)ノ


この記事へのコメント