public override void CollisionResponse(ICollision collided) { if (collided is MarioCollision && collided.TopCollision(EntityCollision)) { Dead = true; (collided.CurrentEntity as MarioEntity).Sounds.PlaySound(EventSoundEffects.EventSounds.Stomp); } else if (collided is EnemyCollision) { if (EntityCollision.TopCollision(collided)) { SpriteVelocity = new Vector2(SpriteVelocity.X, 0); } else { SpriteVelocity = new Vector2(SpriteVelocity.X * -1, SpriteVelocity.Y); collided.CurrentEntity.SpriteVelocity = new Vector2(SpriteVelocity.X * -1, SpriteVelocity.Y); } } else if (collided is BlockCollision) { if (EntityCollision.SideCollision(collided)) { SpriteVelocity = new Vector2(SpriteVelocity.X * -1, SpriteVelocity.Y); } else if (EntityCollision.TopCollision(collided)) { SpriteVelocity = new Vector2(SpriteVelocity.X, 0); } } }
void OnTriggerStay(Collider other) { // Debug.Log(string.Format("Entity {0} touched other: {1}", this.collider.name, other.name)); BaseCollision collision = other.GetComponent <BaseCollision>(); // tell this entity that someone else touched it if (collision is EntityCollision) { EntityCollision entityCollision = (EntityCollision)collision; entity.TouchedByEntity(entityCollision.entity); } // tell this entity that some one else's weapon touched it else if (collision is WeaponCollision) { WeaponCollision weaponCollision = (WeaponCollision)collision; entity.TouchedByWeapon(weaponCollision.weapon); } else if (collision is WallCollision) { entity.TouchedByWall(other); } else if (collision is PotCollision) { PotCollision potCollision = (PotCollision)collision; entity.TouchedByPot(potCollision.pot); } }
void OnTriggerStay(Collider other) { BaseCollision collision = other.GetComponent <BaseCollision>(); if (collision is EntityCollision) { EntityCollision entityCollision = (EntityCollision)collision; pot.TouchedByEntity(entityCollision.entity); } else if (collision is WeaponCollision) { WeaponCollision weaponCollision = (WeaponCollision)collision; pot.TouchedByWeapon(weaponCollision.weapon); } else if (collision is WallCollision) { pot.TouchedByWall(); } }
void OnTriggerStay(Collider other) { // tell the this weapon's owner that another weapon touched it. BaseCollision collision = other.GetComponent <BaseCollision>(); if (collision is WeaponCollision) { WeaponCollision weaponCollision = (WeaponCollision)collision; weapon.owner.WeaponTouchedByWeapon(weaponCollision.weapon); } // tell the this weapon's owner that someone touched it. else if (collision is EntityCollision) { EntityCollision entityCollision = (EntityCollision)collision; weapon.owner.WeaponTouchedByEntity(entityCollision.entity); } else if (collision is PotCollision) { PotCollision potCollision = (PotCollision)collision; weapon.owner.WeaponTouchedByPot(potCollision.pot); } }
protected virtual void OnRaiseEntityCollision(EntityCollisionEventArgs e) { EntityCollision?.Invoke(this, e); }