2013-04-07 2 views
5

私はCannonJS(物理ライブラリ)をどのように回転させることができるのか誰にも分かりますかCANNON.RigidBody?私はオブジェクトをカメラで回転させようとしているので、両方とも同じ方向を向いています。私は四元を変更する必要があります知っているが、これは正しく動作しません:CannonJS RigidBodyを回転するには?

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

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

Here's a demo(WASDが赤い四角を移動するには - 私は回転したいものです)
Here's the main script

物理学に基づいて、それが自動的に回転させる瞬間。助けてくれてありがとう!

編集:
私はそれを今働いています。しかし、それは完全に回転しません(360度全体)、回転する角度は正しくありません。誰かが見て、何が間違っているかを見ることができたら、私は本当にそれを感謝します! :)

Same link as before矩形/ボディは現在カメラの下にあるので、正しく回転しているかどうかを確認できます。

は、私はそれを回転させるために、このコードを追加:

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)); 
}; 

おかげで再び!

答えて

6

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

mPlayer.objectBody.quaternion.setFromAxisAngle(new CANNON.Vec3(0,1,0), mPlayer.yawObject.rotation.y); 
関連する問題