【问题标题】:LWJGL HUD in a 2D Game2D 游戏中的 LWJGL HUD
【发布时间】:2014-05-29 14:36:52
【问题描述】:

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

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

编辑:

这是我的 Graphicsloop 的样子,但它仍然无法正常工作:

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

【问题讨论】:

  • 你基本上想要 2D 的东西而不是 3D 场景?
  • 我需要在 2D 游戏中使用 2D Hud。与 3D 无关
  • 你在哪里更新你的球员位置?

标签: java camera lwjgl orthographic


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 我不需要帮助就可以在 3D 游戏中绘制 2D Hud。我需要知道如何在 2D 游戏中自己画一个
  • 相机是否跟随你的播放器?
  • 好的,我解决了。我交换了 cam.update();使用 drawEntities();,因为我认为他可能会花费太多时间来绘制它们。唯一的问题是,我在绘制实体后仍在更新相机。但作为 2D 游戏,我不知道如何使用 z 轴在实体上方绘制 Hud。不,它不跟随播放器,因为我没有一个
  • 这只是你渲染它的顺序。
  • 感谢您的建议。让我想到在我的渲染代码中甚至没有一个计算。现在就像一个魅力,非常感谢。
猜你喜欢
  • 2014-04-30
  • 2014-04-08
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2015-12-18
  • 1970-01-01
相关资源
最近更新 更多