FrankenLabs-Tower defense de Horror

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

Moderator: julianmartinez16

User avatar
juan.mira1
Posts: 8
Joined: Tue Jul 16, 2019 6:25 am

Re: FrankenLabs-Tower defense de Horror

Post by juan.mira1 » Mon Oct 14, 2019 10:38 pm

Sprint Semana #14
Desde Lunes 14 de Octubre
Hasta Viernes 18 de Octubre

¿Qué se hizo?
  • Corrección Orientación torres al ser creadas (Juan José)

Code: Select all

public GameObject torre;
    
    void OnMouseDown()
    {
        
        GameObject temp;
        Vector3 pos = this.transform.position;
        pos.y = pos.y + 105f;
        var rotationVector = transform.rotation.eulerAngles;
        rotationVector.x = -90;
        transform.rotation = Quaternion.Euler(rotationVector);
        Destroy(this.gameObject);
        temp = (GameObject)Instantiate(torre, pos, transform.rotation);
        temp.transform.position = pos;
        temp.layer = 7;
        temp.GetComponent<Torre>().Esta_activa1 = true;
               
    }



¿Qué vamos a hacer?
  • Avance de Venta y Compras de Torre (Juan José)
  • Acoplamiento Script Enemigo con Sistema de Monedas (Iván)
  • Elaboración de los modelos de los personajes y enemigos (Javier)

¿Que problemas surgieron?

No surgieron nuevos inconvenientes, y se resolvieron algunos de ellos de la semana pasada.
Juan José Mira Álvarez
Programación y Diseño Orientado a Objetos
2019-2
"Life ... uh, finds a way".
Dr. Ian Malcolm

User avatar
xacarana
Site Admin
Posts: 1213
Joined: Fri Jan 15, 2016 6:13 pm

Re: FrankenLabs-Tower defense de Horror

Post by xacarana » Tue Oct 15, 2019 7:13 am

Image

¡Muy bien!
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
kriptonauta
Posts: 35
Joined: Tue Jan 22, 2019 6:36 am

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Fri Oct 18, 2019 10:19 pm

Sprint Semana #14
Desde el lunes 14 de Octubre
Hasta el viernes 28 de Octubre
¿Qué se hizo?
  • Se hicieron cambios en el script del enemigo formalizando la manera en que causa daño al jugador. (Iván)

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Enemigo : MonoBehaviour
    {
        private int vida;
        private float velocidad_de_mov;
        [SerializeField]private int dano_final;
        private int dano_a_soldados;
        private bool magia;
        //private int plata;
    
        
    
        public Enemigo() { }
    
        public int Vida { get => vida; set => vida = value; }
        public float Velocidad_de_mov { get => velocidad_de_mov; set => velocidad_de_mov = value; }
        public int Dano_final { get => dano_final; set => dano_final = value; }
        public int Dano_a_soldados { get => dano_a_soldados; set => dano_a_soldados = value; }
        public bool Magia { get => magia; set => magia = value; }
        //public int Plata { get => plata; set => plata = value; }
        public void Atacar(){ }
        public void Usar_magia() { }
    
        void OnTriggerEnter(Collider other)
        {
            if (other.CompareTag("Puerta"))
            {
                Morteficar(other);           
            }
            
        }
    
        void Morteficar(Collider enemi)
        {
            Enemigo stats = enemi.GetComponent<Enemigo>();
            stats.Vida -= dano_final;
    
            Destroy(gameObject);
        }
    
  • Se le implementó un nuevo script que le permite al jugador al momento de destruir un enemigo recibir dinero.(Iván)

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Masmonedas : MonoBehaviour
    {
        [SerializeField]public int puntaje;
        // Start is called before the first frame update
        void Awake()
        {
            puntaje = 20;
        }
        void OnDestroy()
        {
            gamescore2.score += puntaje;
        }
    
        // Update is called once per frame
        void Update()
        {
            
        }}
  • Se hizo el diagrama de clase de la torre (Javier)
    Image
  • Se hizo el diagrama de clase del enemigo (Javier)
    Image
¿Qué se va a hacer?
  • Reparar el sistema de disparo de las torres
¿Qué problemas hemos tenido?
  • Ninguno por el momento
Last edited by kriptonauta on Tue Oct 22, 2019 5:55 am, edited 2 times in total.
Javier Santiago Arango :idea:
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos

User avatar
xacarana
Site Admin
Posts: 1213
Joined: Fri Jan 15, 2016 6:13 pm

Re: FrankenLabs-Tower defense de Horror

Post by xacarana » Mon Oct 21, 2019 4:19 pm

Image

Muy bien, el seguimiento, falta la planeación. Necesitamos evidencias del avance, antes de la sustentación del viernes.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
Ivan19
Posts: 8
Joined: Fri Jul 19, 2019 6:07 am

Re: FrankenLabs-Tower defense de Horror

Post by Ivan19 » Tue Oct 22, 2019 6:18 am

Semana 15

De 21 de Octubre
A 25 de Octubre

¿Qué se hizo?
  • Avance UI para Vender y Mejorar Torres (Juan José)

Code: Select all

 public GameObject ui;
    private Node target;
    
    public void SetTarget(Node _target)
    {
        target = _target;
        //transform.position = target.GetBuildPosition();
        ui.SetActive(true);
    }

    public void Hide()
    {
        ui.SetActive(false);
    }
  • Código Activación y Desactivación UI

Code: Select all

private GameObject turretToBuild;
    public BuildManager instance;
    private Node selectedNode;
    private NodeUI nodeUI;

    private void Awake()
    {
        if (instance != null)
        {
            Debug.Log("Hay más de un BuildManager");
            return;
        }
        instance = this;
    }




    public GameObject standardTurretPrefab;

    private void Start()
    {
        turretToBuild = standardTurretPrefab;
    }

    public GameObject GetTurretToBuild()
    {
        return turretToBuild;
    }
    public void SelectNode(Node node)
    {
        if (selectedNode == node)
        {
            DeselectNode();
            return;
        }
        selectedNode = node;
        turretToBuild = null;

        nodeUI.SetTarget(node);
    }
    public void DeselectNode()
    {
        selectedNode = null;
        nodeUI.Hide();
    }

    public void SelectTurretToBuild(GameObject torre)
    {
        turretToBuild = torre;
        DeselectNode();

    }
  • Implementación NodeUI en el BuildManager
Image
  • Prueba de funcionamiento de Torretas (Iván)

Code: Select all

    public GameObject enemigo;
    public GameObject municion;
    private float distancia_umbral = 300;
    // Start is called before the first frame update
    void Start()
    {
        
    }  
    // Update is called once per frame
    void Update()
    {
        float dist = (enemigo.transform.position - this.transform.position).magnitude;

        if(dist <= distancia_umbral)
        {
            Disparar();
            Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.red);
        }
    }
     void Disparar()
    {
        GameObject obj = (GameObject)Instantiate(municion, this.transform.position, Quaternion.identity);
        balabasica bala = obj.GetComponent<balabasica>();
        bala.ActivarBala(this);
    }
Image
Planeacío
  • Finalizar diagramas (Javier)
  • Acoplamiento de elementos al escenario (Javier)
  • Creación del modelo de los enemigos (Jvier)
  • Terminación del UI (venta y spawn)(Juan José)
  • Disparo de torretas (Iván)
¿Qué dificultades tuvimos?
  • Incompatibilidad entre scripts
  • Dificultades con la programacion del UI
Last edited by Ivan19 on Tue Oct 22, 2019 7:10 am, edited 1 time in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02

User avatar
xacarana
Site Admin
Posts: 1213
Joined: Fri Jan 15, 2016 6:13 pm

Re: FrankenLabs-Tower defense de Horror

Post by xacarana » Tue Oct 22, 2019 7:08 am

Recomendaciones para la entrega:
  • El diagrama de clases debe tener las relaciones entre los diferentes elementos, debe estar en una sola imagen, si queda muy grande se pone la imagen mas pequeña en el foro y se agrega un enlace para ver el diagrama en su totalidad.
  • Actualizar el repositorio con los últimos cambios
  • En la presentación, debe ir el estado del proyecto, cuantas tareas han completado y cuantas quedan pendientes del backlog, desarrollo del proyecto con evidencias y conclusiones.
  • Gameplay donde se grabe el juego funcionando y donde ustedes usando subtitulos o narración de voz, cuenten los diferntes pasos que se muestran en el programa.
  • La planeación debe ser independiente de las preguntas de seguimiento.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
xacarana
Site Admin
Posts: 1213
Joined: Fri Jan 15, 2016 6:13 pm

Re: FrankenLabs-Tower defense de Horror

Post by xacarana » Fri Oct 25, 2019 6:55 am

Image

Recuerden la publicación de hoy.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
kriptonauta
Posts: 35
Joined: Tue Jan 22, 2019 6:36 am

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Tue Oct 29, 2019 5:41 am

Semana 15

De 21 de Octubre
A 25 de Octubre

¿Qué se hizo?
  • Corrección diagrama final de clases
    Image
    LINK: https://padlet-uploads.storage.googleap ... t_tulo.png
  • Se optimizó el script torreta, al que se le agregó un cooldown. (Iván)

    Code: Select all

    public GameObject enemigo;
        public GameObject municion;
        private float distancia_umbral = 300;
        [SerializeField] float cooldawn;
        private float tiempo;
        // Start is called before the first frame update
        void Awake()
        {
            cooldawn = 2;
            tiempo = cooldawn;
    
        }
        void Start()
        {
            
        }  
        // Update is called once per frame
        void Update()
        {
            tiempo += Time.deltaTime;
            float dist = (enemigo.transform.position - this.transform.position).magnitude;
    
            if(dist <= distancia_umbral)
            {
                if (cooldawn <= tiempo)
                {
                    tiempo = 0;
                    Disparar();
                }
                
                Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.red);
            }
        }
        void Disparar()
        {
            GameObject obj = (GameObject)Instantiate(municion, this.transform.position, Quaternion.identity);
            balabasica bala = obj.GetComponent<balabasica>();
            bala.ActivarBala(this);
        }
    
  • Se optimizó el script torreta, al que se le agregó la fuerza de impulso. (Iván)

    Code: Select all

     private GameObject objetivo;
        public float velocidad;
        public int dano;
        void Awake()
        {
            velocidad = 2;
            dano = 0;
        }
    
        void OnCollisionEnter(Collision collision)
        {
            if (collision.gameObject.CompareTag("Enemigo"))
            {
                Destroy(gameObject);
    
            }
        }
        
            void Update()
            {
                Vector3 direccion = objetivo.transform.position - this.transform.position;
                this.transform.position += velocidad * direccion * Time.deltaTime;
            }
           
            public void ActivarBala(Xacatorreta torre)
            {
                objetivo = torre.enemigo;
            }

    Planeación:
  • Finalizar diagramas (Javier)
  • Acoplamiento de elementos al escenario (Javier)
  • Creación del modelo de los enemigos (Javier)

    ¿Qué dificultades tuvimos?
  • Incompatibilidad entre scripts
  • Dificultades con la programacion del UI
Last edited by kriptonauta on Tue Oct 29, 2019 6:25 am, edited 4 times in total.
Javier Santiago Arango :idea:
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos

User avatar
kriptonauta
Posts: 35
Joined: Tue Jan 22, 2019 6:36 am

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Tue Oct 29, 2019 5:42 am

Semana 16

De 29 de Octubre
A 1 de Noviembre

¿Qué se hizo?
  • Se agregó al código de TorretaBlueprint la opción de vender y comprar la torreta dentro del Node UI (Juan José)

    Code: Select all

    [System.Serializable]
    public class TurretBlueprint 
    {
        [SerializeField]
        public GameObject prefab;
        [SerializeField]
        public int cost;
    }
  • Link del repositorio: https://github.com/JuanJoseMiraAlvarez/ ... ia-Project


    Planeación:
  • Colocar Assets, enemigos y demás en los niveles restantes (Juan José)
  • Mejorar Funcionamiento NodeUI (Juan José)
  • Implementar Vender y Mejorar (Juan José)
  • Terminar Enemigo con Vida, Collider, Rigid Body(Juan José)
  • Optimizar Spawn de Enemigos(Iván)
  • Creación de Prefabs en funcionamiento (Iván)
  • Daño de enemigos a la vida del jugador / Daño torre a enemigo (Iván)
  • Unir script de Monedas con Enemigo, Torre, Node, BuildManager (Iván)
  • Agregar modelos de Escenario(Javier)
  • Corrección diagrama de clases, junto a la adición de las clases finales(Javier)
  • Modelos Enemigos/ Héroes(Javier)


    ¿Qué dificultades tuvimos?
Last edited by kriptonauta on Tue Oct 29, 2019 7:14 am, edited 2 times in total.
Javier Santiago Arango :idea:
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos

User avatar
xacarana
Site Admin
Posts: 1213
Joined: Fri Jan 15, 2016 6:13 pm

Re: FrankenLabs-Tower defense de Horror

Post by xacarana » Tue Oct 29, 2019 6:40 am

Image

¡Muy bien! Recuerden que todas los miembros datos de las clases deben ser privados, si los necesitan ajustar en el editor de Unity, los deben marcar como serialized filed. Hay algunos ajustes en el diagrama de clase en cuanto a los nombres de algunas clases y en la visualización.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

Post Reply