我有一个具有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 设置为我面向的方向(偏航(?我不想在这种情况下使用音高,只是偏航。
如果我正确理解了你的问题,你正在尝试让相机朝着你看的方向移动(在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));
}