所以我正在开发一个Java 3D游戏,我正在实现在单位上方悬停的健康栏。
我首先在设备位置上方的3D点处绘制四边形并应用Billboard行为使其始终面向相机。
但我遇到的问题是健康酒吧有时会被其他风景遮挡。
所以我正在考虑以下选项:
覆盖健康条像素的Z /深度缓冲区值,使渲染器认为它们比之后呈现的任何内容更接近相机。
我试过了renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS)
。虽然它使渲染器在早先在同一区域绘制的任何内容上绘制健康栏,但是当稍后在健康栏上绘制其他场景时,它无效。
在Java 3D中有更好的方法吗?
将健康条的3D位置投影到相机前面的2D平面上。听起来可行,但在我开始重新发明所需的所有数学之前,也许有人可以指出现有的解决方案。
从Java 3D切换到类似LWJGL或jMonkeyEngine的东西(不仅仅是针对这个问题,还有关于Java 3D死机等的一般抱怨)。虽然我甚至不确定他们是否对这个特殊问题更灵活。从我所看到的,游戏开发中最严重的错误之一是在开发中期切换引擎。