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);
    }

ParticleDebugRenderer:

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

パーティクルを赤に設定しても、ParticleDebugRenderer が青に設定されているため、青でレンダリングされます。

4

1 に答える 1

2

ソース コードを見ると、2 つのレンダラーが見つかります。

ParticleDebugRenderer.javaおよびColorParticleRenderer.java

これらのコードの違いは、ColorParticleRenderer が ParticleSystem から色を取得し、ParticleDebugRenderer がコンストラクターから色を取得することです。

主な使用上の違いは、デバッグしていないときは常に ColorParticleRenderer を使用することです。ParticleDebugRenderer は、パーティクルをデバッグするときに使用するものです。ParticleSystem の定義で色を変更したくないので、これを使用します。

  1. 1 つの定義の ParticleSystem が複数存在する可能性があるため、定義で色を変更しても意味がありません。
  2. 定義の 1 行を変更するよりも、描画の 1 行を変更する方が簡単です (定義で色を変更するのを忘れていたと言うのは避けてください) 。

混乱は、デバッグしていないときに ParticleDebugRenderer を使用しているため、同じ色を 2 回割り当てるという事実から生じています。

于 2016-08-31T15:54:56.200 に答える