Neugier Battles - Wintergarnele Studios

Programación Orientada a Objetos (Tower defense - kingdom rush)

Moderator: julianmartinez16

User avatar
Gamba04
Posts: 17
Joined: Tue Jan 22, 2019 12:14 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by Gamba04 » Fri Mar 15, 2019 2:16 am

Parte 2

Torreta0.cs

Code: Select all

public class Torreta0 : MonoBehaviour {


    public float ritmodinero;
    public int cantidad;
    public ControlGeneral cg;


	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
        StartCoroutine(Dinero());
    }
    void OnEnable()
    {
        StartCoroutine(Dinero());
    }
    void Update () {
        if(transform.localPosition.y > 1) GetComponent<SpriteRenderer>().sortingOrder = 7;
        else GetComponent<SpriteRenderer>().sortingOrder = 2;
    }

    IEnumerator Dinero()
    { 
        for (int i = 0; i < ritmodinero * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        cg.dinero += cantidad;
        StartCoroutine(Dinero());
    }  
}
Torreta1.cs

Code: Select all

public class Torreta1 : MonoBehaviour {

    public float rango;
    public float ritmoataque;
    public int daño;

    public float dist;
    int mascercano;
    public Tropa enemigo;
    public bool atacando;
    GameObject proyectil;
    public GameObject bala;
    public GameObject cañoncito;

    Vector3 offsetProyectil;
    string tag_tropasEnemigas;


	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            tag_tropasEnemigas = "TropasB";
            offsetProyectil = cañoncito.transform.right * -0.5f + cañoncito.transform.up * 0.15f;
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            tag_tropasEnemigas = "TropasA";
            offsetProyectil = cañoncito.transform.right * 0.5f + cañoncito.transform.up * 0.15f;
        }
    }
    void OnEnable()
    {
        StartCoroutine(Disparo());
        StartCoroutine(EncontrarEnemigo());
    }
    void Update() {

        //atacando
        if (enemigo != null)
        {
            if ((enemigo.transform.position - transform.position).magnitude <= rango)
            {
                atacando = true;
            }
            else
            {
                atacando = false;
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) > Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.x - transform.position.x > 0)
                {
                    GetComponent<Animator>().SetBool("Derecha", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward,Vector3.Cross(Vector3.forward, (enemigo.transform.position - transform.position)));
                    offsetProyectil = cañoncito.transform.right * 0.5f + cañoncito.transform.up * 0.15f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Izquierda", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if(atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward,Vector3.Cross((enemigo.transform.position - transform.position), Vector3.forward));
                    offsetProyectil = cañoncito.transform.right * -0.5f + cañoncito.transform.up * 0.15f;
                }
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) < Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.y - transform.position.y > 0)
                {
                    GetComponent<Animator>().SetBool("Arriba", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, (enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * 0.5f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Abajo", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, -(enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * -0.5f;
                }
            }
        }
        else
        {
            atacando = false;
        }
        if (transform.localPosition.y > 1)
        {
            GetComponent<SpriteRenderer>().sortingOrder = 7;
            GetComponentInParent<TurretSlot>().torretaLista = false;
        }
        else
        {
            GetComponent<SpriteRenderer>().sortingOrder = 2;
            GetComponentInParent<TurretSlot>().torretaLista = true;
        }
    }

    IEnumerator Disparo()
    {

        if (enemigo != null && atacando)
        {
            GetComponent<Animator>().SetBool("Ataque", true);
            StartCoroutine(HacerDañoADistancia(enemigo));
            proyectil = Instantiate(bala, transform.position + offsetProyectil, transform.rotation);
            proyectil.GetComponent<Proyectil>().destino = enemigo.transform.position;
        }
        else
        {
            GetComponent<Animator>().SetBool("Ataque", false);
        }
        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        StartCoroutine(Disparo());
    }
    IEnumerator HacerDañoADistancia(Tropa enem)
    {
        yield return new WaitForSeconds((enem.transform.position - transform.position).magnitude / bala.GetComponent<Proyectil>().speed - 0.5f);
        if (enem != null)
        {
            enem.vida -= daño;
            enem.GetComponent<Animator>().SetTrigger("Daño");
        }
    }
    IEnumerator EncontrarEnemigo()
    {
        //enemigo mas cercano
        dist = Mathf.Infinity;
        mascercano = 0;
        if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length > 0)
        {
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < dist)
                {
                    dist = (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude;
                    mascercano = i;
                }

            }
            enemigo = GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[mascercano].GetComponent<Tropa>();
        }
        yield return new WaitForSeconds(0.5f);
        StartCoroutine(EncontrarEnemigo());
    }
    
}
Torreta2.cs

Code: Select all

public class Torreta2 : MonoBehaviour {

    public float rango;
    public float ritmoataque;
    public int daño;

    public float dist;
    int mascercano;
    public Tropa enemigo;
    public bool atacando;
    GameObject proyectil;
    public GameObject bala;
    public GameObject cañoncito;


    Vector3 offsetProyectil;
    string tag_tropasEnemigas;
    public int cantidadenemigos;


	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            tag_tropasEnemigas = "TropasB";
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            tag_tropasEnemigas = "TropasA";
        }
        offsetProyectil = Vector3.up;
    }
    void OnEnable()
    {
        StartCoroutine(Disparo());
        StartCoroutine(EncontrarEnemigo());
    }
    void Update () {
        
        
        //atacando
        if (enemigo != null)
        {
            if ((enemigo.transform.position - transform.position).magnitude <= rango)
            {
                atacando = true;
            }
            else
            {
                atacando = false;
            }
            /*if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) > Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.x - transform.position.x > 0)
                {
                    GetComponent<Animator>().SetBool("Derecha", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.Cross(Vector3.forward, (enemigo.transform.position - transform.position)));
                    offsetProyectil = cañoncito.transform.right * 0.5f + cañoncito.transform.up * 0.15f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Izquierda", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.Cross((enemigo.transform.position - transform.position), Vector3.forward));
                    offsetProyectil = cañoncito.transform.right * -0.5f + cañoncito.transform.up * 0.15f;
                }
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) < Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.y - transform.position.y > 0)
                {
                    GetComponent<Animator>().SetBool("Arriba", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, (enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * 0.5f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Abajo", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, -(enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * -0.5f;
                }
            }*/
        }
        else
        {
            atacando = false;
        }
        if (transform.localPosition.y > 1)
        {
            GetComponent<SpriteRenderer>().sortingOrder = 7;
            GetComponentInParent<TurretSlot>().torretaLista = false;
        }
        else
        {
            GetComponent<SpriteRenderer>().sortingOrder = 2;
            GetComponentInParent<TurretSlot>().torretaLista = true;
        }
    }

    IEnumerator Disparo()
    {

        if (enemigo != null && atacando)
        {
            GetComponent<Animator>().SetTrigger("Disparo");
            yield return new WaitForSeconds(1);
            StartCoroutine(HacerDañoADistancia(enemigo, cantidadenemigos, 1, enemigo.transform.position));
            proyectil = Instantiate(bala, transform.position + offsetProyectil, transform.rotation);
            proyectil.GetComponent<Proyectil>().destino = enemigo.transform.position;
        }

        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        StartCoroutine(Disparo());
    }
    IEnumerator HacerDañoADistancia(Tropa enem, int cantidadenem, float radio, Vector3 posicionenem)
    {
        int cont = 0;
        yield return new WaitForSeconds((enem.transform.position - transform.position).magnitude / bala.GetComponent<Proyectil>().speed - 0.5f);
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i] != null)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - posicionenem).magnitude < radio && cont <= cantidadenem)
                {
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Tropa>().vida -= daño;
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Animator>().SetTrigger("Daño");
                    cont++;
                }
            }
        }
    }
    IEnumerator EncontrarEnemigo()
    {
        //enemigo mas cercano
        dist = Mathf.Infinity;
        mascercano = 0;
        if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length > 0)
        {
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < dist)
                {
                    dist = (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude;
                    mascercano = i;
                }

            }
            enemigo = GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[mascercano].GetComponent<Tropa>();
        }
        yield return new WaitForSeconds(0.5f);
        StartCoroutine(EncontrarEnemigo());
    }

}
Torreta3.cs

Code: Select all

public class Torreta3 : MonoBehaviour {

    public float rango;
    public float ritmoataque;
    public int daño;

    public float dist;
    int mascercano;
    public Tropa enemigo;
    public bool atacando;
    public GameObject cañoncito;


    string tag_tropasEnemigas;


	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            tag_tropasEnemigas = "TropasB";
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            tag_tropasEnemigas = "TropasA";
        }
    }
    void OnEnable()
    {
        StartCoroutine(Disparo());
        StartCoroutine(EncontrarEnemigo());
    }
    void Update () {
        
        
        //atacando
        if (enemigo != null)
        {
            if ((enemigo.transform.position - transform.position).magnitude <= rango)
            {
                atacando = true;
            }
            else
            {
                atacando = false;
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) > Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.x - transform.position.x > 0)
                {
                    GetComponent<Animator>().SetBool("Derecha", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.Cross(Vector3.forward, (enemigo.transform.position - transform.position)));
                }
                else
                {
                    GetComponent<Animator>().SetBool("Izquierda", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.Cross((enemigo.transform.position - transform.position), Vector3.forward));
                }
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) < Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.y - transform.position.y > 0)
                {
                    GetComponent<Animator>().SetBool("Arriba", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, (enemigo.transform.position - transform.position));
                }
                else
                {
                    GetComponent<Animator>().SetBool("Abajo", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, -(enemigo.transform.position - transform.position));
                }
            }
        }
        else
        {
            atacando = false;
        }
        if (transform.localPosition.y > 1)
        {
            GetComponent<SpriteRenderer>().sortingOrder = 7;
            GetComponentInParent<TurretSlot>().torretaLista = false;
        }
        else
        {
            GetComponent<SpriteRenderer>().sortingOrder = 2;
            GetComponentInParent<TurretSlot>().torretaLista = true;
        }

       
    }

    IEnumerator Disparo()
    {
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i] != null)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < rango)
                {
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Tropa>().vida -= daño;
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Animator>().SetTrigger("Daño");
                }
            }
        }
        if (enemigo != null && atacando)
        {
            GetComponent<Animator>().SetBool("Ataque", true);

        }
        else
        {
            GetComponent<Animator>().SetBool("Ataque", false);
        }
        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        StartCoroutine(Disparo());
    }
    IEnumerator EncontrarEnemigo()
    {
        //enemigo mas cercano
        dist = Mathf.Infinity;
        mascercano = 0;
        if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length > 0)
        {
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < dist)
                {
                    dist = (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude;
                    mascercano = i;
                }

            }
            enemigo = GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[mascercano].GetComponent<Tropa>();
        }
        yield return new WaitForSeconds(0.5f);
        StartCoroutine(EncontrarEnemigo());
    }

}
Translacion.cs

Code: Select all

public class Translacion : MonoBehaviour {


    public GameObject[] nodos;
    public float ubicacionfrontal;
    public float ubicaciontrasera;
    public float separacion;
    public Vector3 frente;
    public Vector3 atras;

    public int nodoactivo;
    public float magnitudactual;
    public float diferenciaubicaciones;

    public bool[] arraytropas;
    public bool lleno;
    public int cantidadtropas;

    public int numerofila;
    public int dir;
    public ControlGeneral cg;
    public bool debugnumerofila;

    float offsettiempo;
    public bool enfrentamiento;

    public bool estacionado;

    void Start () {
        offsettiempo = Time.time;
        diferenciaubicaciones = 5;
        ubicacionfrontal = 0;
        arraytropas = new bool[10];
        numerofila = 0;

    }//Reemplazar ControlGeneral y array de Translacion

    void Update() {
        //información de ControlGeneral
        nodos = cg.nodos;
        nodoactivo = cg.nodoactivo;
        
        //float ubicación --> posición real
        for (int i = 0; i < nodos.Length - 1; i++)
        {

            if (ubicacionfrontal >= i * 100f / (nodos.Length - 1) && ubicacionfrontal <= (i + 1) * 100f / (nodos.Length - 1))
            {
                frente = nodos[i].transform.position + (nodos[i + 1].transform.position - nodos[i].transform.position) * ((ubicacionfrontal - i * 100f / (nodos.Length - 1)) / (100f / (nodos.Length - 1)));
                magnitudactual = (nodos[i + 1].transform.position - nodos[i].transform.position).magnitude;
            }

            if (ubicaciontrasera >= i * 100f / (nodos.Length - 1) && ubicaciontrasera <= (i + 1) * 100f / (nodos.Length - 1))
            {
                atras = nodos[i].transform.position + (nodos[i + 1].transform.position - nodos[i].transform.position) * ((ubicaciontrasera - i * 100f / (nodos.Length - 1)) / (100f / (nodos.Length - 1)));

            }

        }

        //voy a hacerme las pastas, anda viendo el codigo <<<<<

        //movimiento hacia nodoactivo
        if (ubicacionfrontal + numerofila * 1.5f < nodoactivo * 100 / (nodos.Length - 1) + 2.5f && !enfrentamiento)
        {
            ubicacionfrontal += 0.05f * separacion / magnitudactual;
            dir = 1;
        }
        if (ubicacionfrontal + numerofila * 1.5f > nodoactivo * 100 / (nodos.Length - 1) + 2.5f)
        {
            ubicacionfrontal -= 0.05f * separacion / magnitudactual;
            dir = -1;
        }

        if (Mathf.Abs((ubicacionfrontal + numerofila * 1.5f) - (nodoactivo * 100 / (nodos.Length - 1) + 2.5f)) < 1) estacionado = true;
        else estacionado = false;

        //limites de ubicacion frontal
            if (ubicacionfrontal < 0) ubicacionfrontal = 0;
        if (ubicacionfrontal > 100) ubicacionfrontal = 100;

        //separacion ubicaciones
        diferenciaubicaciones += (5 / magnitudactual - diferenciaubicaciones) * 0.01f;
        ubicaciontrasera = ubicacionfrontal - diferenciaubicaciones;

        //limite ubicacion trasera
        if (ubicaciontrasera < 0) ubicaciontrasera = 0;

        //posicion grupo
        transform.position = atras + (frente - atras) * 0.5f;


        Debug.DrawRay(atras, frente - atras, Color.white);

        //bool lleno
        lleno = true;
        cantidadtropas = 0;
        foreach (bool b in arraytropas) if (!b) lleno = false; else cantidadtropas++;
        //debug enfrentamiento grupo vacio  
        if (cantidadtropas == 0) enfrentamiento = false;

        //fusion grupos
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(gameObject.tag).Length; i++)
        {
            if (this == GameObject.FindGameObjectsWithTag(gameObject.tag)[i].GetComponent<Translacion>())
            {
                for (int o = 0; o < GameObject.FindGameObjectsWithTag(gameObject.tag).Length; o++)
                {
                    if (Mathf.Abs(this.ubicacionfrontal - GameObject.FindGameObjectsWithTag(gameObject.tag)[o].GetComponent<Translacion>().ubicacionfrontal) < 2 && i > o && Time.time - offsettiempo > 1)
                    {
                        if (cantidadtropas + GameObject.FindGameObjectsWithTag(gameObject.tag)[o].GetComponent<Translacion>().cantidadtropas <= 5)
                        {
                            Destroy(GameObject.FindGameObjectsWithTag(gameObject.tag)[i].gameObject);
                        }
                        else
                        {
                            numerofila = GameObject.FindGameObjectsWithTag(gameObject.tag)[o].GetComponent<Translacion>().numerofila + 1;
                        }
                    }

                }
            }
            

        }
        //Debug numero fila
        debugnumerofila = false;
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(gameObject.tag).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(gameObject.tag)[i].GetComponent<Translacion>().numerofila == numerofila - 1) debugnumerofila = true;
        }
            if (!debugnumerofila && numerofila > 0) numerofila--;
    
    }

    
}
Tropa.cs

Code: Select all

public class Tropa : MonoBehaviour {

    public int vida;
    public float rango;
    public float ritmoataque;
    public int dañoataque;
    public float tamaño;
    public bool ataqueadistancia;
    public float valortropa;

    public GameObject flecha;
    public float dist;
    public int mascercano;
    public GameObject grupo;
    public bool entro;
    public int dir;
    public Tropa enemigotropa;
    public Constructor enemigoconstructor;
    public TurretSlot enemigotorreta;

    string tag_Grupo;
    string tag_TropaEnemiga;
    string tag_ConstructorEnemigo;
    string tag_TorretaEnemiga;

    public bool atacando;
    public GameObject signoexclamacion;
    bool exclamacion;
    int frente;
    GameObject proyectil;
    public string tipoenemigo;
    public bool prioridadtropas;
    public Vector3 areabase;
    public GameObject silueta;
    float r;
    float g;
    float b;
    public GameObject triggermeta;
    public ControlGeneral controlenemigo;


    void Start () {
        r = GetComponent<SpriteRenderer>().color.r;
        g = GetComponent<SpriteRenderer>().color.g;
        b = GetComponent<SpriteRenderer>().color.b;
        if (gameObject.CompareTag("TropasA"))
        {
            tag_Grupo = "GrupoA";
            tag_TropaEnemiga = "TropasB";
            tag_ConstructorEnemigo = "ConstructorB";
            tag_TorretaEnemiga = "Turret SlotB";
            frente = 1;
            triggermeta = GameObject.Find("Trigger B");
            controlenemigo = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
        if (gameObject.CompareTag("TropasB"))
        {
            tag_Grupo = "GrupoB";
            tag_TropaEnemiga = "TropasA";
            tag_ConstructorEnemigo = "ConstructorA";
            tag_TorretaEnemiga = "Turret SlotA";
            frente = -1;
            triggermeta = GameObject.Find("Trigger A");
            controlenemigo = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        dir = 1;
        //adoptamiento de grupo
        dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[0].transform.position).magnitude);
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_Grupo).Length; i++)
        {
            if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude) < dist)
            {
                dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude);
                mascercano = i;
            }
        }
        grupo = GameObject.FindGameObjectsWithTag(tag_Grupo)[mascercano];

            //Anotarse a la fila
        if (!grupo.GetComponent<Translacion>().lleno)
        {
            for (int i = 0; i < grupo.GetComponent<Translacion>().arraytropas.Length; i++)
            {
                if (!grupo.GetComponent<Translacion>().arraytropas[i])
                {
                    grupo.GetComponent<Translacion>().arraytropas[i] = true;
                    entro = true;
                    break;
                }

            }

        }
        
        StartCoroutine(Ataque());
    }
	
	void Update () {
        //silueta base
        if ((areabase - transform.position).magnitude < 2.5f - frente * 0.5f)
        {
            silueta.SetActive(true);
        }
        else
        {
            silueta.SetActive(false);
        }
        //readopatmiento de grupo
        if (grupo == null || (grupo.GetComponent<Translacion>().lleno && !entro))
        {
            entro = false;
            mascercano = 0;
            //dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[0].transform.position).magnitude);
            dist = Mathf.Infinity;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_Grupo).Length; i++)
            {
                if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude) < dist && !GameObject.FindGameObjectsWithTag(tag_Grupo)[i].GetComponent<Translacion>().lleno)
                {
                    dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude);
                    mascercano = i;
                }
            }
            grupo = GameObject.FindGameObjectsWithTag(tag_Grupo)[mascercano].gameObject;
            //Anotarse a la fila
            if (!grupo.GetComponent<Translacion>().lleno)
            {
                for (int i = 0; i < grupo.GetComponent<Translacion>().arraytropas.Length; i++)
                {
                    if (!grupo.GetComponent<Translacion>().arraytropas[i])
                    {
                        grupo.GetComponent<Translacion>().arraytropas[i] = true;
                        entro = true;
                        break;
                    }

                }

            }
        }
        //atracción al grupo
        GetComponent<Rigidbody2D>().AddForce((grupo.transform.position - transform.position) * 20 * Random.Range(0, 20));
        //teleport al grupo
        if ((grupo.transform.position - transform.position).magnitude > 3) transform.position = grupo.transform.position;

        if (grupo.GetComponent<Translacion>().frente.x > grupo.GetComponent<Translacion>().atras.x) dir = 1 * grupo.GetComponent<Translacion>().dir;
        if (grupo.GetComponent<Translacion>().frente.x < grupo.GetComponent<Translacion>().atras.x) dir = -1 * grupo.GetComponent<Translacion>().dir;

        transform.localScale = new Vector3(-dir, 1, 1) * tamaño;

        dist = Mathf.Infinity;
        prioridadtropas = false;
        //enemigo mas cercano
        if (GameObject.FindGameObjectsWithTag(tag_TropaEnemiga).Length > 0)
        {
            mascercano = 0;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_TropaEnemiga).Length; i++)
            {
                if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TropaEnemiga)[i].transform.position).magnitude) < dist)
                {
                    dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TropaEnemiga)[i].transform.position).magnitude);
                    mascercano = i;
                    tipoenemigo = "Tropa";
                }
            }
                enemigotropa = GameObject.FindGameObjectsWithTag(tag_TropaEnemiga)[mascercano].GetComponent<Tropa>();
            if(enemigotropa != null) if ((transform.position - enemigotropa.transform.position).magnitude <= rango) prioridadtropas = true;
        }
            //constructor mas cercano
        if (GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo).Length > 0 )
        {
            mascercano = 0;
            
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo).Length; i++)
                {
                    if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo)[i].transform.position).magnitude) < dist && !prioridadtropas)
                    {
                        dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo)[i].transform.position).magnitude);
                        mascercano = i;
                        tipoenemigo = "Constructor";
                    }
                }
            enemigoconstructor = GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo)[mascercano].GetComponent<Constructor>();
        }
            // torreta mas cercana
        if (GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga).Length > 0)
        {
            mascercano = 0;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga).Length; i++)
                {
                    if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[i].transform.position).magnitude) < dist && !GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[i].GetComponent<TurretSlot>().disponible && !prioridadtropas)
                    {
                        dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[i].transform.position).magnitude);
                        mascercano = i;
                        tipoenemigo = "Torreta";
                    }
                }
                enemigotorreta = GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[mascercano].GetComponent<TurretSlot>();
        }

        //muerte
        if (vida <= 0)
        {
            //Desanotarse de la fila
            for (int i = grupo.GetComponent<Translacion>().arraytropas.Length - 1; i >= 0; i--)
            {
                if (grupo.GetComponent<Translacion>().arraytropas[i])
                {
                    grupo.GetComponent<Translacion>().arraytropas[i] = false;
                    break;
                }

            }
            Destroy(gameObject);
        }
        //atacando
        if (tipoenemigo == "Tropa")
        {
            if (enemigotropa != null)
            {
                if ((transform.position - enemigotropa.transform.position).magnitude <= rango)
                {
                    atacando = true;
                    grupo.GetComponent<Translacion>().enfrentamiento = true;
                    if (!exclamacion)
                    {
                        exclamacion = true;
                        Instantiate(signoexclamacion, transform.position + new Vector3(0.5f * frente, 0.5f, 0), transform.rotation);
                    }

                }
                else
                {
                    atacando = false;
                    exclamacion = false;
                }
            }
            else
            {
                atacando = false;
            }
        }
        if (tipoenemigo == "Constructor")
        {
            if (enemigoconstructor != null)
            {
                if ((transform.position - enemigoconstructor.transform.position).magnitude <= rango && !enemigoconstructor.protegido)
                {
                    atacando = true;
                    grupo.GetComponent<Translacion>().enfrentamiento = true;
                    if (!exclamacion)
                    {
                        exclamacion = true;
                        Instantiate(signoexclamacion, transform.position + new Vector3(0.5f * frente, 0.5f, 0), transform.rotation);
                    }
                }
                else
                {
                    atacando = false;
                    exclamacion = false;
                }
            }
            else
            {
                atacando = false;
            }
        }
        if (tipoenemigo == "Torreta" )
        {
            if (!enemigotorreta.disponible)
            {
                if (((ataqueadistancia && (transform.position - enemigotorreta.transform.position).magnitude <= rango) || (!ataqueadistancia && (transform.position - enemigotorreta.transform.position).magnitude <= rango * 2)) && grupo.GetComponent<Translacion>().estacionado)
                {
                    atacando = true;
                    if (!exclamacion)
                    {
                        exclamacion = true;
                        Instantiate(signoexclamacion, transform.position + new Vector3(0.5f * frente, 0.5f, 0), transform.rotation);
                    }
                }
                else
                {
                    atacando = false;
                    exclamacion = false;
                }
            }
            else
            {
                atacando = false;
            }
        }
        
        transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y * 0.1f);

        if (!grupo.GetComponent<Translacion>().estacionado)
        {
            GetComponent<Animator>().SetBool("Corriendo", true);
        }
        else
        {
            GetComponent<Animator>().SetBool("Corriendo", false);
        }
    }
    void OnTriggerEnter2D(Collider2D collision)
    {
        //llega a meta
        if (collision.gameObject == triggermeta)
        {
            controlenemigo.vida -= valortropa;
            //Desanotarse de la fila
            for (int i = grupo.GetComponent<Translacion>().arraytropas.Length - 1; i >= 0; i--)
            {
                if (grupo.GetComponent<Translacion>().arraytropas[i])
                {
                    grupo.GetComponent<Translacion>().arraytropas[i] = false;
                    break;
                }

            }
            Destroy(gameObject);
        }
        
    }

    IEnumerator Ataque()
    {
        if (atacando)
        {
            GetComponent<Animator>().SetBool("Ataque", true);
            if (tipoenemigo == "Tropa" && enemigotropa != null)
            {
                if (!ataqueadistancia)
                {
                    enemigotropa.vida -= dañoataque;
                    enemigotropa.GetComponent<Animator>().SetTrigger("Daño");
                }
                else StartCoroutine(HacerDañoADistancia(enemigotropa, null, null,enemigotropa.transform.position));
                
            }
            if (tipoenemigo == "Constructor" && enemigoconstructor != null)
            {
                if (!ataqueadistancia) enemigoconstructor.vida -= dañoataque;
                else StartCoroutine(HacerDañoADistancia(null, enemigoconstructor, null, enemigoconstructor.transform.position));
                enemigoconstructor.GetComponent<Animator>().SetTrigger("Daño");
            }
            if (tipoenemigo == "Torreta" && enemigotorreta != null)
            {
                if (!ataqueadistancia) enemigotorreta.vida -= dañoataque;
                else StartCoroutine(HacerDañoADistancia(null, null, enemigotorreta, enemigotorreta.transform.position));
                enemigotorreta.GetComponent<Animator>().SetTrigger("Daño");
            }
            if (ataqueadistancia)
            {
                if (tipoenemigo == "Tropa" && enemigotropa != null)
                {
                    proyectil = Instantiate(flecha, transform.position, transform.rotation);
                    proyectil.GetComponent<Proyectil>().destino = enemigotropa.transform.position;
                }
                if (tipoenemigo == "Constructor" && enemigoconstructor != null)
                {
                    proyectil = Instantiate(flecha, transform.position, transform.rotation);
                    proyectil.GetComponent<Proyectil>().destino = enemigoconstructor.transform.position;
                }
                if (tipoenemigo == "Torreta" && enemigotorreta != null)
                {
                    proyectil = Instantiate(flecha, transform.position, transform.rotation);
                    proyectil.GetComponent<Proyectil>().destino = enemigotorreta.transform.position;
                }
            }
        }
        else
        {
            GetComponent<Animator>().SetBool("Ataque", false);
        }
        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        grupo.GetComponent<Translacion>().enfrentamiento = false;
        StartCoroutine(Ataque());
    }
    IEnumerator Daño()
    {
        float cr = r;
        float cg = g;
        float cb = b;
        for (int i = 0; i < 50; i++)
        {
            cg -= 0.02f * g;
            cb -= 0.02f * b;
            GetComponent<SpriteRenderer>().color = new Color(cr, cg, cb);
            yield return new WaitForSeconds(0.01f);
        }
        for (int i = 0; i < 50; i++)
        {
            cg += 0.02f * g;
            cb += 0.02f * b;
            GetComponent<SpriteRenderer>().color = new Color(cr, cg, cb);
            yield return new WaitForSeconds(0.01f);
        }
    }
    IEnumerator HacerDañoADistancia(Tropa enem, Constructor constructor, TurretSlot torreta, Vector3 destino)
    {
        yield return new WaitForSeconds((destino - transform.position).magnitude / flecha.GetComponent<Proyectil>().speed);
        if (enem != null)
        {
            enem.vida -= dañoataque;
            enem.GetComponent<Animator>().SetTrigger("Daño");
        }
        if (torreta != null)
        {
            torreta.vida -= dañoataque;
        }
        if (constructor != null)
        {
            constructor.vida -= dañoataque;
        }
    }
}
TurretSlot.cs

Code: Select all

public class TurretSlot : MonoBehaviour {

    public bool disponible;
    public bool encargada;
    public bool bloqueada;
    public int tipotorreta;
    public GameObject torreta0;
    public GameObject torreta1;
    public GameObject torreta2;
    public GameObject torreta3;
    public TurretSlot torretacentral;

    public int vida;
    public int maxvida;

    public bool mostrarArea;
    public bool torretaLista;
    public GameObject area1;
    public GameObject area2;
    public GameObject area3;

    void Start () {
        disponible = true;
        tipotorreta = 0;
        vida = 1000;
        maxvida = 100;
	}
	
	void Update () {


        if (mostrarArea && torretaLista)
        {
            area1.SetActive(true);
            area2.SetActive(true);
            area3.SetActive(true);
        }
        else
        {
            area1.SetActive(false);
            area2.SetActive(false);
            area3.SetActive(false);
        }
        if (tipotorreta == 0) maxvida = 500;
        if (tipotorreta == 1) maxvida = 200;
        if (tipotorreta == 2) maxvida = 500;
        if (tipotorreta == 3) maxvida = 1000;

        if (!disponible && !bloqueada)
        {
            if (torretacentral != null)
            {
                torretacentral.bloqueada = true;
                torretacentral.disponible = true;
            }

            if (tipotorreta == 0)
            {
                torreta0.SetActive(true);
                torreta1.SetActive(false);
                torreta2.SetActive(false);
                torreta3.SetActive(false);
            }

            if (tipotorreta == 1)
            {
                torreta0.SetActive(false);
                torreta1.SetActive(true);
                torreta2.SetActive(false);
                torreta3.SetActive(false);
            }
            if (tipotorreta == 2)
            {
                torreta0.SetActive(false);
                torreta1.SetActive(false);
                torreta2.SetActive(true);
                torreta3.SetActive(false);
            }
            if (tipotorreta == 3)
            {
                torreta0.SetActive(false);
                torreta1.SetActive(false);
                torreta2.SetActive(false);
                torreta3.SetActive(true);
            }
        }
        else
        {
            if (torretacentral != null)
            {
                torretacentral.bloqueada = false;
            }

            torreta0.SetActive(false);
            torreta1.SetActive(false);
            torreta2.SetActive(false);
            torreta3.SetActive(false);
        }
        if (vida <= 0)
        {
            disponible = true;
            vida = maxvida;
        }
	}
    public IEnumerator DelayTorreta()
    {
        for (int i = 0; i < 10000; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        GetComponent<Animator>().SetBool("Time Out", true);
        for (int i = 0; i < 300; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        GetComponent<Animator>().SetBool("Time Out", false);
        disponible = true;
    }
}
Juan Camilo Quintero

POO1

User avatar
Gamba04
Posts: 17
Joined: Tue Jan 22, 2019 12:14 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by Gamba04 » Fri Mar 15, 2019 2:38 am

Videos



Juan Camilo Quintero

POO1

User avatar
wintuh
Posts: 21
Joined: Tue Jan 22, 2019 12:13 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by wintuh » Tue Mar 19, 2019 11:18 pm

Sprint #7

Fecha inicio: 14/03/2019
Fecha finalización: 21/03/2019

Actividad #1
Programación: mejora de torretas y tropas
  • Implementar niveles 1-3 de las tropas (Juan Camilo) :: (4)
  • Implementar niveles 1-3 de las torretas (Juan Camilo) :: (4)
  • Implementar sistema de mejora de nivel para tropas y torretas (Juan Camilo) :: (4)
  • Implementar sistema de imagenes UI de los niveles de tropas y torretas (Juan Camilo) :: (5)
  • Reconstruir sistema de indicaciones de los controles, de una manera mucho mas responsiva e intuitva (Juan Camilo) :: (3.5)
  • Corregir errores a nivel general :: (3)
Activdad #2
Animación: Más animaciones
  • Sprite de torreta lanzallamas (Martín) :: 3
  • Todas las animaciones del arquero (Martín) :: 3
  • Torreta cañón siendo destruida en 3 etapas (Martín) :: 3
  • Concept de diferentes mejoras (Juan Camilo Y Martín) :: 2
  • Hacer un test con partículas (Martín) :: 2
Programación y diseño orientado a objetos (pdoo1)

Martín Jaramillo Nicholls

User avatar
wintuh
Posts: 21
Joined: Tue Jan 22, 2019 12:13 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by wintuh » Tue Mar 19, 2019 11:27 pm

Avance del 19/03/2019, parte de animación y sprites

Estos son los frames del lanzallamas: Image

Este es el ataque del arquero: Image

Este es el idle del arquero: Image

Este es el walk cycle del arquero: Image
Programación y diseño orientado a objetos (pdoo1)

Martín Jaramillo Nicholls

User avatar
wintuh
Posts: 21
Joined: Tue Jan 22, 2019 12:13 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by wintuh » Thu Mar 21, 2019 11:55 pm

Avance del 21/03/2019 Parte de animación y sprites

Este es el dragón:

Image

Estos son los sprites definitivos del arquero:

Image Image Image

Estos son los sprites de las monedas:

Image Image
Programación y diseño orientado a objetos (pdoo1)

Martín Jaramillo Nicholls

User avatar
Gamba04
Posts: 17
Joined: Tue Jan 22, 2019 12:14 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by Gamba04 » Fri Mar 22, 2019 2:16 am

Parte 1

Se simplificará este código por medio de funciones ya que es muy repetitivo y extenso...

ControlGeneral.cs

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;


public class ControlGeneral : MonoBehaviour {

    public HeaderAttribute headerkeys = new HeaderAttribute("Keys");
    public KeyCode kIzquierda;
    public KeyCode kDerecha;
    public KeyCode kArriba;
    public KeyCode kAbajo;
    public KeyCode kAlternarD;
    public KeyCode kAlternarI;
    public KeyCode kColocar_Dirigir;
    public KeyCode kEliminar;
    public KeyCode kSpawn_Reparar;
    public KeyCode kAlternarConstructor;
    public KeyCode kModo;
    public KeyCode kMejorar;
    public GameObject grupo;
    public GameObject tropa;
    public bool modotropas;
    public int seleccionnodo;
    public int nodoactivo;
    public GameObject[] espaciostorretas;
    public int seleccionespacio;
    public int espacioarriba;
    public int espacioabajo;
    public int espacioderecha;
    public int espacioizquierda;
    public GameObject[] nodos;
    public int tipotropa;
    public GameObject tropa1_1;
    public GameObject tropa1_2;
    public GameObject tropa1_3;
    public GameObject tropa2_1;
    public GameObject tropa2_2;
    public GameObject tropa2_3;
    public GameObject tropa3_1;
    public GameObject tropa3_2;
    public GameObject tropa3_3;
    public GameObject[,] imagentropa;
    public GameObject[] imagentropa0;
    public GameObject[] imagentropa1;
    public GameObject[] imagentropa2;
    public GameObject[] imagentropa3;
    public int tipotorreta;
    public GameObject[,] imagentorreta;
    public GameObject[] imagentorreta0;
    public GameObject[] imagentorreta1;
    public GameObject[] imagentorreta2;
    public GameObject[] imagentorreta3;
    public GameObject constructoractivo;
    public int seleccionconstructor;
    public GameObject constructor;
    public GameObject parentTropas;
    public GameObject pickupmoneda;

    public HeaderAttribute headertags = new HeaderAttribute("Tags");
    string tag_tropas;
    string tag_constructor;
    string tag_turretslot;
    string tag_Path;
    string tag_grupo;

    int lado;
    public int dinero;
    public int poblacion;
    public HeaderAttribute headertextos = new HeaderAttribute("Textos");
    public Text tdinero;
    public Text tnombre;
    public Text tnivel;
    public Text tprecio;
    public Text tprecioMejora;
    public Text tpoblacion;
    public Text tdescripcion;
    public bool suficientedinero;

    public float vida;
    public GameObject barravida;

    public Animator gameoveranim;
    public GameObject gameoverflechita;
    public bool gameover;

    public int cantidadmoneda;
    public GameObject monedita;
    public GameObject flechaenviar;

    public Color color_deshabilitado;
    public Color color_apagado;
    public Color color_encendido;
    public Color colorTexto_rojo;
    public Color colorTexto_normal;
    public Image tecla_arr;
    public Image tecla_izq;
    public Image tecla_abj;
    public Image tecla_der;
    public Image tecla_dirigir;
    public Image tecla_colocar;
    public Image tecla_spawn;
    public Image tecla_eliminar;
    public Image tecla_cambiarIzq;
    public Image tecla_cambiarDer;
    public Image tecla_mejorar;
    public Image tecla_cambiarmodo;
    public Image tecla_cambiarconstructor;
    public SpriteRenderer tecla_reparar;

    public int niveltropa0;
    public int niveltropa1;
    public int niveltropa2;
    public int niveltropa3;
    public int niveltorreta0;
    public int niveltorreta1;
    public int niveltorreta2;
    public int niveltorreta3;

    public Animator modeUI;


    void Start()
    {
       
        gameoveranim.enabled = false;
        GameObject[] nodosorigen;
        nodosorigen = GameObject.FindGameObjectsWithTag("Path");
        nodos = new GameObject[nodosorigen.Length];
        if (gameObject.name == "Control General A")
        {
            tag_tropas = "TropasA";
            tag_constructor = "ConstructorA";
            tag_turretslot = "Turret SlotA";
            tag_Path = "PathA";
            tag_grupo = "GrupoA";
            lado = 1;
            //organizacion del array de nodos
            for (int i = 0; i < nodosorigen.Length; i++)
            {
                nodos[int.Parse(nodosorigen[i].name)] = nodosorigen[i];
            }
        }
        if (gameObject.name == "Control General B")
        {
            tag_tropas = "TropasB";
            tag_constructor = "ConstructorB";
            tag_turretslot = "Turret SlotB";
            tag_Path = "PathB";
            tag_grupo = "GrupoB";
            lado = -1;
            //organizacion del array de nodos
            for (int i = 0; i < nodosorigen.Length; i++)
            {
                nodos[nodosorigen.Length - int.Parse(nodosorigen[i].name) - 1] = nodosorigen[i];
            }

        }

            niveltorreta0 = 1;
            niveltorreta1 = 0;
            niveltorreta2 = 0;
            niveltorreta3 = 0;
            niveltropa0 = 1;
            niveltropa1 = 1;
            niveltropa2 = 0;
            niveltropa3 = 0;
        modotropas = true;
        espaciostorretas = GameObject.FindGameObjectsWithTag(tag_turretslot);

        tipotropa = 0;
        seleccionconstructor = 1;
        dinero = 600;
        vida = 100;
        cantidadmoneda = 100;
        StartCoroutine(BaseDinero());
        StartCoroutine(SpawnMoneda(Random.Range(1, (nodos.Length - 1) / 2)));
        imagentropa = new GameObject[4, 4];
        imagentorreta = new GameObject[4, 4];

    }

    void Update()
    {

        //modeUI
        modeUI.SetBool("Torretas", !modotropas);
        //tecla modo
        tecla_cambiarmodo.color = (Input.GetKey(kModo)) ? color_encendido : color_apagado;
        //hud
        if (GameObject.FindGameObjectsWithTag(tag_constructor).Length > 1) tecla_cambiarconstructor.color = (Input.GetKey(kAlternarConstructor)) ? color_encendido : color_apagado;
        else tecla_cambiarconstructor.color = color_deshabilitado;

        //fps
        if (Application.targetFrameRate != 30) Application.targetFrameRate = 30;

        grupo = GameObject.FindGameObjectsWithTag(tag_grupo)[GameObject.FindGameObjectsWithTag(tag_grupo).Length - 1];

        if (GameObject.FindGameObjectsWithTag(tag_constructor).Length == 0)
        {
            constructoractivo = null;
            seleccionconstructor = 0;
        }
        else
        {
            if (Input.GetKeyDown(kAlternarConstructor)) seleccionconstructor++;

            if (seleccionconstructor > GameObject.FindGameObjectsWithTag(tag_constructor).Length) seleccionconstructor = 1;

            if (seleccionconstructor == 1) constructoractivo = GameObject.FindGameObjectsWithTag(tag_constructor)[0];
            if (seleccionconstructor == 2) constructoractivo = GameObject.FindGameObjectsWithTag(tag_constructor)[1];
            if (seleccionconstructor == 3) constructoractivo = GameObject.FindGameObjectsWithTag(tag_constructor)[2];

            foreach (GameObject c in GameObject.FindGameObjectsWithTag(tag_constructor)) if (c == constructoractivo) c.GetComponent<Constructor>().resplandor.SetActive(true);
                else c.GetComponent<Constructor>().resplandor.SetActive(false);
        }
        //texto precio
        tprecio.color = (suficientedinero) ? colorTexto_normal : colorTexto_rojo;

        //el inicio de la cascada
        if (modotropas)
        {

            //hud
            if (poblacion > 0)
            {
                //flecha
                if (Input.GetKeyDown(kColocar_Dirigir)) Instantiate(flechaenviar, nodos[seleccionnodo].transform.position, flechaenviar.transform.rotation);
                tecla_dirigir.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
            }
            else tecla_dirigir.color = color_deshabilitado;

            if (seleccionnodo > 0)
            {
                if (lado == 1) tecla_izq.color = (Input.GetKey(kIzquierda)) ? color_encendido : color_apagado;
                if (lado == -1) tecla_der.color = (Input.GetKey(kDerecha)) ? color_encendido : color_apagado;
            }
            else
            {
                if (lado == 1) tecla_izq.color = color_deshabilitado;
                if (lado == -1)tecla_der.color = color_deshabilitado;
            }

            if (seleccionnodo < nodos.Length - 1)
            {
                if (lado == 1) tecla_der.color = (Input.GetKey(kDerecha)) ? color_encendido : color_apagado;
                if (lado == -1) tecla_izq.color = (Input.GetKey(kIzquierda)) ? color_encendido : color_apagado;
            }
            else
            {
                if (lado == 1) tecla_der.color = color_deshabilitado;
                if (lado == -1) tecla_izq.color = color_deshabilitado;
            }

            tecla_spawn.gameObject.SetActive(true);
            tecla_colocar.gameObject.SetActive(false);

            imagentorreta0[1].SetActive(false);
            imagentorreta0[2].SetActive(false);
            imagentorreta0[3].SetActive(false);
            imagentorreta1[0].SetActive(false);
            imagentorreta1[1].SetActive(false);
            imagentorreta1[2].SetActive(false);
            imagentorreta1[3].SetActive(false);
            imagentorreta2[0].SetActive(false);
            imagentorreta2[1].SetActive(false);
            imagentorreta2[2].SetActive(false);
            imagentorreta2[3].SetActive(false);
            imagentorreta3[0].SetActive(false);
            imagentorreta3[1].SetActive(false);
            imagentorreta3[2].SetActive(false);
            imagentorreta3[3].SetActive(false);


            if (Input.GetKeyDown(kAlternarD)) tipotropa++;
            if (Input.GetKeyDown(kAlternarI)) tipotropa--;
            if (tipotropa < 0) tipotropa = 0;
            if (tipotropa > 3) tipotropa = 3;
            //hud
            if (tipotropa != 0) tecla_cambiarIzq.color = (Input.GetKey(kAlternarI)) ? color_encendido : color_apagado;
            else tecla_cambiarIzq.color = color_deshabilitado;
            if (tipotropa != 3) tecla_cambiarDer.color = (Input.GetKey(kAlternarD)) ? color_encendido : color_apagado;
            else tecla_cambiarDer.color = color_deshabilitado;

            if (tipotropa == 0)
            {
                tnivel.text = "Lvl " + niveltropa0;
                if (niveltropa0 == 3)
                {
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(true);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Magician";
                    tprecio.text = "900";
                    tdescripcion.text = "Grants special magic power to turrets!";
                    if (dinero >= 900) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                    else tecla_spawn.color = color_deshabilitado;

                    tprecioMejora.text = "---";

                    tecla_mejorar.color = color_deshabilitado;
                }
                if (niveltropa0 == 2)
                {
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(true);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Architect";
                    tprecio.text = "500";
                    tdescripcion.text = "Beautiful structures!";
                    if (dinero >= 500) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                    else tecla_spawn.color = color_deshabilitado;

                    tprecioMejora.text = "1000";
                    if (dinero >= 1000)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltropa0++;
                            dinero -= 1000;
                            if (GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) foreach (GameObject c in GameObject.FindGameObjectsWithTag(tag_constructor)) c.GetComponent<Constructor>().vida *= 2;

                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                }
                if (niveltropa0 == 1)
                {
                    imagentropa0[1].SetActive(true);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Builder";
                    tprecio.text = "200";
                    tdescripcion.text = "He can build things";
                    if (dinero >= 200) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                    else tecla_spawn.color = color_deshabilitado;

                    tprecioMejora.text = "500";
                    if (dinero >= 500)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;

                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltropa0++;
                            dinero -= 500;
                            if (GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) foreach (GameObject c in GameObject.FindGameObjectsWithTag(tag_constructor)) c.GetComponent<Constructor>().vida *= 2;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                }
            }
            if (tipotropa == 1)
            {
                tnivel.text = "Lvl " + niveltropa1;
                if (niveltropa1 == 3)
                {
                    tropa = tropa1_3;
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(true);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Russian Spetsnaz";
                    tprecio.text = "60";
                    tdescripcion.text = "Ready to kill";
                    if (dinero >= 60) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                    else tecla_spawn.color = color_deshabilitado;

                    tprecioMejora.text = "---";

                    tecla_mejorar.color = color_deshabilitado;
                }
                if (niveltropa1 == 2)
                {
                    tropa = tropa1_2;
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(true);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Soldier";
                    tprecio.text = "40";
                    tdescripcion.text = "Ready to fight";
                    if (dinero >= 40) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                    else tecla_spawn.color = color_deshabilitado;

                    tprecioMejora.text = "700";
                    if (dinero >= 700)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltropa1++;
                            dinero -= 700;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                }
                if (niveltropa1 == 1)
                {
                    tropa = tropa1_1;
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(true);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Nigglet";
                    tprecio.text = "20";
                    tdescripcion.text = "Ready to die";
                    if (dinero >= 20) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                    else tecla_spawn.color = color_deshabilitado;

                    tprecioMejora.text = "500";
                    if (dinero >= 500)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltropa1++;
                            dinero -= 500;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                }
            }
            if (tipotropa == 2)
            {
                tnivel.text = "Lvl " + niveltropa2;
                if (niveltropa2 > 0)
                {
                    if (niveltropa2 == 3)
                    {
                        tropa = tropa2_3;
                        imagentropa0[1].SetActive(false);
                        imagentropa0[2].SetActive(false);
                        imagentropa0[3].SetActive(false);
                        imagentropa1[1].SetActive(false);
                        imagentropa1[2].SetActive(false);
                        imagentropa1[3].SetActive(false);
                        imagentropa2[0].SetActive(false);
                        imagentropa2[1].SetActive(false);
                        imagentropa2[2].SetActive(false);
                        imagentropa2[3].SetActive(true);
                        imagentropa3[0].SetActive(false);
                        imagentropa3[1].SetActive(false);
                        imagentropa3[2].SetActive(false);
                        imagentropa3[3].SetActive(false);
                        tnombre.text = "T-14 Armata";
                        tprecio.text = "200";
                        tdescripcion.text = "It's basically a real tank";
                        if (dinero >= 200) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_spawn.color = color_deshabilitado;

                        tprecioMejora.text = "---";

                        tecla_mejorar.color = color_deshabilitado;
                    }
                    if (niveltropa2 == 2)
                    {
                        tropa = tropa2_2;
                        imagentropa0[1].SetActive(false);
                        imagentropa0[2].SetActive(false);
                        imagentropa0[3].SetActive(false);
                        imagentropa1[1].SetActive(false);
                        imagentropa1[2].SetActive(false);
                        imagentropa1[3].SetActive(false);
                        imagentropa2[0].SetActive(false);
                        imagentropa2[1].SetActive(false);
                        imagentropa2[2].SetActive(true);
                        imagentropa2[3].SetActive(false);
                        imagentropa3[0].SetActive(false);
                        imagentropa3[1].SetActive(false);
                        imagentropa3[2].SetActive(false);
                        imagentropa3[3].SetActive(false);
                        tnombre.text = "Tank";
                        tprecio.text = "100";
                        tdescripcion.text = "They don't call him the TANK for anything";
                        if (dinero >= 100) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_spawn.color = color_deshabilitado;

                        tprecioMejora.text = "1500";
                        if (dinero >= 1500)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltropa2++;
                                dinero -= 1500;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                    if (niveltropa2 == 1)
                    {
                        tropa = tropa2_1;
                        imagentropa0[1].SetActive(false);
                        imagentropa0[2].SetActive(false);
                        imagentropa0[3].SetActive(false);
                        imagentropa1[1].SetActive(false);
                        imagentropa1[2].SetActive(false);
                        imagentropa1[3].SetActive(false);
                        imagentropa2[0].SetActive(false);
                        imagentropa2[1].SetActive(true);
                        imagentropa2[2].SetActive(false);
                        imagentropa2[3].SetActive(false);
                        imagentropa3[0].SetActive(false);
                        imagentropa3[1].SetActive(false);
                        imagentropa3[2].SetActive(false);
                        imagentropa3[3].SetActive(false);
                        tnombre.text = "Viking";
                        tprecio.text = "40";
                        tdescripcion.text = "You can hit him all you want";
                        if (dinero >= 40) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_spawn.color = color_deshabilitado;

                        tprecioMejora.text = "700";
                        if (dinero >= 700)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltropa2++;
                                dinero -= 700;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                }
                else
                {
                    tropa = null;
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(true);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(false);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Tank";
                    tprecio.text = "---";
                    tdescripcion.text = "LOCKED, upgrade to unlock";

                    tprecioMejora.text = "100";
                    if (dinero >= 100)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltropa2++;
                            dinero -= 100;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                    tecla_spawn.color = color_deshabilitado;
                }
            }
            if (tipotropa == 3)
            {
                tnivel.text = "Lvl " + niveltropa3;
                if (niveltropa3 > 0)
                {
                    if (niveltropa3 == 3)
                    {
                        tropa = tropa3_3;
                        imagentropa0[1].SetActive(false);
                        imagentropa0[2].SetActive(false);
                        imagentropa0[3].SetActive(false);
                        imagentropa1[1].SetActive(false);
                        imagentropa1[2].SetActive(false);
                        imagentropa1[3].SetActive(false);
                        imagentropa2[0].SetActive(false);
                        imagentropa2[1].SetActive(false);
                        imagentropa2[2].SetActive(false);
                        imagentropa2[3].SetActive(false);
                        imagentropa3[0].SetActive(false);
                        imagentropa3[1].SetActive(false);
                        imagentropa3[2].SetActive(false);
                        imagentropa3[3].SetActive(true);
                        tnombre.text = "Special Agent N.I.G.G.L.E.T";
                        tprecio.text = "100";
                        tdescripcion.text = "NOW THAT'S A LOT OF DAMAGE!!";
                        if (dinero >= 100) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_spawn.color = color_deshabilitado;

                        tprecioMejora.text = "---";

                        tecla_mejorar.color = color_deshabilitado;
                    }
                    if (niveltropa3 == 2)
                    {
                        tropa = tropa3_2;
                        imagentropa0[1].SetActive(false);
                        imagentropa0[2].SetActive(false);
                        imagentropa0[3].SetActive(false);
                        imagentropa1[1].SetActive(false);
                        imagentropa1[2].SetActive(false);
                        imagentropa1[3].SetActive(false);
                        imagentropa2[0].SetActive(false);
                        imagentropa2[1].SetActive(false);
                        imagentropa2[2].SetActive(false);
                        imagentropa2[3].SetActive(false);
                        imagentropa3[0].SetActive(false);
                        imagentropa3[1].SetActive(false);
                        imagentropa3[2].SetActive(true);
                        imagentropa3[3].SetActive(false);
                        tnombre.text = "TomaHawk";
                        tprecio.text = "60";
                        tdescripcion.text = "Woah, that's a lot of damage!";
                        if (dinero >= 60) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_spawn.color = color_deshabilitado;
                        tprecioMejora.text = "1500";
                        if (dinero >= 1500)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltropa3++;
                                dinero -= 1500;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                    if (niveltropa3 == 1)
                    {
                        tropa = tropa3_1;
                        imagentropa0[1].SetActive(false);
                        imagentropa0[2].SetActive(false);
                        imagentropa0[3].SetActive(false);
                        imagentropa1[1].SetActive(false);
                        imagentropa1[2].SetActive(false);
                        imagentropa1[3].SetActive(false);
                        imagentropa2[0].SetActive(false);
                        imagentropa2[1].SetActive(false);
                        imagentropa2[2].SetActive(false);
                        imagentropa2[3].SetActive(false);
                        imagentropa3[0].SetActive(false);
                        imagentropa3[1].SetActive(true);
                        imagentropa3[2].SetActive(false);
                        imagentropa3[3].SetActive(false);
                        tnombre.text = "Archer";
                        tprecio.text = "25";
                        tdescripcion.text = "Extremely powerful.. until he gets hit";
                        if (dinero >= 25) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero) tecla_spawn.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_spawn.color = color_deshabilitado;

                        tprecioMejora.text = "1000";
                        if (dinero >= 1000)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltropa3++;
                                dinero -= 1000;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                }
                else
                {
                    tropa = null;
                    imagentropa0[1].SetActive(false);
                    imagentropa0[2].SetActive(false);
                    imagentropa0[3].SetActive(false);
                    imagentropa1[1].SetActive(false);
                    imagentropa1[2].SetActive(false);
                    imagentropa1[3].SetActive(false);
                    imagentropa2[0].SetActive(false);
                    imagentropa2[1].SetActive(false);
                    imagentropa2[2].SetActive(false);
                    imagentropa2[3].SetActive(false);
                    imagentropa3[0].SetActive(true);
                    imagentropa3[1].SetActive(false);
                    imagentropa3[2].SetActive(false);
                    imagentropa3[3].SetActive(false);
                    tnombre.text = "Archer";
                    tprecio.text = "---";
                    tdescripcion.text = "LOCKED, upgrade to unlock";

                    tprecioMejora.text = "300";
                    if (dinero >= 300)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltropa3++;
                            dinero -= 300;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                    tecla_spawn.color = color_deshabilitado;
                }
            }

            //hud
            tecla_arr.color = color_deshabilitado;
            tecla_abj.color = color_deshabilitado;
            
        }
        else
        {
            //hud
            tecla_arr.color = (Input.GetKey(kArriba)) ? color_encendido : color_apagado;
            tecla_abj.color = (Input.GetKey(kAbajo)) ? color_encendido : color_apagado;
            tecla_der.color = (Input.GetKey(kDerecha)) ? color_encendido : color_apagado;
            tecla_izq.color = (Input.GetKey(kIzquierda)) ? color_encendido : color_apagado;

            tecla_dirigir.color = color_deshabilitado;

            tecla_spawn.gameObject.SetActive(false);
            tecla_colocar.gameObject.SetActive(true);

            

            imagentropa0[1].SetActive(false);
            imagentropa0[2].SetActive(false);
            imagentropa0[3].SetActive(false);
            imagentropa1[1].SetActive(false);
            imagentropa1[2].SetActive(false);
            imagentropa1[3].SetActive(false);
            imagentropa2[0].SetActive(false);
            imagentropa2[1].SetActive(false);
            imagentropa2[2].SetActive(false);
            imagentropa2[3].SetActive(false);
            imagentropa3[0].SetActive(false);
            imagentropa3[1].SetActive(false);
            imagentropa3[2].SetActive(false);
            imagentropa3[3].SetActive(false);

            if (Input.GetKeyDown(kAlternarD)) tipotorreta++;
            if (Input.GetKeyDown(kAlternarI)) tipotorreta--;
            if (tipotorreta < 0) tipotorreta = 0;
            if (tipotorreta > 3) tipotorreta = 3;
            //hud
            if (tipotorreta != 0) tecla_cambiarIzq.color = (Input.GetKey(kAlternarI)) ? color_encendido : color_apagado;
            else tecla_cambiarIzq.color = color_deshabilitado;
            if (tipotorreta != 3) tecla_cambiarDer.color = (Input.GetKey(kAlternarD)) ? color_encendido : color_apagado;
            else tecla_cambiarDer.color = color_deshabilitado;
            .
            .
            .
Last edited by Gamba04 on Fri Mar 22, 2019 2:28 am, edited 1 time in total.
Juan Camilo Quintero

POO1

User avatar
Gamba04
Posts: 17
Joined: Tue Jan 22, 2019 12:14 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by Gamba04 » Fri Mar 22, 2019 2:24 am

Parte 2

Code: Select all

.
.
.
if (tipotorreta == 0)
            {
                tnivel.text = "Lvl " + niveltorreta0;
                if (niveltorreta0 == 3)
                {

                    imagentorreta0[1].SetActive(false);
                    imagentorreta0[2].SetActive(false);
                    imagentorreta0[3].SetActive(true);
                    imagentorreta1[0].SetActive(false);
                    imagentorreta1[1].SetActive(false);
                    imagentorreta1[2].SetActive(false);
                    imagentorreta1[3].SetActive(false);
                    imagentorreta2[0].SetActive(false);
                    imagentorreta2[1].SetActive(false);
                    imagentorreta2[2].SetActive(false);
                    imagentorreta2[3].SetActive(false);
                    imagentorreta3[0].SetActive(false);
                    imagentorreta3[1].SetActive(false);
                    imagentorreta3[2].SetActive(false);
                    imagentorreta3[3].SetActive(false);
                    tnombre.text = "Hackerman";
                    tprecio.text = "800";
                    tdescripcion.text = "IT'S HACKING TIME!!";
                    if (dinero >= 800) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
                    else tecla_colocar.color = color_deshabilitado;

                    tprecioMejora.text = "---";

                    tecla_mejorar.color = color_deshabilitado;
                }
                if (niveltorreta0 == 2)
                {

                    imagentorreta0[1].SetActive(false);
                    imagentorreta0[2].SetActive(true);
                    imagentorreta0[3].SetActive(false);
                    imagentorreta1[0].SetActive(false);
                    imagentorreta1[1].SetActive(false);
                    imagentorreta1[2].SetActive(false);
                    imagentorreta1[3].SetActive(false);
                    imagentorreta2[0].SetActive(false);
                    imagentorreta2[1].SetActive(false);
                    imagentorreta2[2].SetActive(false);
                    imagentorreta2[3].SetActive(false);
                    imagentorreta3[0].SetActive(false);
                    imagentorreta3[1].SetActive(false);
                    imagentorreta3[2].SetActive(false);
                    imagentorreta3[3].SetActive(false);
                    tnombre.text = "Corporation";
                    tprecio.text = "400";
                    tdescripcion.text = "Our secret strategy is copyright claiming, shhh";
                    if (dinero >= 400) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
                    else tecla_colocar.color = color_deshabilitado;

                    tprecioMejora.text = "1000 && Magician";
                    if (dinero >= 1000 && niveltropa0 > 2)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltorreta0++;
                            dinero -= 1000;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                }
                if (niveltorreta0 == 1)
                {
                    imagentorreta0[1].SetActive(true);
                    imagentorreta0[2].SetActive(false);
                    imagentorreta0[3].SetActive(false);
                    imagentorreta1[0].SetActive(false);
                    imagentorreta1[1].SetActive(false);
                    imagentorreta1[2].SetActive(false);
                    imagentorreta1[3].SetActive(false);
                    imagentorreta2[0].SetActive(false);
                    imagentorreta2[1].SetActive(false);
                    imagentorreta2[2].SetActive(false);
                    imagentorreta2[3].SetActive(false);
                    imagentorreta3[0].SetActive(false);
                    imagentorreta3[1].SetActive(false);
                    imagentorreta3[2].SetActive(false);
                    imagentorreta3[3].SetActive(false);
                    tnombre.text = "Mine";
                    tprecio.text = "100";
                    tdescripcion.text = "Who doesnt like money?";
                    if (dinero >= 100) suficientedinero = true;
                    else suficientedinero = false;
                    //hud
                    if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
                    else tecla_colocar.color = color_deshabilitado;

                    tprecioMejora.text = "500 & Architect";
                    if (dinero >= 500 && niveltropa0 > 1)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltorreta0++;
                            dinero -= 500;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                }
            }
            if (tipotorreta == 1)
            {
                tnivel.text = "Lvl " + niveltorreta1;
                if (niveltorreta1 > 0)
                {
                    if (niveltorreta1 == 3)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(true);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Plasma Gun";
                        tprecio.text = "500";
                        tdescripcion.text = "Instant desintegration";
                        if (dinero >= 500) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "---";

                        tecla_mejorar.color = color_deshabilitado;
                    }
                    if (niveltorreta1 == 2)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(true);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "SniperGun";
                        tprecio.text = "200";
                        tdescripcion.text = "BOOM HEADSHOT";
                        if (dinero >= 200) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "700 && Magician";
                        if (dinero >= 700 && niveltropa0 > 2)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltorreta1++;
                                dinero -= 700;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                    if (niveltorreta1 == 1)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(true);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Cannon";
                        tprecio.text = "50";
                        tdescripcion.text = "Good damage to individual targets";
                        if (dinero >= 50) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kColocar_Dirigir)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "300 && Architect";
                        if (dinero >= 300 && niveltropa0 > 1)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltorreta1++;
                                dinero -= 300;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                }
                else
                {

                    imagentorreta0[1].SetActive(false);
                    imagentorreta0[2].SetActive(false);
                    imagentorreta0[3].SetActive(false);
                    imagentorreta1[0].SetActive(true);
                    imagentorreta1[1].SetActive(false);
                    imagentorreta1[2].SetActive(false);
                    imagentorreta1[3].SetActive(false);
                    imagentorreta2[0].SetActive(false);
                    imagentorreta2[1].SetActive(false);
                    imagentorreta2[2].SetActive(false);
                    imagentorreta2[3].SetActive(false);
                    imagentorreta3[0].SetActive(false);
                    imagentorreta3[1].SetActive(false);
                    imagentorreta3[2].SetActive(false);
                    imagentorreta3[3].SetActive(false);
                    tnombre.text = "Cannon";
                    tprecio.text = "---";
                    tdescripcion.text = "LOCKED, upgrade to unlock";


                    tprecioMejora.text = "100";
                    if (dinero >= 100)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltorreta1++;
                            dinero -= 100;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                    tecla_colocar.color = color_deshabilitado;

                }
            }
            if (tipotorreta == 2)
            {
                tnivel.text = "Lvl " + niveltorreta2;
                if (niveltorreta2 > 0)
                {
                    if (niveltorreta2 == 3)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(true);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Tsar Bomba";
                        tprecio.text = "1000";
                        tdescripcion.text = "Not quite sure if this is a good idea";
                        if (dinero >= 1000) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "---";

                        tecla_mejorar.color = color_deshabilitado;

                    }
                    if (niveltorreta2 == 2)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(true);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Rocket Launcher";
                        tprecio.text = "500";
                        tdescripcion.text = "Massive destruction";
                        if (dinero >= 500) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "1500 && Magician";
                        if (dinero >= 1500 && niveltropa0 > 2)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltorreta2++;
                                dinero -= 1500;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                    if (niveltorreta2 == 1)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(true);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Mortar";
                        tprecio.text = "100";
                        tdescripcion.text = "Can hit up to 10 targets at a time";
                        if (dinero >= 100) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "700 && Architect";
                        if (dinero >= 700 && niveltropa0 > 1)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltorreta2++;
                                dinero -= 700;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                }
                else
                {
                    imagentorreta0[1].SetActive(false);
                    imagentorreta0[2].SetActive(false);
                    imagentorreta0[3].SetActive(false);
                    imagentorreta1[0].SetActive(false);
                    imagentorreta1[1].SetActive(false);
                    imagentorreta1[2].SetActive(false);
                    imagentorreta1[3].SetActive(false);
                    imagentorreta2[0].SetActive(true);
                    imagentorreta2[1].SetActive(false);
                    imagentorreta2[2].SetActive(false);
                    imagentorreta2[3].SetActive(false);
                    imagentorreta3[0].SetActive(false);
                    imagentorreta3[1].SetActive(false);
                    imagentorreta3[2].SetActive(false);
                    imagentorreta3[3].SetActive(false);
                    tnombre.text = "Mortar";
                    tprecio.text = "---";
                    tdescripcion.text = "LOCKED, upgrade to unlock";

                    tprecioMejora.text = "400";
                    if (dinero >= 400)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltorreta2++;
                            dinero -= 400;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                    tecla_colocar.color = color_deshabilitado;
                }
            }
            if (tipotorreta == 3)
            {
                tnivel.text = "Lvl " + niveltorreta3;
                if (niveltorreta3 > 0)
                {

                    if (niveltorreta3 == 3)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(true);
                        tnombre.text = "Balerion the Black Dread";
                        tprecio.text = "1200";
                        tdescripcion.text = "It's said his fire was so hot it melted soldiers inside their armor";
                        if (dinero >= 1200) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "---";

                        tecla_mejorar.color = color_deshabilitado;

                    }
                    if (niveltorreta3 == 2)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(false);
                        imagentorreta3[2].SetActive(true);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Dragon";
                        tprecio.text = "700";
                        tdescripcion.text = "He likes spicy food..";
                        if (dinero >= 700) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "2000 && Magician";
                        if (dinero >= 2000 && niveltropa0 > 2)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltorreta3++;
                                dinero -= 2000;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                    if (niveltorreta3 == 1)
                    {
                        imagentorreta0[1].SetActive(false);
                        imagentorreta0[2].SetActive(false);
                        imagentorreta0[3].SetActive(false);
                        imagentorreta1[0].SetActive(false);
                        imagentorreta1[1].SetActive(false);
                        imagentorreta1[2].SetActive(false);
                        imagentorreta1[3].SetActive(false);
                        imagentorreta2[0].SetActive(false);
                        imagentorreta2[1].SetActive(false);
                        imagentorreta2[2].SetActive(false);
                        imagentorreta2[3].SetActive(false);
                        imagentorreta3[0].SetActive(false);
                        imagentorreta3[1].SetActive(true);
                        imagentorreta3[2].SetActive(false);
                        imagentorreta3[3].SetActive(false);
                        tnombre.text = "Flamethrower";
                        tprecio.text = "300";
                        tdescripcion.text = "Didnt't your parents teach you not to play with fire?";
                        if (dinero >= 300) suficientedinero = true;
                        else suficientedinero = false;
                        //hud
                        if (suficientedinero && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0) tecla_colocar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                        else tecla_colocar.color = color_deshabilitado;

                        tprecioMejora.text = "1000 && Architect";
                        if (dinero >= 1000 && niveltropa0 > 1)
                        {
                            tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                            tprecioMejora.color = colorTexto_normal;
                            if (Input.GetKeyDown(kMejorar))
                            {
                                niveltorreta3++;
                                dinero -= 1000;
                            }
                        }
                        else
                        {
                            tecla_mejorar.color = color_deshabilitado;
                            tprecioMejora.color = colorTexto_rojo;
                        }
                    }
                }
                else
                {
                    imagentorreta0[1].SetActive(false);
                    imagentorreta0[2].SetActive(false);
                    imagentorreta0[3].SetActive(false);
                    imagentorreta1[0].SetActive(false);
                    imagentorreta1[1].SetActive(false);
                    imagentorreta1[2].SetActive(false);
                    imagentorreta1[3].SetActive(false);
                    imagentorreta2[0].SetActive(false);
                    imagentorreta2[1].SetActive(false);
                    imagentorreta2[2].SetActive(false);
                    imagentorreta2[3].SetActive(false);
                    imagentorreta3[0].SetActive(true);
                    imagentorreta3[1].SetActive(false);
                    imagentorreta3[2].SetActive(false);
                    imagentorreta3[3].SetActive(false);

                    tnombre.text = "Dragon";
                    tprecio.text = "---";
                    tdescripcion.text = "LOCKED, upgrade to unlock";

                    tprecioMejora.text = "700";
                    if (dinero >= 700)
                    {
                        tecla_mejorar.color = (Input.GetKey(kMejorar)) ? color_encendido : color_apagado;
                        tprecioMejora.color = colorTexto_normal;
                        if (Input.GetKeyDown(kMejorar))
                        {
                            niveltorreta3++;
                            dinero -= 700;
                        }
                    }
                    else
                    {
                        tecla_mejorar.color = color_deshabilitado;
                        tprecioMejora.color = colorTexto_rojo;
                    }
                    tecla_colocar.color = color_deshabilitado;
                }
            }
            
        }
        
            //fin de la cascada
            //spawn tropas
            if (Input.GetKeyDown(kSpawn_Reparar) && modotropas)
            {
                if (suficientedinero)
                {
                    if (tipotropa != 0)
                    {
                        if ((tipotropa == 1 && niveltropa1 > 0) || (tipotropa == 2 && niveltropa2 > 0) || (tipotropa == 3 && niveltropa3 > 0))
                        {
                            if (poblacion < 50)
                            {
                                Instantiate(grupo, transform.position, transform.rotation);
                                Instantiate(tropa, transform.position, transform.rotation, parentTropas.transform);
                                if (tipotropa == 1) dinero -= 20;
                                if (tipotropa == 2) dinero -= 40;
                                if (tipotropa == 3) dinero -= 25;
                            }
                        }
                    }
                    else
                    {
                        if (GameObject.FindGameObjectsWithTag(tag_constructor).Length < 3)
                        {
                            Instantiate(constructor, constructor.transform.position, constructor.transform.rotation);
                            seleccionconstructor = 1;
                            dinero -= 200;
                        }
                    }
                }
            }

            //visualización del nodo seleccionado
            for (int i = 0; i < nodos.Length; i++)
            {

                if (i == seleccionnodo && modotropas) foreach (Transform t in nodos[i].transform)
                    {
                        if (t.CompareTag(tag_Path)) t.GetComponent<SpriteRenderer>().enabled = true;
                    }
                else
                {
                    foreach (Transform t in nodos[i].transform) if (t.CompareTag(tag_Path)) t.GetComponent<SpriteRenderer>().enabled = false;
                }
            }
            //alternar modo
            if (Input.GetKeyDown(kModo)) modotropas = !modotropas;

            //navegación nodo
            if (modotropas)
            {
                if (Input.GetKeyDown(kDerecha)) seleccionnodo += lado;
                if (Input.GetKeyDown(kIzquierda)) seleccionnodo -= lado;

                if (Input.GetKeyDown(kColocar_Dirigir) && poblacion > 0) nodoactivo = seleccionnodo;

            //tecla reparar
            tecla_reparar.gameObject.SetActive(false);
            }
            else
            {
            tecla_reparar.gameObject.SetActive(!espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().disponible);
            tecla_reparar.transform.position = espaciostorretas[seleccionespacio].transform.position + Vector3.up * 1.4f;
                //navegación torretas
                for (int i = 0; i < espaciostorretas.Length; i++)
                {
                    if (espaciostorretas[i].transform.position.y > espaciostorretas[seleccionespacio].transform.position.y + 1 && ((espaciostorretas[i].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude < (espaciostorretas[espacioarriba].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude || espaciostorretas[espacioarriba].transform.position.y <= espaciostorretas[seleccionespacio].transform.position.y + 1))
                    {
                        espacioarriba = i;
                    }
                    if (espaciostorretas[i].transform.position.y < espaciostorretas[seleccionespacio].transform.position.y - 1 && ((espaciostorretas[i].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude < (espaciostorretas[espacioabajo].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude || espaciostorretas[espacioabajo].transform.position.y >= espaciostorretas[seleccionespacio].transform.position.y - 1))
                    {
                        espacioabajo = i;
                    }
                    if (espaciostorretas[i].transform.position.x > espaciostorretas[seleccionespacio].transform.position.x + 1 && ((espaciostorretas[i].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude < (espaciostorretas[espacioderecha].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude || espaciostorretas[espacioderecha].transform.position.x <= espaciostorretas[seleccionespacio].transform.position.x + 1))
                    {
                        espacioderecha = i;
                    }
                    if (espaciostorretas[i].transform.position.x < espaciostorretas[seleccionespacio].transform.position.x - 1 && ((espaciostorretas[i].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude < (espaciostorretas[espacioizquierda].transform.position - espaciostorretas[seleccionespacio].transform.position).magnitude || espaciostorretas[espacioizquierda].transform.position.x >= espaciostorretas[seleccionespacio].transform.position.x - 1))
                    {
                        espacioizquierda = i;
                    }

                }
                if (espaciostorretas[espacioarriba].transform.position.y <= espaciostorretas[seleccionespacio].transform.position.y + 1) espacioarriba = seleccionespacio;
                if (espaciostorretas[espacioabajo].transform.position.y >= espaciostorretas[seleccionespacio].transform.position.y - 1) espacioabajo = seleccionespacio;
                if (espaciostorretas[espacioderecha].transform.position.x <= espaciostorretas[seleccionespacio].transform.position.x + 1) espacioderecha = seleccionespacio;
                if (espaciostorretas[espacioizquierda].transform.position.x >= espaciostorretas[seleccionespacio].transform.position.x - 1) espacioizquierda = seleccionespacio;

                if (Input.GetKeyDown(kArriba)) seleccionespacio = espacioarriba;
                if (Input.GetKeyDown(kIzquierda)) seleccionespacio = espacioizquierda;
                if (Input.GetKeyDown(kAbajo)) seleccionespacio = espacioabajo;
                if (Input.GetKeyDown(kDerecha)) seleccionespacio = espacioderecha;
                //colocar torreta
                if (Input.GetKeyDown(kColocar_Dirigir) && suficientedinero)
                {
                    if ((tipotorreta == 0 && niveltorreta0 > 0) || (tipotorreta == 1 && niveltorreta1 > 0) || (tipotorreta == 2 && niveltorreta2 > 0) || (tipotorreta == 3 && niveltorreta3 > 0))
                    {
                        if (GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0)
                        {
                            if (!constructoractivo.GetComponent<Constructor>().ocupado && espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().disponible && !espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().encargada && !espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().bloqueada)
                            {
                                constructoractivo.GetComponent<Constructor>().torreta = espaciostorretas[seleccionespacio].GetComponent<TurretSlot>();
                                espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta = tipotorreta;
                                espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().encargada = true;
                                constructoractivo.GetComponent<Constructor>().ocupado = true;
                                constructoractivo.GetComponent<Constructor>().destino = espaciostorretas[seleccionespacio].transform.position;
                            if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 0)
                            {
                                if(niveltorreta0 == 1) dinero -= 100;
                                if(niveltorreta0 == 2) dinero -= 400;
                                if(niveltorreta0 == 3) dinero -= 800;
                                espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().nivel = niveltorreta0;
                            }
                            if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 1)
                            {
                                if (niveltorreta1 == 1) dinero -= 50;
                                if (niveltorreta1 == 2) dinero -= 200;
                                if (niveltorreta1 == 3) dinero -= 500;
                                espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().nivel = niveltorreta1;
                            }
                            if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 2)
                            {
                                if (niveltorreta2 == 1) dinero -= 150;
                                if (niveltorreta2 == 2) dinero -= 500;
                                if (niveltorreta2 == 3) dinero -= 1000;
                                espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().nivel = niveltorreta2;
                            }
                            if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 3)
                            {
                                if (niveltorreta3 == 1) dinero -= 300;
                                if (niveltorreta3 == 2) dinero -= 700;
                                if (niveltorreta3 == 3) dinero -= 1200;
                                espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().nivel = niveltorreta3;
                            }
                            }
                        }
                    }
                }
            //reparar torreta
            if (((espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 0 && dinero >= 10) || (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 1 && dinero >= 10) || (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 2 && dinero >= 20) || (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 3 && dinero >= 30)) && espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().vida < espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().maxvida)
            {
                tecla_reparar.color = (Input.GetKey(kSpawn_Reparar)) ? color_encendido : color_apagado;
                if (Input.GetKeyDown(kSpawn_Reparar) && GameObject.FindGameObjectsWithTag(tag_constructor).Length > 0)
                {
                    if (!constructoractivo.GetComponent<Constructor>().ocupado && !espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().disponible && !espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().encargada && !espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().bloqueada)
                    {
                        constructoractivo.GetComponent<Constructor>().torreta = espaciostorretas[seleccionespacio].GetComponent<TurretSlot>();
                        espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().encargada = true;
                        constructoractivo.GetComponent<Constructor>().ocupado = true;
                        constructoractivo.GetComponent<Constructor>().reparando = true;
                        constructoractivo.GetComponent<Constructor>().destino = espaciostorretas[seleccionespacio].transform.position;
                        if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 0) dinero -= 10;
                        if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 1) dinero -= 10;
                        if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 2) dinero -= 20;
                        if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 3) dinero -= 60;

                    }
                }
            }
            else
            {
                tecla_reparar.color = (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().vida < espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().maxvida) ?color_deshabilitado:new Color(0,0,0,0);
            }
                //eliminar torreta
                if (Input.GetKeyDown(kEliminar) && !espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().disponible)
                {
                    /*
                    if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 1) dinero += 50;
                    if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 2) dinero += 100;
                    if (espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().tipotorreta == 3) dinero += 150;
                    */

                    espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().disponible = true;
                    StopCoroutine(espaciostorretas[seleccionespacio].GetComponent<TurretSlot>().DelayTorreta()); ;
                }
            }
            //visualizacion de slot seleccionado
            for (int i = 0; i < espaciostorretas.Length; i++)
            {
                if (i == seleccionespacio && !modotropas)
                {
                    espaciostorretas[i].GetComponent<SpriteRenderer>().enabled = true;
                    espaciostorretas[i].GetComponent<TurretSlot>().mostrarArea = true;
                }
                else
                {
                    espaciostorretas[i].GetComponent<SpriteRenderer>().enabled = false;
                    espaciostorretas[i].GetComponent<TurretSlot>().mostrarArea = false;
                }
            }
            //limites seleccion nodos
            if (seleccionnodo < 0) seleccionnodo = 0;
            if (seleccionnodo > nodos.Length - 1) seleccionnodo = nodos.Length - 1;

            tdinero.text = dinero.ToString();

            //vida
            if (vida > 100) vida = 100;
            if (vida <= 0)
            {
                StartCoroutine(GameOver1());
            }
            //color vida
            barravida.GetComponent<RectTransform>().sizeDelta = new Vector2(vida * 7, 10);
            //barravida.GetComponent<Image>().color = Color.LerpUnclamped(new Color(1, 0, 0), new Color(0, 1, 0), vida / 100);
            if (vida >= 50) barravida.GetComponent<Image>().color = new Color((100 - vida) / 50, 1, 0);
            if (vida < 50) barravida.GetComponent<Image>().color = new Color(1, vida / 50, 0);

            //poblacion
            poblacion = GameObject.FindGameObjectsWithTag(tag_tropas).Length;
            tpoblacion.text = poblacion + "/50";

            if (gameover && Input.anyKeyDown)
            {
                StartCoroutine(GameOver2());
            }

        //debug niveles
        if (niveltorreta0 > 3) niveltorreta0 = 3;
        if (niveltorreta3 > 3) niveltorreta2 = 3;
        if (niveltorreta2 > 3) niveltorreta3 = 3;
        if (niveltropa0 > 3) niveltropa0 = 3;
        if (niveltropa1 > 3) niveltropa1 = 3;
        if (niveltropa2 > 3) niveltropa2 = 3;
        if (niveltropa3 > 3) niveltropa3 = 3;
    }

    IEnumerator BaseDinero()
    {
        yield return new WaitForSeconds(5);
        dinero += 10;
        StartCoroutine(BaseDinero());
    }
    IEnumerator SpawnMoneda(int rand)
    {
        for (int i = 0; i < 1500; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        monedita = Instantiate(pickupmoneda, nodos[rand].transform.position, pickupmoneda.transform.rotation);
        monedita.GetComponentInChildren<PickUpMoneda>().cantidad = cantidadmoneda;
        rand = Random.Range(1,(nodos.Length - 1) / 2);
        StartCoroutine(SpawnMoneda(rand));
    }
    IEnumerator GameOver1()
    {
        gameoveranim.enabled = true;
        gameoverflechita.SetActive(false);
        yield return new WaitForSeconds(5);
        gameover = true;
    }
    IEnumerator GameOver2()
    {
        gameoveranim.SetTrigger("Click");
        yield return new WaitForSeconds(3);
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

}
Constructor.cs

Code: Select all

public class Constructor : MonoBehaviour {

    public ControlGeneral cg;
    public bool ocupado;
    public bool reparando;
    public Vector3 prehome;
    public Vector3 home;
    public Vector3 destino;
    public int dir;
    public int velocidad;
    public TurretSlot torreta;
    public GameObject resplandor;
    public int numero = 0;
    string tag_constructor;

    public bool protegido;

    public int vida;

    void Start () {
        vida = 100;
        if (gameObject.CompareTag("ConstructorA"))
        {
            tag_constructor = "ConstructorA";
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        if (gameObject.CompareTag("ConstructorB"))
        {
            tag_constructor = "ConstructorB";
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
        //StartCoroutine(UpdatePosition());
        prehome = transform.position;
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_constructor).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(tag_constructor)[i] == gameObject) numero = i;
        }
        home = prehome + Vector3.down * numero * 0.5f;
        destino = home;
        dir = 1;
        velocidad = 1;
	}
	
	void Update () {
        GetComponent<SpriteRenderer>().sortingOrder = numero + 6;
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_constructor).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(tag_constructor)[i] == gameObject) numero = i;
        }
        home = prehome + Vector3.down * numero * 0.5f;


        transform.position += (destino - transform.position).normalized * 0.01f * velocidad;

        //instante en el que llega a la torreta
        if ((transform.position - destino).magnitude < 0.1f)
        {
            if (ocupado)
            {
                ocupado = false;
                destino = home;
                torreta.disponible = false;
                StartCoroutine(torreta.DelayTorreta());
                torreta.encargada = false;
                torreta.vida = torreta.maxvida;
                StartCoroutine(DelayConstruir());
                GetComponent<Animator>().SetTrigger("Construir");
                if (reparando) /*torreta.GetComponent<Animator>().SetTrigger("Reparar")*/ ;
                else torreta.GetComponent<Animator>().SetTrigger("Construir");
                reparando = false;
                
            }
            else if ((transform.position - destino).magnitude < 0.02f)
            {
                transform.position = destino;
                GetComponent<Animator>().SetBool("Corriendo", false);
            }
        }
        else
        {
            GetComponent<Animator>().SetBool("Corriendo", true);
        }
        //cambio de direccion
        if (destino.x >= transform.position.x) dir = 1;
        else dir = -1;

        transform.localScale = new Vector3(-dir, 1, 1);

        if (vida <= 0)
        {
            if(torreta != null) torreta.encargada = false;
            Destroy(gameObject);
        }
        //reestablecimiento de base
        if ((destino - home).magnitude <= 1.5f && !ocupado)
        {
            destino = home;
        }
        //zona segura
        if ((transform.position - home).magnitude < 1.5f)
        {
            protegido = true;
        }
        else
        {
            protegido = false;
        }

        //torreta bloqueada
        if (ocupado && torreta.bloqueada)
        {
            ocupado = false;
            reparando = false;
            destino = home;
            torreta.encargada = false;
            if (torreta.tipotorreta == 1) cg.dinero += 100;
            if (torreta.tipotorreta == 2) cg.dinero += 200;
            if (torreta.tipotorreta == 3) cg.dinero += 300;
        }

        if (reparando && torreta.disponible && ocupado)
        {
            ocupado = false;
            reparando = false;
            destino = home;
            torreta.encargada = false;
        }
	}
    IEnumerator DelayConstruir()
    {
        velocidad = 0;
        yield return new WaitForSeconds(1);
        velocidad = 1;
    }

}
FadeAway.cs

Code: Select all

public class FadeAway : MonoBehaviour {

    float a = 1;
    public float delay;

	void Start () {
        StartCoroutine(Fade());
	}
	
    IEnumerator Fade()
    {
        yield return new WaitForSeconds(delay);
        for (int i = 0; i < 10; i++)
        {
            a -= 0.1f;
            GetComponent<SpriteRenderer>().color = new Color(GetComponent<SpriteRenderer>().color.r, GetComponent<SpriteRenderer>().color.g, GetComponent<SpriteRenderer>().color.b, a);
            yield return new WaitForSeconds(0.03f);
        }
        if (GetComponentInParent<Transform>() != null) Destroy(GetComponentInParent<Transform>().gameObject);
        Destroy(gameObject);
    }
}
PickUpMoneda.cs

Code: Select all

public class PickUpMoneda : MonoBehaviour {

    public int cantidad;
    float distA;
    float distB;
    int mascercanoA;
    int mascercanoB;


	void Start () {
        //cantidad = Random.Range(100, 400);
        StartCoroutine(Delay());
	}

    void Update()
    {

        if (GameObject.FindGameObjectsWithTag("TropasA").Length > 0)
        {
            distA = Mathf.Infinity;
            mascercanoA = 0;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag("TropasA").Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag("TropasA")[i].transform.position - transform.position).magnitude < distA)
                {
                    distA = (GameObject.FindGameObjectsWithTag("TropasA")[i].transform.position - transform.position).magnitude;
                    mascercanoA = i;
                }
            }
            Debug.DrawRay(transform.position, GameObject.FindGameObjectsWithTag("TropasA")[mascercanoA].transform.position - transform.position, Color.red);
        }
        if (GameObject.FindGameObjectsWithTag("TropasB").Length > 0)
        {
            distB = Mathf.Infinity;
            mascercanoB = 0;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag("TropasB").Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag("TropasB")[i].transform.position - transform.position).magnitude < distB)
                {
                    distB = (GameObject.FindGameObjectsWithTag("TropasB")[i].transform.position - transform.position).magnitude;
                    mascercanoB = i;
                }
            }
            Debug.DrawRay(transform.position, GameObject.FindGameObjectsWithTag("TropasB")[mascercanoB].transform.position - transform.position, Color.green);
            
        }
    }

    void OnTriggerStay2D(Collider2D collision)
    {
        if (mascercanoA < GameObject.FindGameObjectsWithTag("TropasA").Length)
        {
            if (collision.gameObject == GameObject.FindGameObjectsWithTag("TropasA")[mascercanoA])
            {
                collision.GetComponent<Tropa>().grupo.GetComponent<Translacion>().cg.dinero += cantidad;
                collision.GetComponent<Tropa>().grupo.GetComponent<Translacion>().cg.cantidadmoneda += 50;
                Destroy(gameObject);
            }
        }
        if (mascercanoB < GameObject.FindGameObjectsWithTag("TropasB").Length)
        {
            if (collision.gameObject == GameObject.FindGameObjectsWithTag("TropasB")[mascercanoB])
            {
                collision.GetComponent<Tropa>().grupo.GetComponent<Translacion>().cg.dinero += cantidad;
                collision.GetComponent<Tropa>().grupo.GetComponent<Translacion>().cg.cantidadmoneda += 50;
                Destroy(gameObject);
            }
        }
    }

    IEnumerator Delay()
    {
        for (int i = 0; i < 1000; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        GetComponentInParent<Animator>().SetTrigger("Fade");
        for (int i = 0; i < 100; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        Destroy(gameObject);
    }
}
Proyectil.cs

Code: Select all

public class Proyectil : MonoBehaviour {

    public Vector3 origen;
    public Vector3 destino;
    public bool girahaciadireccion;
    public float speed;
    public float altura;
    public Vector3 posicionrecta;
    Vector3 posicionanterior;

	void Start () {
        origen = transform.position;
        posicionanterior = transform.position;
        posicionrecta = transform.position;
        StartCoroutine(DelayDestroy());
	}
	
	void Update () {
        posicionrecta += (destino - origen).normalized * Time.deltaTime * speed;
        transform.position = posicionrecta + (Vector3.up * Mathf.Pow((origen - destino).magnitude * altura, 2)) + (Vector3.down * Mathf.Pow(Mathf.Abs((posicionrecta - origen).magnitude - (posicionrecta - destino).magnitude) * altura, 2));
        if (girahaciadireccion) transform.rotation = Quaternion.LookRotation(Vector3.forward, transform.position - posicionanterior);
        if ((posicionrecta - destino).magnitude < 0.1f) Destroy(gameObject);
	}
    IEnumerator DelayDestroy()
    {
        yield return new WaitForSeconds((destino - origen).magnitude / speed);
        Destroy(gameObject);
    }
}
Juan Camilo Quintero

POO1

User avatar
Gamba04
Posts: 17
Joined: Tue Jan 22, 2019 12:14 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by Gamba04 » Fri Mar 22, 2019 2:25 am

Parte 3

Torreta0.cs

Code: Select all

public class Torreta0 : MonoBehaviour {


    public float ritmodinero;
    public int cantidad;
    public ControlGeneral cg;
    public ControlGeneral cgenemigo;
    public int nivel;


	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
            cgenemigo = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
            
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
            cgenemigo = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        StartCoroutine(Dinero());
    }
    void OnEnable()
    {
        StartCoroutine(Dinero());

    }
    void Update () {

        if (nivel == 1)
        {
            cantidad = 20;
        }
        if (nivel == 2)
        {
            cantidad = 100;
        }
        if (nivel == 3)
        {
            cantidad = Random.Range(100,201);
        }

        if (transform.localPosition.y > 1) GetComponent<SpriteRenderer>().sortingOrder = 7;
        else GetComponent<SpriteRenderer>().sortingOrder = 2;
    }

    IEnumerator Dinero()
    { 
        for (int i = 0; i < ritmodinero * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        cg.dinero += cantidad;
        if (nivel == 3) cgenemigo.dinero -= cantidad;
        StartCoroutine(Dinero());
    }
    
}
Torreta1.cs

Code: Select all

public class Torreta1 : MonoBehaviour {

    public float rango;
    public float ritmoataque;
    public int daño;

    public float dist;
    int mascercano;
    public Tropa enemigo;
    public bool atacando;
    GameObject proyectil;
    public GameObject bala;
    public GameObject cañoncito;

    Vector3 offsetProyectil;
    string tag_tropasEnemigas;
    public int nivel;
    public ControlGeneral cg;


	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            tag_tropasEnemigas = "TropasB";
            offsetProyectil = cañoncito.transform.right * -0.5f + cañoncito.transform.up * 0.15f;
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            tag_tropasEnemigas = "TropasA";
            offsetProyectil = cañoncito.transform.right * 0.5f + cañoncito.transform.up * 0.15f;
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
    }
    void OnEnable()
    {
        StartCoroutine(Disparo());
        StartCoroutine(EncontrarEnemigo());
    }
    void Update() {

        //atacando
        if (enemigo != null)
        {
            if ((enemigo.transform.position - transform.position).magnitude <= rango)
            {
                atacando = true;
            }
            else
            {
                atacando = false;
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) > Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.x - transform.position.x > 0)
                {
                    GetComponent<Animator>().SetBool("Derecha", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward,Vector3.Cross(Vector3.forward, (enemigo.transform.position - transform.position)));
                    offsetProyectil = cañoncito.transform.right * 0.5f + cañoncito.transform.up * 0.15f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Izquierda", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if(atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward,Vector3.Cross((enemigo.transform.position - transform.position), Vector3.forward));
                    offsetProyectil = cañoncito.transform.right * -0.5f + cañoncito.transform.up * 0.15f;
                }
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) < Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.y - transform.position.y > 0)
                {
                    GetComponent<Animator>().SetBool("Arriba", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, (enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * 0.5f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Abajo", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, -(enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * -0.5f;
                }
            }
        }
        else
        {
            atacando = false;
        }
        if (transform.localPosition.y > 1)
        {
            GetComponent<SpriteRenderer>().sortingOrder = 7;
            GetComponentInParent<TurretSlot>().torretaLista = false;
        }
        else
        {
            GetComponent<SpriteRenderer>().sortingOrder = 2;
            GetComponentInParent<TurretSlot>().torretaLista = true;
        }
    }

    IEnumerator Disparo()
    {

        if (enemigo != null && atacando)
        {
            GetComponent<Animator>().SetBool("Ataque", true);
            StartCoroutine(HacerDañoADistancia(enemigo));
            proyectil = Instantiate(bala, transform.position + offsetProyectil, transform.rotation);
            proyectil.GetComponent<Proyectil>().destino = enemigo.transform.position;
        }
        else
        {
            GetComponent<Animator>().SetBool("Ataque", false);
        }
        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        StartCoroutine(Disparo());
    }
    IEnumerator HacerDañoADistancia(Tropa enem)
    {
        yield return new WaitForSeconds((enem.transform.position - transform.position).magnitude / bala.GetComponent<Proyectil>().speed - 0.5f);
        if (enem != null)
        {
            enem.vida -= daño;
            enem.GetComponent<Animator>().SetTrigger("Daño");
        }
    }
    IEnumerator EncontrarEnemigo()
    {
        //enemigo mas cercano
        dist = Mathf.Infinity;
        mascercano = 0;
        if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length > 0)
        {
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < dist)
                {
                    dist = (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude;
                    mascercano = i;
                }

            }
            enemigo = GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[mascercano].GetComponent<Tropa>();
        }
        yield return new WaitForSeconds(0.5f);
        StartCoroutine(EncontrarEnemigo());
    }
    
}
Torreta2.cs

Code: Select all

public class Torreta2 : MonoBehaviour {

    public float rango;
    public float ritmoataque;
    public int daño;

    public float dist;
    int mascercano;
    public Tropa enemigo;
    public bool atacando;
    GameObject proyectil;
    public GameObject bala;
    public GameObject cañoncito;


    Vector3 offsetProyectil;
    string tag_tropasEnemigas;
    public int cantidadenemigos;

    public ControlGeneral cg;
    public int nivel;

	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            tag_tropasEnemigas = "TropasB";
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            tag_tropasEnemigas = "TropasA";
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
        offsetProyectil = Vector3.up;
    }
    void OnEnable()
    {
        StartCoroutine(Disparo());
        StartCoroutine(EncontrarEnemigo());
    }
    void Update () {
        
        
        //atacando
        if (enemigo != null)
        {
            if ((enemigo.transform.position - transform.position).magnitude <= rango)
            {
                atacando = true;
            }
            else
            {
                atacando = false;
            }
            /*if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) > Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.x - transform.position.x > 0)
                {
                    GetComponent<Animator>().SetBool("Derecha", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.Cross(Vector3.forward, (enemigo.transform.position - transform.position)));
                    offsetProyectil = cañoncito.transform.right * 0.5f + cañoncito.transform.up * 0.15f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Izquierda", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.Cross((enemigo.transform.position - transform.position), Vector3.forward));
                    offsetProyectil = cañoncito.transform.right * -0.5f + cañoncito.transform.up * 0.15f;
                }
            }
            if (Mathf.Abs(enemigo.transform.position.x - transform.position.x) < Mathf.Abs(enemigo.transform.position.y - transform.position.y))
            {
                if (enemigo.transform.position.y - transform.position.y > 0)
                {
                    GetComponent<Animator>().SetBool("Arriba", true);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Abajo", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, (enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * 0.5f;
                }
                else
                {
                    GetComponent<Animator>().SetBool("Abajo", true);
                    GetComponent<Animator>().SetBool("Izquierda", false);
                    GetComponent<Animator>().SetBool("Derecha", false);
                    GetComponent<Animator>().SetBool("Arriba", false);
                    if (atacando) cañoncito.transform.rotation = Quaternion.LookRotation(Vector3.forward, -(enemigo.transform.position - transform.position));
                    offsetProyectil = cañoncito.transform.up * -0.5f;
                }
            }*/
        }
        else
        {
            atacando = false;
        }
        if (transform.localPosition.y > 1)
        {
            GetComponent<SpriteRenderer>().sortingOrder = 7;
            GetComponentInParent<TurretSlot>().torretaLista = false;
        }
        else
        {
            GetComponent<SpriteRenderer>().sortingOrder = 2;
            GetComponentInParent<TurretSlot>().torretaLista = true;
        }
    }

    IEnumerator Disparo()
    {

        if (enemigo != null && atacando)
        {
            GetComponent<Animator>().SetTrigger("Disparo");
            yield return new WaitForSeconds(1);
            StartCoroutine(HacerDañoADistancia(enemigo, cantidadenemigos, 1, enemigo.transform.position));
            proyectil = Instantiate(bala, transform.position + offsetProyectil, transform.rotation);
            proyectil.GetComponent<Proyectil>().destino = enemigo.transform.position;
        }

        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        StartCoroutine(Disparo());
    }
    IEnumerator HacerDañoADistancia(Tropa enem, int cantidadenem, float radio, Vector3 posicionenem)
    {
        int cont = 0;
        yield return new WaitForSeconds((enem.transform.position - transform.position).magnitude / bala.GetComponent<Proyectil>().speed);
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i] != null)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - posicionenem).magnitude < radio && cont <= cantidadenem)
                {
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Tropa>().vida -= daño;
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Animator>().SetTrigger("Daño");
                    cont++;
                }
            }
        }
    }
    IEnumerator EncontrarEnemigo()
    {
        //enemigo mas cercano
        dist = Mathf.Infinity;
        mascercano = 0;
        if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length > 0)
        {
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < dist)
                {
                    dist = (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude;
                    mascercano = i;
                }

            }
            enemigo = GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[mascercano].GetComponent<Tropa>();
        }
        yield return new WaitForSeconds(0.5f);
        StartCoroutine(EncontrarEnemigo());
    }
    
}
Torreta3.cs

Code: Select all

public class Torreta3 : MonoBehaviour {

    public float rango;
    public float ritmoataque;
    public int daño;

    public float dist;
    int mascercano;
    public Tropa enemigo;
    public bool atacando;
    public GameObject cañoncito;


    string tag_tropasEnemigas;

    public ControlGeneral cg;
    public int nivel;

	void Start () {
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotA"))
        {
            tag_tropasEnemigas = "TropasB";
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        if (GetComponentInParent<TurretSlot>().gameObject.CompareTag("Turret SlotB"))
        {
            tag_tropasEnemigas = "TropasA";
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
    }
    void OnEnable()
    {
        StartCoroutine(Disparo());
        StartCoroutine(EncontrarEnemigo());
        StartCoroutine(DelayNivel());
    }
    void Update () {
        
        
        //atacando
        if (enemigo != null)
        {
            if ((enemigo.transform.position - transform.position).magnitude <= rango)
            {
                atacando = true;
            }
            else
            {
                atacando = false;
            }
            
                if (enemigo.transform.position.x - transform.position.x > 0)
                {
                transform.localScale = new Vector3(1, 1, 1);
                }
                else
                {
                transform.localScale = new Vector3(-1, 1, 1);
                }
            
        }
        else
        {
            atacando = false;
        }
        if (transform.localPosition.y > 1)
        {
            GetComponent<SpriteRenderer>().sortingOrder = 7;
            GetComponentInParent<TurretSlot>().torretaLista = false;
        }
        else
        {
            GetComponent<SpriteRenderer>().sortingOrder = 2;
            GetComponentInParent<TurretSlot>().torretaLista = true;
        }

       
    }

    IEnumerator Disparo()
    {
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i] != null)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < rango)
                {
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Tropa>().vida -= daño;
                    GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].GetComponent<Animator>().SetTrigger("Daño");
                }
            }
        }
        if (enemigo != null && atacando)
        {
            GetComponent<Animator>().SetBool("Ataque", true);

        }
        else
        {
            GetComponent<Animator>().SetBool("Ataque", false);
        }
        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        StartCoroutine(Disparo());
    }
    IEnumerator EncontrarEnemigo()
    {
        //enemigo mas cercano
        dist = Mathf.Infinity;
        mascercano = 0;
        if (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length > 0)
        {
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_tropasEnemigas).Length; i++)
            {
                if ((GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude < dist)
                {
                    dist = (GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[i].transform.position - transform.position).magnitude;
                    mascercano = i;
                }

            }
            enemigo = GameObject.FindGameObjectsWithTag(tag_tropasEnemigas)[mascercano].GetComponent<Tropa>();
        }
        yield return new WaitForSeconds(0.5f);
        StartCoroutine(EncontrarEnemigo());
    }
    IEnumerator DelayNivel()
    {
        yield return new WaitForEndOfFrame();
        nivel = cg.niveltorreta0;
    }
}
Translacion.cs

Code: Select all

public class Translacion : MonoBehaviour {


    public GameObject[] nodos;
    public float ubicacionfrontal;
    public float ubicaciontrasera;
    public float separacion;
    public Vector3 frente;
    public Vector3 atras;

    public int nodoactivo;
    public float magnitudactual;
    public float diferenciaubicaciones;

    public bool[] arraytropas;
    public bool lleno;
    public int cantidadtropas;

    public int numerofila;
    public int dir;
    public ControlGeneral cg;
    public bool debugnumerofila;

    float offsettiempo;
    public bool enfrentamiento;

    public bool estacionado;

    void Start () {
        offsettiempo = Time.time;
        diferenciaubicaciones = 5;
        ubicacionfrontal = 0;
        arraytropas = new bool[10];
        numerofila = 0;

    }//Reemplazar ControlGeneral y array de Translacion

    void Update() {
        //información de ControlGeneral
        nodos = cg.nodos;
        nodoactivo = cg.nodoactivo;
        
        //float ubicación --> posición real
        for (int i = 0; i < nodos.Length - 1; i++)
        {

            if (ubicacionfrontal >= i * 100f / (nodos.Length - 1) && ubicacionfrontal <= (i + 1) * 100f / (nodos.Length - 1))
            {
                frente = nodos[i].transform.position + (nodos[i + 1].transform.position - nodos[i].transform.position) * ((ubicacionfrontal - i * 100f / (nodos.Length - 1)) / (100f / (nodos.Length - 1)));
                magnitudactual = (nodos[i + 1].transform.position - nodos[i].transform.position).magnitude;
            }

            if (ubicaciontrasera >= i * 100f / (nodos.Length - 1) && ubicaciontrasera <= (i + 1) * 100f / (nodos.Length - 1))
            {
                atras = nodos[i].transform.position + (nodos[i + 1].transform.position - nodos[i].transform.position) * ((ubicaciontrasera - i * 100f / (nodos.Length - 1)) / (100f / (nodos.Length - 1)));

            }

        }

        //voy a hacerme las pastas, anda viendo el codigo <<<<<

        //movimiento hacia nodoactivo
        if (ubicacionfrontal + numerofila * 1.5f < nodoactivo * 100 / (nodos.Length - 1) + 2.5f && !enfrentamiento)
        {
            ubicacionfrontal += 0.05f * separacion / magnitudactual;
            dir = 1;
        }
        if (ubicacionfrontal + numerofila * 1.5f > nodoactivo * 100 / (nodos.Length - 1) + 2.5f)
        {
            ubicacionfrontal -= 0.05f * separacion / magnitudactual;
            dir = -1;
        }

        if (Mathf.Abs((ubicacionfrontal + numerofila * 1.5f) - (nodoactivo * 100 / (nodos.Length - 1) + 2.5f)) < 1) estacionado = true;
        else estacionado = false;

        //limites de ubicacion frontal
            if (ubicacionfrontal < 0) ubicacionfrontal = 0;
        if (ubicacionfrontal > 100) ubicacionfrontal = 100;

        //separacion ubicaciones
        diferenciaubicaciones += (5 / magnitudactual - diferenciaubicaciones) * 0.01f;
        ubicaciontrasera = ubicacionfrontal - diferenciaubicaciones;

        //limite ubicacion trasera
        if (ubicaciontrasera < 0) ubicaciontrasera = 0;

        //posicion grupo
        transform.position = atras + (frente - atras) * 0.5f;


        Debug.DrawRay(atras, frente - atras, Color.white);

        //bool lleno
        lleno = true;
        cantidadtropas = 0;
        foreach (bool b in arraytropas) if (!b) lleno = false; else cantidadtropas++;
        //debug enfrentamiento grupo vacio  
        if (cantidadtropas == 0) enfrentamiento = false;

        //fusion grupos
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(gameObject.tag).Length; i++)
        {
            if (this == GameObject.FindGameObjectsWithTag(gameObject.tag)[i].GetComponent<Translacion>())
            {
                for (int o = 0; o < GameObject.FindGameObjectsWithTag(gameObject.tag).Length; o++)
                {
                    if (Mathf.Abs(this.ubicacionfrontal - GameObject.FindGameObjectsWithTag(gameObject.tag)[o].GetComponent<Translacion>().ubicacionfrontal) < 2 && i > o && Time.time - offsettiempo > 1)
                    {
                        if (cantidadtropas + GameObject.FindGameObjectsWithTag(gameObject.tag)[o].GetComponent<Translacion>().cantidadtropas <= 5)
                        {
                            Destroy(GameObject.FindGameObjectsWithTag(gameObject.tag)[i].gameObject);
                        }
                        else
                        {
                            numerofila = GameObject.FindGameObjectsWithTag(gameObject.tag)[o].GetComponent<Translacion>().numerofila + 1;
                        }
                    }

                }
            }
            

        }
        //Debug numero fila
        debugnumerofila = false;
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(gameObject.tag).Length; i++)
        {
            if (GameObject.FindGameObjectsWithTag(gameObject.tag)[i].GetComponent<Translacion>().numerofila == numerofila - 1) debugnumerofila = true;
        }
            if (!debugnumerofila && numerofila > 0) numerofila--;
    
    }

    
}
Tropa.cs

Code: Select all

public class Tropa : MonoBehaviour {

    public int vida;
    public float rango;
    public float ritmoataque;
    public int dañoataque;
    public float tamaño;
    public bool ataqueadistancia;
    public float valortropa;

    public GameObject flecha;
    public float dist;
    public int mascercano;
    public GameObject grupo;
    public bool entro;
    public int dir;
    public Tropa enemigotropa;
    public Constructor enemigoconstructor;
    public TurretSlot enemigotorreta;

    string tag_Grupo;
    string tag_TropaEnemiga;
    string tag_ConstructorEnemigo;
    string tag_TorretaEnemiga;

    public bool atacando;
    public GameObject signoexclamacion;
    bool exclamacion;
    int frente;
    GameObject proyectil;
    public string tipoenemigo;
    public bool prioridadtropas;
    public Vector3 areabase;
    public GameObject silueta;
    float r;
    float g;
    float b;
    public GameObject triggermeta;
    public ControlGeneral controlenemigo;


    void Start () {
        r = GetComponent<SpriteRenderer>().color.r;
        g = GetComponent<SpriteRenderer>().color.g;
        b = GetComponent<SpriteRenderer>().color.b;
        if (gameObject.CompareTag("TropasA"))
        {
            tag_Grupo = "GrupoA";
            tag_TropaEnemiga = "TropasB";
            tag_ConstructorEnemigo = "ConstructorB";
            tag_TorretaEnemiga = "Turret SlotB";
            frente = 1;
            triggermeta = GameObject.Find("Trigger B");
            controlenemigo = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
        if (gameObject.CompareTag("TropasB"))
        {
            tag_Grupo = "GrupoB";
            tag_TropaEnemiga = "TropasA";
            tag_ConstructorEnemigo = "ConstructorA";
            tag_TorretaEnemiga = "Turret SlotA";
            frente = -1;
            triggermeta = GameObject.Find("Trigger A");
            controlenemigo = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        dir = 1;
        //adoptamiento de grupo
        dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[0].transform.position).magnitude);
        for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_Grupo).Length; i++)
        {
            if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude) < dist)
            {
                dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude);
                mascercano = i;
            }
        }
        grupo = GameObject.FindGameObjectsWithTag(tag_Grupo)[mascercano];

            //Anotarse a la fila
        if (!grupo.GetComponent<Translacion>().lleno)
        {
            for (int i = 0; i < grupo.GetComponent<Translacion>().arraytropas.Length; i++)
            {
                if (!grupo.GetComponent<Translacion>().arraytropas[i])
                {
                    grupo.GetComponent<Translacion>().arraytropas[i] = true;
                    entro = true;
                    break;
                }

            }

        }
        
        StartCoroutine(Ataque());
    }
	
	void Update () {
        //silueta base
        if ((areabase - transform.position).magnitude < 2.5f - frente * 0.5f)
        {
            silueta.SetActive(true);
        }
        else
        {
            silueta.SetActive(false);
        }
        //readopatmiento de grupo
        if (grupo == null || (grupo.GetComponent<Translacion>().lleno && !entro))
        {
            entro = false;
            mascercano = 0;
            //dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[0].transform.position).magnitude);
            dist = Mathf.Infinity;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_Grupo).Length; i++)
            {
                if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude) < dist && !GameObject.FindGameObjectsWithTag(tag_Grupo)[i].GetComponent<Translacion>().lleno)
                {
                    dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_Grupo)[i].transform.position).magnitude);
                    mascercano = i;
                }
            }
            grupo = GameObject.FindGameObjectsWithTag(tag_Grupo)[mascercano].gameObject;
            //Anotarse a la fila
            if (!grupo.GetComponent<Translacion>().lleno)
            {
                for (int i = 0; i < grupo.GetComponent<Translacion>().arraytropas.Length; i++)
                {
                    if (!grupo.GetComponent<Translacion>().arraytropas[i])
                    {
                        grupo.GetComponent<Translacion>().arraytropas[i] = true;
                        entro = true;
                        break;
                    }

                }

            }
        }
        //atracción al grupo
        GetComponent<Rigidbody2D>().AddForce((grupo.transform.position - transform.position) * 20 * Random.Range(0, 20));
        //teleport al grupo
        if ((grupo.transform.position - transform.position).magnitude > 3) transform.position = grupo.transform.position;
        //direccion
        if (!atacando)
        {
            if (grupo.GetComponent<Translacion>().frente.x > grupo.GetComponent<Translacion>().atras.x) dir = 1 * grupo.GetComponent<Translacion>().dir;
            if (grupo.GetComponent<Translacion>().frente.x < grupo.GetComponent<Translacion>().atras.x) dir = -1 * grupo.GetComponent<Translacion>().dir;
        }
        else
        {
            if (tipoenemigo == "Tropa" && enemigotropa != null) dir = (enemigotropa.transform.position.x > transform.position.x) ? 1 : -1;
            if (tipoenemigo == "Constructor" && enemigoconstructor != null) dir = (enemigoconstructor.transform.position.x > transform.position.x) ? 1 : -1;
            if (tipoenemigo == "Torreta" && enemigotorreta != null) dir = (enemigotorreta.transform.position.x > transform.position.x) ? 1 : -1;
        }

        transform.localScale = new Vector3(-dir, 1, 1) * tamaño;

        dist = Mathf.Infinity;
        prioridadtropas = false;
        //enemigo mas cercano
        if (GameObject.FindGameObjectsWithTag(tag_TropaEnemiga).Length > 0)
        {
            mascercano = 0;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_TropaEnemiga).Length; i++)
            {
                if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TropaEnemiga)[i].transform.position).magnitude) < dist)
                {
                    dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TropaEnemiga)[i].transform.position).magnitude);
                    mascercano = i;
                    tipoenemigo = "Tropa";
                }
            }
                enemigotropa = GameObject.FindGameObjectsWithTag(tag_TropaEnemiga)[mascercano].GetComponent<Tropa>();
            if(enemigotropa != null) if ((transform.position - enemigotropa.transform.position).magnitude <= rango) prioridadtropas = true;
        }
            //constructor mas cercano
        if (GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo).Length > 0 )
        {
            mascercano = 0;
            
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo).Length; i++)
                {
                    if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo)[i].transform.position).magnitude) < dist && !prioridadtropas)
                    {
                        dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo)[i].transform.position).magnitude);
                        mascercano = i;
                        tipoenemigo = "Constructor";
                    }
                }
            enemigoconstructor = GameObject.FindGameObjectsWithTag(tag_ConstructorEnemigo)[mascercano].GetComponent<Constructor>();
        }
            // torreta mas cercana
        if (GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga).Length > 0)
        {
            mascercano = 0;
            for (int i = 0; i < GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga).Length; i++)
                {
                    if (Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[i].transform.position).magnitude) < dist && !GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[i].GetComponent<TurretSlot>().disponible && !prioridadtropas)
                    {
                        dist = Mathf.Abs((transform.position - GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[i].transform.position).magnitude);
                        mascercano = i;
                        tipoenemigo = "Torreta";
                    }
                }
                enemigotorreta = GameObject.FindGameObjectsWithTag(tag_TorretaEnemiga)[mascercano].GetComponent<TurretSlot>();
        }

        //muerte
        if (vida <= 0)
        {
            //Desanotarse de la fila
            for (int i = grupo.GetComponent<Translacion>().arraytropas.Length - 1; i >= 0; i--)
            {
                if (grupo.GetComponent<Translacion>().arraytropas[i])
                {
                    grupo.GetComponent<Translacion>().arraytropas[i] = false;
                    break;
                }

            }
            Destroy(gameObject);
        }
        //atacando
        if (tipoenemigo == "Tropa")
        {
            if (enemigotropa != null)
            {
                if ((transform.position - enemigotropa.transform.position).magnitude <= rango)
                {
                    atacando = true;
                    grupo.GetComponent<Translacion>().enfrentamiento = true;
                    if (!exclamacion)
                    {
                        exclamacion = true;
                        Instantiate(signoexclamacion, transform.position + new Vector3(0.5f * frente, 0.5f, 0), transform.rotation);
                    }

                }
                else
                {
                    atacando = false;
                    exclamacion = false;
                }
            }
            else
            {
                atacando = false;
            }
        }
        if (tipoenemigo == "Constructor")
        {
            if (enemigoconstructor != null)
            {
                if ((transform.position - enemigoconstructor.transform.position).magnitude <= rango && !enemigoconstructor.protegido)
                {
                    atacando = true;
                    grupo.GetComponent<Translacion>().enfrentamiento = true;
                    if (!exclamacion)
                    {
                        exclamacion = true;
                        Instantiate(signoexclamacion, transform.position + new Vector3(0.5f * frente, 0.5f, 0), transform.rotation);
                    }
                }
                else
                {
                    atacando = false;
                    exclamacion = false;
                }
            }
            else
            {
                atacando = false;
            }
        }
        if (tipoenemigo == "Torreta" )
        {
            if (!enemigotorreta.disponible)
            {
                if (((ataqueadistancia && (transform.position - enemigotorreta.transform.position).magnitude <= rango) || (!ataqueadistancia && (transform.position - enemigotorreta.transform.position).magnitude <= rango * 2)) && grupo.GetComponent<Translacion>().estacionado)
                {
                    atacando = true;
                    if (!exclamacion)
                    {
                        exclamacion = true;
                        Instantiate(signoexclamacion, transform.position + new Vector3(0.5f * frente, 0.5f, 0), transform.rotation);
                    }
                }
                else
                {
                    atacando = false;
                    exclamacion = false;
                }
            }
            else
            {
                atacando = false;
            }
        }
        
        transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y * 0.1f);

        if (!grupo.GetComponent<Translacion>().estacionado)
        {
            GetComponent<Animator>().SetBool("Corriendo", true);
        }
        else
        {
            GetComponent<Animator>().SetBool("Corriendo", false);
        }
    }
    void OnTriggerEnter2D(Collider2D collision)
    {
        //llega a meta
        if (collision.gameObject == triggermeta)
        {
            controlenemigo.vida -= valortropa;
            //Desanotarse de la fila
            for (int i = grupo.GetComponent<Translacion>().arraytropas.Length - 1; i >= 0; i--)
            {
                if (grupo.GetComponent<Translacion>().arraytropas[i])
                {
                    grupo.GetComponent<Translacion>().arraytropas[i] = false;
                    break;
                }

            }
            Destroy(gameObject);
        }
        
    }
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (collision.name == "Trigger Centro 1" || collision.name == "Trigger Centro 2")
        {
            GetComponent<Rigidbody2D>().AddForce(collision.transform.up * 100);
        }
    }

    IEnumerator Ataque()
    {
        if (atacando)
        {
            GetComponent<Animator>().SetBool("Ataque", true);
            if (tipoenemigo == "Tropa" && enemigotropa != null)
            {
                if (!ataqueadistancia)
                {
                    enemigotropa.vida -= dañoataque;
                    enemigotropa.GetComponent<Animator>().SetTrigger("Daño");
                }
                else StartCoroutine(HacerDañoADistancia(enemigotropa, null, null,enemigotropa.transform.position));
                
            }
            if (tipoenemigo == "Constructor" && enemigoconstructor != null)
            {
                if (!ataqueadistancia) enemigoconstructor.vida -= dañoataque;
                else StartCoroutine(HacerDañoADistancia(null, enemigoconstructor, null, enemigoconstructor.transform.position));
                enemigoconstructor.GetComponent<Animator>().SetTrigger("Daño");
            }
            if (tipoenemigo == "Torreta" && enemigotorreta != null)
            {
                if (!ataqueadistancia) enemigotorreta.vida -= dañoataque;
                else StartCoroutine(HacerDañoADistancia(null, null, enemigotorreta, enemigotorreta.transform.position));
                enemigotorreta.GetComponent<Animator>().SetTrigger("Daño");
            }
            if (ataqueadistancia)
            {
                if (tipoenemigo == "Tropa" && enemigotropa != null)
                {
                    proyectil = Instantiate(flecha, transform.position, transform.rotation);
                    proyectil.GetComponent<Proyectil>().destino = enemigotropa.transform.position;
                }
                if (tipoenemigo == "Constructor" && enemigoconstructor != null)
                {
                    proyectil = Instantiate(flecha, transform.position, transform.rotation);
                    proyectil.GetComponent<Proyectil>().destino = enemigoconstructor.transform.position;
                }
                if (tipoenemigo == "Torreta" && enemigotorreta != null)
                {
                    proyectil = Instantiate(flecha, transform.position, transform.rotation);
                    proyectil.GetComponent<Proyectil>().destino = enemigotorreta.transform.position;
                }
            }
        }
        else
        {
            GetComponent<Animator>().SetBool("Ataque", false);
        }
        for (int i = 0; i < ritmoataque * 50; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        if (grupo != null) grupo.GetComponent<Translacion>().enfrentamiento = false;
        StartCoroutine(Ataque());
    }
    IEnumerator Daño()
    {
        float cr = r;
        float cg = g;
        float cb = b;
        for (int i = 0; i < 50; i++)
        {
            cg -= 0.02f * g;
            cb -= 0.02f * b;
            GetComponent<SpriteRenderer>().color = new Color(cr, cg, cb);
            yield return new WaitForSeconds(0.01f);
        }
        for (int i = 0; i < 50; i++)
        {
            cg += 0.02f * g;
            cb += 0.02f * b;
            GetComponent<SpriteRenderer>().color = new Color(cr, cg, cb);
            yield return new WaitForSeconds(0.01f);
        }
    }
    IEnumerator HacerDañoADistancia(Tropa enem, Constructor constructor, TurretSlot torreta, Vector3 destino)
    {
        yield return new WaitForSeconds((destino - transform.position).magnitude / flecha.GetComponent<Proyectil>().speed);
        if (enem != null)
        {
            enem.vida -= dañoataque;
            enem.GetComponent<Animator>().SetTrigger("Daño");
        }
        if (torreta != null)
        {
            torreta.vida -= dañoataque;
        }
        if (constructor != null)
        {
            constructor.vida -= dañoataque;
        }
    }
}
TurretSlot.cs

Code: Select all

public class TurretSlot : MonoBehaviour {

    public bool disponible;
    public bool encargada;
    public bool bloqueada;
    public int tipotorreta;
    public GameObject[] torreta0;
    public GameObject[] torreta1;
    public GameObject[] torreta2;
    public GameObject[] torreta3;
    public TurretSlot torretacentral;

    public int vida;
    public int maxvida;
    public int nivel;

    public bool mostrarArea;
    public bool torretaLista;
    public GameObject[] area1;
    public GameObject[] area2;
    public GameObject[] area3;

    public ControlGeneral cg;

    public GameObject indicador;

    void Start () {
        disponible = true;
        tipotorreta = 0;
        vida = 1000;
        maxvida = 100;

        if (gameObject.CompareTag("Turret SlotA"))
        {
            cg = GameObject.Find("Control General A").GetComponent<ControlGeneral>();
        }
        if (gameObject.CompareTag("Turret SlotB"))
        {
            cg = GameObject.Find("Control General B").GetComponent<ControlGeneral>();
        }
    }
	
	void Update () {


        if (mostrarArea && torretaLista)
        {
            foreach(GameObject a in area1) a.SetActive(true);
            foreach (GameObject a in area2) a.SetActive(true);
            foreach (GameObject a in area3) a.SetActive(true);
        }
        else
        {
            foreach (GameObject a in area1) a.SetActive(false);
            foreach (GameObject a in area2) a.SetActive(false);
            foreach (GameObject a in area3) a.SetActive(false);
        }
        if (tipotorreta == 0)
        {
            if(nivel == 1) maxvida = 500;
            if(nivel == 2) maxvida = 1000;
            if(nivel == 3) maxvida = 1500;
        }
        if (tipotorreta == 1)
        {
            if (nivel == 1) maxvida = 200;
            if (nivel == 2) maxvida = 600;
            if (nivel == 3) maxvida = 1000;
        }
        if (tipotorreta == 2)
        {
            if (nivel == 1) maxvida = 500;
            if (nivel == 2) maxvida = 1000;
            if (nivel == 3) maxvida = 1500;
        }
        if (tipotorreta == 3)
        {
            if (nivel == 1) maxvida = 1000;
            if (nivel == 2) maxvida = 2000;
            if (nivel == 3) maxvida = 3000;
        }

        if (!disponible && !bloqueada)
        {
            if (torretacentral != null)
            {
                torretacentral.bloqueada = true;
                torretacentral.disponible = true;
            }

            if (tipotorreta == 0)
            {
                torreta1[0].SetActive(false);
                torreta1[1].SetActive(false);
                torreta1[2].SetActive(false);
                torreta2[0].SetActive(false);
                torreta2[1].SetActive(false);
                torreta2[2].SetActive(false);
                torreta3[0].SetActive(false);
                torreta3[1].SetActive(false);
                torreta3[2].SetActive(false);
                if (nivel == 1)
                {
                    torreta0[0].SetActive(true);
                    torreta0[1].SetActive(false);
                    torreta0[2].SetActive(false);
                }
                if (nivel == 2)
                {
                    torreta0[0].SetActive(false);
                    torreta0[1].SetActive(true);
                    torreta0[2].SetActive(false);
                }
                if (nivel == 3)
                {
                    torreta0[0].SetActive(false);
                    torreta0[1].SetActive(false);
                    torreta0[2].SetActive(true);
                }
                
            }

            if (tipotorreta == 1)
            {
                torreta0[0].SetActive(false);
                torreta0[1].SetActive(false);
                torreta0[2].SetActive(false);
                torreta2[0].SetActive(false);
                torreta2[1].SetActive(false);
                torreta2[2].SetActive(false);
                torreta3[0].SetActive(false);
                torreta3[1].SetActive(false);
                torreta3[2].SetActive(false);
                if (nivel == 1)
                {
                    torreta1[0].SetActive(true);
                    torreta1[1].SetActive(false);
                    torreta1[2].SetActive(false);
                }
                if (nivel == 2)
                {
                    torreta1[0].SetActive(false);
                    torreta1[1].SetActive(true);
                    torreta1[2].SetActive(false);
                }
                if (nivel == 3)
                {
                    torreta1[0].SetActive(false);
                    torreta1[1].SetActive(false);
                    torreta1[2].SetActive(true);
                }
            }
            if (tipotorreta == 2)
            {
                torreta0[0].SetActive(false);
                torreta0[1].SetActive(false);
                torreta0[2].SetActive(false);
                torreta1[0].SetActive(false);
                torreta1[1].SetActive(false);
                torreta1[2].SetActive(false);
                torreta3[0].SetActive(false);
                torreta3[1].SetActive(false);
                torreta3[2].SetActive(false);
                if (nivel == 1)
                {
                    torreta2[0].SetActive(true);
                    torreta2[1].SetActive(false);
                    torreta2[2].SetActive(false);
                }
                if (nivel == 2)
                {
                    torreta2[0].SetActive(false);
                    torreta2[1].SetActive(true);
                    torreta2[2].SetActive(false);
                }
                if (nivel == 3)
                {
                    torreta2[0].SetActive(false);
                    torreta2[1].SetActive(false);
                    torreta2[2].SetActive(true);
                }
            }
            if (tipotorreta == 3)
            {
                torreta0[0].SetActive(false);
                torreta0[1].SetActive(false);
                torreta0[2].SetActive(false);
                torreta1[0].SetActive(false);
                torreta1[1].SetActive(false);
                torreta1[2].SetActive(false);
                torreta2[0].SetActive(false);
                torreta2[1].SetActive(false);
                torreta2[2].SetActive(false);
                if (nivel == 1)
                {
                    torreta3[0].SetActive(true);
                    torreta3[1].SetActive(false);
                    torreta3[2].SetActive(false);
                }
                if (nivel == 2)
                {
                    torreta3[0].SetActive(false);
                    torreta3[1].SetActive(true);
                    torreta3[2].SetActive(false);
                }
                if (nivel == 3)
                {
                    torreta3[0].SetActive(false);
                    torreta3[1].SetActive(false);
                    torreta3[2].SetActive(true);
                }
            }
        }
        else
        {
            if (torretacentral != null)
            {
                torretacentral.bloqueada = false;
            }

            torreta0[0].SetActive(false);
            torreta0[1].SetActive(false);
            torreta0[2].SetActive(false);
            torreta1[0].SetActive(false);
            torreta1[1].SetActive(false);
            torreta1[2].SetActive(false);
            torreta2[0].SetActive(false);
            torreta2[1].SetActive(false);
            torreta2[2].SetActive(false);
            torreta3[0].SetActive(false);
            torreta3[1].SetActive(false);
            torreta3[2].SetActive(false);
        }
        if (vida <= 0)
        {
            disponible = true;
            vida = maxvida;
        }
        //indicador
        if (disponible)
        {
            indicador.GetComponent<Animator>().SetBool("Visible", false);
        }
        else
        {
            indicador.GetComponent<Animator>().SetBool("Visible", true);
        }
	}
    public IEnumerator DelayTorreta()
    {
        for (int i = 0; i < 10000; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        GetComponent<Animator>().SetBool("Time Out", true);
        for (int i = 0; i < 300; i++)
        {
            yield return new WaitForEndOfFrame();
        }
        GetComponent<Animator>().SetBool("Time Out", false);
        disponible = true;
    }
}
Juan Camilo Quintero

POO1

User avatar
Gamba04
Posts: 17
Joined: Tue Jan 22, 2019 12:14 pm
Location: Medellín

Re: Neugier Battles - Wintergarnele Studios

Post by Gamba04 » Fri Mar 22, 2019 2:38 am

Videos

Parte 1



Parte 2



Elementos a destacar:

Implementación de niveles en todas las tropas y torretas.
Buen funcionamiento del sistema de mejora de niveles.
Implementación de un sistema más intuitivo de instrucciones en tiempo real, coordinado y sincronizado al uso del jugador.
Avance y mejora gráfica a grandes rasgos.
Funciones del juego más balanceadas para mantener actividad equilibrada a lo largo de toda la partida.
Mejoras de errores, un mejor funcionamiento a nivel general.
Juan Camilo Quintero

POO1

Post Reply