gpt4 book ai didi

javascript - 如何旋转 CannonJS 刚体?

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:20 25 4
gpt4 key购买 nike

有谁知道如何旋转 CannonJS(物理库)CANNON.RigidBody?我试图让物体随相机旋转,所以两者都朝向相同的方向。我知道我必须修改四元数,但这不能正常工作:

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

它还会改变对象的 Y 轴位置,而不仅仅是旋转。

Here's a demo (WASD 移动红色矩形 - 这是我想要旋转的)
Here's the main script

目前它会根据物理原理自动旋转。感谢您的帮助!

编辑:
我现在有点让它工作了。但是它没有完全旋转(整个 360 度)并且它旋转的 Angular 不太正确。如果有人可以看看有什么问题,我将不胜感激! :)

Same link as before但是矩形/主体现在位于相机下方,所以我可以查看它是否正确旋转。

我添加了这段代码使其旋转:

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

关于javascript - 如何旋转 CannonJS 刚体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com