我正在设计的游戏目前需要第一人称控制器,幸运的是Three.js也提供该类。
但是我不能阻止相机飞来飞去。我知道鼠标移动会导致飞行,因为它会在我移动鼠标时立即发生。但是阅读js代码,我找不到引起这种运动的因素。以下是我启动控件的方法:
controls = new THREE.FirstPersonControls(camera);
controls.movementSpeed = 0.1;
controls.lookSpeed = 0.001;
controls.lookVertical = true;
当我不移动鼠标时,我不希望视图方向发生变化。
任何想法?
答案 0 :(得分:2)
请记住,webGL中的FPS样式鼠标移动仅可用于全屏模式。如果应用程序在标准窗口模式下运行,则光标可见,并且应用程序无法检测到越过窗口边缘的光标移动。这使得无法以FPS样式环顾四周(当光标到达窗口边缘时,外观移动停止)。
这可能是PointerLockControls
演示要求您切换到全屏模式的主要原因。
使用FirstPersonControls
,当鼠标到达边缘时,外观移动会继续。这种方法在窗口模式下运行良好。
答案 1 :(得分:1)
您可能希望使用PointerLockControls
在此处查看示例: https://github.com/mrdoob/three.js/blob/master/examples/misc_controls_pointerlock.html