我的应用程序中有一个相机:
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
camera.position.z = 1;
camera.position.y = -5;
camera.rotateOnAxis(new THREE.Vector3(1, 0, 0), degInRad(90));
camera.up = new THREE.Vector3(0, 0, 1);
那些代码在render
当我按下按键时,函数必须旋转相机:
if (leftPressed) {
camera.rotateOnAxis((new THREE.Vector3(0, 1, 0)).normalize(), degInRad(1));
} else if (rightPressed) {
camera.rotateOnAxis((new THREE.Vector3(0, 1, 0)).normalize(), degInRad(-1));
}
if (upPressed) {
camera.rotateOnAxis((new THREE.Vector3(1, 0, 0)).normalize(), degInRad(1));
} else if (downPressed) {
camera.rotateOnAxis((new THREE.Vector3(1, 0, 0)).normalize(), degInRad(-1));
}
相机旋转,但不是我需要的方式。我希望相机像飞机上的 FPS(第一人称射击游戏)一样旋转。看图就知道我想要什么...
我尝试使用sin(1)
and cos(1)
但不明白如何rotateOnAxis
作品、原因translate
功能就像一个魅力,可以将相机移动到她所看到的方向。
P.S.
这里有一个docs http://threejs.org/docs/ to the three.js
也许有帮助。
处理我使用的键盘事件键盘JS http://robertwhurst.github.io/KeyboardJS/
这是一个degInRad
功能:
function degInRad(deg) {
return deg * Math.PI / 180;
}
Link on JSFiddle http://jsfiddle.net/ostapische/uFwFC/
O
- 相机的位置
O-O1
- 当前相机方向
R1
- 当前旋转方向
R
- 指导我想要的
为。。。道歉good图片。