我正在使用 libgdx 0.9.9 版。我想在 3D 空间中使用 ParticleEffect 以及其他 3D 模型来渲染火焰效果。
我的代码的逻辑流程:
- 模型批处理开始
- 使用 ModelBatch 渲染 Bullet World 中的所有 3D 模型
- 模型批次结束
- SpriteBatch 开始
- 使用 SpriteBatch 使用 ParticleEffect (effect.draw) 渲染火焰效果
- SpriteBatch 结束
- 使用 Stage 绘制 HUD
问题:火焰效果在 3D 空间中的某个点渲染得很好。但是当我旋转相机以使 3D 模型位于相机和火焰效果之间时,火焰效果会呈现在 3D 模型上,而不是隐藏在 3D 模型后面。
我尝试过的事情:
- 我尝试先渲染 SpriteBatch,然后渲染 3D 模型:在这种情况下,火焰效果不可见。我猜测 3D 模型(图层)正在渲染火焰效果(图层),因此效果不可见。
- 我尝试在第 1 步和第 3 步之间渲染 SpriteBatch,即在 modelbatch.begin 和 modelbatch.end 之间渲染 SpriteBatch。在这种情况下,火焰效果根本不可见。
- 我尝试将粒子效果渲染为 Actor(添加到 HUD 舞台)。正如预期的那样,火焰效果渲染为最顶层 HUD 层的一部分,同样的问题仍然存在。
- 我曾尝试探索贴花,但发现粒子效果不适用于 DebcalBatch。我不想在贴花上显示动画火焰 .gif,因此没有尝试。
有没有人遇到过类似的问题?有什么建议的解决方法可以使 ParticleEffect 成为 3D 世界的一部分,以便在被其他 3D 模型阻挡时隐藏起来?我在 youtube 上看到了 Xoppa 发布的关于 libgdx 中的 3D 粒子的视频,但没有提到任何步骤/解决方案。任何帮助将不胜感激。