0

我正在使用 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 设置为蓝色。

4

1 回答 1

2

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

ParticleDebugRenderer.javaColorParticleRenderer.java

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

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

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

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

于 2016-08-31T15:54:56.200 回答