Unity Scale around
2019-04-06 / 1 min read
From Scale around points similar to rotate around
public static void ScaleAround(Transform target, Vector3 pivot, Vector3 newScale)
{
Vector3 A = target.localPosition;
Vector3 B = pivot;
Vector3 C = A - B; // diff from object pivot to desired pivot/origin
float RS = newScale.x / target.localScale.x; // relative scale factor
// calc final position post-scale
<!-- more -->
Vector3 FP = B + C * RS;
// finally, actually perform the scale/translation
target.localScale = newScale;
target.localPosition = FP;
}