Transform の Global Scale (lossyScale) は Read Only のため値の変更が出来ない
そのため lossyScale を指定した値にする拡張を作成した
/// <summary> /// <para>The global scale of the object (Read Only).</para> /// </summary> public Vector3 lossyScale { [NativeMethod("GetWorldScaleLossy")] get { Vector3 ret; this.get_lossyScale_Injected(out ret); return ret; } }
コード
public static class TransformExtension { /// <summary> /// lossy scale を 1 にする /// </summary> public static void ResetLossyScale(this Transform self) { self.SetLossyScale(Vector3.one); } /// <summary> /// lossy scale を 指定の値にする /// </summary> public static void SetLossyScale(this Transform self, Vector3 scale) { self.localScale = new Vector3( scale.x / self.lossyScale.x * scale.x, scale.y / self.lossyScale.y * scale.y, scale.z / self.lossyScale.z * scale.z ); } }