private void AddExplosionParticle(Vector2 explosionPos, float explosionSize, GameTime gameTime) { Vector2 displacement = new Vector2((float)rand.NextDouble() * explosionSize, 0); displacement = Vector2.Transform(displacement, Matrix.CreateRotationZ(MathHelper.ToRadians(rand.Next(360)))); Esplosione espl = new Esplosione(explosionPos, gameTime, displacement * 2.0f); listaBoom.Add(espl); }
public void DrawExplosione() { spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.Additive); for (int i = 0; i < listaBoom.Count; i++) { Esplosione particle = listaBoom[i]; Vector2 coordEspl = particle.Coord; coordEspl.X += nuvola.Width / 2; coordEspl.Y += nuvola.Height / 2; spriteBatch.Draw(boom, coordEspl, null, Color.White, i, new Vector2(256, 256), 0.5f, SpriteEffects.None, 1);//particle.Scaling } spriteBatch.End(); }
private void UpdateParticles(GameTime gameTime) { float now = (float)gameTime.TotalGameTime.TotalMilliseconds; for (int i = listaBoom.Count - 1; i >= 0; i--) { Esplosione particle = listaBoom[i]; // float timeAlive = now - particle.BirthTime; if (now > particle.AliveTime.TotalMilliseconds) { listaBoom.RemoveAt(i); } else { particle.Update(); listaBoom[i] = particle; } } }