Three.js第一人称控制器会始终移动相机

8

我目前正在设计的游戏需要一个第一人称控制器,幸运的是Three.js也提供了这个类。

controls = new THREE.FirstPersonControls(camera);
controls.movementSpeed = 0.1;
controls.lookSpeed = 0.001;
controls.lookVertical = true;

我不希望视角在我没有移动鼠标时改变。
有什么想法吗?

尝试使用替代方案:https://maximumroulette.com/apps/matrix-engine/examples-build.html 源代码:https://github.com/zlatnaspirala/matrix-engine 一行代码激活FP相机。 - Nikola Lukic
2个回答

3
请注意,在WebGL中,FPS风格的鼠标移动仅适用于全屏模式。如果应用程序在标准窗口模式下运行,则光标是可见的,并且应用程序无法检测到穿过窗口边缘的光标移动。这使得无法以FPS风格查看周围的环境(当光标到达窗口边缘时,查看动作停止)。
这可能是为什么PointerLockControls演示要求您切换到全屏模式的主要原因。
使用FirstPersonControls时,当鼠标到达边缘时,查看动作将继续进行。这种方法在窗口模式下效果很好。

你的回答足够好,让我把最佳答案改成了这个。 - ye9ane

2

我的游戏需要在屏幕上有光标,这是一个必要条件。我需要用指针选择不同的对象。 - ye9ane
你可以在屏幕中央、相机前方添加一个对象,作为指针。 - Chris Laarman
谢谢您提供的示例,我曾考虑过它作为解决方案,但实际上我想要的是能够点击和选择对象的能力。如果没有光标并且有另一个对象,我该如何确定被点击的对象? - ye9ane
1
通过这个示例,你可以添加游标,并且使用THREE.raycaster从相机(第一人称视角)向点击的位置'cast a ray'。第一个相交的物体就是你需要的物体。但我建议你另外提一个关于此的问题。 - Chris Laarman

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