在Three.js中相对于对象旋转移动前进

4
我刚开始学习Three.js,关于物体移动有一个问题。在XNA/ShparDX中,你可以使用下面的代码来移动对象,使其相对于方向向前移动。因此,如果对象向下看,它会向下移动。如果它向右看,它将向右移动。可以在这里看到此示例视频,它是页面上的最后一个视频。
float speed = 0.15f;
Vector3 velocity = objectMatrix.Forward * speed;
objectMatrix *= Matrix.CreateTranslation(velocity);

我基于这个答案尝试了以下操作,但当我按下触发它的键时,它根本没有起作用。
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中可用的成员和函数复制此操作,但一直未能成功。是否有人能够展示一下是否可能?谢谢。

1个回答

4
mesh.translateX( delta );
mesh.translateY( delta );
mesh.translateZ( delta );

为了向前移动,请使用 translateZ( delta )

如果您是初学者,最好不要轻易更改object.matrix,除非您确切地知道自己在做什么。相反,应该设置positionrotationscale


1
我对矩阵并不陌生,但是您的答案似乎运行得很好。我会再等一下,看看是否有更好的回答,但您的看起来就是正确的答案。 - Dragonseer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接