LWJGL在2D游戏中的HUD

时间:2014-05-29 14:36:52

标签: java camera lwjgl orthographic

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

所以我的问题是: 有没有什么办法可以在第二层中设置相对于我的屏幕的固定位置'? 我见过一些只使用gltranslate移动相机的人,但我想现在改变它可能需要做很多工作,所以我想保留我的相机。

修改

这就是我的Graphicsloop看起来像它仍然无法正常工作:

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

1 个答案:

答案 0 :(得分:1)

  

我可以将我的HUD矢量添加到我的相机左下方Vector中。最后一个解决方案的问题是,如果我移动相机,我的HUD不能完美更新,你会看到它追逐它的实际位置。

这不应该发生什么。可能发生的事情是你有这样的事情:

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

但是,您需要在绘制任何内容之前(甚至在更新之前)更新相机

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

要在其他对象之上绘制HUD,只需在之后渲染它。

drawBackground();
drawPlayer();
drawHUD();