【问题标题】:Three.js Move object forward without translateZThree.js 在没有 translateZ 的情况下向前移动对象
【发布时间】:2017-05-30 22:19:40
【问题描述】:

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

我希望立方体通过基于mesh.rotation.y 更新mesh.position.xmesh.position.z 向前移动。

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

谢谢!

【问题讨论】:

    标签: javascript three.js rotation


    【解决方案1】:

    要移动你的网格,只需在你的 animate() 函数而不是 init 函数中增加你希望你的网格进入的位置的值,示例如下:

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

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

    【讨论】:

    • 我要求对象朝着它所面对的方向移动,我在示例中随机设置
    【解决方案2】:

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

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

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

    祝你好运!

    【讨论】:

    • 改为:mesh.getWorldDirection( direction ); 该方法每次调用时都会实例化一个新的Vector3,否则。查看jsfiddle.net/k1swrxjr/6中的更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2018-01-29
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多