1

所以我正在用 LWJGL 用 Ja​​va 编写一个 2D 游戏。我的游戏循环中有我的正射相机,并将其设置在我想看到的位置。现在,当我想画一个 HUD 来显示我的钱等时,我可以给它一个绝对坐标,这样它就是我地图的一部分,我可以滚动离开我的 HUD(这对于 HUD 绝对没有意义) ,或者我可以将我的 HUD 矢量添加到我的相机左下角矢量。最后一个解决方案的问题是,如果我移动我的相机,我的 HUD 不会完美更新,你会看到它追逐它的实际位置。

所以我的问题是:有什么方法可以在第二个“层”中设置相对于我的屏幕的固定位置?我见过一些人只使用 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 回答