うにてぃブログ

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

RectTransform の Pivot が Center の位置の座標を取得する

public static Vector2 GetCenterPosition(RectTransform rect)
{
    var position = rect.transform.position;
    
    // 真ん中Pivotじゃなければ真ん中を計算する
    if (rect.pivot != new Vector2(0.5f, 0.5f))
    {
        var scaleX = rect.transform.lossyScale.x;
        var scaleY = rect.transform.lossyScale.y;
        var x = rect.rect.width / 2f * scaleX;
        var y = rect.rect.height / 2f * scaleY;
        position.x += Mathf.Lerp(x, -x, rect.pivot.x);
        position.y += Mathf.Lerp(y, -y, rect.pivot.y);
    }
    
    return position;
}