2013-02-12 17 views
5

rysuję ogień na moim urządzeniu z Androidem libgdx:libgdx particleEffect obrót

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

mogę obracać, skalować lub ustawić prędkość mojego efekt programowo?

Odpowiedz

4

Tak. Sprawdź ParticleEmitterTest: https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ParticleEmitterTest.java

Wystarczy uzyskać ParticleEmitter:

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

Skala i prędkość nie stanowią problemu, ale co z rotacją? Wydaje się, że nie ma prostego sposobu na obrócenie efektu całej cząstki. –

+1

@SububaSteve, może jest już za późno, ale możesz użyć 'emitter.getAngle(). SetHigh (kąt); emitter.getAngle(). setLow (angle); ' – Leo

4

znalazłem rozwiązanie problemu rotacji efekt cząstek za pomocą tego kodu jako podstawy http://badlogicgames.com/forum/viewtopic.php?f=11&t=7060#p32607

i dodanie mała zmiana, aby zachować amplitudę efektu. Mam nadzieję, że to pomoże.

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

Nie powinieneś zrobić tego samego obliczenia amplitudy dla" Low "? – Sebastian