因此,我正在Java 3D进行游戏,并且正在实施悬停在单位上方的健康条。

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

但是我遇到的问题是,健康条有时会被其他风景所掩盖。

因此,我正在考虑以下选项:

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

    我试过 renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS). 。虽然它使渲染器在早些时候在同一区域绘制的任何东西都将健康栏绘制了健康栏,但是当稍后在健康栏顶部绘制其他风景时,这无济于事。

    在Java 3D中有更好的方法吗?

  2. 将健康条的3D位置投射到相机前面的2D平面上。听起来很可行,但是在我重新发明所有数学的数学之前,也许有人可以指出现有的解决方案。

  3. 从Java 3D转换为LWJGL或JmonKeyEngine之类的东西(不仅是为了这个问题,而且对Java 3D死亡等的一般投诉)。尽管我什至不确定它们是否在这个特定问题上更灵活。从我读的内容来看,游戏开发人员中最严重的错误之一就是在中间开发中切换引擎。

有帮助吗?

解决方案

使用 画家的算法: :绘制健康条 您已经绘制了场景的其余部分(当然,Z测试关闭了)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top