예제 #1
0
        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);
                    }
                    */
        }
예제 #2
0
        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);
예제 #7
0
 public override void Collide(isCollidable fellowCollider)
 {
 }
예제 #8
0
 public override void Collide(isCollidable fellowCollider)
 {
     this.TakeDamage(MortalPhysicalObject.COLLISION_DAMAGE);
 }