void Start() { if (!cursed) { edad = (int)Random.Range(15, 101); statusdelzombie = new zomboidinfo(); Rigidbody Zom; Zom = this.gameObject.AddComponent <Rigidbody>(); Zom.constraints = RigidbodyConstraints.FreezeAll; Zom.useGravity = false; this.gameObject.name = "Demon"; } else { edad = statusdelzombie.edad; this.gameObject.name = statusdelzombie.nombre; } StartCoroutine(buscadorpremium()); dañorecibido = GameObject.FindGameObjectWithTag("Hero").GetComponent <Hero>(); followSpeed = 10 / edad; this.gameObject.tag = "Demon"; BodyParts bodyparts; bodyparts = (BodyParts)Random.Range(0, 5); Partes = bodyparts.ToString(); statusdelzombie.antojo = Partes; this.gameObject.GetComponent <Renderer>().material.color = Color.cyan; }
/// <summary> /// Se le asigna la informacio al zombie en caso de que el booleano del condicional sea falso /// se fija la edad en un rango aleatorio /// se crea una nueva instancia de la estructura que contiene los datos del zombie /// se fija otro rango aleatorio para ser usado a la hora de asignar el color del zombie /// se crea un rigidbody que sera asignado al zombie /// se le agrega el rigidbody declarado ante al zombie /// se accede a las costraits del rigidbody para frezear /// se deshabilita la gravedad del rigidbody /// se cambia el nombre del objeto /// si el booleano es verdareo simplemente se accede a la edad y al nombre /// se inicia la corutina que se encarga de buscar y seguir /// se le da una velociadad al zombie dependiendo de la edad asignada /// se cre un entero con un rango aleatorio el cual servira para asignar una parte del cuerpo al azar /// se usa la variable de tipo string declarada en la clase para convertir el item asignado del enum partes en un operador de tipo texto /// se accede una de las variables de la estructura en este caso entojo que representa el gusto del zombie para hacer que sea el item del enum que le haya tocado /// se crean los condicionales para acceder a este mismo objeto y poder cambiar su color en base al numero asignado /// </summary> void Start() { if (!cursed) { edad = (int)Random.Range(15, 101); zombiestats = new zomboidinfo(); asigna = Random.Range(0, 3); Rigidbody Zom; Zom = this.gameObject.AddComponent <Rigidbody>(); Zom.constraints = RigidbodyConstraints.FreezeAll; Zom.useGravity = false; this.gameObject.name = "Zombie"; } else { edad = zombiestats.edad; this.gameObject.name = zombiestats.nombre; } StartCoroutine(seekingvictims()); Daño = GameObject.FindGameObjectWithTag("Hero").GetComponent <Hero>(); followSpeed = 10 / edad; this.gameObject.tag = "Zombie"; BodyParts bodyparts; bodyparts = (BodyParts)Random.Range(0, 5); Partes = bodyparts.ToString(); zombiestats.antojo = Partes; this.gameObject.GetComponent <Renderer>().material.color = Color.magenta; }
/// <summary> /// se crea la corutina encargada de medir las distancias entre el heroe y los npcs para y entregar la informacion al usuario /// dentro de la corutina se pregunta primero si los objetos poseen el el tag de zombie o villager /// se define la distanciaA y la distciaB /// las cuales pertenecen a las instacias de citizen y zombie estas son llevadas a cabo cada que finaliza el frame /// luego en los dos condicionales siguientes se calcula la distancia y en base a si esta mas cerca /// o lejos se entrega un texto sin embargo en esta parte solo se de escribe el mensaje pero no se entrega /// esta corutina se ejecuta cada 0.1 segundos /// </summary> /// <returns></returns> IEnumerator BuscaEntidades() { zombies = GameObject.FindGameObjectsWithTag("Zombie"); citizens = GameObject.FindGameObjectsWithTag("Villager"); // Informacion sobre el villager foreach (GameObject item in citizens) { yield return(new WaitForEndOfFrame()); civbody.Citizen componenteAldeano = item.GetComponent <civbody.Citizen>(); if (componenteAldeano != null) { distanciaA = 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 (distanciaA < 5f) { tempus = 0; civinfo = item.GetComponent <civbody.Citizen>().citizenstats; TextVillager.text = "Hola, soy " + civinfo.nombre + " y tengo " + civinfo.edad.ToString() + " años"; } if (tempus > 3) { TextVillager.text = " "; } } } // Informacion sobre el zombie foreach (GameObject itemZ in zombies) { yield return(new WaitForEndOfFrame()); zom.Zombie componenteZombie = itemZ.GetComponent <zom.Zombie>(); if (componenteZombie != null) { distanciaB = 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 (distanciaB < 5f) { tempus = 0; zombieinfo = itemZ.GetComponent <zom.Zombie>().zombiestats; TextZombie.text = "Waaaarrrr quiero comer " + zombieinfo.antojo; } if (tempus > 3) { TextZombie.text = " "; } } } yield return(new WaitForSeconds(0.1f)); StartCoroutine(BuscaEntidades()); }