FlyControls に似たものを THREE.js に実装しようとしていますが、カメラのピッチを正しく回転させる方法を一生理解できません。
http://radiantjs.herokuapp.com/
A キーまたは Z キーを押して、「見上げる/見下ろす」ようにします。そのデモの初期位置はすでにヨー軸上で回転しているため、ピッチは基本的にロールのように見えます。
カメラの位置と回転を更新するための私のコードは次のとおりです。
/**
* Updates this View. This is called once per frame.
*
* @param {Number} delta The length of the frame (16 / milliseconds).
*/
update: function(delta) {
if (this.velocity.length() < 0.15) {
this.velocity.clear()
} else {
this.velocity.multiplyScalar(0.85 * delta)
}
if (this.velocity.x || this.velocity.y || this.velocity.z) {
this.camera.position = this.camera.localToWorld(this.velocity.clone())
this.camera.position.clamp(-16384, 16384)
}
if (this.rotation.length() < 0.15) {
this.rotation.clear()
} else {
this.rotation.multiplyScalar(0.85 * delta)
}
if (this.rotation.x || this.rotation.y) {
var rotation = this.rotation.clone().multiplyScalar(Math.PI / 180)
this.camera.rotation.add(rotation)
}
}
完全なコードはこちらからも入手できます: https://github.com/jdolan/radiantjs/blob/master/public/scripts/main/view.js#L291
どんな助けでも大歓迎です!