/// <summary> ///busqueda de los zombies cercanos /// </summary> /// <returns></returns> IEnumerator BuscaZombies() { zombies = GameObject.FindGameObjectsWithTag("Zombie"); foreach (GameObject item in zombies) { zom.Zombie componenteZombie = item.GetComponent <zom.Zombie>(); if (componenteZombie != null) { distancia = Mathf.Sqrt(Mathf.Pow((item.transform.position.x - transform.position.x), 2) + Mathf.Pow((item.transform.position.y - transform.position.y), 2) + Mathf.Pow((item.transform.position.z - transform.position.z), 2)); if (!runningState) { if (distancia < 5f) { aldeanoEstado = Estado.Running; Target = item; runningState = true; } } } } if (runningState) { if (distancia > 5f) { runningState = false; } } yield return(new WaitForSeconds(0.1f)); StartCoroutine(BuscaZombies()); }
// Corrotina que hace correr a los aldeanos al estar en monos de 5 unidades de un zombie y lo hace en sentido contrario al zombie IEnumerator buscaZombies() { villagers = GameObject.FindGameObjectsWithTag("Zombie"); foreach (GameObject item in villagers) { zom.Zombie componenteZombie = item.GetComponent <zom.Zombie>(); if (componenteZombie != null) { distancia = Mathf.Sqrt(Mathf.Pow((item.transform.position.x - transform.position.x), 2) + Mathf.Pow((item.transform.position.y - transform.position.y), 2) + Mathf.Pow((item.transform.position.z - transform.position.z), 2)); if (!velocidadEstado) { if (distancia < 5f) { estadoVillager = Estado.Running; Target = item; velocidadEstado = true; } } } } // si el ciudadano esta a mas de 5 unidades del zombie vuelve otra vez a estos aleatorios if (velocidadEstado) { if (distancia > 5f) { velocidadEstado = false; } } yield return(new WaitForSeconds(0.1f)); StartCoroutine(buscaZombies()); }
/// <summary> /// la distancia para el activamiento del hub /// </summary> /// <returns></returns> IEnumerator BuscaEntidades() { zombie = GameObject.FindGameObjectsWithTag("Zombie"); aldeanos = GameObject.FindGameObjectsWithTag("Villager"); // Hub para el aldeano foreach (GameObject item in aldeanos) { yield return(new WaitForEndOfFrame()); ald.Villager componenteAldeano = item.GetComponent <ald.Villager>(); if (componenteAldeano != null) { distancia = Mathf.Sqrt(Mathf.Pow((item.transform.position.x - transform.position.x), 2) + Mathf.Pow((item.transform.position.y - transform.position.y), 2) + Mathf.Pow((item.transform.position.z - transform.position.z), 2)); if (distancia < 5f) { time = 0; infoAlde = item.GetComponent <ald.Villager>().infoAlde; textoAldeano.text = "Hola, soy " + infoAlde.name + " y tengo " + infoAlde.edad.ToString() + " años"; } if (time > 3) { textoAldeano.text = " "; } } } // Hub para el zombie foreach (GameObject itemZ in zombie) { yield return(new WaitForEndOfFrame()); zom.Zombie componenteZombie = itemZ.GetComponent <zom.Zombie>(); if (componenteZombie != null) { distanciaZ = Mathf.Sqrt(Mathf.Pow((itemZ.transform.position.x - transform.position.x), 2) + Mathf.Pow((itemZ.transform.position.y - transform.position.y), 2) + Mathf.Pow((itemZ.transform.position.z - transform.position.z), 2)); if (distanciaZ < 5f) { time = 0; infoZombie = itemZ.GetComponent <zom.Zombie>().infoZombie; textoZombie.text = "Waaaarrrr quiero comer " + infoZombie.gusto; } if (time > 3) { textoZombie.text = " "; } } } yield return(new WaitForSeconds(0.1f)); StartCoroutine(BuscaEntidades()); }
// Visualizacion sobre el recorrido que toma los zombie y los aldeanos IEnumerator Sateliteorbital() { zombie = GameObject.FindGameObjectsWithTag("Zombie"); aldeanos = GameObject.FindGameObjectsWithTag("Villager"); // Informacion necesario sobre el aldeano foreach (GameObject item in aldeanos) { yield return(new WaitForEndOfFrame()); villa.Ciudadanos componenteAldeano = item.GetComponent <villa.Ciudadanos>(); if (componenteAldeano != null) { distanciaInical = Mathf.Sqrt(Mathf.Pow((item.transform.position.x - transform.position.x), 2) + Mathf.Pow((item.transform.position.y - transform.position.y), 2) + Mathf.Pow((item.transform.position.z - transform.position.z), 2)); if (distanciaInical < 5f) { tiempo = 0; informacionAldeano = item.GetComponent <villa.Ciudadanos>().informacionAldeano; TextodelVillager.text = "Hola soy un " + informacionAldeano.nombre + " y he cumpido " + informacionAldeano.edad.ToString() + " años"; } if (tiempo > 3) { TextodelVillager.text = " "; } } } //Datos necesarios sobre el Zombie. foreach (GameObject itemZ in zombie) { yield return(new WaitForEndOfFrame()); zom.Zombie componenteZombie = itemZ.GetComponent <zom.Zombie>(); if (componenteZombie != null) { distanciaFinal = Mathf.Sqrt(Mathf.Pow((itemZ.transform.position.x - transform.position.x), 2) + Mathf.Pow((itemZ.transform.position.y - transform.position.y), 2) + Mathf.Pow((itemZ.transform.position.z - transform.position.z), 2)); if (distanciaFinal < 5f) { tiempo = 0; informacionZombie = itemZ.GetComponent <zom.Zombie>().informacionZombie; TextodelZombie.text = "Grrrrrrrrrrrr Comida, comidaaaaa Grrr " + informacionZombie.gusto; } if (tiempo > 3) { TextodelZombie.text = " "; } } } yield return(new WaitForSeconds(0.1f)); StartCoroutine(Sateliteorbital()); }