うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】RectTransform の 中心座標を取得する

RectTransform の位置を取得するとPivot に応じた位置が取得できる

たまに Pivot (0.5, 0.5) の場合の位置を取得したい場合に利用できます

f:id:hacchi_man:20200506232943p:plain

using UnityEngine;
 
public static class RectTransformExtension
{
    public static Vector3 CenterPosition(this RectTransform self)
    {
        var position = self.position;
        var diff = new Vector3(
            Mathf.Lerp(-self.rect.size.x / 2f, self.rect.size.x / 2f, self.pivot.x) * self.transform.lossyScale.x,
            Mathf.Lerp(-self.rect.size.y / 2f, self.rect.size.y / 2f, self.pivot.y) * self.transform.lossyScale.y
        );
        return position - diff;
    }
}