示例#1
0
        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);
                }
            }
        }
示例#2
0
        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;
                    }
                }
            }
        }