当PoiteLockControls的位置不是(0,0,0)时,相机以错误的方式旋转

时间:2018-04-09 03:38:46

标签: three.js pointerlock

three.js r91

我在the PointerLockControls example上稍微更改了line 173

camera.position.set(100, 0, 0);
controls = new THREE.PointerLockControls( camera );
controls.getObject().position.set(100, 0, 0);
scene.add( controls.getObject() );

当我移动鼠标环顾四周时,您可以看到相机的旋转不正确 - 它不是在自身周围旋转而是在其他地方旋转。

您可以看到我添加了controls.getObject().position.set(100, 0, 0);,尝试解决问题,例如thisthis。但它不起作用。

有关完整示例,请参阅this codepen post

移动鼠标时,如何让相机正常旋转?

2 个答案:

答案 0 :(得分:0)

尝试删除 camera.position.set(100,0,0); 行并保留其他人

答案 1 :(得分:0)

我找到了解决方案。

camera.position.set(100, 0, 0);
var cameraPos = camera.position.clone();//save original position
camera.position.set(0, 0, 0);//reset to zero
controls = new THREE.PointerLockControls( camera );
controls.getObject().position.copy(cameraPos);//set original position to the control object
scene.add( controls.getObject() );

这样,camera.position(相机的本地位置)将始终为(0,0,0),但相机的世界位置是正确的。