0

四元数をいじって長い夜を過ごした後、three.jsを使用したテストゲームでマウスルックが正しく機能するようになりました。

ただし、上を見続けると、カメラが上下逆さまになることに気付きました。ユーザーが比較的ゆっくりとスクロールしているときに完全に正常に機能するコードを急いでまとめましたが、ユーザーが速くスクロールすると機能しません。おそらくカメラの回転を正しくクランプしていないので、どうすればよいでしょうか? それとも、私はある程度正しい軌道に乗っていて、明らかな何かを見逃していたのでしょうか?

プロジェクトへのリンク (ソース インライン): http://neveronti.me/WalkingSimulator/

私のカメラ回転機能:

//Rotates camera horizontally
y-=mouseMove.x*.02;
//rotates camera vertically
//checks to see if it's moving camera up or down
if(mouseMove.y<0){
    //checks that it's not at the bottom or top
    if(Math.abs(camera.rotation.y*(180/Math.PI))>2 || camera.rotation.x<=0){
        x-=mouseMove.y*.02;
    }
} else if(mouseMove.y>0) {
    if(Math.abs(camera.rotation.y*(180/Math.PI))>2 || camera.rotation.x>=0){
        x-=mouseMove.y*.02;
    }
}

私の更新カメラ機能:

function updateCamera(){
    camera.lastRotation=camera.quaternion.clone();
    var euler = new THREE.Euler( 0, 0, 0, 'YXZ' );
    euler.x = x;
    euler.y = y;
    euler.z = z;
    mouseMove.x=0;
    mouseMove.y=0;
    camera.quaternion.setFromEuler( euler );
}

問題のイメージ:ここに画像の説明を入力

4

0 に答える 0