使用鼠标在(x,y,z)上的旋转在3d空间中移动对象

时间:2018-08-07 12:49:12

标签: java 3d lwjgl trigonometry

我正在为这个非常简单的事情而苦苦挣扎,我想相对于我拥有的所谓“相机”移动一个对象。我希望对象在向上移动光标时(沿显示屏的Y轴)朝着相机指向的方向移动,当我向右移动光标时(沿X方向)使对象相对于相机向右移动显示器的轴)等等。我现在的代码无法正常工作,而且我确定自己的数学运算中缺少某些内容。

float sidewaysChange = mouseDx * HandSettings.SIDEWAYS_SENSITIVITY * 3;
float forwardChange = mouseDy * HandSettings.FORWARD_SENSITIVITY;
float dx = sidewaysChange * sin(bodyRotation.y);
float dz = forwardChange * cos(bodyRotation.y);
model.increaseX(dx);
model.increaseZ(dz);

这是我现在拥有的代码,其中mouseDx基本上是lwjgl的Mouse.getDx()(mouseDy也是如此),sin(float)cos(float)函数都转换为弧度,而{ {1}}和increaseX(float)函数可以正常工作(已经使用过)。 increaseZ(float)也是准确的,并且是相机的旋转角度。有人可以发现错误吗?

0 个答案:

没有答案