2013-04-10 88 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 2013-04-11 14:01:52

+0

当旋转向量为(0,0,0)时,物体“面对”的方向是什么?这是您应用旋转后要移入的局部方向。 – WestLangley 2013-04-11 14:10:18

+0

我围绕Z轴旋转。 – Placeable 2013-04-11 14:22:53

0

在单个(均匀投影)4×4 matrix中表达旋转和平移可能是最容易的。 three.js中的Object3D.matrix成员已经这样做了,但您可能必须将matrixAutoUpdate设置为false才能直接使用该成员。然后您可以使用translate方法移动对象在其自己的参考框架中。

+0

用户直接在three.js中混淆对象矩阵是非常不可取的。只有在你真正了解自己在做什么并且熟悉图书馆的内部运作时才这样做。 – WestLangley 2013-04-10 14:20:08

0

你的2D方法是我究竟是如何做到了在three.js所。对于Y位置,我使用地形碰撞技术(仍然需要工作);