示例#1
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            Objeto2D particula = new Objeto2D(Content.Load <Texture2D>("penis_borra"));

            particula.x      = random.Next(Mouse.GetState().X - 5, Mouse.GetState().X + 5);
            particula.y      = random.Next(Mouse.GetState().Y - 5, Mouse.GetState().Y + 5);
            particula.ScaleX = 0.4f;
            particula.ScaleY = 0.5f;
            particula.alpha  = 0.5f;
            particula.color  = Color.Lerp(Color.Lerp(Color.Yellow, Color.Red, (float)random.NextDouble()), Color.White, 0.4f);
            listaParticulas.Add(particula);

            Objeto2D particula2 = new Objeto2D(Content.Load <Texture2D>("penis_borra"));

            particula2.x      = random.Next(400 - 5, 400 + 5);
            particula2.y      = random.Next(400 - 5, 400 + 5);
            particula2.ScaleX = 0.4f;
            particula2.ScaleY = 0.5f;
            particula2.alpha  = 0.5f;
            particula2.color  = Color.Lerp(Color.Lerp(Color.Yellow, Color.Red, (float)random.NextDouble()), Color.White, 0.4f);
            listaParticulas.Add(particula2);

            for (int i = 0; i < listaParticulas.Count; i++)
            {
                listaParticulas[i].y     -= 3;
                listaParticulas[i].alpha -= 0.01f;

                float posSoma    = 0;
                int   numSomados = 0;
                float posMedia   = 0;

                for (int o = 0; o < listaParticulas.Count; o++)
                {
                    if (distancia(new Vector2(listaParticulas[i].x, listaParticulas[i].y), new Vector2(listaParticulas[o].x, listaParticulas[o].y)) < 80)
                    {
                        posSoma += listaParticulas[o].x;
                        numSomados++;
                    }
                }

                if (numSomados > 0)
                {
                    posMedia             = posSoma / numSomados;
                    listaParticulas[i].x = MathHelper.Lerp(listaParticulas[i].x, posMedia, 0.05f);
                }

                if (listaParticulas[i].alpha < 0.01f)
                {
                    listaParticulas.Remove(listaParticulas[i]);
                }
            }

            base.Update(gameTime);
        }
        public Boolean hitTestObject(Objeto2D objeto)
        {
            this.CalcularRetangulo();
            objeto.CalcularRetangulo();

            if (this.collisionBounds.Intersects(objeto.collisionBounds))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }