夹紧相机旋转three.js

时间:2015-05-02 23:45:26

标签: javascript camera rotation three.js clamp

在经历了一个漫长的四分之一星期后,我终于让mouselook在使用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 );
}

问题的图片:enter image description here

0 个答案:

没有答案