Beispiel #1
0
 public static void RunOneShotEmitter(SKEmitterNode emitter, float duration)
 {
     emitter.RunAction(SKAction.Sequence(new [] {
         SKAction.WaitForDuration(duration),
         SKAction.Run(() => {
             emitter.ParticleBirthRate = 0;
         }),
         SKAction.WaitForDuration(emitter.ParticleLifetime + emitter.ParticleLifetimeRange),
         SKAction.RemoveFromParent()
     }));
 }
Beispiel #2
0
        public static SKEmitterNode CreateExplosionNode(SKNode target, double duration)
        {
            SKEmitterNode emitter = UnarchiveEmitterNode("explosion");

            // Explosions always place their particles into the scene.
            emitter.TargetNode = target;

            // Stop spawning particles after enough have been spawned.
            emitter.NumParticlesToEmit = (nuint)(duration * emitter.ParticleBirthRate);

            // Calculate a time value that allows all the spawned particles to die. After this, the emitter node can be removed.

            double totalTime = duration + emitter.ParticleLifetime + emitter.ParticleLifetimeRange / 2;

            emitter.RunAction(SKAction.Sequence(SKAction.WaitForDuration(totalTime), SKAction.RemoveFromParent()));
            return(emitter);
        }
Beispiel #3
0
        public override void PerformDeath()
        {
            base.PerformDeath();

            var splort = (SKNode)DeathSplort.Copy();

            splort.ZPosition = -1;
            splort.ZRotation = VirtualZRotation;
            splort.Position  = Position;
            splort.Alpha     = 0.1f;
            splort.RunAction(SKAction.FadeAlphaTo(1, 0.5));

            MultiplayerLayeredCharacterScene scene = CharacterScene;

            scene.AddNode(splort, WorldLayer.BelowCharacter);

            RunAction(SKAction.Sequence(new [] {
                SKAction.FadeAlphaTo(0, 0.5f),
                SKAction.RemoveFromParent()
            }));

            smokeEmitter.RunAction(SKAction.Sequence(new [] {
                SKAction.WaitForDuration(2),
                SKAction.Run(() => {
                    smokeEmitter.ParticleBirthRate = 2;
                }),

                SKAction.WaitForDuration(2),
                SKAction.Run(() => {
                    smokeEmitter.ParticleBirthRate = 0;
                }),

                SKAction.WaitForDuration(10),
                SKAction.FadeAlphaTo(0, 0.5),
                SKAction.RemoveFromParent()
            }));

            inactiveGoblins.Clear();
        }
 public static void RunOneShotEmitter(SKEmitterNode emitter, float duration)
 {
     emitter.RunAction (SKAction.Sequence (new [] {
         SKAction.WaitForDuration (duration),
         SKAction.Run (() => {
             emitter.ParticleBirthRate = 0;
         }),
         SKAction.WaitForDuration (emitter.ParticleLifetime + emitter.ParticleLifetimeRange),
         SKAction.RemoveFromParent ()
     }));
 }