4

因此,我正在开发 Java 3D 游戏,并且正在实现悬停在单位上方的健康栏。

我首先在单元位置上方的 3D 点绘制一个四边形,并应用广告牌行为使其始终面向相机。

但我遇到的问题是健康栏有时会被其他风景遮住。

所以我正在考虑以下选项:

  1. 覆盖健康栏像素的 Z / 深度缓冲区值,以使渲染器认为它们比之后渲染的任何东西更靠近相机。

    我试过了renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS)。虽然它使渲染器在之前在同一区域中绘制的任何东西上绘制健康条,但当稍后在健康条顶部绘制其他风景时,它并没有帮助。

    在 Java 3D 中有没有更好的方法来做到这一点?

  2. 将生命值条的 3D 位置投影到摄像机前面的 2D 平面上。听起来可行,但在我着手重新发明所需的所有数学之前,也许有人可以指出一个现有的解决方案。

  3. 从 Java 3D 切换到 LWJGL 或 jMonkeyEngine 之类的东西(不仅针对此问题,还针对 Java 3D 已死的一般抱怨等)。虽然我什至不确定它们是否更灵活地解决这个特定问题。根据我的阅读,游戏开发中最严重的错误之一是在开发中期切换引擎。

4

1 回答 1

3

使用画家算法:在绘制完场景的其余部分绘制生命值条(当然,关闭 Z 测试)。

于 2010-12-02T22:37:40.377 回答