うにてぃブログ

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

【Unity】RectTransform の Pivot 変更

RectTransform を Scale した場合 Pivot の位置から Scaleされるので
Pivot (0.5, 0.5) 以外の場合変な Scale 処理になってしまう

なので Scale処理の間は Pivot を (0.5, 0.5) にして終わったら Pivot を戻すことでいい感じに Scaleさせることができる

単純に pivot の値だけ変更したとしても正しい挙動にならないため
pivot と localPosition 両方を変更してあげる必要がある

f:id:hacchi_man:20200311002402g:plain

コード

public static void SetPivot(this RectTransform self, Vector2 v)
{
    var size = self.rect.size;
    var deltaPivot = self.pivot - v;
    var deltaPosition = new Vector3(deltaPivot.x * size.x, deltaPivot.y * size.y);
    self.pivot = v;
    self.localPosition -= deltaPosition;
}