public void FireProjectile() { var projectile = (SKSpriteNode)Projectile.Copy(); projectile.Position = Position; projectile.ZRotation = ZRotation; var emitter = (SKEmitterNode)ProjectileEmitter.Copy(); emitter.TargetNode = CharacterScene.GetChildNode("world"); projectile.AddChild(emitter); CharacterScene.AddNode(projectile, WorldLayer.Character); var rot = ZRotation; float x = -(float)Math.Sin(rot) * HeroProjectileSpeed * HeroProjectileLifetime; float y = (float)Math.Cos(rot) * HeroProjectileSpeed * HeroProjectileLifetime; projectile.RunAction(SKAction.MoveBy(x, y, HeroProjectileLifetime)); projectile.RunAction(SKAction.Sequence(new [] { SKAction.WaitForDuration(HeroProjectileFadeOutTime), SKAction.FadeOutWithDuration(HeroProjectileLifetime - HeroProjectileFadeOutTime), SKAction.RemoveFromParent() })); projectile.RunAction(ProjectileSoundAction); var userData = new UserData { Player = Player }; projectile.UserData = (NSMutableDictionary)userData.Dictionary; }
public override void PerformDeath() { RemoveAllActions(); SKSpriteNode splort = (SKSpriteNode)deathSplort.Copy(); splort.ZPosition = -1; splort.ZRotation = (float)(Random.NextDouble() * Math.PI); splort.Position = Position; splort.Alpha = 0.5f; CharacterScene.AddNode(splort, WorldLayer.Ground); splort.RunAction(SKAction.FadeOutWithDuration(10)); base.PerformDeath(); PhysicsBody.CollisionBitMask = 0; PhysicsBody.ContactTestBitMask = 0; PhysicsBody.CategoryBitMask = 0; PhysicsBody = null; }