我使用指针锁控件使用three.js。我将其设置为在调用函数时更改相机的旋转。但是,正因为如此,相机才开始自行旋转。
而不是旋转整个相机和控制方案,它似乎只是旋转相机,所以如果你按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指针锁控件设置了摄像头和控制系统。
有什么想法吗?谢谢。
答案 0 :(得分:0)
PointerLockControls
期待未旋转的相机。摄像机视图方向由控件创建的摄像机父对象控制。
您可以使用
controls.getObject.rotation.y = value; // radians
更改相机标题,
controls.getObject().children[ 0 ].rotation.x = value; // radians
更改相机间距。
拥有controls.lookAt( v )
方法可能会很棒。如果需要,您可以在three.js github网站上提交增强请求。
three.js r.82