InverseTransformPoint란?

Unity에서 `InverseTransformPoint`는 주로 좌표 변환에 사용되는 메소드입니다.
객체의 월드 좌표를 해당 객체의 로컬 좌표로 변환할 때 사용됩니다.
예를 들어, 어떤 객체 A가 World 좌표계에서 위치 (10, 10, 10)에 있고, 객체 B는 A의 자식(child) 객체로서 A의 Local 좌표계에서 위치 (1, 1, 1)에 있다고 가정해보겠습니다.
이 경우 객체 B의 월드 좌표는 (11, 11, 11)이 될 것입니다.
이때, 객체 A의 `InverseTransformPoint` 메소드를 사용하여 객체 B의 월드 좌표 (11, 11, 11)을 입력하면, 결과로 (1, 1, 1)이라는 로컬 좌표가 반환됩니다.
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawSphere(transform.InverseTransformPoint(target.position), 0.1f);
}
InverseTransformPoint를 사용하는 이유
1. 객체의 움직임에 따라 일관성 유지
만약 부모 객체가 회전하거나 이동하면 그 아래의 자식 객체들의 월드 좌표도 변경됩니다.
로컬 좌표계를 사용한다면 부모 객체 내에서의 상대적인 위치나 방향을 일관성 있게 알 수 있습니다.
2. 명확성
특정 객체 내부의 영역을 기준으로 로직을 구성할 때 로컬 좌표를 사용하면 계산이 더 간단하고 직관적입니다.
예를 들어, 크기가 1x1x1인 Cube 안에 다른 객체가 있는지 확인하기 위해 로컬 좌표계를 사용하면 -0.5에서 0.5 사이의 값만 확인하면 됩니다.