// 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 void Update(float gameTime) { elapsedTime += gameTime;//sätter så at det räknas i millisekunder//(float)//.ElapsedGameTime.TotalMilliseconds if (elapsedTime > maxLife / maxParticleCount)// om tiden är större än max livet delat på max partiklar så körs denna! { if (offset < maxParticleCount)// går in i denna om nu en partikels tid är ute { smoke[offset] = new Smoke(); resetParticle(smoke[offset], camera, startPos);// kör om med samma partiklar från början offset++; elapsedTime = 0;// och startar om tiden för dessa! } } for (int i = 0; i < offset; i++) { smoke[i].Update(gameTime); if (smoke[i].age > maxLife) resetParticle(smoke[i], camera, startPos); } }