Question

Je voudrais utiliser le système de particules de AndEngine pour créer une touche (comme dans les projections d'eau).

J'ai vérifié l'exemple du système de particules, mais pas vraiment sûr de ce qui doit être fait pour créer une touche d'affecter l'eau à l'aide du système de particules.

? Idée de toute

Était-ce utile?

La solution

Je ne sais pas de tout algorithmes de simulation de démarrage de l'eau, donc je vais faire ce que je pense, mais vous devrez modifier pour le faire paraître réel.

Animation de l'eau en 2D va créer de nombreuses petites gouttes d'eau à partir d'un seul endroit, puis envoyer chacun dans une direction différente avec une vitesse initiale, chaque goutte d'eau ralentit et disparaît.

Essayez ceci:

public ParticleSystem createParticleSystem(final TextureRegion waterDropTextureRegion) {
    //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, waterDropTextureRegion);

    //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(new AlphaModifier(1, 0, 0, 3));

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

    return particleSystem;
}

Je l'ai pas testé, mais je pense que ça fonctionne. Essayez de jouer avec les valeurs pour trouver une animation qui ressemble reallistic.

La méthode reçoit un argument qui est une région de texture prête pour chaque particule, dans votre cas, je pense que ce serait une goutte d'eau.

Une fois que vous appelez cette méthode et obtenir un ParticleSystem, juste attacher à votre scène:

final ParticleSystem particleSystem = createParticleSystem(...);
scene.attachChild(particleSystem);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top