[Unity] カメラと画像のサイズや縮尺また画像のにじみについて

chocomintboy256のアバター

**以下はゲーム開発ツール「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のカメラと画像の悩みや画像がにじむ悩みが減るかもしれない。

Category: ,

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です