对于我在three.js中的第一人称相机,我需要将音高限制在[-PI / 2; PI / 2]范围内。 使用euler角度的threejs.org示例代码可以正常工作,我根据自己的需要重新编写了这些代码:
this.pitchObj.rotation.x -= input.check("looky") * settings.mouse.sensitivityY;
this.pitchObj.rotation.x = Math.clamp(this.pitchObj.rotation.x, -HALF_PI, HALF_PI);
但是,因为我改变了一些东西,我现在需要使用四元数版本。这里的旋转就像一个魅力,但音调不受限制。那么如何使用四元数旋转来编写上述片段呢?
我的尝试:
this.pitchObj.rotateX(-this.input.check("looky") * settings.mouse.sensitivityY);
this.pitchObj.quaternion.x = Math.clamp(this.pitchObj.quaternion.x, -HALF_PI, HALF_PI);