4

アプリにカメラがあります:

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)いますが、cos(1)どのように機能するか理解できません.機能は魅力のように機能し、彼女が見ている方向にカメラを動かします. PSこれはおそらくそれが役立つ ドキュメントです。 キーボード イベントを処理するには、KeyboardJS を使用 します。関数は次のとおりです。 rotateOnAxistranslate

three.js

degInRad

function degInRad(deg) {
    return deg * Math.PI / 180;
}  

JSFiddle のリンク

カメラの回転

O- カメラの位置
O-O1- 現在のカメラの方向
R1- 現在の回転方向
R- 望む方向良い写真
で申し訳ありません。

4

2 に答える 2

14

設定するだけで欲しいものが手に入るかもしれませんcamera.rotation.order = 'YXZ';

于 2013-09-17T19:06:36.067 に答える