这个问题让我很头疼。我正在尝试实现基于鼠标输入的Cannon.Body的旋转。通过使用(Cannon) Three FPS示例进行演示,您可以了解问题所在。
当您运行代码并通过单击"click to play“区域启用pointerlockcontrol,并按W 1秒以使球体进入摄影机的视图时,您将看到球体通过应用速度根据WASD键移动。如果移动鼠标,则会将四元数应用于身体,并计算适当的速度。现在旋转180度,X轴上的旋转现在以某种方式被取消。向上移动鼠标时,球体将向下旋转。
如何解决这样的问题呢?也许我在其他地方做错了什么,这可能会扰乱四元数?
也许我应该提一下,在playerc
目前,我在three.js中使用鼠标位置和(0,1)的点积来生成弧度来旋转对象
下面的代码,工作正常,但对象“跳跃”,因为当clientX值在window.innerWidth / 2之间时,弧度角度从正跳到负
onDocumentMouseMove : function(event) {
// rotate circle relative to current mouse pos
var oldPos = new THREE.Vector2(0, 1);
Template.Main.mouseCurrPos = new THREE.Vector2((event.