【问题标题】:LiquidFun rendering particlesLiquidFun 渲染粒子
【发布时间】:2017-01-08 03:57:13
【问题描述】:

我正在使用 LiquidFun 来模拟水,它是基于 box2d 使用粒子的物理引擎。我的问题是用特定颜色渲染粒子时。

在粒子定义上设置粒子颜色的目的是什么?当您还必须在 ParticleDebugRenderer 上设置要渲染粒子的颜色时。

public void createWater(float x, float y){
        ParticleDef def = new ParticleDef();
        def.color.set(Color.Red); //set particle color
        def.flags.add(ParticleDef.ParticleType.b2_tensileParticle);
        def.flags.add(ParticleDef.ParticleType.b2_colorMixingParticle);
        def.position.set(x, y);
        int index = system.createParticle(def);
    }

粒子调试渲染器:

pdr = new ParticleDebugRenderer(Color.BLUE, maxParticles); //set as BLUE

如果我将粒子设置为红色,它仍会呈现为蓝色,因为 ParticleDebugRenderer 设置为蓝色。

【问题讨论】:

  • 如果您有多个水域并且想要调试它们怎么办?它们都是蓝色的,你不会看到太多?
  • 我猜是吗?但我对将它们渲染为特定颜色感到困惑,因为 def.color.set() 由于 ParticleDebufRenderer 将无用

标签: java libgdx box2d liquidfun


【解决方案1】:

查看源代码我们可以找到2个渲染器。

ParticleDebugRenderer.javaColorParticleRenderer.java

它们的代码区别在于ColorParticleRenderer从ParticleSystem获取颜色,ParticleDebugRenderer从构造函数获取颜色。

主要的使用区别是我们每次不是调试时都使用ColorParticleRenderer。 ParticleDebugRenderer 是我们想要调试粒子时使用的。我们使用它,因为我们不想在 ParticleSystem 的定义中更改颜色,因为

  1. 一个定义可能有多个 ParticleSystem,因此更改定义中的颜色将毫无意义。
  2. 更改一行绘图比更改一行定义更容易(您避免说:我忘了我在定义处更改了颜色

您的困惑来自于您在不调试时使用的是 ParticleDebugRenderer,因此您分配了两次相同的颜色。

【讨论】:

  • 谢谢,不知道还有colorParticleRenderer。有没有类似于 box2d 实体的东西? box2dDebugRenderer 类的替代品。
  • 我认为没有这样的事情。这没有多大意义,因为我们很少将 box2D 实体绘制为充满颜色的形状。
猜你喜欢
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
相关资源
最近更新 更多