0
我正在使用three.js使用指针锁控件。我将它设置为当函数被调用时更改摄像头的旋转。但是,正因为如此,相机才开始自行旋转。Three.js旋转摄像头并更新控件(可能的Gimbal锁?)
而不是它旋转整个相机和控制方案,它似乎旋转相机,所以如果你按W向前移动,你实际上在不同的方向移动。这就像走到你身边,而不是移动整个身体。
任何方法来解决这个问题?上述
camera.lookAt(new THREE.Vector3(50, 0, 0));
代码是我使用得到它看一个载体(可以用camera.lookAt(objectnamehere.position)来代替的东西。上面
// Camera
// -------
camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 1000);
// Controls
// --------
controls = new THREE.PointerLockControls(camera);
scene.add(controls.getObject());
//camera.lookAt(new THREE.Vector3(50, 0, 0));
var onKeyDown = function(event) {
switch (event.keyCode) {
case 38: // up
case 87: // w
moveForward = true;
break;
case 37: // left
case 65: // a
moveLeft = true;
break;
case 40: // down
case 83: // s
moveBackward = true;
break;
case 39: // right
case 68: // d
moveRight = true;
break;
}
};
var onKeyUp = function(event) {
switch (event.keyCode) {
case 38: // up
case 87: // w
moveForward = false;
break;
case 37: // left
case 65: // a
moveLeft = false;
break;
case 40: // down
case 83: // s
moveBackward = false;
break;
case 39: // right
case 68: // d
moveRight = false;
break;
}
};
document.addEventListener('keydown', onKeyDown, false);
document.addEventListener('keyup', onKeyUp, false);
代码设置了摄像头并为three.js所控制系统pointerlock控制。
任何想法?谢谢。