【发布时间】:2017-01-04 19:34:19
【问题描述】:
似乎找不到我以下问题的解决方案。我在 libGDX 中设置了透视凸轮。我使用 .rotateAround 例程来旋转我的相机。这在围绕低坐标旋转时非常有效。但是要旋转的轴的坐标越高,旋转就越不稳定。
在我的 CameraInputController 类中:
@Override
protected boolean process(float deltaX, float deltaY, int button) {
if (button == Buttons.LEFT) {
// DRAG CAMERA
} else if (button == Buttons.RIGHT) {
// ROTATE CAMERA
perspectiveCam.rotateAround(new Vector3(clickedX, clickedY, 0), Vector3.Z, deltaX * -100);
}
return true;
}
这行得通:
perspectiveCam.rotateAround(new Vector3(0f, 0f, 0f), Vector3.Z, deltaX * -100)
以下代码导致小部分拖动,然后突然旋转,然后再次拖动,等等:
perspectiveCam.rotateAround(new Vector3(100000f, 100000f, 0f), Vector3.Z, deltaX * -100)
我知道它的工作原理是平移,然后旋转凸轮,然后将相机向后平移。谁能指出我正确的方向?它是半径/浮点值中的东西吗?
提前致谢!
编辑: 有关“错误”,请参见此处: rotating gif
【问题讨论】:
-
我很好奇,Vector3.Z 返回什么值? O.o
-
Vector3.Z 是一个新的 Vector3(0,0,1)!我正在转动相机的轴... 编辑:第一个参数 Vector 3 是设置旋转矢量的点,第二个参数是要旋转的轴(Vector.Z),第三个参数是角度(浮动)。