旋转相机时3D可拖动相机不起作用

时间:2019-01-27 11:56:08

标签: java opengl camera

我正在研究某种城市建造者,您可以用鼠标拖动照相机。转动相机时,一切正常。

鼠标拖动脚本:

private float angleArroundTarget = 0; // rotation arround the target \\

// draggable camera \\
    if(Mouse.isButtonDown(0)){
        targetPosition.x += delta * (Mouse.getDX() * 2);
        targetPosition.z -= delta * (Mouse.getDY() * 2);
    }

如果您知道在拖动相机周围时不依赖于angleArroundTarget的计算,请告诉我。

预先感谢

1 个答案:

答案 0 :(得分:2)

我认为您需要类似的东西:

if(Mouse.isButtonDown(0)){
    float dx =  delta * (Mouse.getDX() * 2);
    float dy = -delta * (Mouse.getDY() * 2);
    float c = Math.cos(angleArroundTarget);
    float s = Math.sin(angleArroundTarget);
    targetPosition.x += c * dx - s * dy;
    targetPosition.z += s * dx + c * dy;
} 

此代码将( delta * (Mouse.getDX() * 2) , -delta * (Mouse.getDY() * 2))矢量旋转angleArroundTarget角。


取决于相机的设置方式,上面的确切代码可能不起作用。如果发生这种情况,请尝试取反angleArroundTarget和/或dy