2013-02-12 69 views
5

我引火燒身我的Android設備上使用libgdx: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

規模和速度都沒有問題,但旋轉呢?似乎沒有簡單的方法來旋轉整個粒子效果。 – 2014-11-23 23:30:37

+1

@ScubaSteve,可能已經太遲了,但是你可以使用'emitter.getAngle()。setHigh(angle); emitter.getAngle()。setLow(angle);' – Leo 2015-02-23 15:09:00

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 2017-01-12 10:41:13