0

私は 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 );
}

ありがとう!

4

1 に答える 1

0

Nvm、私はそれを理解しました-

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);
}
于 2013-09-25T20:02:06.887 に答える