2012-02-05 4 views
1

Я заинтересован в разработке двигателя частиц, который я могу назвать что-то вроде .createCollisionEffect(pos x, pos y, float duration);AndEngine Particle Collision Effect (Android Game Dev)

и двигателя будет создавать случайный направленный отрог частиц для указанной продолжительности. Я нашел следующий код, но я хотел бы использовать 3 различных текстур, так что случайным образом выбирает один, однако я не знаю, как управлять временем и 3 различных текстур: Я нашел следующий код:

public ParticleSystem createParticleSystem(final TextureRegion textureRegion) { 
    //X & Y for the particles to spawn at. 
    final float particlesXSpawn = 400; 
    final float particlesYSpawn = 300; 

    //Max & min rate are the maximum particles per second and the minimum particles per second. 
    final float maxRate = 10; 
    final float minRate = 5; 

    //This variable determines the maximum particles in the particle system. 
    final int maxParticles = 100; 

    //Particle emitter which will set all of the particles at a ertain point when they are initialized. 
    final PointParticleEmitter pointParticleEmtitter = new PointParticleEmitter(particlesXSpawn, particlesYSpawn); 

    //Creating the particle system. 
    final ParticleSystem particleSystem = new ParticleSystem(pointParticleEmtitter, maxRate, minRate, maxParticles, textureRegion); 

    //And now, lets create the initiallizers and modifiers. 
    //Velocity initiallizer - will pick a random velocity from -20 to 20 on the x & y axes. Play around with this value. 
    particleSystem.addParticleInitializer(new VelocityInitializer(-20, 20, -20, 20)); 

    //Acceleration initializer - gives all the particles the earth gravity (so they accelerate down). 
    particleSystem.addParticleInitializer(new GravityInitializer()); 

    //And now, adding an alpha modifier, so particles slowly fade out. This makes a particle go from alpha = 1 to alpha = 0 in 3 seconds, starting exactly when the particle is spawned. 
    particleSystem.addParticleModifier((IParticleModifier) new AlphaModifier(3, 1, 0)); 

    //Lastly, expire modifier. Make particles die after 3 seconds - their alpha reached 0. 
    particleSystem.addParticleModifier(new ExpireModifier(3)); 

    return particleSystem; 
} 

Может кто-нибудь дает некоторые рекомендации? Заранее спасибо!

+0

Просто уточните: вы не пытаетесь сделать частицы, которые сталкиваются с объектами, не так ли? Вы делаете эффект частицы, который происходит, когда происходит столкновение. Это то, что вы пытаетесь сделать? –

+0

да, у тебя это точно! – Aziz

ответ

6

У вас есть основы в вашем коде выше. Вот как сделать то, что вы ищете:

  1. создать particleEmitter
  2. Создать систему частиц
  3. Добавить Модификаторы и инициализаторы, чтобы дать вашим частицам поведение, которое вы хотите.

А теперь секрет соуса:

  1. Остановите систему частиц: particleSystem.setParticlesSpawnEnabled(false);

  2. На столкновении переместите эмиттер частиц, где он должен испускать частицы с помощью: particleEmitter.setCenter(xPosition , yPosition);

  3. Запустите TimerHandler, чтобы отключить частицы, когда время для нереста частиц закончилось. TimerHandler - это класс Andengine, который работает как обработчик, но останавливается и возобновляется с игрой.

Это должно сделать ya!

+1

каким-либо образом вы могли бы привести пример TimerHandlers или ссылку на хороший ресурс? – Aziz

+1

Вот, где я поднял его: http://stackoverflow.com/questions/8271473/how-to-change-timerhandler-delay-in-andengine Я рекомендую код, отправленный исходным вопросом. Оно работает. –

+0

Также этот учебник создает игру andengine, в которой используется TimerHander. https://jimmaru.wordpress.com/2011/09/28/andengine-simple-android-game-tutorial/ –

Смежные вопросы