我正在尝试编写一个使用 lwjgl 的程序,它涉及以第一人称飞行,有点像 FPS 游戏中的旁观者模式——你可以向任何你看的方向飞行。我知道如何让 FPS 相机在地面上行走,但这也应该是上下移动的。我试图做一些事情,但它非常不准确。
以下代码在负责相机角度的类中(正 y 向上):
public void move(double mx, double my, double mz)
{
this.x += mx;
this.y += my;
this.z += mz;
}
public void moveForward()
{
rx = toDeg(rx);
float speed = 0.25f;
double xsin = Math.sin( Math.toRadians( rx ) );
double ysin = Math.sin( Math.toRadians(
( ry + Math.signum( toDeg( rx + 90.00001f ) - 180 ) * -90 )
));
double ycos = Math.cos(Math.toRadians(
( ry + Math.signum( toDeg( rx + 90.00001f ) - 180 ) * -90 )
));
this.move( speed * ycos, speed * xsin, speed * ysin );
}
谢谢!