所以我正在用LWJGL用Java编写2D游戏。我在游戏循环中有我的正交摄像机,并将其设置在我想看到的位置。现在,当我想绘制一个HUD来显示我的钱等时,我可以给它一个绝对坐标,这样它就成为我地图的一部分,并且可以从HUD上滚动开(这对HUD绝对没有意义) ,也可以将HUD向量添加到相机的左下角向量。最后一个解决方案的问题是,如果我移动相机,我的HUD不能完美更新,而您会看到它追逐其实际位置。

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

编辑:

这是我的Graphicsloop外观,但仍无法正常工作:

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

最佳答案

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


那不是应该发生的事情。您可能会发生以下情况:

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


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

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


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

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

关于java - LWJGL HUD在2D游戏中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23935973/

10-11 02:41