public override void Collide(isCollidable fellowCollider) { if (fellowCollider.GetType() == typeof(Morito.Bullet)) _owner.HitsTaken++; else if (fellowCollider.GetType() == typeof(Morito.Asteroid)) _owner.AsteriodsHit++; this.TakeDamage(MortalPhysicalObject.COLLISION_DAMAGE); gameplayScreen.CombatTextList.Add(new CombatText(false, COLLISION_DAMAGE, gameplayScreen.Time, this.Position, gameplayScreen, gameplayScreen.Camera1)); SoundEngine sfxE = MoritoFighterGame.MoritoFighterGameInstance.SfxE; sfxE.trackCue = sfxE.soundBank.GetCue("impact"); sfxE.trackCue.Play(); //or sfxE.soundBank.PlayCue("impact"); if you don't care about control. /* collision.Play(); float bothMass = Mass + fellowCollider.Mass; TakeDamage((fellowCollider.Mass - Mass) * (_velocity.Length() - fellowCollider.Velocity.Length()), gameTime.TotalGameTime.TotalSeconds); if (Mass == fellowCollider.Mass) _velocity = fellowCollider.Velocity; else { _velocity.X = ((fellowCollider.Mass - Mass) / bothMass * _velocity.X) + ((Mass * 2) / bothMass * fellowCollider.Velocity.X); _velocity.Y = ((fellowCollider.Mass - Mass) / bothMass * _velocity.Y) + ((Mass * 2) / bothMass * fellowCollider.Velocity.Y); } */ }
public override void Collide(isCollidable fellowCollider) { this.TakeDamage(MortalPhysicalObject.COLLISION_DAMAGE); SoundEngine sfxE = MoritoFighterGame.MoritoFighterGameInstance.SfxE; sfxE.trackCue = sfxE.soundBank.GetCue("impact"); sfxE.trackCue.Play(); //or sfxE.soundBank.PlayCue("impact"); if you don't care about control. /* collision.Play(); float bothMass = Mass + fellowCollider.Mass; TakeDamage((fellowCollider.Mass - Mass) * (_velocity.Length() - fellowCollider.Velocity.Length()), gameTime.TotalGameTime.TotalSeconds); if (Mass == fellowCollider.Mass) _velocity = fellowCollider.Velocity; else { _velocity.X = ((fellowCollider.Mass - Mass) / bothMass * _velocity.X) + ((Mass * 2) / bothMass * fellowCollider.Velocity.X); _velocity.Y = ((fellowCollider.Mass - Mass) / bothMass * _velocity.Y) + ((Mass * 2) / bothMass * fellowCollider.Velocity.Y); } */ }
public static bool haveCollided(isCollidable A, isCollidable B) { if (A is isMortal) if (((isMortal)A).IsDead()) return false; if (B is isMortal) if (((isMortal)B).IsDead()) return false; return A.BSphere.Intersects(B.BSphere); }
public bool anyCollisions(isCollidable c) { for (int n = 0; n < _collidables.Count; n++) { if (c != _collidables[n]) { if (haveCollided(c, _collidables[n])) return true; } } return false; }
public override void Collide(isCollidable fellowCollider) { this.TakeDamage(MortalPhysicalObject.COLLISION_DAMAGE); /* collision.Play(); float bothMass = Mass + fellowCollider.Mass; TakeDamage((fellowCollider.Mass - Mass) * (_velocity.Length() - fellowCollider.Velocity.Length()), gameTime.TotalGameTime.TotalSeconds); if (Mass == fellowCollider.Mass) _velocity = fellowCollider.Velocity; else { _velocity.X = ((fellowCollider.Mass - Mass) / bothMass * _velocity.X) + ((Mass * 2) / bothMass * fellowCollider.Velocity.X); _velocity.Y = ((fellowCollider.Mass - Mass) / bothMass * _velocity.Y) + ((Mass * 2) / bothMass * fellowCollider.Velocity.Y); } */ }
public abstract void Collide(isCollidable fellowCollider);
public override void Collide(isCollidable fellowCollider) { }
public override void Collide(isCollidable fellowCollider) { this.TakeDamage(MortalPhysicalObject.COLLISION_DAMAGE); }