Transform.lossyScale
Transform.lossyScale
은 게임오브젝트의 절대적인 크기를 나타냅니다.Transform.lossyScale
은 읽기전용(readonly)이기 때문에 게임오브젝트의 절대적인 크기를 설정할 수 없습니다. Transform.lossyScale
은 게임오브젝트의 부모 자식 관계에서 자식이 회전했을 경우 크기가 왜곡되기 때문에 유니티에서는 절대적인 크기를 설정할 수 없게 한 것 같습니다.
다음은 Transform.lossyScale
의 예제 코드입니다.
Debug.Log(transform.lossyScale);
Transform.lossyScale
으로는 절대적인 크기를 설정할 수 없지만 절대적인 크기를 설정하는 다른 방법이 있습니다.
부모를 null
로 설정하고 localScale
을 설정한 후 다시 원래 부모를 설정해주면 절대적인 크기를 설정하는 것과 동일하게 됩니다.
다음은 절대적인 크기를 설정하는 예제 코드입니다.
public class ScaleExample : MonoBehaviour
{
void Start()
{
Transform parent = transform.parent;
transform.parent = null;
transform.localScale = new Vector3(1f, 2f, 3f);
transform.parent = parent;
}
}
Transform.localScale
Transform.localScale
은 게임오브젝트의 상대적인 크기를 나타냅니다.
게임오브젝트의 부모가 있을 경우 부모를 기준으로 상대적인 크기를 나타냅니다. 부모의 크기가 변경되면 자식의 크기도 변경됩니다. Transform.localScale
에 Vector3
를 대입하면 크기가 변경됩니다.
부모가 없을 경우에는 Transform.lossyScale
과 동일합니다. 만약 부모의 localScale
이 (2, 2, 2)
이고 자식의 localScale
이 (1, 1, 1)
이라면 자식의 절대적인 크기는 (2, 2, 2)
가 됩니다.
다음은 Transform.localScale
의 예제 코드입니다.
transform.localScale = new Vector3(2f, 2f, 2f);
댓글