我的目标是让一个对象像宇宙飞船一样控制,我所理解的是我需要使用四元数来实现这个目标。开始时,我试着让我的立方体在我按下A键时开始向左旋转,这是代码:
if(controls.pressingA === true)
{
//var pLocal = new THREE.Vector3( 0, 0, -1 );
//var pWorld = pLocal.applyMatrix4( me.matrixWorld );
//var dir = pWorld.sub( me.position ).normalize();
var dir = me.getWorldDirection();
var quaternion = new THREE.Quaternion().setFromAxisAngle( dir, 0.05 );
me.rotation.setFromQuaternion( quaternion );
}当我理解这段代码时,me.getWorldDirection()获取对象所面对的轴,然后我在之前获得的轴上创建四元数,并将给定对象在rad中旋转0.05度,最后用最后一行代码将四元数应用于我的对象。我得到的问题是,它没有增加旋转,它只是将我的对象设置为给定的旋转,我如何才能使它增加旋转而不是设置它?
发布于 2016-08-02 20:27:05
为什么不使用其中一个或组合:
mesh.rotation.x += 0.05;
mesh.rotation.y += 0.05;
mesh.rotation.z += 0.05;JSFiddle
发布于 2021-01-21 22:34:05
如果要设置所有这些参数,则可以执行以下操作
mesh.rotation.set(9, 7, 3)
https://stackoverflow.com/questions/38699395
复制相似问题