1

わかりました、私は実際にカメラを動かしていないことを知っていると言うことから始めたいと思いますが、そのように説明する方が簡単です.

私の問題は、トップダウンの 2D RPG で自分のキャラクターと一緒にカメラを移動しようとしているのですが、正しい方法が見つからないことです。glTranslate() については知っていますが、x 座標と y 座標の代わりに速度しか使用できません。デルタを念頭に置いてカメラを移動する方法がわかりません。glTranslate() が使用すべきメソッドであるかどうかさえわかりません。

私が意味をなさない場合(非常に可能性が高い)のために、ここに私のコードの一部を示します。

私のテストwhileループ:

while(!Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)&&!Display.isCloseRequested())
    {
        glClear(GL11.GL_COLOR_BUFFER_BIT);

        delta=getDelta();
        update(delta);
        glTranslatef(speedx, speedy, 0);

        level1.checkCurrent(x, y);
        level1.draw();
        Display.update();
        Display.sync(60);
    }

速度を設定する場所は次のとおりです。

    if(Keyboard.isKeyDown(Keyboard.KEY_DOWN))
    {
        y+=0.5*delta;
        screenY+=0.5*delta;
        speedy=(int) (-0.5*delta);
        direction=2;
    }
    else if(Keyboard.isKeyDown(Keyboard.KEY_UP))
    {
        y-=0.5*delta;
        screenY-=0.5*delta;
        speedy=(int) (0.5*delta);
        direction=8;
    }
    else
        speedy=0;
4

1 に答える 1

1

現在、OpenGL をシーン グラフのように扱っています。ただし、OpenGL は画面上に描画することのみを目的としています。何をするにしても、残りのインフラストラクチャがすべてそこにないかのように、問題について常に考える必要があります。

オブジェクトを加速したいですか?さて、時間の経過とともにいくつかの速度変数をインクリメントする必要があり、その速度変数に時間をかけたものが位置に追加されます。本質的にニュートンの運動の法則:

a = dv/dt => v = a*t + v_0
v = dr/dt => r = v*t + r_0 = a*t² + v_0*t + r_0

これは、オブジェクトごとに評価します。次に、アニメーションを描画するときに、状態を使用して、それに応じてオブジェクト ジオメトリを配置します。

于 2012-11-05T00:05:12.043 に答える