2013-04-10 2 views
5

회전에 따라 three.js에서 큐브를 이동하려고하지만 이동 방법에 대해 확신하지 못합니다.three.js의 회전을 기반으로 객체 이동

이제는 A & D 키를 사용하여 큐브의 z 회전을 회전시킬 수 있습니다. 그리고 W 키를 사용하여 회전과 관련하여 앞으로 나아가고 싶습니다.

는 2D에서 나는 지금의 라인을 따라 뭔가 것 :

float angle = GradToRad(obj.rotation); 
obj.x = obj.x + cos(angle) * velocity; 
obj.y = obj.y + sin(angle) * velocity; 

다음은 현재 구현의 이미지입니다. 3D Cube three.js

어떻게 three.js에서 비슷한 것을 적용 할 수 있습니까?

답변

7

개체는 + Z 축 방향을 향하고 있다고 볼 수 있습니다. 그래서 당신은

Object3D.translateZ(distance); 

three.js를 r.57

+0

예.하지만 Z 축을 따라 이동하는 것만으로는 개체가 회전을 기준으로 이동할 수 없습니다. 나는 그것이 "향함"을 따라 움직이기를 바라는 대상을 돌아서는 의미입니다. – Placeable

+0

로타 이론 벡터가 (0, 0, 0) 일 때 어떤 방향으로 객체가 "얼굴을 보입니까"? 이것은 회전이 적용된 후 이동하려는 로컬 방향입니다. – WestLangley

+0

나는 Z 축 주위를 빙빙 돌렸다. – Placeable

0

하나의 (균질 투영법) 4×4 matrix에서 회전과 번역을 모두 표현하는 것이 가장 쉽습니다. three.js의 Object3D.matrix 회원은 이미이를 사용하지만 matrixAutoUpdatefalse으로 직접 설정해야 할 수도 있습니다. 그런 다음 translate 메서드를 사용하여 자체 참조 프레임에서 객체를 이동할 수 있습니다.

+0

사용자가 three.js에서 직접 개체 행렬을 엉망으로 만드는 것은 대단히 바람직하지 않습니다. 자신이하는 일을 실제로 알고 있고 도서관의 내부 작업에 익숙한 경우에만 그렇게하십시오. – WestLangley

0

귀하의 2D 방법은 내가 three.js를에했던 정확히 어떻게 사용할 수 있습니다, 좌표계, 앞으로 개체를 이동 그 자체를 기준으로합니다. Y 위치의 경우 지형 충돌 기법 (아직 작업이 필요함)을 사용하고 있습니다.