Javascript 相机移动时Three.js渲染循环冻结
这是我的代码:(我使用THREEx,keyboardstate.js作为输入btw)Javascript 相机移动时Three.js渲染循环冻结,javascript,three.js,Javascript,Three.js,这是我的代码:(我使用THREEx,keyboardstate.js作为输入btw) camera.forward=new THREE.Vector3(0,0,-1).applyMatrix4(camera.matrixWorld).sub(camera.position.normalize(); camera.right=new THREE.Vector3(-1,0,0).applyMatrix4(camera.matrixWorld).sub(camera.position.normaliz
camera.forward=new THREE.Vector3(0,0,-1).applyMatrix4(camera.matrixWorld).sub(camera.position.normalize();
camera.right=new THREE.Vector3(-1,0,0).applyMatrix4(camera.matrixWorld).sub(camera.position.normalize();
如果(按键按下('W')){
camera.position.add(camera.forward.multilyscalar(2.multilyscalar)(clock.getDelta());
}
如果(按键按下('S')){
camera.position.add(camera.forward.subVectors(新的三个.Vector3(0,0,1),camera.forward).normalize().multilyscalar(2).multilyscalar(clock.getDelta());
}
如果(按下键('Q')){
camera.rotation.y+=0.3*clock.getDelta();
}
如果(按下键('E')){
camera.rotation.y-=0.3*clock.getDelta();
}
if(light.position.x>=3){
负=真;
}else if(light.position.x)很可能是因为该值被限制在最大或最小范围内,您可以检查旋转和灯光位置的设置范围吗?对于相机,没有旋转限制。对于灯光,x轴上的限制为6,如果您阅读代码,它会显示这一点。
camera.forward = new THREE.Vector3(0, 0, -1).applyMatrix4(camera.matrixWorld).sub(camera.position).normalize();
camera.right = new THREE.Vector3(-1, 0, 0).applyMatrix4(camera.matrixWorld).sub(camera.position).normalize();
if (keys.pressed('W')) {
camera.position.add(camera.forward.multiplyScalar(2).multiplyScalar(clock.getDelta()));
}
if (keys.pressed('S')) {
camera.position.add(camera.forward.subVectors(new THREE.Vector3(0, 0, 1), camera.forward).normalize().multiplyScalar(2).multiplyScalar(clock.getDelta()));
}
if (keys.pressed('Q')) {
camera.rotation.y += 0.3 * clock.getDelta();
}
if (keys.pressed('E')) {
camera.rotation.y -= 0.3 * clock.getDelta();
}
if (light.position.x >= 3) {
negative = true;
} else if (light.position.x <= -3) {
negative = false;
}
if (negative) {
light.position.x -= 0.5 * clock.getDelta();
} else {
light.position.x += 0.5 * clock.getDelta();
}