2013-04-07 8 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); 
관련 문제