より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Unityの2D画面座標って、何ベース? タイルセット描画をしてみた

Unityの2Dゲームテンプレートを触っていたのですが、キャラの座標が-5とかで画面の端になってしまいます。この画像は128x128なんですが。

f:id:rimever:20210720203943p:plain
画像は128x128のサイズなんですが

Unityは3Dありきでカメラ位置で2Dを実現しているからのようです。

f:id:rimever:20210720204442p:plain
2DトグルをオフにするとX軸とY軸のみで表現している

CameraのSizeを10に調整して、画面の比率を調整して色々試してみました。

まず、座標軸。画面の中央をX=0,Y=0として、上に行くにつれプラス、右にいくにつれプラス。数学の座標と一緒ですね。

CameraSizeの10は画面の高さにそのまま当てはまり、幅は画面比率で決まります。

f:id:rimever:20210720205442p:plain
CameraのSize10で16:10なら、画面左端は-8となる

Sizeはどうすればいいのか? じゃあ、縦の画素数を300にしたいんだったら、Camera.Sizeを300にすればいいんじゃない?

と思いました。そしたら、全然表示されませんでした。Camera.Sizeが大きすぎるんでしょう。

Camera.Sizeは何が適切なのか?

kan-kikuchi.hatenablog.com

上記の記事を参考にさせていただいたところ、以下になるようです。

縦に表示したい画素数 / Pixels Per Unit(100) / 2 = Size

Pixels Per Unitはデフォルトが100なので、100固定で計算して良さそうです。

つまり、300にしたいなら、Camera Sizeは3.00です。

ピクセルとしての座標に対して100で割って、原点中央で算出すれば良いので、とても扱いやすいですね。

f:id:rimever:20210725184616p:plain
良さそう

画像を切り出すときは左下原点で算出する必要があるので注意です。私は、左上原点に慣れているので、ここがハマってしまいました。

https://github.com/rimever/UnityChipDraw