//ritar ut texturen med farten och en färg! public void Draw(SpriteBatch spriteBatch, Camera camera, Texture2D texture) { //spriteBatch.Draw(texture, camera.scaleParticles(position.X, position.Y), Color.White); spriteBatch.Begin(); spriteBatch.Draw(texture, camera.convertToVisualCoords(new Vector2(position.X, position.Y)), null, Color.White, 0f, Vector2.Zero, 0.1f, SpriteEffects.None, 0f);//denna skalar om mina partiklar! spriteBatch.End(); }
public void Draw(SpriteBatch spritebatch, Camera camera, Texture2D texture) { int i; for (i = 0; i < maxParticles; i++) { particles[i].Draw(spritebatch, camera, texture); } }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); camera = new Camera(graphics.GraphicsDevice.Viewport); Texture2D smokee = Content.Load<Texture2D>("particlesmokee"); Texture2D spark = Content.Load<Texture2D>("spark"); Texture2D bangExplosion = Content.Load<Texture2D>("explosion"); explosionManager = new Explosion(spriteBatch, spark, camera, smokee, bangExplosion); // TODO: use this.Content to load your game content here }
public SmokeSystem(Texture2D Texture, Vector2 startPosition, Camera Camera) { maxParticleCount = 200;//hur många partiklar ska jag ha? smoke = new Smoke[maxParticleCount];//lägger in alla i en array med partiklar elapsedTime = 0;//den gångna tiden offset = 0; maxLife = 7000; texture = Texture; r = new Random(); startPos = new Vector2 (startPosition.X, startPosition.Y); camera = Camera; }
public ExplosionManager(SpriteBatch spritebatch, Texture2D Texture, Camera Camera, Vector2 SystemStartPosition) { timeElapsed = 0; //denna ska vara 0 när programmet startas camera = Camera;//så jag kan använda kameran i klassen! spriteBatch = spritebatch; texture = Texture; systemStartPosition = SystemStartPosition; position = new Vector2(SystemStartPosition.X, SystemStartPosition.Y);//sätter start positionen Width = texture.Width / posFramesX; //delar explosionens bredd med positions framesen! Height = texture.Height / posFramesY; }
// denna kommer reseta allt private void resetParticle(Smoke particle, Camera camera, Vector2 StartPosition) { float speed = 0.3f;//farten på partiklarna Vector2 velocity = new Vector2((float)r.NextDouble() * 2f - 1f, (float)r.NextDouble() * 2f - 1f); startPosition = StartPosition; velocity.Normalize(); velocity = velocity * speed; float rotation = (float)r.NextDouble() * 2f * (float)Math.PI;//denna kommer rotera partiklarna lite float allTheRadians = 2f * (float)Math.PI;// gör så att partiklarna roterar runt mitten av spriten float rotationSpeed = ((float)r.NextDouble() * allTheRadians - allTheRadians / 2f) / 300f; particle.Reset(camera.convertToVisualCoords(new Vector2(startPos.X, startPos.Y)), velocity, rotation, rotationSpeed, (float)r.NextDouble() * 20 + 10);// kommer ge allt sina värden när man ska skapa om dom!//startPos*500 }
public Explosion(SpriteBatch spritebatch, Texture2D Particle, Camera Camera, Texture2D Smoke, Texture2D BangExplosion) { timeElapsed = 0; //denna ska vara 0 när programmet startas camera = Camera;//så jag kan använda kameran i klassen! spriteBatch = spritebatch; particle = Particle; bangExplosion = BangExplosion; smoke = Smoke; Width = particle.Width; // posFramesX; //delar explosionens bredd med positions framesen! Height = particle.Height; // posFramesY; particleSystem = new ParticleSystem(startposition); smokeSystem = new SmokeSystem(smoke, startposition, camera);//får inte denna att fungera explosionManager = new ExplosionManager(spriteBatch, BangExplosion, camera, startposition); }