Unity 2D スプライトの大きさを取得する


0.0 はじめに

スプライトの大きさをSpriteRendererを使って取得します。

1.0 準備

四角いスプライトを1つ用意しました。

横が1のサイズ、縦が2のサイズ、中心は(-0.5, 0.2)です。



<参考情報>
使用した四角のスプライトは100 x 100 px(ピクセル)の画像です。この画像の設定(Sprite Mode)でPixels Per Unitを100に設定しています。これで100 pxはワールド座標で1の大きさに相当します。
用意した四角は中心が(-0.5, 0.2)の位置で横の長さが1、縦が2なので、右上の角は(0.0, 1.2)の位置にあります(これがbounds.maxに相当します)

2.0 Spriteのサイズを取得する

SpriteRendererのboundsが使えます。サイズや場所はワールド座標です。

Test.cs
GameObject sqObj = GameObject.Find("Square"); // 目的のスプライトのオブジェクトを取得
SpriteRenderer sqSr = sqObj.GetComponent<SpriteRenderer>();//目的のスプライトのSpriteRendererを取得
Debug.Log("四角のサイズは " + sqSr.bounds.size + " です"); // 四角のサイズは (1.0, 2.0, 0.2) です
Debug.Log("四角の横の長さは " + sqSr.bounds.size.x + " です"); // 四角の横の長さは 1 です
Debug.Log("四角の縦の長さは " + sqSr.bounds.size.y + " です"); // 四角の縦の長さは 2 です
Debug.Log("中心からの距離は " +sqSr.bounds.extents+ " です");//中心からの距離は (0.5, 1.0, 0.1) です
Debug.Log("中心の座標は " + sqSr.bounds.center + " です");//中心の座標は (-0.5, 0.2, 0.0) です
Debug.Log("右上の座標は " + sqSr.bounds.max + " です");//右上の座標は (0.0, 1.2, 0.1) です
Debug.Log("左下の座標は " + sqSr.bounds.min + " です");//左下の座標は (-1.0, -0.8, -0.1) です

👍ポイント
sqSr.bounds.max.x (sqSr.bounds.min.x)、sqSr.bounds.max.y (sqSr.bounds.min.y)にてx座標、y座標を取得出来ます。