当使用 PointerLockControls 的位置不是 (0,0,0) 时,相机以错误的方式旋转
The camera rotates in a wrong way when its position is not (0,0,0) with PointerLockControls
three.js r91
我改了the PointerLockControls example a little on 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);
,试图像this and this一样解决问题。但是没用。
有关完整示例,请参阅 this codepen post。
移动鼠标时如何使相机正常绕自身旋转?
尝试删除 camera.position.set(100, 0, 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)
,但相机的世界位置是正确的。
three.js r91
我改了the PointerLockControls example a little on 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);
,试图像this and this一样解决问题。但是没用。
有关完整示例,请参阅 this codepen post。
移动鼠标时如何使相机正常绕自身旋转?
尝试删除 camera.position.set(100, 0, 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)
,但相机的世界位置是正确的。