[Unity] x축 공전할 때 물체의 회전값 고정시키기

박민주·2022년 6월 16일
0

Unity

목록 보기
37/40

제페토 스튜디오에서 무빙블록 콘텐츠를 만들 때
y축 공전은 별 문제 없이 잘 됐는데,
x축 공전을 시키니까 막 물체도 막 일그러지고..? 회전도 이상하게 되고 해서 고민하고 있었다.

부모에는 Transform만 있고 그걸 공전시키고 있었고,
자식 오브젝트로 실제 공전시킬 블록 오브젝트가 들어있었는데 아마 그런 구조도 한 몫하지 않았나..
(근데 이렇게 한 데는 분명 이유가 있었음)

무튼 이건 나름 실수를 통해 알아낸 건데,
localRotation에 할당하는 값을 막 바꿔보다가 마이너스 붙여도 봤는데 안되서
다시 원상복구 시키는 중에 실수로 rotation.w 의 값에서 마이너스 빼는 걸 깜박했는데
이게 갑자기 원하는 대로 잘 돌아갔다 ㅋㅋㅋㅋㅋㅋ

좀 특수하긴 하지만, 아래 코드는 이러한 상황에서 사용하면 된다

  • 부모 오브젝트의 Transform을 조정하여 RotateAround를 통해 X축으로 공전시키고 있음
  • 자식 오브젝트가 실제 오브젝트이고 localRotation 을 아래와 같은 코드로 조정
this.childBlockObject.transform.localRotation 
	= new Quaternion(this.transform.rotation.x,this.transform.rotation.y, 
    	this.transform.rotation.z, -this.transform.rotation.w);

더 좋은 방법이 있으려나..
위 코드의 경우는 그냥 현재 부모 오브젝트의 rotation을 전달하는 것이긴 하지만,
EulerAngles와 달리 Quaternion은 생소하기 때문에,
예상치 못한 결과를 가져오기 쉬워서 값을 직접 지정하는 건 권장되지 않고 있다.

profile
Game Programmer

0개의 댓글