2017-01-16 169 views
0

与其他许多类似问题一样,我想根据其旋转将对象向前移动three.js。所不同的是,我不能使用object.translateZ。这是因为我正在使用物理模拟器,如果我更新对象就会搞乱。以下是我的问题的一个示例fiddle。随意玩我的小提琴,并添加您的更新版本到您的答案。Three.js将对象向前移动而不需要translateZ

我想通过更新mesh.position.xmesh.position.z根据mesh.rotation.y向前移动多维数据集。

要记住,我有时会意识到,three.js旋转有时使用mesh.rotation.y访问它们时有点奇怪。

谢谢!

回答

2

我会建议使用mesh.getWorldDirection()来获取您想要移动网格的方向。然后你可以用一个标量乘它来调整移动速度。

direction = mesh.getWorldDirection(); 

mesh.position.add(direction.multiplyScalar(moveSpeed)); 

小提琴:https://jsfiddle.net/k1swrxjr/1/

祝你好运!

+1

而是这样做:'mesh.getWorldDirection(direction);'方法每隔一个实例化一个新的'Vector3'它被称为时间,否则。查看https://jsfiddle.net/k1swrxjr/6/中的更改 – WestLangley

0

要将您的网简单的增加中,你希望你的网去你的动画()函数而不是初始化函数的位置值,举例如下:

function animate() { 
     mesh.position.x += 0.1; 
     requestAnimationFrame(animate); 
     renderer.render(scene, camera); 
    } 

此示例代码将增加每次运行animate()时,将网格的x位置减少0.1。

+0

我当时要求物体朝着它所面对的方向移动,这是我随机为例 –