2013-02-12 14 views
5

मैं libgdx के साथ अपने Android डिवाइस पर आग आकर्षित:libgdx particleEffect रोटेशन

ParticleEffect effect; 
ParticleEffectPool fireEffectPool; 
Array<PooledEffect> effects = new Array<PooledEffect>(); 

@Override 
public void create() 
{ 
    ... 
    effect = new ParticleEffect(); 
    effect.load(Gdx.files.internal("particles/fire01.p"), Gdx.files.internal("image")); 
    effect.setFlip(true, false); 
    fireEffectPool = new ParticleEffectPool(effect, 1000, 3000); 

    PooledEffect myEffect = fireEffectPool.obtain(); 
    myEffect.setPosition(200, 400); 
    effects.add(myEffect); 
    ... 
} 

मैं बारी बारी से कर सकते हैं, सेट गति या प्रोग्राम के रूप में मेरे प्रभाव पैमाने पर?

उत्तर

4

हां। ParticleEmitterTest की जाँच करें: https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ParticleEmitterTest.java

तुम सिर्फ एक ParticleEmitter प्राप्त करना होगा:

emitter = effect.getEmitters().first(); 
emitter.getScale().setHigh(5, 20); 
+1

स्केल और गति कोई समस्या नहीं है, लेकिन घूर्णन के बारे में क्या? पूरे कण प्रभाव को घुमाने के लिए एक आसान तरीका प्रतीत नहीं होता है। –

+1

@ स्कूबास्टवे, शायद यह बहुत देर हो चुकी है लेकिन आप 'emitter.getAngle()। SetHigh (कोण) का उपयोग कर सकते हैं; emitter.getAngle()। setLow (कोण); ' – Leo

4

मैं आधार http://badlogicgames.com/forum/viewtopic.php?f=11&t=7060#p32607

के रूप में इस कोड का उपयोग और एक जोड़कर कण प्रभाव रोटेशन समस्या का हल मिल गया प्रभाव के आयाम को बचाने के लिए छोटे बदलाव। आशा करता हूँ की ये काम करेगा।

public void rotateBy(float amountInDegrees) { 
    Array<ParticleEmitter> emitters = particleEffect.getEmitters();   
     for (int i = 0; i < emitters.size; i++) {       
      ScaledNumericValue val = emitters.get(i).getAngle(); 
      float amplitude = (val.getHighMax() - val.getHighMin())/2f; 
      float h1 = amountInDegrees + amplitude;            
      float h2 = amountInDegrees - amplitude;            
      val.setHigh(h1, h2);           
      val.setLow(amountInDegrees);  
     } 
    } 
} 
+0

क्या आप 'लो' के लिए समान आयाम गणना नहीं करनी चाहिए? – Sebastian