相对于其面向的方向移动对象

时间:2018-02-17 23:15:16

标签: javascript three.js

我试图将一个物体相对于它所朝向的方向向上移动。我有一个具有一定高度的CubeGeometry,我想在它的顶部放置一个对象,然后用立方体旋转。我不能只是将新对象添加到多维数据集,因为我需要能够访问此对象的旋转(稍后将旋转)和父对象。例如,如果你正面朝上," up"会侧身。我试图通过.getWorldDirection()获取方向,并使用.applyAxisAngle()旋转它,但由于某种原因这不起作用。我的代码现在:

tmpObj.position.set(cube.position.x, cube.position.y, cube.position.z); // put at the position of the cube
var gwd = cube.getWorldDirection().applyAxisAngle(new THREE.Vector3(1, 0, 0), Math.PI*-0.5); // if you don't do the applyAxisAngle, it will be facing the wrong direction
gwd.multiplyScalar(2.5); // the height of the cube
tmpObj.position.add(gwd);

这使得多维数据集(tmpObj)在cube旋转时出错。

作为参考,还有另一个tmpObjcube(以不同的名称命名),然后相互指向,以便检测他们在哪一方。

1 个答案:

答案 0 :(得分:0)

在three.js中,一个物体被认为面向其局部正Z轴方向。 (例外是相机,它面向其局部的负Z轴。)

默认情况下,对象的本地坐标系中的本地正Y轴是“向上”。

您可以在其局部正Y轴的方向上平移对象,如下所示:

object.translateY( distance );

three.js r.90