196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

Unity SpriteからTextureを切り抜き 透明ポリゴン

tsubakit1.hateblo.jp


2Dゲームなんかを作る時に、一つの画像データに複数のイメージをまとめておいて、読み込む時に切り抜いて使用する事ありますよね。
その時、少し注意しないと、大きさが崩れます。特に、切り抜いた後その画像のサイズなんかを使う際には、意図した大きさと変わっている事で、配置バランスが崩れることもあるので注意ですね。

原因は、透明なポリゴンが画像の周りに含まれていること



デフォルトでは、どうやら透明ポリゴンが画像の周囲を囲っている場合、上手くそれを無視して切り抜くそうで、結果的にtextureのサイズは一回り小さくなります。
Unityさんやっぱり賢いので、そういうところまで融通を聞かせてくれるんですね。





上のリンク先の方が解決してくれていますが、Sprite.Create()の第6引数に注意することですね。

// スライス
Sprite tile = Sprite.Create(textureMap.texture, rect, pivot, this.tiledMap.TileWidth, 0, SpriteMeshType.FullRect);


FullRectを指定することによって、透明なポリゴンの部分も考慮して切り抜かれます。全てのマップのピクセルを統一している時などに、注意が必要です。