我正在研究某种城市建造者,您可以用鼠标拖动照相机。转动相机时,一切正常。
鼠标拖动脚本:
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的计算,请告诉我。
预先感谢
答案 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
。