유니티에서 기본적으로 Scale 값에 음수가 들어간다.
기본적으로 Scale 값이 1일 때나 -1일 때나 겉으로 보이는 크기는 달라지지 않는다.
하지만 실행을 시켜보면 문제가 발생하는 것을 알 수 있다.
쉽게 말해서 Scale값에 음수가 들어가면 예기치 못한 에러가 발생할 수 있다 라는 뜻이다.
그러면 절대로 사용하면 안되는걸까?
절대라는 것은 없다.
꼭 사용해야 한다면 다음과 같은 방법을 사용하자.
해결법
내가 사용한 간단한 해결법이다.
Scale을 조정하고 싶은 오브젝트를 빈 오브젝트로 한 번 감싼다.
그 후에 Scale을 조정할 때는 부모의 Scale만 조정하고 자식의 Scale은 (1, 1, 1)로 고정시킨다.
그리고 부모의 Scale이 음수가 되면 그에 맞는 축의 자식 Scale도 음수로 바꿔주면 해결할 수 있다.
쉽게 말해 부모의 Scale이 (-5, 5, -5)이면 자식 Scale은 (-1, 1, -1)이 되면 된다.
그렇게 되면 5x5x5 크기의 오브젝트가 에러 없이 존재하는 것을 알 수 있다.
왜?
이유는 유니티의 Transform 계층 구조를 이해하면 쉽게 알 수 있다.
Scale은
전역 Scale값 = 부모 객체의 전역 Scale 값 x 자식 객체의 로컬 Scale 값
이라는 공식을 가지고 있기 때문이다.
공식으로 인해 부모와 자식의 Scale값이 모두 음수라면 최종적으로 양수가 되어 collider에서 에러를 발생시키지 않게 되는 것이다.
'게임 개발' 카테고리의 다른 글
Unity Engine 내에서 오브젝트 중심으로 Pivot 옮기 (0) | 2024.05.26 |
---|---|
LateUpdate가 중요한 이유 (0) | 2024.04.25 |
Start vs Awake 확실하게 알고 가자 (0) | 2024.04.23 |
UnityEngine.Assertions 을 이용한 에러 검출 (0) | 2024.04.21 |