Ejemplo n.º 1
0
            public static void Spawn(Vector2 position)
            {
                RecoverBlast recoverBlast = Engine.Pooler.Create <RecoverBlast>();

                recoverBlast.Position = position;
                Engine.Scene.Add(recoverBlast);
            }
Ejemplo n.º 2
0
        private IEnumerator RegenerateCoroutine()
        {
            yield return(1f);

            shaker.On = true;
            yield return(0.2f);

            sprite.Play("pulse");
            yield return(0.5f);

            sprite.Play("recover");
            RecoverBlast.Spawn(Position);
            yield return(0.15f);

            Collider = pushRadius;
            Player player = CollideFirst <Player>();

            if (player != null && !Scene.CollideCheck <Solid>(Position, player.Center))
            {
                player.ExplodeLaunch(Position, true, false);
            }

            Collider = physicsHitbox;
            Level level = SceneAs <Level>();

            level.Displacement.AddBurst(Position, 0.4f, 12f, 36f, 0.5f);
            level.Displacement.AddBurst(Position, 0.4f, 24f, 48f, 0.5f);
            level.Displacement.AddBurst(Position, 0.4f, 36f, 60f, 0.5f);
            for (var i = 0.0f; (double)i < 6.28318548202515; i += 0.1745329f)
            {
                Vector2 at = Center + Calc.AngleToVector(
                    i + Calc.Random.Range(-1f * (float)Math.PI / 90f, (float)Math.PI / 90f),
                    Calc.Random.Range(12, 18));
                level.Particles.Emit(Seeker.P_Regen, at, i);
            }

            shaker.On    = false;
            state.Locked = false;
            state.State  = 0;
        }