【问题标题】:Three.js 3rd person cameraThree.js 第三人称相机
【发布时间】:2012-11-03 23:56:47
【问题描述】:

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

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

这似乎不起作用。

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

编辑:

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

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

编辑 2:

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

感谢您的帮助,

詹姆斯

【问题讨论】:

    标签: camera rotation three.js


    【解决方案1】:

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

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

    实现您想要的一种方法是让相机成为您的播放器的子级。像这样的:

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

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

    camera.lookAt( player.position );
    

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

    【讨论】:

    • 感谢您的帮助,如果我将播放器添加到相机中它不起作用,是否有原因?我想做的是将玩家设置为相机的孩子。然后,如果我将玩家偏移到相机前面,这是否意味着当我旋转相机时玩家不会相对于它移动?虽然我需要一些方法来将旋转点设置在相机上?
    • 您的问题的答案是“是”,但如果您仍然遇到问题,请发布一个新问题以及一个实时示例,或者至少是一个代码清单。
    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 2015-10-07
    • 1970-01-01
    • 2020-08-16
    • 2013-04-01
    • 1970-01-01
    • 2022-07-23
    • 2020-08-29
    相关资源
    最近更新 更多