所以我正在用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/