将相机移动到它面向的方向

时间:2017-04-16 17:49:02

标签: java 3d game-development

我的相机有X,Y和Z坐标。

相机也有偏航和俯仰。

int cameraX = Camera.getX();
int cameraY = Camera.getY();
int cameraZ = Camera.getZ();
int cameraYaw = Camera.getYaw();
int cameraPitch = Camera.getPitch();

偏航在360​​度有2048个单位,所以在160度时,getYaw()方法将返回1024.

目前我只需在每个循环中设置Y + 1即可向前移动相机。

Camera.setY(Camera.getY() + 1);

如何将相机X和Y设置为我所面对的方向(偏航)? 我不想在这种情况下使用球场,只是偏航。

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您可以尝试让相机朝您正在查看的方向移动(在2D空间中,您只是水平移动)。

我为C ++创建了一个小的LookAt仅限标头的库,但这里是用Java重写的一部分。这段代码的作用是旋转和距离,然后计算你需要移动多远(在x和y坐标中)到达那里。

// Returns how far you need to move in X and Y to get to where you're looking
// Rotation is in degrees, distance is how far you want to move
public static double PolarToCartesianX(double rotation, double distance) {
    return distance * Math.cos(rotation * (Math.PI / 180.0D));
}

public static double PolarToCartesianY(double rotation, double distance) {
    return distance * Math.sin(rotation * (Math.PI / 180.0D));
}