SnowEmitter.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Microsoft.Xna.Framework;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Tutorial030.Sprites;
  8. namespace Tutorial030.Emitters
  9. {
  10. public class SnowEmitter : Emitter
  11. {
  12. public SnowEmitter(Particle particle)
  13. : base(particle)
  14. {
  15. }
  16. protected override void ApplyGlobalVelocity()
  17. {
  18. var xSway = (float)Game1.Random.Next(-2, 2);
  19. foreach (var particle in _particles)
  20. particle.Velocity.X = (xSway * particle.Scale) / 50;
  21. }
  22. protected override Particle GenerateParticle()
  23. {
  24. var particle = _particlePrefab.Clone() as Particle;
  25. var xPosition = Game1.Random.Next(0, Game1.ScreenWidth);
  26. var ySpeed = Game1.Random.Next(10, 100) / 100f;
  27. particle.Position = new Vector2(xPosition, -particle.Rectangle.Height);
  28. particle.Opacity = (float)Game1.Random.NextDouble();
  29. particle.Rotation = MathHelper.ToRadians(Game1.Random.Next(0, 360));
  30. particle.Scale = (float)Game1.Random.NextDouble() + Game1.Random.Next(0, 3);
  31. particle.Velocity = new Vector2(0, ySpeed);
  32. return particle;
  33. }
  34. }
  35. }