Ejemplo n.º 1
0
    // 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());
    }
Ejemplo n.º 2
0
            IEnumerator buscadorpremium()
            {
                heroe = GameObject.FindGameObjectWithTag("Hero");
                Aldea = GameObject.FindGameObjectsWithTag("Citizen");
                foreach (GameObject person in Aldea)
                {
                    yield return(new WaitForEndOfFrame());

                    civbody.Ciudadanos referenciaciv = person.GetComponent <civbody.Ciudadanos>();
                    if (referenciaciv != null)
                    {
                        PuntoB = Mathf.Sqrt(Mathf.Pow((heroe.transform.position.x - transform.position.x), 2) + Mathf.Pow((heroe.transform.position.y - transform.position.y), 2) + Mathf.Pow((heroe.transform.position.z - transform.position.z), 2));
                        PuntoA = Mathf.Sqrt(Mathf.Pow((person.transform.position.x - transform.position.x), 2) + Mathf.Pow((person.transform.position.y - transform.position.y), 2) + Mathf.Pow((person.transform.position.z - transform.position.z), 2));
                        if (!persigue)
                        {
                            if (PuntoA < 5f)
                            {
                                Zombiestate = State.Pursuing;
                                Target      = person;
                                persigue    = true;
                            }
                            else if (PuntoB < 5f)
                            {
                                Zombiestate = State.Pursuing;
                                Target      = heroe;
                                persigue    = true;
                            }
                        }
                        if (PuntoA < 5f && PuntoB < 5f)
                        {
                            Target = person;
                        }
                    }
                }

                if (persigue)
                {
                    if (PuntoA > 5f && PuntoB > 5f)
                    {
                        persigue = false;
                    }
                }

                yield return(new WaitForSeconds(0.1f));

                StartCoroutine(buscadorpremium());
            }
Ejemplo n.º 3
0
            // Creacion de una corrutina que pone al zombie a buscar un objetivo y si esta dentro de 5 unidades del zombie lo persigue priorizando a los aldeanos
            IEnumerator buscaAldeanos()
            {
                heroe    = GameObject.FindGameObjectWithTag("Hero");
                aldeanos = GameObject.FindGameObjectsWithTag("Villager");
                foreach (GameObject item in aldeanos)
                {
                    yield return(new WaitForEndOfFrame());

                    villa.Ciudadanos componenteAldeano = item.GetComponent <villa.Ciudadanos>();
                    if (componenteAldeano != null)
                    {
                        distanciafinal  = Mathf.Sqrt(Mathf.Pow((heroe.transform.position.x - transform.position.x), 2) + Mathf.Pow((heroe.transform.position.y - transform.position.y), 2) + Mathf.Pow((heroe.transform.position.z - transform.position.z), 2));
                        distanciaincial = 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 (!followState)
                        {
                            if (distanciaincial < 5f)
                            {
                                estadodelzombie = Estado.Pursuing;
                                objetivo        = item;
                                followState     = true;
                            }
                            else if (distanciafinal < 5f)
                            {
                                estadodelzombie = Estado.Pursuing;
                                objetivo        = heroe;
                                followState     = true;
                            }
                        }
                        if (distanciaincial < 5f && distanciafinal < 5f)
                        {
                            objetivo = item;
                        }
                    }
                }
                if (followState)
                {
                    if (distanciaincial > 5f && distanciafinal > 5f)
                    {
                        followState = false;
                    }
                }
                yield return(new WaitForSeconds(0.1f));

                StartCoroutine(buscaAldeanos());
            }