/// <summary> /// Designar el escape si se acerca zombie /// </summary> /// <returns></returns> IEnumerator buscaZombies() { zombie = GameObject.FindGameObjectsWithTag("Zombie"); Esqueleto = GameObject.FindGameObjectsWithTag("Esqueleto"); foreach (GameObject item in zombie) { 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; } } } } foreach (GameObject item in Esqueleto) { zom2.Zombie2 componenteZombie = item.GetComponent <zom2.Zombie2>(); 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()); }
/// <summary> /// calculamos la distancia de los objetos con respecto al heroe para hacer la retroalimentacon por medio del canvas /// </summary> /// <returns></returns> IEnumerator BuscaEntidades() { zombie = GameObject.FindGameObjectsWithTag("Zombie"); zombie2 = GameObject.FindGameObjectsWithTag("Zombie2"); aldeanos = GameObject.FindGameObjectsWithTag("Villager"); // retroalimentacion para el aldeano foreach (GameObject item in aldeanos) { yield return(new WaitForEndOfFrame()); villa.Villager componenteAldeano = item.GetComponent <villa.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; datosAldeano = item.GetComponent <villa.Villager>().datosAldeano; textoAldeano.text = "Hola, soy " + datosAldeano.nombre + " y tengo " + datosAldeano.edad.ToString() + " años"; } if (time > 3) { textoAldeano.text = " "; } } } // retroalimentacion 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; datosZombie = itemZ.GetComponent <zom.Zombie>().datosZombie; textoZombie.text = "Waaaarrrr quiero comer " + datosZombie.gusto; } if (time > 3) { textoZombie.text = " "; } } } foreach (GameObject itemZ2 in zombie2) { yield return(new WaitForEndOfFrame()); zom2.Zombie2 componenteZombie = itemZ2.GetComponent <zom2.Zombie2>(); if (componenteZombie != null) { distanciaZ = Mathf.Sqrt(Mathf.Pow((itemZ2.transform.position.x - transform.position.x), 2) + Mathf.Pow((itemZ2.transform.position.y - transform.position.y), 2) + Mathf.Pow((itemZ2.transform.position.z - transform.position.z), 2)); if (distanciaZ < 5f) { time = 0; datosZombie = itemZ2.GetComponent <zom2.Zombie2>().datosZombie; textoZombie2.text = "Waaaarrrr quiero comer " + datosZombie.gusto; } if (time > 3) { textoZombie2.text = " "; } } } yield return(new WaitForSeconds(0.1f)); StartCoroutine(BuscaEntidades()); }