Javascript 如何旋转火炮的刚体?
有人知道我如何旋转火炮JS(物理库)Javascript 如何旋转火炮的刚体?,javascript,rotation,three.js,quaternions,cannon.js,Javascript,Rotation,Three.js,Quaternions,Cannon.js,有人知道我如何旋转火炮JS(物理库)CANNON.RigidBody?我试图让物体随着相机旋转,所以两者都朝向同一个方向。我知道我必须修改四元数,但这不能正常工作: mPlayer.objectBody.quaternion.set(0, mPlayer.yawObject.rotation.y, 0, 1); 它还会更改对象的Y位置,而不仅仅是旋转 (WASD移动红色矩形-这就是我要旋转的部分) 此时,它会根据物理原理自动旋转。谢谢你的帮助 编辑: 我现在有点让它工作了。但它没有完全旋转(
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();
为了避免查看代码,在MouseMove事件中设置了mPlayer.yawObject.rotation.y:
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 ) );
};
再次感谢 在Cannon.JS开发者的帮助下解决了这个问题。我现在正在使用:
mPlayer.objectBody.quaternion.setFromAxisAngle(new CANNON.Vec3(0,1,0), mPlayer.yawObject.rotation.y);