유니티 3D에서 Empty GameObject 를 이용하여 계층구조를 구성하는 예
유니티에서 Empty GameObject 는 아무런 형체가 없고 보이지도 않지만 장면 중에서 위치정보는 가지고 있으며 다른 게임 오브젝트들을 한 그룹으로 다루고자 할 때 자주 사용한다. Empty GameObject 안에 다른 오브젝트를 포함하도록 하면 Empty GameObject 가 다른 게임 오브젝트의 부모 오브젝트가 되므로 부모 오브젝트를 이동하거나 회전시키면 그 안의 자식 오브젝트들은 모두 함께 부모의 위치에 상대적으로 움직이기 때문에 마치 한개의 오브젝트와 같은 효과를 낼 수 있다. 여러 개의 오브젝트가 한개의 구조물을 이루는 경우에 매우 유용할 것이다.
여기서는 Empty GameObject 를 이용하여 집안의 방문과 같이 고정된 한쪽이 중심이 되어 회전하는 미닫이 문을 구현해 보려고 한다.
유니티에서 새로운 프로젝트를 생성하고 Scene 뷰에 큐브를 하나 올린 다음 집안의 방문과 같은 형태로 크기와 두께를 조정하고 구를 하나 올린 다음 문의 손잡이 위치로 배치한다. 이렇게 하면 2개의 오브젝트로 구성한 방문이 만들어진 셈이다.
방문을 구성하는 큐브(Cube)와 구(Sphere)는 이제부터 서로 분리되어 따로 이동하거나 회전하면 안된다는 것을 우리 모두는 알고 있다. 그러나 지금 이 상태로 두면 방문을 구성하는 큐브와 구는 독립적으로 이동하거나 회전하게 되므로 이들 2개의 오브젝트를 한개의 논리적인 그룹으로 설정해서 그룹단위로 이동과 회전이 되도록 설정해 주어야 한다.
Scene 뷰에서 방문을 구성하는 큐브를 선택하고 GameObject > Create Empty 를 선택하여 빈 오브젝트를 생성하면 큐브의 위치에 정확하게 생성된다.
Hierarchy 뷰에서 새로 생성된 GameObject 를 Door 으로 이름을 변경하고 Scene 뷰의 위치를 조정하여 방문 손잡이 반대쪽 끝으로 이동한다.
Hierarchy 뷰에서 Door 안으로 Cube와 Sphere를 드래그하여 한 그룹으로 설정한다.
Hierarchy 뷰의 Door 안으로 Cube와 Sphere 를 드래그할 때 Door의 중심이 전체 오브젝트의 중심으로 이동하는 것을 볼 수 있다. 이 상태에서 문을 회전하면 전혀 방문과 같지 않은 동작을 하게 되므로 그룹의 중심이 애초의 Door의 중심이었던 큐브의 왼쪽 끝으로 이동한다면 실제의 방문처럼 한쪽이 고정되어 회전하는 동작을 하게 될 것이다.
툴바에서 Center 버튼을 누르면 Pivot 모드로 변경되면서 Door의 중심이 애초의 빈 오브젝트의 중심이 있던 곳으로 이동하는 것을 확인할 수 있다
Pivot 모드로 설정된 위의 그림에서 회전툴을 선택하고 Door를 회전해보면 Pivot 을 중심으로 방문이 회전하는 효과를 볼 수 있다.