読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

LWFとカメラの位置

Unity

LWFは既存のUnityプロダクトとは大分違った思想で作られてる気がする。今はそれが「凄く使いにくい」につながっているが、理解すれば凄く使いやすい物に変わるはず…(多分)

とりあえずスプライトが出現する位置について、少し勘違いしていたらしい。

tsubakit1.hateblo.jp

どうやらLWFはFlash内のマージンまで再現するらしく、それがあの奇妙な位置にスプライトを表示する原因だったらしい。

座標系(らぶらぶはぁと)
http://www.loveloveheart.com/unity/lwf/coordinate_system.php

なので「UI丸ごと再現」するといった目的であれば、この仕様は非常に正しいっぽい。

スクリーンショット 2013-02-10 1.06.01

ちなみに「UI丸ごと再現」するにはカメラを正しく設定しなければならない。

なにせLWFは「シーンビューに表示されない」致命的な問題があるので(表示出来る物もあるが、概ね表示されない)カメラの設定方法を忘れると本当に使い物にならない。
この部分で躓いた人は多いと思うし、自分もちょくちょく忘れるのでメモっとく。


■カメラの設定

LWFのカメラ設定は、下のような設定にしてやる必要がある。

・ProjectionをOrthographicに
・SizeをFlashの横幅に
・Transformのpositionを、xはFlash横幅の半分、yはFlash縦幅*-1

下の画像はFlashサイズ(640,480)の例。
スクリーンショット 2013-02-10 0.52.10


■NGUIの場合

LWFはNGUIのGUIと連携することもできる。

【LWF】【NGUI】NGUIでLWFを表示する
http://unity-study.net/archives/495

しかしNGUIはカメラ設定を勝手に変更する便利なUIRootがあり、普通に動かすと画面外にスプライトが行ってしまう。

なので対策としてUIRootの「Automatic」のチェックを外し、Manual HeightをFlashの高さに合わせてやる。次に画面の比率をFlashの比率似あわせてやればOKらしい。

ちなみにNGUIを通してLWFを使うと、LWFObjectInspectorから確認出来なくなるらしい。これのせいで「LWF動かしてんのに動いてない」という状態になって3時間ほどソースコードとにらめっこしてたのは秘密。