Unity시작과 컴포넌트

Transform local vs world 좌표

부모 기준 좌표와 월드 기준 좌표가 어떻게 다른지, `position`과 `localPosition` 중심으로 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
transform.position = new Vector3(0f, 1f, 0f);
transform.localPosition = new Vector3(0f, 0f, 2f);

설명

  • position은 월드 좌표계 기준 위치이고, localPosition은 부모 오브젝트 기준 상대 위치입니다.
  • 자식 오브젝트는 부모가 움직이면 월드 좌표가 함께 바뀌므로, 로컬과 월드를 구분해야 배치가 꼬이지 않습니다.
  • 회전과 스케일도 같은 원리로 rotation/localRotation, lossyScale/localScale 개념을 함께 봐야 합니다.
  • UI, 무기 장착 위치, 카메라 리그처럼 부모-자식 구조가 많은 장면에서 특히 중요합니다.

짧은 예제

csharp
[SerializeField] private Transform player;

private void Start()
{
    transform.SetParent(player);
    transform.localPosition = new Vector3(0f, 1.5f, 0.5f);
    transform.localRotation = Quaternion.identity;
}

빠른 정리

항목설명
position월드 기준 위치
localPosition부모 기준 상대 위치
rotation월드 기준 회전
localRotation부모 기준 회전
계층 구조부모 변화가 자식 월드 좌표에 반영됨

주의할 점

자식 오브젝트를 옮기고 싶은데 position을 써 버리면 부모 기준 배치가 어긋날 수 있습니다. "장면 전체 기준인지, 부모 기준인지"를 먼저 정하고 움직이는 편이 좋습니다.

참고 링크

2 sources