ARZ VEGA - Epcot

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

Moderator: julianmartinez16

User avatar
SebasARZ25
Posts: 18
Joined: Thu Jul 26, 2018 6:28 am

Re: ARZ VEGA - Epcot

Post by SebasARZ25 » Tue Sep 18, 2018 1:41 am

¿Que se hizo?
Creación de bala y que las torres les dispararan a los enemigos.
¿Que se va a hacer?
Implementación de la barra de salud y hacer que los enemigos ataquen a las torres.
Si se terminan estos avances oportunamente se espera seguir avanzado con el proyecto en mejoras de lo que ya se hizo y agregando nuevas funciones.
¿Que problemas hubo?
Organización de tiempo.


Nuevo código de unidad

Code: Select all


    public GameObject ruta;
    private int indice;
    private Vector3 posicion_inicial;
    private Vector3 posicion_siguiente;
    private float vel = 2;
    private float distancia_punto = 0.2f;

    void Start() {
        posicion_inicial = this.transform.position;
        posicion_siguiente = ruta.transform.GetChild(0).position;

    }
    void Update() {
        Vector3 dir = posicion_siguiente - this.transform.position;

        this.transform.position += dir * vel * Time.deltaTime;

        if (dir.magnitude <= distancia_punto)
        {
            if (indice + 1 < ruta.transform.childCount)
            {
                indice++;
                posicion_siguiente = ruta.transform.GetChild(indice).position;
                Debug.Log("xs" + posicion_siguiente.x + "ys" + posicion_siguiente.y + "zs" + posicion_siguiente.z);
            }
            else
            {
                indice = 0;
                this.transform.position = posicion_inicial;
                posicion_siguiente = ruta.transform.GetChild(0).position;

            }
        }
Nuevo código de Torre

Code: Select all

   public GameObject enemigo;
    private bool esta_activa;
    private float distancia_umbral = 4;

    public bool Esta_activa
    {
        get
        {
            return esta_activa;
        }

        set
        {
            esta_activa = value;
        }
    }

    void Start () {
		
	}
	
	void Update () {
        enemigo = BuscarEnemigoCercano();
        if (enemigo != null)
        {
            Disparar();
            Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.white);
        }
		
	}

    void Disparar()
    {
        GameObject obj = (GameObject)Instantiate(GameObject.Find("bala"),this.transform.position, Quaternion.identity);
        Bala bala = obj.GetComponent<Bala>();
        bala.ActivarBala(this);
    }

    GameObject BuscarEnemigoCercano()
    {
        ArrayList enemigos = PoolingdeUnidades.unidades;
        GameObject temp;
        foreach (Object item in enemigos)
        {
            temp = (GameObject)item;
            if (Vector3.Distance(temp.transform.position, this.transform.position) < distancia_umbral)
            {
                return temp;
            }
        }
        return null;
    }
Codigo de bala o proyectil:

Code: Select all

    private GameObject objetivo;
    private float velocidad = 2;



	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        Vector3 direccion;
        if (objetivo != null)
        {
            direccion = objetivo.transform.position - this.transform.position;
            this.transform.position += velocidad * direccion * Time.deltaTime;

        }

    }
    public void ActivarBala(Torre torre)
    {
        objetivo = torre.enemigo;
    }
Lanzamiento de los proyectiles a los enemigos y destrucción de los mismos:

Juan Sebastian Ariza Jimenez
Programación orientada a objetos

User avatar
atv234
Posts: 78
Joined: Tue Jan 19, 2016 12:05 pm

Re: ARZ VEGA - Epcot

Post by atv234 » Wed Sep 19, 2018 10:14 pm

¿Que Hicimos?
Creamos el Símbolo de vida y dinero con su respectivo script y función corrección de un código repetido
¿Que vamos a hacer?
Que el enemigo al colisionar desaparezca y quite una vida, o que muera con el disparo
¿Que dificultades?
Hay un problema con unity que al correr la ventana esta se pone en negro y deja de funcionar unity, al trabajar en 3D es un reto pero se sacara adelante :ugeek: :lol:



LiveUI

Code: Select all


using UnityEngine.UI;
public class LiveUI : MonoBehaviour {

    public Text livesText;

	// Use this for initialization
	void Start ()
    {
		
	}
	
	// Update is called once per frame
	void Update ()
    {
        livesText.text = PlayerStats.Lives+"LIVES";
	}
}

PlayerStats

Code: Select all

public class PlayerStats : MonoBehaviour {

    public static int Money;
    public int startMoney = 100;
    public static int Lives;
    public int startLives = 20;
  
    // Use this for initialization
    void Start()
    {
        Money = startMoney;
        Lives = startLives;
    }

    
    
	
	// Update is called once per frame
	void Update () {
		
	}
}

Image
Daniel Vega Balbin

Programación y diseño orientado a objetos :evil: :ugeek:

User avatar
atv234
Posts: 78
Joined: Tue Jan 19, 2016 12:05 pm

Re: ARZ VEGA - Epcot

Post by atv234 » Tue Sep 25, 2018 1:25 am

¿Que Hicimos ?
Se preparo para la pre-entrega del proyecto, corrección de algunos códigos y del diagrama de clases, actualización del github
¿Que vamos a hacer?
Continuar con el proyecto y su completa elaboracion, meter ya objetos propios 3d ya, ya esta una torre lista
¿Que dificultades?
La falta de internet en la zona Simon bolivar por la 35 que dificultaba los avances del proyecto
Daniel Vega Balbin

Programación y diseño orientado a objetos :evil: :ugeek:

User avatar
atv234
Posts: 78
Joined: Tue Jan 19, 2016 12:05 pm

Torre diseño 3D

Post by atv234 » Tue Sep 25, 2018 6:32 am

Image
Daniel Vega Balbin

Programación y diseño orientado a objetos :evil: :ugeek:

User avatar
SebasARZ25
Posts: 18
Joined: Thu Jul 26, 2018 6:28 am

Re: ARZ VEGA - Epcot

Post by SebasARZ25 » Tue Sep 25, 2018 7:24 am

Diagrama de clases
Image
Juan Sebastian Ariza Jimenez
Programación orientada a objetos

User avatar
atv234
Posts: 78
Joined: Tue Jan 19, 2016 12:05 pm

Re: ARZ VEGA - Epcot

Post by atv234 » Tue Oct 02, 2018 6:18 am

¿Que Hicimos?
Corrección de unos errores que se tenia en programación y una vez que fue movido el mapa por el camino estar unido al mapa
¿Que Vamos a Hacer?
Continuar con la programación del tower defense en donde el enemigo ya tendrá que hacer un daño a la base y perder la vida q ya tiene programacion
¿Que Dificultades?
La falta de Internet por parte de une y por la casa del compañero quitaron la luz
Daniel Vega Balbin

Programación y diseño orientado a objetos :evil: :ugeek:

User avatar
SebasARZ25
Posts: 18
Joined: Thu Jul 26, 2018 6:28 am

Barra de vida

Post by SebasARZ25 » Tue Oct 30, 2018 5:04 am

¿Que se hizo?
  • Creación de assets para la barra de vida y materiales
  • Código de la misma (Script LogicaBarra) que genera que se siga al enemigo mientras este avanza por el escenario, y también que cuando se reduzca la parte que representa la cantidad de salud, se mueva al mismo tiempo hacia la izquierda para que no se vea reduciéndose desde el centro.
¿Que vamos a hacer?
  • Preparar la entrega, implementacion de todas las clases, para que el juego ya pueda jugarse.
  • Creación de menús e interfaz.
  • Implementar todas las clases a cada uno de los elementos que las necesiten (por ejemplo barras de vida a las torres y que estas se reduzcan al recibir disparos)
¿Que problemas tuvimos?
Falta de tiempo y viaje a Colombia 4.0
Entregas finales
En 3D, no se utiliza el Script Render sino el Mesh Render. Por lo tanto fue un tropiezo mientras se logró encontrar la relación de los elementos.
Los objetos en 3D no tienen un orden de capas como en 2D, por lo tanto toco agregar movimiento en el eje Z, para que la "Barra Roja" (que en nuestro caso es azul oscura) no estuviera completamente sobre puesta de la ver (que en nuestro caso es azul celeste)

Code: Select all

public class LogicaBarra : MonoBehaviour {

    public GameObject Enemigo1;
    public GameObject BarraVerde;
    public GameObject BarraRoja;
    float escala = 0.0001f;
    MeshRenderer mr; 

	void Start () {
        mr = BarraVerde.GetComponent<MeshRenderer>();
	}
	

	void Update () {
        if (mr.transform.localScale.x > 0)
        {
            mr.transform.localScale -= new Vector3(escala, 0);
            BarraVerde.transform.position = Enemigo1.transform.position - new Vector3(0.6f-mr.bounds.size.x/2,-0.7f);
            BarraRoja.transform.position = Enemigo1.transform.position - new Vector3(0.05f, -0.7f,-0.001f);
        }
		
	}
}
Juan Sebastian Ariza Jimenez
Programación orientada a objetos

Post Reply