게임 개발

TransformPoint와 TransformDirection: 위치·방향·변위 변환하기

부모의 이동·회전·스케일이 붙은 상황에서 세 변환 API를 비교합니다. 총구 위치와 발사 방향을 같은 방식으로 바꾸면 생기는 문제를 설명합니다.

CodingJoa 수정 2026.09.22 3분 정도 걸립니다

총구 위치는 맞는데 총알 방향이 이상하다면, 위치와 방향에 같은 변환 함수를 쓰고 있는지 확인해 보세요. 두 값 모두 Vector3에 담을 수 있지만 이동과 스케일을 적용해야 하는 방식은 다릅니다.

이 글은 Unity 6의 Transform API를 기준으로 합니다. 행렬 곱 순서를 읽었다면 그 계산을 실제 API 선택에 연결할 수 있습니다.

같은 (1,0,0)이 세 가지 뜻을 가진다

부모 위치가 (10,0,0), 회전은 0, 스케일은 (2,2,2)라고 합시다.

로컬 입력 (1,0,0)의 의미사용할 API월드 결과
부모 원점에서 오른쪽 한 칸에 있는 점TransformPoint(12,0,0)
오른쪽을 가리키는 방향TransformDirection(1,0,0)
로컬 길이 1인 변위TransformVector(2,0,0)

TransformPoint는 위치·회전·스케일을 적용합니다. TransformDirection은 이동과 스케일을 적용하지 않습니다. TransformVector는 이동을 빼고 회전과 스케일을 적용합니다.

방향에 TransformPoint를 쓰면 부모의 위치가 방향에 더해집니다. 부모를 오른쪽으로 옮겼을 뿐인데 발사 방향도 오른쪽으로 기울어지는 식의 오류가 생길 수 있습니다.

총구의 점과 방향을 따로 계산하기

다음 코드는 MonoBehaviour 내부에서 사용할 계산 부분입니다. localMuzzlePoint는 로컬 총구 위치이고 localFireDirection은 로컬 발사 축입니다.

Vector3 localMuzzlePoint = new Vector3(0f, 0f, 1f);
Vector3 localFireDirection = Vector3.forward;

Vector3 worldMuzzlePoint = transform.TransformPoint(localMuzzlePoint);
Vector3 worldFireDirection = transform.TransformDirection(localFireDirection).normalized;

Debug.DrawRay(worldMuzzlePoint, worldFireDirection * 3f, Color.green);

부모를 이동하면 초록 선의 시작점이 따라 움직여야 합니다. 회전하면 선의 방향이 따라 돌아야 합니다. 스케일을 2로 바꾸면 총구와 부모 원점의 간격은 늘지만, 초록 선 자체의 길이는 3으로 유지됩니다.

이 실습에서는 발사 속도가 부모 스케일에 따라 달라지지 않아야 한다고 정했습니다. 로컬 변위까지 늘리는 연출이 목적이라면 TransformVector 쪽이 맞을 수 있습니다. API 이름을 외우기 전에 무엇을 보존할지 정하는 이유입니다.

역변환으로 입력 공간 확인하기

월드 점을 InverseTransformPoint로 로컬에 보낸 다음 TransformPoint로 되돌려 보세요. 원래 월드 점에 가까워야 합니다. 되돌린 값이 어긋난다면 서로 다른 부모 Transform을 사용했는지, 입력이 애초에 로컬 값이었는지 확인합니다.

스케일이 0이면 정보가 소실되어 역변환이 성립하지 않습니다. 또 비균일 스케일과 회전을 가진 부모가 겹치면 단순한 위치 더하기로는 설명할 수 없는 변환이 됩니다.

법선은 별도 주의가 필요하다

표면의 법선도 방향이지만 비균일 스케일 아래에서는 일반 방향과 똑같이 변환할 수 없습니다. 표면에 수직이라는 조건을 유지하려면 역전치 행렬이 필요합니다. 셰이더에서는 사용하는 렌더 파이프라인의 법선 변환 함수를 확인하세요. 방향·변위·법선을 모두 “벡터니까 같은 함수”로 처리하지 않는 것이 핵심입니다.

참고 API

이 글 공유하기 X Facebook 네이버

이 글은 기술 설명과 참고 자료, 글쓴이의 판단을 담고 있습니다. 예제와 실제 사용 사례의 적용 조건은 본문을 참고해주세요. 도구의 버전·가격·동작은 시간이 지나면 달라질 수 있으니, 따라 하실 때는 공식 문서를 함께 확인해주세요. 자세한 내용은 이용약관에 정리해두었습니다.