2013-02-12 26 views
5

Ben libgdx ile benim android cihaz üzerine ateş çizmek:libgdx particleEffect rotasyon

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

ben döndürmek Can, set hız veya programlı benim etkisini ölçek?

cevap

4

Evet. ParticleEmitterTest göz atın: https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ParticleEmitterTest.java

Sadece bir ParticleEmitter edinmeniz gerekir

:

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

ölçek ve hız sorun değil, ancak dönüş nedir? Tüm parçacık efektini döndürmenin kolay bir yolu yoktur. –

+1

@ScubaSteve, belki çok geç ama emitter.getAngle(). SetHigh (angle); emitter.getAngle(). setLow (açı); ' – Leo

4

Ben tabanın http://badlogicgames.com/forum/viewtopic.php?f=11&t=7060#p32607

olarak bu kodu kullanarak Ve ekleyerek parçacık etkisi rotasyon sorununa çözüm buldu Efektin genliğini korumak için küçük bir değişiklik. Umarım yardımcı olur.

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

'Low' için aynı genlik hesaplamasını yapmamalısınız? – Sebastian