如何根据摄像机方向旋转组?

问题描述 投票:0回答:1

我正在制作一款游戏,你有一把可以挥舞的剑,剑位于一组并带有偏移,因此它的位置正确。我试图做到这一点,当我按下 Z 时,剑会向下摆动,然后通过旋转返回。如何让剑朝我面对的方向摆动?目前,我有

if (keys.z) group.rotation.x -= Math.PI/100;
,但这只适用于 x 轴。该模型用
group.position.copy(camera.position);
处理相机位置,用
if(!keys.z)group.quaternion.copy(camera.quaternion);
处理四元数。 我认为这样做的一种方法是改变剑的旋转偏移,但我不知道该怎么做,这会起作用吗?无论如何,请帮助我喜欢编码并想制作这个游戏!

three.js gltf
1个回答
1
投票

相机与许多其他场景内对象一样,基于

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 轴。

© www.soinside.com 2019 - 2024. All rights reserved.