Ejemplo n.º 1
0
        protected override void UpdatePosition()
        {
            //Interpolate Movement for collision
            for (float elapsedTime = 0; elapsedTime < Parameter.ProjectileMovementTotalTimeElapsed; elapsedTime += Parameter.ProjectileMovementTimeElapsedPerInteraction)
            {
                if (!hasExploded)
                {
                    UpdateMovementIteraction(Parameter.ProjectileMovementTimeElapsedPerInteraction);
                }

                if (CheckOutOfBounds(Position))
                {
                    break;
                }

                if (hasExploded || UpdateCollider(Position))
                {
                    if (!hasExploded)
                    {
                        hasExploded    = true;
                        baseCoordinate = Position;
                        baseRotation   = FlipbookList[0].Rotation;
                        SpecialEffectBuilder.TricoProjectile3Explosion(FlipbookList[0].Position);
                        FlipbookList[0].SetTransparency(0);
                    }

                    if ((explosionTimer += Parameter.ProjectileMovementTimeElapsedPerInteraction) > Parameter.ProjectileTricoSSExtraBlastTime)
                    {
                        explosionTimer = 0;

                        FlipbookList[0].Position = baseCoordinate +
                                                   Vector2.Transform(
                            Parameter.ProjectileTricoSSExplosionOffset,
                            Matrix.CreateRotationZ(
                                baseRotation + explosions * (explosions % 2 == 0 ? 1 : -1) * Parameter.ProjectileTricoSSRotationOffset * rotationExplosionOffset));

                        explosions++;
                        Explode();
                    }
                }
            }

#if Debug
            debugCrosshair.Update(FlipbookList[0].Position);
#endif
        }