public override void OnImpacto(Thing thing) { if (thing.Eliminado) { return; } if (agujeroDestino != null) { Vector2 vectorEntrada = (thing.Centro - this.Centro).Normalized(); Vector2 posicionFinal = agujeroDestino.Centro - vectorEntrada * (agujeroDestino.Tamanio.X / 2.0f * 1.1f + thing.Tamanio.Length / 2.0f); if (Galaxia.ColisionaConThing(thing, posicionFinal, thing.Tamanio * 1.5f, thing.RotacionEnGrados) == null) { Galaxia.ActualizarCentroThing(thing, posicionFinal); } } }
public override void OnImpacto(Thing thing) { if (thing.Eliminado) { return; } Random rnd = new Random((int)DateTime.Now.Ticks); if (rnd.Next(0, 2) == 1) { if (thing is ThingDaniable) { ((ThingDaniable)thing).ProcesarDanio(this, 1000.0f); } } else { while (true) { SectorID sectorIDDestino = new SectorID( rnd.Next(-Galaxia.TamanioEnSectores.Width / 2, Galaxia.TamanioEnSectores.Width / 2), rnd.Next(-Galaxia.TamanioEnSectores.Height / 2, Galaxia.TamanioEnSectores.Height / 2)); Sector sectorDestino = Galaxia.GetSector(sectorIDDestino); Vector2 posicionEnSector = new Vector2( rnd.Next(-Sector.TamanioSector / 2, -Sector.TamanioSector / 2), rnd.Next(-Sector.TamanioSector / 2, -Sector.TamanioSector / 2)); Vector2 posicionFinal = sectorDestino.Centro + posicionEnSector; if (Galaxia.ColisionaConThing(thing, posicionFinal, thing.Tamanio, thing.RotacionEnGrados) == null) { Galaxia.ActualizarCentroThing(thing, posicionFinal); break; } } } }