트랜스폼은 게임 오브젝트의 위치, 회전, 스케일 및 부모 상태를 저장합니다. 게임 오브젝트에는 항상 Transform 컴포넌트가 연결되어 있으므로 트랜스폼을 제거하거나 Transform 컴포넌트 없이 게임 오브젝트를 생성할 수 없습니다.
Transform 컴포넌트는 씬에 있는 각 게임 오브젝트의 위치, 회전, 스케일을 결정합니다. 모든 게임 오브젝트에는 트랜스폼이 있습니다.
팁: 트랜스폼 축(및 기타 UI 요소)의 컬러를 변경할 수 있습니다(메뉴: Unity > Preferences를 선택한 다음 Colors & keys 패널 선택).
| 프로퍼티: | 기능: |
|---|---|
| Position | x, y, z 좌표에서 트랜스폼의 포지션입니다. |
| Rotation | x축, y축, z축을 중심으로 한 트랜스폼의 회전(도 단위로 측정)입니다. |
| Scale | x축, y축, z축을 따라가는 트랜스폼의 스케일입니다. ‘1’ 값은 원래 크기(게임 오브젝트를 임포트한 크기)입니다. |
| Enable Constrained Proportions | 한 축을 변경하면 다른 두 축이 변경되도록 스케일이 현재 비율을 유지하게 합니다. 이는 기본적으로 비활성화되어 있습니다. |
Unity는 트랜스폼의 부모를 기준으로 트랜스폼의 위치, 회전 및 스케일 값을 측정합니다. 트랜스폼에 부모가 없는 경우 Unity는 월드 공간에서 프로퍼티를 측정합니다.
2D 공간에서는 x축 또는 y축에서만 트랜스폼을 조작할 수 있습니다. 3D 공간에서는 x축, y축, z축에서 트랜스폼을 조작할 수 있습니다. Unity에서 이러한 축은 각각 빨간색, 녹색, 파란색으로 표시됩니다.
트랜스폼의 프로퍼티를 편집하는 방법은 크게 세 가지입니다.
씬 뷰에서 이동, 회전 및 스케일 툴을 사용하여 트랜스폼을 수정할 수 있습니다. 이러한 툴은 Unity 에디터 왼쪽 상단에 있습니다.
씬의 모든 게임 오브젝트에 변환 툴을 사용할 수 있습니다. 게임 오브젝트를 선택하면 게임 오브젝트 안에 툴 기즈모 가 나타납니다. 기즈모의 형상은 선택하는 툴에 따라 다릅니다.
기즈모 축 3개 중 하나를 클릭하고 드래그하면 축의 컬러가 노란색으로 바뀝니다. 마우스를 드래그하는 동안 게임 오브젝트는 선택한 축을 따라 이동하거나 회전하거나 스케일됩니다. 마우스 버튼을 놓으면 축이 선택된 상태로 유지됩니다.
게임 오브젝트를 움직이는 동안 특정 평면으로 움직임을 고정할 수 있습니다. 즉, 축 두 개를 변경하고 세 번째 축이 변경되지 않게 할 수 있습니다. 각 평면에 대해 고정을 활성화하려면 이동 기즈모 중앙 주위에 작은 컬러 정사각형 3개를 선택합니다. 컬러는 정사각형을 선택할 때 고정되는 축에 해당합니다(예: 파란색 사각형을 선택하여 z축 고정).
인스펙터 창에서 Transform 컴포넌트를 사용하여 선택한 게임 오브젝트의 Transform 프로퍼티를 편집할 수 있습니다. 컴포넌트에서 전환 프로퍼티 값을 편집하는 방법은 두 가지가 있습니다.
Transform API를 사용하여 스크립트를 통해 게임 오브젝트의 트랜스폼을 편집합니다.
Unity에서는 게임 오브젝트를 부모-자식 계층 구조로 그룹화할 수 있습니다.
계층 창에서 자식 게임 오브젝트는 부모 게임 오브젝트 바로 아래에 나타나며 목록에서 들여쓰기되어 있습니다. 폴드아웃 아이콘을 선택하여 부모 게임 오브젝트의 자식 게임 오브젝트를 숨기거나 표시할 수 있습니다.
자식 게임 오브젝트는 부모 게임 오브젝트처럼 움직이고 회전하며 스케일됩니다. 자식 게임 오브젝트에는 그 자체의 자식 게임 오브젝트도 포함될 수 있습니다. 게임 오브젝트는 여러 자식 게임 오브젝트를 가질 수 있지만, 부모 게임 오브젝트는 하나만 가질 수 있습니다.
이러한 게임 오브젝트 간 여러 레벨의 부모-자식 관계는 트랜스폼 계층 구조를 구성합니다. 계층 구조 상단에 있는 게임 오브젝트(즉, 부모가 없는 유일한 게임 오브젝트)는 루트 게임 오브젝트라고 합니다.
부모 게임 오브젝트를 생성하려면 계층 창의 게임 오브젝트를 다른 오브젝트로 드래그합니다. 이렇게 하면 두 게임 오브젝트 간에 부모-자식 관계가 생성됩니다.
게임 오브젝트를 부모-자식 계층 구조로 그룹화할 수 있습니다.
모든 자식 게임 오브젝트의 트랜스폼 값은 부모 게임 오브젝트의 트랜스폼 값을 기준으로 표시됩니다. 이러한 값을 로컬 좌표 라고 합니다. 씬 구성의 경우 일반적으로 자식 게임 오브젝트의 로컬 좌표로 작업하면 충분합니다. 게임플레이에서 이는 게임 오브젝트의 전역 좌표 또는 월드 공간에서의 정확한 위치를 찾는 데 유용합니다. Transform 컴포넌트를 위한 스크립팅 API에는 로컬 및 전역 위치, 회전 및 스케일 에 대한 별도의 프로퍼티가 있으며, 로컬 및 전역 좌표 간에 전환할 수 있습니다.
팁: 트랜스폼을 부모로 지정하는 경우, 부모의 위치를 <0,0,0>으로 설정한 후 자식 트랜스폼을 추가하는 것이 좋습니다. 이렇게 하면 자식 트랜스폼의 로컬 좌표가 전역 좌표와 동일하므로 자식 트랜스폼이 올바른 위치에 있는지 확인하기가 더 쉬워집니다.
트랜스폼의 스케일 은 모델링 애플리케이션의 메시 크기와 Unity에서의 메시 크기 간 차이를 결정합니다. Unity에서 메시의 크기(따라서 트랜스폼의 스케일)는 물리 시뮬레이션 중에 특히 중요합니다. 기본적으로 물리 엔진은 월드 공간의 단위가 1미터에 해당한다고 가정합니다. 게임 오브젝트가 매우 크면 ‘슬로우 모션’처럼 보일 수 있는데, 이는 매우 큰 게임 오브젝트를 멀리에서 보고 있기 때문에 시뮬레이션이 올바르게 작동하는 것입니다.
다음 세 가지 요소가 게임 오브젝트의 스케일 에 영향을 줍니다.
Transform 컴포넌트에서 게임 오브젝트의 Scale 을 조정하지 마십시오. 실제 크기의 모델을 만들면 Transform의 Scale 을 변경할 필요가 없습니다. 일부 최적화는 임포트 크기에 따라 수행되므로 메시가 임포트되는 스케일을 조정할 수도 있습니다. 개별 메시에 대한 Import settings 에서 이 작업을 수행합니다. 조정된 Scale 값이 있는 게임 오브젝트를 인스턴스화하면 성능이 저하될 수 있습니다.
참고: Scale 을 변경하면 자식 트랜스폼의 위치에 영향을 미칩니다. 예를 들어, 부모 트랜스폼의 스케일을 (0,0,0)으로 조정하면 모든 자식 트랜스폼이 부모 트랜스폼을 기준으로 (0,0,0)에 배치됩니다.
비균일 스케일링은 트랜스폼 스케일의 x, y, z 값이 다른 경우입니다(예: (2, 4, 2)). 반면 균일 스케일링은 x, y, z의 값이 동일합니다(예: (3, 3, 3)). 비균일 스케일링은 몇 가지 특정한 경우에 유용하지만 균일 스케일링과 다르게 동작합니다.
Transform