3

簡単な飛行機の飛行ゲームを作ろうとしています。上下が飛行機の水平位置に対する相対 Y 軸である 360 度の領域で飛行機を回転させるために、ユーザーの矢印キーを使用したいと思います。左矢印と右矢印は、平面をその z 軸を中心に回転させ、新しい Y 軸位置を持つことができるようにする必要があります。私の質問は、新しい水平位置に対して相対的な Y 軸で飛行機を回転させるにはどうすればよいですか?

私は plane というグループを持っていて、plane.rotation.z (左右用) や plane.rotation.x (上下用) などを実行しましたが、x 軸は新しい水平面に沿っていません。また、plane.children[1].matrix.rotation.x を使用してグループ内のモデル/メッシュにアクセスして、相対的な Y 軸を変更できるかどうかを確認しました...ただし、これは同じ問題を引き起こします。現在の水平位置に対する相対的な Y 軸を見つけるにはどうすればよいですか?

私のコードはjsfiddle hereで見ることができます

どんな助けでも大歓迎です。

4

1 に答える 1

4

率直に言って、私はあなたの質問を理解するのに非常に苦労していますが、あなたの質問は「矢印キーを使用して、オブジェクトを内部のz軸またはx軸を中心に回転させるにはどうすればよいですか?」

このようなルーチンはそれを行います:

var _q1 = new THREE.Quaternion();

function rotateOnAxis( object, axis, angle ) {

    _q1.setFromAxisAngle( axis, angle );
    object.quaternion.multiplySelf( _q1 );

}    

このルーチンは、実装にクォータニオンを使用します。これは実際には大したことではありません。設定する必要があるのは次のとおりです。

object.useQuaternion = true;

更新されたフィドルは次のとおりです:http://jsfiddle.net/Lc8gH/20/


編集:あなたは今使用することができますObject3D.rotateOnAxis( axis, angle );

three.js r.58

于 2012-11-04T18:35:24.857 に答える