1

だから私はLWJGLを使ってJavaで2Dゲームをプログラミングしています。ゲームループにオルソ カメラを配置し、見たい位置に設定します。お金などを表示するために HUD を描画したい場合は、絶対座標を指定してマップの一部にし、HUD から離れてスクロールできるようにすることができます (これは HUD ではまったく意味がありません)。または、カメラの左下のベクトルに HUD ベクトルを追加することもできます。最後の解決策の問題は、カメラを動かした場合、HUD が完全に更新されず、実際の位置を追跡していることです。

私の質問は次のとおりです。2番目の「レイヤー」で画面に対して固定位置を設定する方法はありますか? gltranslate だけでカメラを動かしている人を見たことがありますが、今変更するのは大変かもしれないので、オルソ カメラはそのままにしておきたいと思います。

編集:

これは私のGraphicsloopがどのように見えるかであり、まだ正しく動作しません:

private void updateRunning() {
  cam.update();
  drawEntities();
  drawHud();
  cursor.draw();
}
4

1 に答える 1

1

HUD ベクトルをカメラの左下のベクトルに追加できます。最後の解決策の問題は、カメラを動かした場合、HUD が完全に更新されず、実際の位置を追跡していることです。

それは起こるべきことではありません。起こりそうなことは、次のようなものがあることです。

gameLoop() {
    update();
    drawPlayer();
    drawHud();
    updateCamera();
}

ただし、何かを描画する前に (または更新する前に) 、カメラを更新する必要があります。

gameLoop() {
    update();
    updateCamera();
    drawPlayer();
    drawHud();
}

HUD を他のオブジェクトの上に描画するには、後でレンダリングします。

drawBackground();
drawPlayer();
drawHUD();
于 2014-05-29T14:49:48.803 に答える