Skip to content
agosto 24, 2010 / 100xna

[Intermedio] Como usar Mercury Particle Engine


Hace un tiempo os hablé de Mercury Particle Engine. Hoy os voy a explicar como usarlo en nuestro juego con un pequeño ejemplo.
Primero tenemos que agregar la referencia del Mercury Particle Engine al proyecto. Hay que agregar la referencia correcta, ya que hay una para PC y otra para XBOX360.
Agregamos la referencia haciendo click derecho sobre la carpeta “Referencias” en el explorador de soluciones:
image
Y agregamos la referencia:
image
Ahora vamos a añadir las referencias de Mercury Particle Engine a nuestro juego. Para ello escribimos las siguientes lineas en el encabezado de nuestra clase “Game1.cs”
  1 using ProjectMercury;
  2 using ProjectMercury.Emitters;
  3 using ProjectMercury.Modifiers;
  4 using ProjectMercury.Renderers;

Para empezar, vamos también a añadir una textura, que será la forma que tomen las partículas de nuestro efecto. Para ello, botón derecho sobre “Content” en el explorador de soluciones y “Agregar/Elemento Existente” .

image
Vamos a añadir ahora 2 atributos a la clase Game1.cs
  1         Renderer mpeRenderer; 
  2         ParticleEffect humo; 

Estos son el rendered donde se dibujaran las particulas, y el efecto propiamente dicho.

En el método initialize añadimos las siguientes líneas para crear e inicializar los nuevos atributos:
  1         //Inizializamos el render y el efecto MPE
  2         mpeRenderer = new SpriteBatchRenderer
  3         {
  4             GraphicsDeviceService = graphics
  5         };
  6
  7         humo = new ParticleEffect();

Además definimos las propiedades del efecto. Esta vez vamos a definir el efecto a mano, mediante programación. En otros tutoriales veremos como leer la definición del efecto desde un archivo XML.

  1 humo = new ParticleEffect
  2             { 
  3                 new Emitter
  4                 {
  5                     Budget = 1000,
  6                     Term = 3f,
  7                     Name = “Ejemplo Humo”,
  8                     BlendMode = BlendMode.Alpha,
  9                     ReleaseQuantity = 3,
10                     ReleaseRotation = new VariableFloat{ Value = 0f, Variation = MathHelper.Pi},
11                     ReleaseScale = 64f,
12                     ReleaseSpeed = new VariableFloat{Value = 64f, Variation=33f},
13                     ParticleTextureAssetName = “Particle004”,
14                     Modifiers = new ModifierCollection
15                     {
16                         new OpacityModifier
17                         {
18                             Initial = 1f,
19                             Ultimate = 0f
20                         },
21                         new ColourModifier
22                         {
23                             InitialColour = Color.Tomato.ToVector3(),
24                             UltimateColour = Color.Lime.ToVector3()
25                         }
26                     }
27                 }
28             };
Donde pone “Particle004” debes poner el asset de la textura que has cargado en el paso anterior, la cual representa las partículas.
Por ultimo, inicializamos el efecto y el renderer, también en el método “Initialize:
  1 //Definimos el render MPE
  2 mpeRenderer = new SpriteBatchRenderer
  3 {
  4       GraphicsDeviceService = graphics
  5 };
  6
  7 humo.Initialise();
  8 mpeRenderer.LoadContent(Content);
  9 humo.LoadContent(Content);

En el update, vamos a dibujar el efecto en la posición del ratón cuando se haga click con el botón izquierdo:

  1  //Dibujamos las particulas en la posicion del raton, cuando el boton
  2  //izquierdo esté pulsado
  3 if (Mouse.GetState().LeftButton == ButtonState.Pressed)
  4        humo.Trigger(new Vector2(Mouse.GetState().X, Mouse.GetState().Y));
  5
  6   //Actualizamos el efecto
  7   float deltaSeconds = (float)gameTime.ElapsedGameTime.TotalSeconds;
  8   humo.Update(deltaSeconds);
 
Y por ultimo, en el método Draw dibujamos el efecto:
  1 mpeRenderer.RenderEffect(humo);
Y este es el resultado obtenido:
image
Espero que os haya ayudado a entender un poco como funciona Mercury, ya que la documentación que hay en internet es bastante escasa.
Anuncios
A %d blogueros les gusta esto: