1

我正在尝试在 three.js 中创建第三人称相机视图

我正在使用 THREE.FirstPersonControls(); 在我的相机上。然后将我的“玩家”对象的旋转和位置设置为与带有一些偏移的相机相同。

这似乎不起作用。

我更想知道的是我是否应该将我的 FirstPersonControls 添加到相机然后渲染它前面的“播放器”。或者将控件添加到播放器然后使相机始终指向播放器的背面?

编辑:

我尝试使用 camera.add(player); 将播放器对象设置为相机的子对象;

但移动相机并不会移动玩家。我认为添加子元素意味着它们会一起移动?

编辑2:

我采取了另一种方法,将相机和玩家都添加到一个组中,然后将我的第一人称控件添加到该组中……现在相机和玩家都被渲染了。但它完全抛弃了第一人称控制的工作方式。(例如向下看向左等)

谢谢你的帮助,

詹姆士

4

1 回答 1

6

首先,控件的设计目的是控制相机,而不是对象。并且由于默认情况下,对象“向上”看 z 轴,而相机“向下”看 z 轴,因此当应用于相机以外的其他东西时,控件不太可能按预期工作。

其次,控件是示例的一部分,而不是库的一部分,因此它们不受官方支持。你可以随意攻击他们。

实现你想要的一种方法是让相机成为你的玩家的孩子。像这样的东西:

player.add( camera );
camera.position.set( 0, 50, 100 );

您可能需要在渲染循环中设置:

camera.lookAt( player.position );

然后你想用鼠标或键盘控制播放器。你最好的选择是编写你自己的控制器来做到这一点。网络上有很多例子。

于 2012-11-15T14:40:27.257 回答