コード例 #1
0
        public void Update(GameTime gameTime)
        {
            elapsedTime += (float)gameTime.ElapsedGameTime.TotalMilliseconds;//sätter så at det räknas i millisekunder

            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
                {

                    particels[offset] = new Smoke();
                    resetParticle(particels[offset]);// 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++)
            {
                particels[i].Update(gameTime);

                if (particels[i].age > maxLife)
                    resetParticle(particels[i]);
            }
        }
コード例 #2
0
        // denna kommer reseta allt
        private void resetParticle(Smoke smoke)
        {
            Vector2 position = new Vector2(500, 500);//börjar på positionen
            float speed = 0.3f;//farten på partiklarna
            Vector2 velocity = new Vector2((float)r.NextDouble() * 2f - 1f, (float)r.NextDouble() * 2f - 1f);

            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;

            smoke.Reset(position, velocity, rotation, rotationSpeed, (float)r.NextDouble() * 20 + 10);// kommer ge allt sina värden när man ska skapa om dom!
        }