我正在制作一款游戏,你有一把可以挥舞的剑,剑位于一组并带有偏移,因此它的位置正确。我试图做到这一点,当我按下 Z 时,剑会向下摆动,然后通过旋转返回。如何让剑朝我面对的方向摆动?目前,我有
if (keys.z) group.rotation.x -= Math.PI/100;
,但这只适用于 x 轴。该模型用 group.position.copy(camera.position);
处理相机位置,用 if(!keys.z)group.quaternion.copy(camera.quaternion);
处理四元数。
我认为这样做的一种方法是改变剑的旋转偏移,但我不知道该怎么做,这会起作用吗?无论如何,请帮助我喜欢编码并想制作这个游戏!
相机与许多其他场景内对象一样,基于
Object3D
。这意味着您可以向其中添加场景节点,它们将存在于相机的本地空间中。
camera.add( swordMesh )
将相机视为其周围有自己的独立于世界空间的空间。相机位于
(0, 0, 0)
,-Z向前延伸,+Z向后延伸,+Y向上延伸,-Y向下,+X向右,-X向左。
现在,如果您将“剑”放置在
+X, -Y, -Z
方向的某个位置,它将位于视图的前方、下方和右侧。这里的好处是,如果你以任何方式移动或旋转相机,剑就会跟随。
camera.add( swordMesh )
sword.position.set( 10, -10, -10 ) // coordinates are local to camera space
要将剑摆离相机,请绕 X 轴旋转它,因为它是相机的子轴,所以自动成为 相机的 X 轴。