lwjgl FPS зрительский режим
Я пытаюсь написать программу, которая использует lwjgl, и она включает в себя полеты от первого лица, что-то вроде режима зрителя в игре FPS - вы летите в любом направлении, куда смотрите. Я знаю, как сделать FPS-камеру, идущую по земле, но это также должно идти вверх и вниз. Я пытался что-то сделать, но это ужасно неточно.
Следующий код в классе отвечает за угол камеры (положительный у вверх):
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 );
}
Спасибо!
1 ответ
НВМ, я понял это
public void moveForward()
{
rx = toDeg(rx);
float speed = 0.25f;
double xsin = Math.sin(Math.toRadians(rx));
double xcos = Math.cos(Math.toRadians(rx));
double flatLen = xcos * speed;
double ysin = Math.sin(Math.toRadians((ry + 90)));
double ycos = Math.cos(Math.toRadians((ry + 90)));
this.move(
flatLen * ycos,
speed * xsin,
flatLen * ysin);
}