//Verificar Coliciones de FireCube Con Enemigos
 public void Colision_Enemigo_FC(Matus Enemigo)
 {
     Circulo Aux = new Circulo((int)Enemigo.posicion.X, (int)Enemigo.posicion.Z,(int)Radio_M);
     for (int i = 0; i < Circulos_B_FC.Count() && Enemigo.isAlive; i++)
         if (Aux.Intercepta(Circulos_B_FC.ElementAt(i)))
             Enemigo.setOnFire();
 }
 public void Actualizar_Circulos_M(int index, Vector2 Pos)
 {
     CM[index] = new Circulo((int)Pos.X,(int)Pos.Y,(int)Radio_M);
 }
 // Cargar Posiciones y Circulos de Los Enemigos
 public void Agregar_Circulos_M(Vector2[] Pos)
 {
     CM = new Circulo[Pos.Length];
     for(int i=0; i<Pos.Length ;i++)
     {
         CM[i] = new Circulo((int)Pos[i].X, (int)Pos[i].Y,(int)Radio_M);
     }
 }
 public char Dir_Enem(Personaje M1, Matus M2)
 {
     Circulo Cj1 = new Circulo((int)M1.posicion.X, (int)M1.posicion.Z, (int)Radio_M);
     Circulo Cj2 = new Circulo((int)M2.posicion.X, (int)M2.posicion.Z, (int)Radio_M);
     return Geom.indicarDireccion(Cj1.BoundingRect(), Cj2.BoundingRect());
 }
 // Por Doi¿nde Choca
 public char Donde_Choca()
 {
     Circulo Cj = new Circulo((int)Posicion_J.X, (int)Posicion_J.Y, (int)Radio_J);
     return Geom.indicarDireccion(CE[Edificion_En_Colicion], Cj.BoundingRect());
 }
 public bool Colision_Pj_En()
 {
     Circulo Cj = new Circulo((int)Posicion_J.X, (int)Posicion_J.Y, (int)Radio_J);
     bool Intercep = false;
     for (int i = 0; i < CM.Length && !Intercep; i++)
     {
         if (Cj.Intercepta(CM[i]))
         {
             Intercep = true;
             Enemigo_En_Colision = i;
         }
     }
     return Intercep;
 }
 //Enemigos entre si
 public bool Colision_Pr_Ma(Personaje PerS, Matus Ene2)
 {
     Circulo Cm1 = new Circulo((int)PerS.posicion.X, (int)PerS.posicion.Z, (int)Radio_M);
     Circulo Cm2 = new Circulo((int)Ene2.posicion.X, (int)Ene2.posicion.Z, (int)Radio_M);
     return Cm1.Intercepta(Cm2);
 }
 public bool Colision_Ma_Ed(Matus Enemigo)
 {
     Circulo Cm = new Circulo((int)Enemigo.posicion.X, (int)Enemigo.posicion.Z, (int)Radio_M);
     bool Intercep = false;
     for (int i = 0; i < CE.Length && !Intercep; i++)
     {
         if (Cm.Intercepta(CE[i]))
         {
             Intercep = true;
             Edificion_En_Colicion = i;
         }
     }
     return Intercep;
 }
 //Verificar Colisiones de Proyectil con Enemigo
 public void Colision_Enemigo_PY(Matus Enemigo, Disparo Proyectil)
 {
     Circulo Aux = new Circulo((int)Enemigo.posicion.X, (int)Enemigo.posicion.Z, (int)Radio_M);
     Circulo Aux2 = new Circulo((int)Proyectil.Posicion.X, (int)Proyectil.Posicion.Z, (int)Radio_B_FC);
     if (Enemigo.isAlive && Aux.Intercepta(Aux2))
         if (Proyectil.Tipo)//IceCube
         {
             Enemigo.setFrozen();
             Proyectil.ready = true;
         }
         else
         {
             Enemigo.setOnFire();
             Proyectil.ready = true;
         }
 }
Exemple #10
0
 //Paso 9: Contencion (Circulos)
 /// <summary>
 /// Determina cuando este Circulo contiene completamente a otro.
 /// </summary>
 /// <param name="circuloB">El Circulo que debe estar contenido.</param>
 /// <returns>Un bool indicando si este Circulo contiene al CirculoB o no</returns>
 public bool Contiene(Circulo circuloB)
 {
     return Distancia(circuloB) + circuloB.Radio <= Radio;
 }
Exemple #11
0
 //Paso 4.2: Interceptar Circulos.
 /// <summary>
 /// Determina cuando este Circulo Intersepta o Contiene a otro.
 /// </summary>
 /// <param name="circuloB">El otro circulo a comparar</param>
 /// <returns>Un bool indicando si hay Intereseccion o no</returns>
 public bool Intercepta(Circulo circuloB)
 {
     return Distancia(circuloB) <= Radio + circuloB.Radio;
 }
Exemple #12
0
        //Paso 4: Interceptar Circulos (Distancia entre Centros).
        /// <summary>
        /// Determina la distancia entre este el centro de este circulo y otro.
        /// </summary>
        /// <param name="circuloB">El otro circulo a comparar.</param>
        /// <returns>Un int que indica aproximadamente la distancia</returns>
        public int Distancia(Circulo circuloB)
        {
            int difX = circuloB.X - X;
            int difY = circuloB.Y - Y;

            int distC = difX * difX + difY * difY;

            return (int)Math.Sqrt(distC);
        }