示例#1
0
            /// <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());
            }
示例#2
0
            // 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());
            }
示例#3
0
文件: Hero.cs 项目: JsebasU/Taller-4
    /// <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());
    }
示例#4
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());
    }