본문 바로가기

[Unity] 트랜스폼(Transform) 크기(Scale)

·
2019. 11. 25. 10:28
반응형

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.localScaleVector3를 대입하면 크기가 변경됩니다.

부모가 없을 경우에는 Transform.lossyScale과 동일합니다. 만약 부모의 localScale(2, 2, 2) 이고 자식의 localScale(1, 1, 1) 이라면 자식의 절대적인 크기는 (2, 2, 2)가 됩니다.

다음은 Transform.localScale의 예제 코드입니다.

transform.localScale = new Vector3(2f, 2f, 2f);

참고

반응형
블로그 이미지
Frontend Engineer

댓글