[Unity] 월드 스페이스 (World Space) 와 로컬 스페이스 (Local Space)

Lumos Velog·2025년 8월 12일
0

게임 오브젝트를 배치하거나 이동, 회전 스케일링하는 과정에서 좌표계의 개념은 매우 중요한 역할을 한다. Unity에서는 대표적으로 World Space와 Local Space라는 두 가지 좌표계 사용된다. 이 두 좌표계의 개념과 차이를 명확히 이해하면, 오브젝트의 트랜스폼(Transform)을 보다 정확하게 제어할 수 있다.




월드 스페이스(Wolrd Space)

World Space는 전역 좌표계를 의미한다. 이는 Unity 씬(Scene) 전체의 절대적인 기준 좌표계로, 모든 오브젝트의 위치는 궁극적으로 World Space를 기준으로 표현된다.
예를 들어, (0, 0, 0) 좌표는 씬의 원점을 나타내며, 이는 씬의 카메라나 다른 오브젝트의 위치와 무관하다. 오브젝트를 월드 좌표로 이동시키면, 부모 오브젝트의 영향과 관계없이 절대적인 위치에 배치된다.

특징

  • 전역 기준의 절대 좌표계
  • 부모-자식 관계의 영향을 받지 않음
  • 씬 전체의 원점 (0, 0, 0)을 기준

예시 코드

// 오브젝트를 월드 좌표 (0, 5, 0) 위치로 설정
transform.position = new Vector3(0f, 5f, 0f);




Local Space

Local Space는 로컬 좌표계 또는 자기 좌표계를 의미한다.
이는 해당 오브젝트의 부모 오브젝트(Parent)를 기준으로 정의되는 상대적인 좌표계이다.
오브젝트가 부모를 가지지 않는 경우, Local Space는 World Space와 동일하게 동작한다.

Local Space는 부모의 위치, 회전, 스케일에 영향을 받기 때문에, 부모 오브젝트가 회전하면 자식 오브젝트의 로컬 축 방향도 함께 변한다.
따라서 로컬 좌표는 오브젝트가 부모 구조 내에서 어떻게 배치되는지를 나타낸다.

특징

  • 부모 오브젝트 기준의 상대 좌표계
  • 부모의 이동, 회전, 스케일 변화에 따라 좌표계가 함께 변함
  • 오브젝트의 Transform Inspector에서 Local Position/Rotation/Scale로 표시
// 부모 기준으로 오브젝트를 (0, 2, 0) 위치에 배치
transform.localPosition = new Vector3(0f, 2f, 0f);




변환(Transform) 시 고려 사항

  • World Space → Local Space 변환
Vector3 localPos = transform.InverseTransformPoint(worldPosition);
  • Local Space → World Space 변환
Vector3 worldPos = transform.TransformPoint(localPosition);

이러한 변환 메서드는 좌표계를 명시적으로 변환할 때 사용된다. 특히, 물리 연산이나 경로 계산 시 두 좌표계의 변환은 필수적이다.





주의사항

1. 부모의 회전 및 스케일 변화를 인지할 것

  • Local Space는 부모 오브젝트의 회전 및 스케일에 따라 축 방향과 좌표값이 변한다.
  • 예를 들어, 부모가 90도 회전하면, 자식의 로컬 X축이 월드 Y축과 일치할 수 있다.
  • 따라서, 회전한 부모 안에서 로컬 이동을 할 경우 예상과 다른 방향으로 움직일 수 있다.

2.좌표계 혼동으로 인한 비정상 동작

  • World Space 좌표를 Local Space로 직접 대입하거나, 그 반대를 할 경우 위치가 크게 틀어질 수 있다.
  • 좌표 변환이 필요한 경우 반드시 TransformPoint, InverseTransformPoint, TransformDirection 등의 메서드를 활용해야 한다.

3.부모 변경 시 로컬 좌표가 재계산됨

  • transform.SetParent() 또는 parent 변경 시, 기본적으로 월드 좌표를 유지한 채 로컬 좌표가 재계산된다.
  • 만약 로컬 좌표를 유지하고 싶다면 worldPositionStays 매개변수를 false로 지정해야 한다.
child.SetParent(newParent, false); // 로컬 

4.UI(Canvas) 환경에서의 World Space

  • UI 오브젝트의 RectTransform은 일반 Transform과 달리, World Space Canvas 환경에서는 모든 UI 요소가 절대 좌표를 기준으로 동작한다.

  • UI의 Local Position은 부모 RectTransform의 피벗과 앵커(anchor) 설정에도 영향을 받으므로, 정확한 배치를 위해서는 피벗/앵커 설정을 함께 확인해야 한다.


5.물리 연산 시 축 방향 오해 주의

  • Rigidbody.AddForce 등에 Local Space 축을 직접 전달하면 의도와 다른 방향으로 힘이 가해질 수 있다.

  • 이 경우, transform.forward, transform.right 등 현재 방향 벡터를 활용하여 World Space 방향으로 변환하는 것이 안전하다.





정리

구분World SpaceLocal Space
기준씬 전체의 전역 좌표계부모 오브젝트를 기준으로 한 상대 좌표계
영향 요소부모 오브젝트의 이동, 회전, 스케일 무시부모 오브젝트의 이동, 회전, 스케일 반영
좌표값 변경 시절대 위치 변경부모를 기준으로 상대 위치 변경

World Space와 Local Space의 차이를 명확히 이해하는 것은, 오브젝트 배치나 움직임 제어, 카메라 연출 등 다양한 게임 개발 과정에서 필수적이다. 특히, 부모-자식 관계가 복잡하게 구성된 씬에서는 두 좌표계를 혼동하면 예상치 못한 동작이 발생할 수 있으므로, 상황에 맞는 좌표계를 선택하여 사용하는 것이 중요하다.





0개의 댓글