**以下はゲーム開発ツール「Unity」の技術ブログで開発者向けの記事になってしまいました。。。作ってるゲームについてワイワイ話す機会はまた別にします(^▽^)
ゲーム開発をしようとUnityを選択したらまず困るのがカメラサイズとスクリーンの関係、そしてカメラと画像の縮尺周り。またゲーム空間とマウス操作するスクリーンとユーザーの間の関係性、それらについて簡単にまとめます。
カメラのサイズについて
Unityの単位は”Unit”です。このUnitは2Dマップチップの1Unitの大きさと考えて差し支えないです。2D画像スプライトの”PixcelPerUnit”はデフォルトで100です。なのでUnityは1体のUnitが100pxがデフォルトのようです。
カメラのサイズは1だと縦に2Unitおけます。これはスクリーン上に高さ200pxが引き延ばされて表示される状態です。なのでカメラのサイズはUnitを縦に何体表示したいかその半分の値を設定すればOKです。
なので縦に20体、32pixcelのUnitを表示するならカメラのサイズは”10″でスクリーンのサイズは高さ640が画面いっぱいに引き延ばされて表示される状態です。
ゲーム空間とスクリーンについて
上から順に5つの層に分かれています。
- マウス
- スクリーン
- カメラ
- ワールド
- オブジェクト
Unityでサイズ単位はUnit
上でも書きましたがおさらいです。テクスチャやビットマップの2D画像はPixcel単位なのでUnityのワールドに配置するときはワールドの単位の”Unit”に変換されます。Spriteには”PixcelPerUnit”って1Unitは何Pixcelか指定できる欄があります。画像毎に1Unit-32Pixcelとか1Unit-256Pixcelとか指定できます。
Unityのワールド空間に3Dオブジェクトの例えばBoxを配置したら3辺のScale1で1Unitと同じ大きさでした。X,Y,Zそれぞれの編の長さが1Unitになるようです。
で次にスクリーン上のマウスで画面中央のBoxを左下に移動したいときは、マウスはワールドにいるんじゃなくてスクリーン上にいて、カメラで写されたスクリーン上のワールド空間を示してる座標なのでマウス座標をカメラを通してワールド座標に変換してもらうひと手間が入る。
メソッドは Main.camera.ScreenToWorld()
アプリ化で画像のにじみについて
Sprite の Filter Mode はPixcelの境界がぼけるので”なし”を設定して、Sprite の 出力設定欄に圧縮設定があるのでこちらも”なし”を設定します。
これでUnityのカメラと画像の悩みや画像がにじむ悩みが減るかもしれない。
コメントを残す