2013-04-10 19 views
5

Tôi đang cố gắng di chuyển khối lập phương theo ba.js dựa trên vòng quay của nó nhưng không chắc chắn về cách di chuyển nó.Di chuyển một đối tượng dựa trên vòng quay của nó trong ba.js

Hiện tại tôi có thể xoay vòng xoay z của khối lập phương bằng các phím A & D. Và với phím W, tôi muốn nó di chuyển về phía trước so với vòng quay của nó.

Từ 2D tôi sẽ để một cái gì đó dọc theo dòng:

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

Dưới đây là một hình ảnh của việc thực hiện hiện hành. 3D Cube three.js

Tôi có thể áp dụng điều gì đó tương tự trong ba.js?

Trả lời

7

Đối tượng có thể được coi là đối diện với trục Z dương của chúng. Vì vậy, để di chuyển một đối tượng phía trước, liên quan đến riêng của nó hệ tọa độ, bạn có thể sử dụng

Object3D.translateZ(distance); 

three.js r.57

+0

Có nhưng chỉ dịch dọc theo trục Z sẽ không cho phép đối tượng của tôi di chuyển tương đối so với xoay vòng của nó. Có nghĩa là khi tôi xoay quanh vật tôi muốn nó di chuyển dọc theo "mặt" của nó. – Placeable

+0

Trong đó hướng đối tượng của bạn "đối mặt" khi vector quay là (0, 0, 0)? Đó là hướng địa phương bạn muốn di chuyển sau khi xoay vòng được áp dụng. – WestLangley

+0

Tôi xoay quanh trục Z. – Placeable

0

Có thể dễ dàng nhất để diễn đạt cả xoay vòng và dịch trong một đơn (đồng nhất projective) 4×4 matrix. Thành viên Object3D.matrix trong ba.js đã làm điều đó, mặc dù bạn có thể phải đặt matrixAutoUpdate thành false để sử dụng trực tiếp. Sau đó, bạn có thể di chuyển sử dụng phương thức translate để di chuyển đối tượng trong khung tham chiếu của riêng nó.

+0

Rất khó để người dùng gây rối với ma trận đối tượng trực tiếp trong ba.js. Chỉ làm như vậy nếu bạn thực sự biết những gì bạn đang làm và đã quen thuộc với các hoạt động nội bộ của thư viện. – WestLangley

0

phương pháp 2D của bạn là chính xác làm thế nào tôi đã làm nó trong three.js. Đối với vị trí Y tôi đang sử dụng kỹ thuật va chạm địa hình (vẫn cần công việc);

Các vấn đề liên quan