Ejemplo n.º 1
0
        public override void Update(GameTime gameTime, Vector2 position, SpriteEffects flip)
        {
            float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;

            if (charging && !attacking)
            {
                velocity.X  += 5.0f * ((flip == SpriteEffects.None) ? 1.0f : -1.0f);
                velocity.Y  -= 50.0f;
                MaxJumpTime += 1.0f;
            }

            if (attacking)
            {
                velocity.Y       = MathHelper.Clamp(velocity.Y + GravityAcceleration * elapsed, -MaxFallSpeed, MaxFallSpeed);
                velocity.Y       = DoJump(velocity.Y, gameTime);
                this.position.X += velocity.X * elapsed;
                this.position.Y += velocity.Y * elapsed;
                //this.position = new Vector2((float)Math.Round(this.position.X), (float)Math.Round(this.position.Y));

                HandleCollisions();

                timeToLive += elapsed;
                if (timeToLive > MAX_TIME_ALIVE)
                {
                    this.Reset();
                }
            }
            else
            {
                Vector2 offset = (flip == SpriteEffects.None) ? new Vector2(-20, -18) : new Vector2(20, -18);
                Flip          = flip;
                this.position = position + offset;
            }

            if (!canAttack)
            {
                rateOfAttackTime += elapsed;
                if (rateOfAttackTime > MAXRATEOFATTACK)
                {
                    rateOfAttackTime = 0.0f;
                    canAttack        = true;
                }
            }

            explosion.Update(gameTime);
        }