private void Explode() { if (Alive) { Vector2 explosionPoint = body.Position; world.RemoveBody(body); world.ProcessChanges(); body = null; CuttingTools.Cut(world, explosionPoint + new Vector2(2, 2), explosionPoint - new Vector2(2, 2), 0.01f); //world.ProcessChanges(); CuttingTools.Cut(world, explosionPoint + new Vector2(-2, 2), explosionPoint - new Vector2(-2, 2), 0.01f); //world.ProcessChanges(); Explosion e = new Explosion(world); e.Activate(explosionPoint, 2, 10); Alive = false; pivot = null; Vector2 screenLoc = ProjectionHelper.FarseerToPixel(explosionPoint); ParticleEffectManager.explosionEffect.Trigger(screenLoc); } }
private void OnDeath() { _deathExplosion.Activate(); GetComponentsInChildren <MeshRenderer>().Slinq() .Select(meshRenderer => meshRenderer.material) .ForEach(material => material.color = material.color * _deathColorFogging); }
public override void Keyboard(KeyboardManager keyboardManager) { if (keyboardManager.IsNewKeyPress(Keys.OemComma)) { _explosion.Activate(_mousePos, _radius, _power); } if (keyboardManager.IsKeyDown(Keys.A)) { _radius = MathHelper.Clamp(_radius - 0.1f, 0, 20); } if (keyboardManager.IsKeyDown(Keys.S)) { _radius = MathHelper.Clamp(_radius + 0.1f, 0, 20); } if (keyboardManager.IsKeyDown(Keys.D)) { _power = MathHelper.Clamp(_power - 0.1f, 0, 20); } if (keyboardManager.IsKeyDown(Keys.F)) { _power = MathHelper.Clamp(_power + 0.1f, 0, 20); } base.Keyboard(keyboardManager); }
public void Die() { Explosion explosion = worldManager.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>(); if (explosion) { explosion.Activate(); } EnemyWaveManager.Instance.aliveEnemies--; Destroy(gameObject); }
public void CheckForDie() { if (myHealth.healthCount <= 0) { WorldManager.Instance.PlayerController.guardDrones.Remove(gameObject); WorldManager.Instance.PlayerController.guardDroneCount--; Explosion explosion = WorldManager.Instance.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>(); if (explosion) { explosion.Activate(); } Destroy(gameObject); } }
public IEnumerator CheckForDie() { while (true) { if (myHealth.healthCount <= 0) { Explosion explosion = WorldManager.Instance.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>(); if (explosion) { explosion.Activate(); } WorldManager.Instance.Ship.RemoveBodyPart(gameObject, false); } yield return(new WaitForFixedUpdate()); } }
public IEnumerator CheckForDie() { while (true) { if (myHealth.healthCount <= 0) { parent.GetComponent <AttackDroneBay>().droneCount--; Explosion explosion = WorldManager.Instance.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>(); if (explosion) { explosion.Activate(); } Destroy(gameObject); } yield return(new WaitForFixedUpdate()); } }
void contactListener_BombExploded(object sender, EffectEventArgs e) { explosion = new Explosion(physicsWorld); Vector2 explosionLocation = e.spriteA.spriteBody.Position; float explosionRadius = 0f; float explosionForce = 0f; if (e.spriteA.TextureID == 48) { explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * 9f); explosionForce = GameSettings.ExplosivePower * 9f; //large tnt } if (e.spriteA.TextureID == 49) { explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * 3f); explosionForce = GameSettings.ExplosivePower * 3f; //medium tnt } if (e.spriteA.TextureID == 50 || e.spriteA.SpriteType == Sprite.Type.Veggie) { explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier); explosionForce = GameSettings.ExplosivePower; //small tnt } if (e.spriteA.TextureID == 20) { explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * e.spriteA.Scale); explosionForce = GameSettings.ExplosivePower * 0.5f * e.spriteA.Scale; //cherry } if (GameSettings.CheatFunsplosions) { explosionRadius *= 2f; explosionForce *= 2f; } explosion.Activate(explosionLocation, explosionRadius, explosionForce); contactListener.DoPoof(e.spriteA); Sprite smoke = new Sprite(13, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(126,126) ,true); smoke.AnimationFPS = 12; smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f; smoke.TintColor *= 0.33f; EffectSprites.Add(smoke); smoke = new Sprite(14, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(62, 62), true); smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12); smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f; smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f; smoke.TintColor *= 0.33f; EffectSprites.Add(smoke); smoke = new Sprite(14, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(62, 62), true); smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12); smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f; smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f; smoke.TintColor *= 0.33f; EffectSprites.Add(smoke); smoke = new Sprite(15, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(30, 30), true); smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12); smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f; smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f; smoke.TintColor *= 0.33f; EffectSprites.Add(smoke); smoke = new Sprite(15, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(30, 30), true); smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12); smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f; smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f; smoke.TintColor *= 0.33f; EffectSprites.Add(smoke); Sprite bomb = new Sprite(0, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(64, 64), true); bomb.HitPoints = 12; bomb.TotalRotation = 0.0001f; bomb.Scale = (float)e.spriteA.SpriteRectWidth / 64f; Vector2 position = ConvertUnits.ToSimUnits(bomb.SpriteCenterInWorld); float bombRadius = ConvertUnits.ToSimUnits(e.spriteA.SpriteRectWidth); if (e.spriteA.TextureID == 20) { bombRadius *= 0.5f *e.spriteA.Scale; bomb.Scale *= 0.5f *e.spriteA.Scale; } bomb.spriteBody = BodyFactory.CreateCircle(physicsWorld,bombRadius,1.0f,position, bomb); bomb.spriteBody.BodyType = BodyType.Dynamic; bomb.spriteBody.ResetDynamics(); bomb.spriteBody.IsSensor = true; bomb.spriteBody.IgnoreGravity = true; bomb.SpriteType = Sprite.Type.Explosion; EffectSprites.Add(bomb); return; }
private void OnCollision(CollisionEventArgs args) { var explosion = new Explosion(this.Engine.World); explosion.MaxShapes = 10000; explosion.Activate(this.Position, 10f, 1000f); this.Dispose(); }
public void Explode() { var exp = new Explosion((World)GameObject.Scene.Physics.GetWorld()); var worldPos = this.GameObject.WorldPosition; exp.Activate(new Xna.Vector2(worldPos.X, worldPos.Y), 10, 0.1f); }
void contactListener_DamageShot(object sender, DamageEventArgs e) { if (GameSettings.CheatInvincibility) e.damage = 0; //turns off activated ability behavior #region pathing ability behavior on damage if (e.sprite.pathing != Sprite.Pathing.None) { if (e.sprite.TextureIndex >= 42 && e.sprite.TextureIndex < 49) { #region Banana pathing off conditions and carry through ability //turn banana pathing off on these collisions if (e.damageType == Sprite.Type.Spring || e.damageType == Sprite.Type.Terrain || e.damageType == Sprite.Type.StaticBlock || e.damageType == Sprite.Type.PowerUp || e.damageType == Sprite.Type.Smasher || e.damageType == Sprite.Type.Switch) { e.sprite.pathing = Sprite.Pathing.None; if (e.sprite.spriteBody != null) e.sprite.spriteBody.IgnoreGravity = false; } else { //turn off banana if its not on its return arc //if ( (shot.PathingSpeed > 0 && shot.pathingTravelled < MathHelper.ToRadians(0)) || // (shot.PathingSpeed < 0 && shot.pathingTravelled > MathHelper.ToRadians(-180)) ) //{ // e.sprite.pathing = Sprite.Pathing.None; // if (e.sprite.spriteBody != null) e.sprite.spriteBody.IgnoreGravity = false; //} //else { //e.sprite.PathingSpeed = 90; //e.sprite.spriteBody.AngularVelocity = 30f; if (LevelDataManager.rand.Next(0,3) != 0) e.sprite.HitPoints += 1; } } #endregion } else { e.sprite.pathing = Sprite.Pathing.None; appleCopterTimer = 0; isAppleCopter = false; if (e.sprite.spriteBody != null) e.sprite.spriteBody.IgnoreGravity = false; } #region strawberry/orange force impact if (e.sprite.SpriteType == Sprite.Type.FruitShot) { if (e.sprite.TextureIndex >= 28 && e.sprite.TextureIndex < 35) //strawberry in any frame { Explosion explosion = new Explosion(physicsWorld); Vector2 explosionLocation = e.sprite.spriteBody.Position; float explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * e.sprite.Scale * 0.5f); float explosionForce = GameSettings.ExplosivePower * 0.5f * e.sprite.Scale; explosion.Activate(explosionLocation + ConvertUnits.ToSimUnits(new Vector2(32,48)), explosionRadius, explosionForce); explosion.Activate(explosionLocation + ConvertUnits.ToSimUnits(new Vector2(-32,48)), explosionRadius, explosionForce); e.sprite.spriteBody.ResetDynamics(); e.sprite.spriteBody.Rotation = 0; contactListener.DoImpactPoofs(e.sprite.Location + new Vector2(0, 32), e.sprite); e.sprite.IsHit = true; } if (e.sprite.TextureIndex >= 21 && e.sprite.TextureIndex < 28) //orange in any frame { Explosion explosion = new Explosion(physicsWorld); Vector2 explosionLocation = e.sprite.spriteBody.Position; float explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * e.sprite.Scale); float explosionForce = GameSettings.ExplosivePower * 0.5f * e.sprite.Scale; explosion.Activate(explosionLocation, explosionRadius, explosionForce); e.sprite.spriteBody.ResetDynamics(); e.sprite.spriteBody.Rotation = 0; contactListener.DoImpactPoofs(e.sprite.Location, e.sprite); e.sprite.IsHit = true; } } #endregion } #endregion if (e.damage > 0) { if (shot.SpriteType == Sprite.Type.FruitShot || shot.SpriteType == Sprite.Type.VeggieShot) Scream(e.sprite); if (shot.SpriteType == Sprite.Type.ExplosiveShot) e.sprite.IsHit = true; e.sprite.HitPoints -= e.damage; if (e.sprite.HitPoints <= 0) e.sprite.IsHit = true; } }