我想沿“ x”轴移动对象,将其旋转90度,然后再次沿“ x”轴(现在为“ z”全局轴)移动。然后,此运动的路径应成直角。这是我移动对象的代码:
if(Math.abs(myObject.position.x - newX) > 0.01){
myObject.translateX(0.1);
}
但是,问题是对象沿正确的方向(沿“ x”轴)移动,但是值myObject.position.x
不变。相反,它的“ z”位置正在变化。基于此,我可以说myObject.position
返回它的世界位置,而不是相对于对象空间的世界位置。我一直在尝试localToWorld
和worldToLocal
方法,但到目前为止还没有运气。旋转后如何确保其向正确的方向移动?
编辑:
我已将group
添加到我的代码中,如下所示:
group = new THREE.Group();
group .add(myObject);
scene.add(group);
我的移动功能如下:
if(Math.abs(group.position.x - newX) > 0.01){
group.translateX(0.1);
}
旋转功能:
if(Math.abs(myObject.rotation.y - newRot) > 0.02){
myObject.rotateY(0.02);
}