【问题标题】:Move Forward Relative to Object Rotation in Three.js在 Three.js 中相对于对象旋转向前移动
【发布时间】:2013-01-27 11:42:12
【问题描述】:

我刚刚开始研究 Three.js,并且有一个关于对象移动的问题。在 XNA/ShparDX 中,您可以执行类似下面的代码的操作,其中对象可以相对于它的方向向前移动。因此,如果对象向下看,这会将其向下移动。如果它向右看,它会向右移动。可以看到一个视频示例here,并且是页面上的最后一个视频。

float speed = 0.15f;
Vector3 velocity = objectMatrix.Forward * speed;
objectMatrix *= Matrix.CreateTranslation(velocity);

我基于this answer 尝试了以下方法。当我按下按键触发它时,它什么也没做。

var STEP = 10;
object.matrixWorld.identity();
object.matrixWorld.multiplySelf(three.Matrix4.translationMatrix(object.position.x, object.position.y, object.position.z + STEP));
object.updateMatrixWorld();

我没有成功使用 Three.js 中可用的成员和函数来复制它。如果可能的话,有人可以告诉我吗?谢谢。

【问题讨论】:

    标签: three.js


    【解决方案1】:
    mesh.translateX( delta );
    mesh.translateY( delta );
    mesh.translateZ( delta );
    

    要继续前进,请使用translateZ( delta )

    如果你只是学习,最好不要乱搞object.matrix,除非你真的知道自己在做什么。改为设置positionrotationscale

    【讨论】:

    • 我绝对不是矩阵新手,但您的回答似乎很有说服力。我会暂时保留这个问题,以防有人有更好的补充,但你的答案看起来是正确的。
    猜你喜欢
    • 2013-11-04
    • 2013-04-02
    • 1970-01-01
    • 2013-03-14
    • 2017-01-20
    • 1970-01-01
    • 2012-12-30
    • 2012-07-26
    • 2014-10-24
    相关资源
    最近更新 更多