2012-03-14 10 views
5

私は、粒子を描くときに、彼らは画面全体を取ると、巨大であるLibGDX:私のゲームにおける粒子規模

static final float FRUSTUM_WIDTH = 10; 
static final float FRUSTUM_HEIGHT = 15; 

を使用!では、私のニーズに合わせてそれらをどのようにスケールダウンするのですか?

//ピュー研究所

答えて

5

あなたは、私はないと思う正直に言うと(パーティクルエディタを使用しますかパーティクルが小さすぎるとは言いません(私が本当にお勧めします)。または、パーティクルエフェクトファイルを開くだけで、パーティクルのサイジングができます。これはエディタで生成するか、サンプルからコピーすることができます。必要に応じて

- Scale - 
lowMin: 0.0 
lowMax: 0.0 
highMin: 0.6 
highMax: 0.6 
relative: false 
scalingCount: 1 
scaling0: 1.0 
timelineCount: 1 
timeline0: 0.0 

highMinhighMax調整します。このファイルには以下のフィールドを検索します。

+0

これと最新の図書館で働いていない他の人たち、どんな助け? – lacas

+0

私はしばらくの間、libgdxを使用していませんでした。残念ですが。( – dom

2

さて、あなたはパーティクルエディタを使用し、そこにサイズを調整することができます

http://www.badlogicgames.com/wordpress/?p=1255

+0

イェジンのおかげ。それは1 –

+0

任意の2017の更新よりも低くなりませんか? – lacas

25
ParticleEffect pe = new ParticleEffect(); 
    pe.load(Gdx.files.internal("data/particle/particle.p"), Gdx.files.internal("data/particle")); 
    pe.setPosition(x, y); 

    float pScale = 0.2f; 

    float scaling = pe.getEmitters().get(0).getScale().getHighMax(); 
    pe.getEmitters().get(0).getScale().setHigh(scaling * pScale); 

    scaling = pe.getEmitters().get(0).getScale().getLowMax(); 
    pe.getEmitters().get(0).getScale().setLow(scaling * pScale); 

    scaling = pe.getEmitters().get(0).getVelocity().getHighMax(); 
    pe.getEmitters().get(0).getVelocity().setHigh(scaling * pScale); 

    scaling = pe.getEmitters().get(0).getVelocity().getLowMax(); 
    pe.getEmitters().get(0).getVelocity().setLow(scaling * pScale); 
+1

これは実際に役に立ちます、ありがとうございます! –

2

私はビクターと同じアプローチを使用していたが、何が私の仕事:

ParticleEffect effect = new ParticleEffect(); 
    effect.load(Gdx.files.internal("particle/version1.p"), Gdx.files.internal("particle")); 
    effect.setPosition(x, .y); 
    float pScale = 0.02f; 
    float scaling; 
    Array<ParticleEmitter> emitters = effect.getEmitters(); 
    for (ParticleEmitter e : emitters) { 

     scaling = e.getScale().getHighMax(); 
     e.getScale().setHigh(scaling * pScale); 

     scaling = e.getScale().getLowMax(); 
     e.getScale().setLow(scaling * pScale); 

     scaling = e.getVelocity().getHighMax(); 
     e.getVelocity().setHigh(scaling * pScale); 

     scaling = e.getVelocity().getLowMax(); 
     e.getVelocity().setLow(scaling * pScale); 

     scaling = e.getSpawnHeight().getHighMax(); 
     e.getSpawnHeight().setHighMax(scaling * pScale); 

     scaling = e.getSpawnHeight().getLowMax(); 
     e.getSpawnHeight().setLowMax(scaling * pScale); 

     scaling = e.getSpawnHeight().getHighMin(); 
     e.getSpawnHeight().setHighMin(scaling * pScale); 

     scaling = e.getSpawnHeight().getLowMin(); 
     e.getSpawnHeight().setLowMin(scaling * pScale); 

     scaling = e.getSpawnWidth().getHighMax(); 
     e.getSpawnWidth().setHighMax(scaling * pScale); 

     scaling = e.getSpawnWidth().getLowMax(); 
     e.getSpawnWidth().setLowMax(scaling * pScale); 

     scaling = e.getSpawnWidth().getHighMin(); 
     e.getSpawnWidth().setHighMin(scaling * pScale); 

     scaling = e.getSpawnWidth().getLowMin(); 
     e.getSpawnWidth().setLowMin(scaling * pScale); 

     scaling = e.getXOffsetValue().getLowMax(); 
     e.getXOffsetValue().setLowMax(scaling * pScale); 

     scaling = e.getXOffsetValue().getLowMin(); 
     e.getXOffsetValue().setLowMin(scaling * pScale); 

     scaling = e.getYOffsetValue().getLowMax(); 
     e.getYOffsetValue().setLowMax(scaling * pScale); 

     scaling = e.getYOffsetValue().getLowMin(); 
     e.getYOffsetValue().setLowMin(scaling * pScale); 
    } 
    effect.start(); 
関連する問題