2012-03-14 13 views
5

ben parçacıkları çizerkenLibGDX: Benim oyunda Parçacık ölçek

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

yüzden tüm ekranı alıp çok büyük kullanın! Öyleyse bunları ihtiyaçlarıma göre nasıl ölçeklendirebilirim?

// Pew Labs

cevap

5

Ya parçacık düzenleyici kullanın (sanmıyorum dürüst olmak gerekirse Parçacıkları boyutlandırmak için iyi bir fikirdir, zira parçacıkların çok küçük olmayacağı (gerçekten tavsiye ettiğim her şey için)) veya parçacık efekt dosyasını açtınız. Editör tarafından oluşturulmalı veya bunları örneklerden kopyalayabilirsiniz. Gerektiğinde

- 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 

highMin ve highMax ayarlayın: Bu dosyada aşağıdaki alanları arayın.

+0

Bu ve diğerleri, en yeni kütüphane ile çalışmaz, herhangi bir yardım? – lacas

+0

Şahsen, bir süredir libgdx kullanmıyorum, üzgünüm :(. – dom

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

Bu gerçekten yardımcı oluyor, teşekkürler! –

2

Ben Victor ile aynı yaklaşımı kullanmış ama ne benim için çalıştı:

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