I'm FanJae.

[Unity] 탱크 회전축이 이상하게 돌아가는 문제 - 부모의 비균등 Scale이 자식 객체 회전에 미치는 영향 본문

Unity/Troubleshooting

[Unity] 탱크 회전축이 이상하게 돌아가는 문제 - 부모의 비균등 Scale이 자식 객체 회전에 미치는 영향

FanJae 2026. 5. 27. 21:43

1. 문제 상황

 

- 아래 처럼 의도했던 회전의 형태가 나오지 않고, 포신이 뭉개지는 현상이 있었다.


2. 원인 추적 과정

(1) 터렛과 포신이 각각 바라보는 방향이 달라서 생기는 문제

- 탱크 구조에서 터렛과 포신의 계층은 각각 이렇게 설계된다.

Turret
└── Gun

 

- 터렛과 포신이 바라보는 방향이 서로 달라서 회전축이 어긋난 것이라고 생각했다.

- 각 오브젝트의 Transform 축 방향과 forward 방향을 확인했고, 이를 동일하게 맞췄지만 해결되지 않았다.

 

(2) 최상위 부모였던 차체 오브젝트의 비균등 Scale, 그 영향으로 자식인 터렛의 Local 회전축이 왜곡되는 문제

- 처음 내가 짰던 구조에서는 TankMainBody가 차체였다.

- 즉, 아래쪽에 있는 초록색 사각형(빨간색으로 칠한 부분)이 그것이다.

- 이 상태에서 회전을 여러번 진행했지만, 의도대로 회전이 되지 않고, 회전을 해야 하는 포신이 망가졌다.

- 제대로 알아보기 위해서 부모 오브젝트를 각각 균등한 Scale을 가진 것과 비균등 Scale을 가진 것으로 놓고 실험해보았다.

 

① 실험 영상 - 부모 오브젝트의 균등/비균등 Scale이 자식의 회전의 영향을 받을 수 있는가? 

- 영상에서 보면 확인할 수 있는 것처럼, 부모가 비균등 Scale을 가지고 있는 경우, 그 영향이 자식에게도 미치게 된다.

 

② Unity Documentation - Non-uniform scaling

- 공식 문서에도 확인할 수 있는 것처럼 자식 GameObject가 비균등 Scale이 적용된 부모 아래에 있고, 부모 기준으로 회전하면 객체가 찌그러지거나 기울어진 것처럼 보일 수 있다.


3. 왜 부모의 비균등 Scale이 자식 회전에 영향을 줄까?

- Unity의 Transform은 부모-자식 계층 구조를 통해 계산된다.

World Transform = Parent Transform * Child Local Transform

- 즉, 자식은 독립적으로 회전하는 것이 아니라, 부모 좌표계를 기준으로 회전한다.

- 따라서 부모의 Scale 값이 축마다 다르면, 자식이 회전할 때 축 간 비율이 동일하게 유지되지 않는 것이다.


4. 해결 방법

- 회전에 관여하는 부모 Transform은 가능한 균등 Scale(1,1,1)을 유지하도록 구조를 변경했다.

- 여기서, 회전에 관여하게 되는 부모 Object인 Tank1은 빈 오브젝트로 맞췄다.


5. 정리

- 처음에는 회전 로직 자체의 문제라고 생각했다.

- 하지만 실제 원인은 부모 Transform의 비균등 Scale이었다.

- Unity에서 자식 객체는 부모 좌표계를 기준으로 동작하기 때문에, 회전 관련 문제가 발생한다면 Rotation 값 뿐 아니라 부모의 Scale과 계층 구조도 함께 확인이 필요할 것 같다.

Comments