6

CannonJS (物理ライブラリ) を回転させる方法を知っている人はいますCANNON.RigidBodyか? カメラでオブジェクトを回転させようとしているので、両方が同じ方向を向いています。クォータニオンを変更する必要があることはわかっていますが、これは正しく機能しません。

mPlayer.objectBody.quaternion.set(0, mPlayer.yawObject.rotation.y, 0, 1);

回転だけでなく、オブジェクトの Y 位置も変更します。

これがデモです(赤い四角形を移動するためのWASD-回転させたいものです)
メインスクリプトは次のとおりです

現時点では、物理学に基づいて自動的に回転します。助けてくれてありがとう!

編集:
私は今それを機能させています。しかし、完全に (360 度全体) 回転するわけではなく、回転する角度も正しくありません。誰かが見て、何が悪いのかを知ることができれば、本当に感謝しています! :)

以前と同じリンクですが、長方形/ボディがカメラの下にあるため、正しく回転しているかどうかを確認できます。

回転させるためにこのコードを追加しました:

mPlayer.objectBody.quaternion.y = mPlayer.yawObject.rotation.y;
mPlayer.objectBody.quaternion.w = 1;
mPlayer.objectBody.quaternion.normalize();  

コードを見なくてmPlayer.yawObject.rotation.yも済むように、MouseMove イベントに設定されています。

var onMouseMove = function ( event ) {
    var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
    var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;

    mPlayer.yawObject.rotation.y -= movementX * 0.002;
    mPlayer.pitchObject.rotation.x -= movementY * 0.002;

    mPlayer.pitchObject.rotation.x = Math.max( - PI_2, Math.min( PI_2, mPlayer.pitchObject.rotation.x ) );
};

再度、感謝します!

4

1 に答える 1

7

Cannon.JS 開発者の助けを借りて問題を解決しました。私は今使用しています:

mPlayer.objectBody.quaternion.setFromAxisAngle(new CANNON.Vec3(0,1,0), mPlayer.yawObject.rotation.y);
于 2013-04-11T01:07:20.560 に答える