기본 패턴
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