Three.js 在没有 translateZ 的情况下向前移动对象

Gri*_* M. 3 javascript rotation three.js

与许多其他类似问题一样,我想根据对象three.js的旋转向前移动对象。不同的是,我不能使用object.translateZ。这是因为我使用的是物理模拟器,如果我像这样更新对象,它会搞砸。这是我的问题的示例小提琴。随意玩弄我的小提琴并将您的更新版本添加到您的答案中。

我希望立方体通过更新mesh.position.xmesh.position.z基于mesh.rotation.y.

请记住,我有时会意识到three.js在使用mesh.rotation.y.

谢谢!

Mar*_*ält 5

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

direction = mesh.getWorldDirection();

mesh.position.add(direction.multiplyScalar(moveSpeed));
Run Code Online (Sandbox Code Playgroud)

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

祝你好运!

  • 改为这样做: `mesh.getWorldDirection( direction );` 该方法每次被调用时都会实例化一个新的 `Vector3`,否则。请参阅 https://jsfiddle.net/k1swrxjr/6/ 中的更改 (2认同)