2014-11-24 5 views
0

X 축을 중심으로 회전하는 변환이 있습니다. 그러나이 회전을 다른 변환으로 옮기는 동안, 나는 정확히 같은 회전을하기를 원합니다. 그러나 Z 축 주위.X 축에서 Z 축으로 변환 회전을 변경하십시오.

그러나이 회전은 "회전"이 아니며 회전이 외부에서 편집되는 변환입니다. 그래서 두 번째 변환과 일치하도록 원본 변형을 회전해야하지만 회전을 고려해야합니다. 아래 이미지에서

축 : RED =의 X, GREEN = Y, 원래 BLUE = Z

회전 :

enter image description hereenter image description here

회전이 있어야하는 일 :

enter image description hereenter image description here

올바른 프레임 이동 방법은 무엇입니까? b y 프레임? 사전에

감사합니다,

스마일

답변

0

난 당신에게 또 다른 한 축에서 회전을 변경하는 일반적인 문제를 해결 답을 줄 수 있습니다.

각 변형 객체에는 변형의 방향을 나타내는 transform.localRotation 속성이 부모 방향에 상대적으로 있습니다. 변환에 부모가없는 경우이 방향은 World Space와 관련이 있습니다.

Quaternion은 회전을 나타내는 데 사용되는 데이터 형식이며 유용한 방법은 ToAngleAxis입니다.

float angle; 
Vector3 axis; 
transform.localRotation.ToAngleAxis(out angle, out axis); 

localRotation 각도와 축 변수 angleaxis를 설정한다. out 부분은 입력으로 사용하기보다는 함수가 설정하려고하는 변수를 전달한다는 것을 의미합니다.

이 경우 변수는 실제로 사용하려는 부분입니다. Quaternion.AngleAxis을 사용하여이 angle 값과 원하는 축을 제공하면 원하는 매개 변수와 일치하는 새 회전이 생성됩니다.

예를 들어 transform2에 Z 축 회전에 transform1의 회전을 변경하려면이

을하는 데 도움이

float angle; 
float axis; 
transform1.localRotation.ToAngleAxis(out angle, out axis); 
transform2.localRotation = Quaternion.AngleAxis(angle, Vector3.forward); 

희망을 사용