FrankenLabs-Tower defense de Horror

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

Moderator: julianmartinez16

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

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Wed Aug 07, 2019 11:39 pm

Sprint Semana 4
De: lunes 5 de Agosto
Hasta: viernes 9 de Agosto

¿Qué hemos hecho?
  • Continuamos con la programación de las torres (Tiroteo de la torre).(Javier)
  • Hubo un pequeño avance en la integración del diseño del código de la torre y el diseño dentro de unity (Declaración y encapsulamiento de variables)

    Code: Select all

     public class Torre : MonoBehaviour{
     private int precio;
        private int precio_de_mejora;
        private int precio_al_destruir;
        private int dano_proyectil;
        private Collider rango_de_accion;
        private float tiempo_de_disparo;
        private float tiempo_de_mejora;
        private bool efecto_del_disparo;
    
        public int Precio { get => precio; set => precio = value; }
        public Collider Rango_de_acción { get => rango_de_accion; set => rango_de_accion = value; }
        public float Tiempo_de_disparo { get => tiempo_de_disparo; set => tiempo_de_disparo = value; }
        public float Tiempo_de_mejora { get => tiempo_de_mejora; set => tiempo_de_mejora = value; }
        public bool Efecto_del_disparo { get => efecto_del_disparo; set => efecto_del_disparo = value; }
        public int Daño_proyectil { get => dano_proyectil; set => dano_proyectil = value; }
    
        public void Detectar()
        {
    
        }
    
        public void Disparar()
        { }
    
        public void Generar()
        {
    
        }
        public void Mejorar()
        { }
        public void Destruir()
        {
    
        }
    }
    
  • Se avanzo con el diseño de las torres (Obelisco y torre Tesla) (Javier)
    Image
    Image
¿Qué vamos a hacer?
  • Programación de torres (Daño y selección de enemigos)
  • Correcciones en el desplazamiento de los enemigos.
¿Qué dificultades hemos tenido?
  • Integración correcta de los modelos 3D para el juego y el programa
Last edited by kriptonauta on Tue Aug 27, 2019 5:23 am, edited 6 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
Ivan19
Posts: 6
Joined: Fri Jul 19, 2019 6:07 am

Re: FrankenLabs-Tower defense de Horror

Post by Ivan19 » Fri Aug 16, 2019 6:32 am

Sprint semana #5
De: Lunes 12 de agosto
Hasta:Viernes 16 de agosto

¿Que se hizo?
  • Se creo la barra de vida de la puerta principal junto con un sistema que detecte las colisiones de los enemigos.
  • Se estableció que cada vez que un enemigo colisione con el objeto la flotante de vida disminuya y cuando esta llegue a 0 se cargue una nueva escena.

Code: Select all

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

public class vida : MonoBehaviour
{
    [SerializeField] Slider healthbar;
    public string htht = "";
    [SerializeField] float Daño = 30f;
    public float heath;
    // Start is called before the first frame update
    void Awake()
    {
        heath = 100f;
    }
    void Start()
    {

    }

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

        healthbar.value = heath;
        Debug.Log(heath);
        if (heath <= 0)
        {
            SceneManager.LoadScene(htht);
        }
    }
    public void OnCollisionEnter(Collision collision)
    {

        if (collision.gameObject.CompareTag("Enemigo"))
        {
            heath -= Daño;
        }
    }
}
  • Se avanzo el diseño estético del mapa
Image

¿Que se va a hacer?
  • Mejoras en el sistema de disparo
Last edited by Ivan19 on Fri Aug 30, 2019 6:24 am, edited 2 times in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02

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

Re: FrankenLabs-Tower defense de Horror

Post by Ivan19 » Fri Aug 23, 2019 9:19 pm

Sprint semana -#6
De: 19 de agosto
Hasta: 23 de agosto

¿Qué se hizo?
  • Se empezó a crear un sistema de puntaje tomando de base el siguiente vídeo

  • A partir del video anterior se extrajo siguiente script:

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class gamescore2 : MonoBehaviour
    {
        public static int score = 0;
        public string scorestring = "Score";
    
        public Text textscore;
        public static gamescore2 gamecontroler;
    
        void Awake()
        {
            gamecontroler = this;
        }
        // Start is called before the first frame update
        void Start()
        {
    
        }
    
        // Update is called once per frame
        void Update()
        {
            if (textscore != null)
            {
                textscore.text = scorestring + score.ToString();
            }
        }
    }

¿Qué se va a hacer?
  • Diseñar la clase enemigo.
  • Trabajar con las mecánicas de disparo de torres.
¿Qué problemas hemos tenido?
  • Problemas de interacción con la camara principal de juego.
  • Los enemigos no responden correctamente a la interacción con los waypoints, se traban.
Last edited by Ivan19 on Fri Aug 30, 2019 6:27 am, edited 5 times in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02

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

Re: FrankenLabs-Tower defense de Horror

Post by juan.mira1 » Tue Aug 27, 2019 5:13 am

Sprint semana #6
De: 19 de agosto
Hasta: 23 de agosto
¿Qué hemos hecho?
  • Se ha avanzado con el código del Punto de Aparición de los Enemigos.(Juan José)

Code: Select all

public Transform enemyPrefab;

    public Transform spawnPoint;

    public float timeBetweenWaves = 5f;
    private float countdown = 2;
    private int waveNumber = 1;

    void Update()
    {
        if (countdown<=0f)
        {
            SpawnWave();
            countdown = timeBetweenWaves;
        }
        countdown -= Time.deltaTime;
    }
    void SpawnWave()
    {

        for (int i = 0; i < waveNumber; i++)
        {
            SpawnEnemy();
        }
        waveNumber++;
    }

    void SpawnEnemy()
    {
        Instantiate(enemyPrefab, spawnPoint.position,spawnPoint.rotation);
    }
¿Qué vamos a hacer?
  • Diseñar la clase enemigo.
  • Trabajar con las mecánicas de disparo de torres.
¿Qué dificultades tuvimos?
  • Errores con la vista de la cámara de juego.
  • Problemas con el spawn de enemigos.
Last edited by juan.mira1 on Fri Aug 30, 2019 5:21 am, edited 3 times in total.
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: 1199
Joined: Fri Jan 15, 2016 6:13 pm

Re: FrankenLabs-Tower defense de Horror

Post by xacarana » Tue Aug 27, 2019 6:20 am

El avance de la semana 6 fue muy pobre, además no se esta haciendo la planeación del sprint de la semana con las asignaciones a cada integrante.

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

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

Re: FrankenLabs-Tower defense de Horror

Post by Ivan19 » Fri Aug 30, 2019 6:35 am

Sprint Semana #7
De: Lunes 26 de Agosto.
Hasta: Viernes 30 de Agosto.

¿Qué se hizo?
  • Trabajamos solucionando el error que se presentaba con la cámara de juego.

¿Qué se va a hacer?
  • Corección de los waypoint para denotar un movimiento más fluido.
  • Inplementacion de un sistema de monedas.
  • Correción del punto de spawn.
¿Qué problemas hemos tenido?
  • Ninguno por el momento
Last edited by Ivan19 on Tue Sep 10, 2019 7:05 am, edited 1 time in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02

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

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Tue Sep 10, 2019 5:31 am

Sprint Semana #8
Desde el lunes 1 de Septiembre
Hasta el viernes 6 de Septiembre
¿Qué se hizo?
  • Se crearon los objetos de la clase Torre y se asignaron todos los valores de sus variables básicas (Javier)
    -Torre Tesla

    Code: Select all

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
        class Torre_tesla: Torre
        {
        public Torre_tesla()
        {
            Precio = 150;
            Precio_al_destruir = 100;
            Precio_de_mejora = 300;
            Tiempo_de_disparo = 3;
            Tiempo_de_mejora = 1;
            Dano_proyectil = 2;
    
        }
    }
    -Torre Vampira

    Code: Select all

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
        class Torre_vampira: Torre
        {
        public Torre_vampira()
        {
            Precio = 150;
            Precio_al_destruir = 100;
            Precio_de_mejora = 300;
            Tiempo_de_disparo = 2;
            Tiempo_de_mejora = 1;
            Dano_proyectil = 2;
    
        }
    }
    -Torre Marciana

    Code: Select all

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
        public class Torre_marciana:Torre
        {
    
        public Torre_marciana()
        {
            Precio = 150;
            Precio_al_destruir = 100;
            Precio_de_mejora = 350;
            Tiempo_de_disparo = 2;
            Tiempo_de_mejora = 1;
            Dano_proyectil = 3;
    
        }
    
    }
    
    -Obelisco

    Code: Select all

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
        class Obelisco: Torre
        {
        public Obelisco()
        {
            Precio = 100;
            Precio_al_destruir = 50;
            Precio_de_mejora = 200;
            Tiempo_de_disparo = 2;
            Tiempo_de_mejora = 1;
            Dano_proyectil = 2;
    
        }
    }
    -Árbol del pantano

    Code: Select all

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
        class Arbol: Torre
        {
         public Arbol()
        {
            Precio = 200;
            Precio_al_destruir = 100;
            Precio_de_mejora = 300;
            Tiempo_de_disparo = 3;
            Tiempo_de_mejora = 1;
            Dano_proyectil = 1;
            
        }
    
        }
    -Cementerio

    Code: Select all

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
        class Cementerio: Torre
        {
        public Cementerio()
        {
            Precio = 200;
            Precio_al_destruir = 100;
            Precio_de_mejora = 300;
            Tiempo_de_disparo = 3;
            Tiempo_de_mejora = 1;
            Dano_proyectil = 1;
    
        }
    }
¿Qué se va a hacer?
  • Avanzar significativamente en las distintas acciones que puede realizar una torre
¿Qué problemas hemos tenido?
  • Ninguno por el momento
Last edited by kriptonauta on Tue Sep 10, 2019 6:16 am, edited 5 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: 33
Joined: Tue Jan 22, 2019 6:36 am

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Tue Sep 10, 2019 5:31 am

Sprint Semana #8
Desde el lunes 1 de Septiembre
Hasta el viernes 6 de Septiembre
¿Qué se hizo?
  • Se programó una idea preliminar de lo que será la clase del enemigo (Javier)

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemigo : MonoBehaviour
{
    private int vida;
    private float velocidad_de_mov;
    private int dano_final;
    private int dano_a_soldados;
    private bool magia;

    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; }

    Enemigo() { }

    public void Atacar(){ }
    public void Usar_magia() { }

}
  • Se programó cada una de las clases de los enemigos con sus respectivas variables
    -Aldeano

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Aldeano : Enemigo
    {
        public Aldeano()
        {
            Vida = 8;
            Velocidad_de_mov=1;
            Dano_final=1;
            Dano_a_soldados=1;
            Magia=false;
    }
    }
    
    -Sabueso

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Sabueso : Enemigo
    {
        public Sabueso()
        {
            Vida = 4;
            Velocidad_de_mov = 3;
            Dano_final = 2;
            Dano_a_soldados = 2;
            Magia = false;
        }
    }
    
    -Monje

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Monje : Enemigo
    {
        public Monje()
        {
            Vida = 16;
            Velocidad_de_mov = 1;
            Dano_final = 1;
            Dano_a_soldados = 0;
            Magia = true;
        }
    }
    -Horda

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Horda : Enemigo
    {
        public Horda()
        {
            Vida = 24;
            Velocidad_de_mov = 2;
            Dano_final = 3;
            Dano_a_soldados = 3;
            Magia = false;
        }
    }
    -Panadero

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Panadero : Enemigo
{
    public Panadero()
    {
        Vida = 32;
        Velocidad_de_mov = 1;
        Dano_final = 5;
        Dano_a_soldados = 3;
        Magia = false;
    }
}
¿Qué se va a hacer?
  • Avanzar significativamente en las distintas acciones que puede realizar un enemigo
¿Qué problemas hemos tenido?
  • Ninguno por el momento
Last edited by kriptonauta on Tue Sep 10, 2019 7:09 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: 33
Joined: Tue Jan 22, 2019 6:36 am

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Tue Sep 10, 2019 7:08 am

Sprint Semana #9
Desde el lunes 9 de Septiembre
Hasta el viernes 13 de Septiembre
¿Qué se hizo?
  • Diseño final del suelo de los 3 niveles (Javier)
    Image


  • HUD y correcciones movimiento enemigos (Juan José)
  • Menú de pausa (Ivan), en el que se esta trabajando en un sistema para la implementación de un menú de pausa para el cual se usara el siguiente script:

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class pausemenu : MonoBehaviour
{
    public static bool GameIsPause = false;

    public GameObject pauseMenuUI;
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (GameIsPause)
            {
                Resume();
            }
            else
            {
                Pause();

            }
        }
    }
    void Resume()
    {
        pauseMenuUI.SetActive(false);
        Time.timeScale = 1f;
        GameIsPause = false;
    }

    void Pause()
    {
        pauseMenuUI.SetActive(true);
        Time.timeScale = 0f;
        GameIsPause = true;
    }

}
¿Qué se va a hacer?
  • Reparar el sistema de disparo de las torres
¿Qué problemas hemos tenido?
  • Ninguno por el momento
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: 33
Joined: Tue Jan 22, 2019 6:36 am

Re: FrankenLabs-Tower defense de Horror

Post by kriptonauta » Mon Sep 16, 2019 10:34 pm

Sprint Semana #9
Desde el lunes 9 de Septiembre
Hasta el viernes 13 de Septiembre
¿Qué se hizo?
  • Diseño final del suelo de los 3 niveles (Javier)

    Image

    Image
  • Modificaciones en el Wave Spawner, que permiten personalizar cúantos enemigos y qué enemigos salen por ronda. Además de que, hasta que todos los enemigos se hayan muerto, no saldrá la otra ronda. (Juan José)

    Code: Select all

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    
    public class WaveSpawner : MonoBehaviour {
    
    	public static int EnemiesAlive = 0;
    
    	public Wave[] waves;
    
    	public Transform spawnPoint;
    
    	public float timeBetweenWaves = 5f;
    	private float countdown = 2f;
    
    	public Text waveCountdownText;
    
    	public GameManager gameManager;
    
    	private int waveIndex = 0;
    
    	void Update ()
    	{
    		if (EnemiesAlive > 0)
    		{
    			return;
    		}
    
    		if (waveIndex == waves.Length)
    		{
    			gameManager.WinLevel();
    			this.enabled = false;
    		}
    
    		if (countdown <= 0f)
    		{
    			StartCoroutine(SpawnWave());
    			countdown = timeBetweenWaves;
    			return;
    		}
    
    		countdown -= Time.deltaTime;
    
    		countdown = Mathf.Clamp(countdown, 0f, Mathf.Infinity);
    
    		waveCountdownText.text = string.Format("{0:00.00}", countdown);
    	}
    
    	IEnumerator SpawnWave ()
    	{
    		PlayerStats.Rounds++;
    
    		Wave wave = waves[waveIndex];
    
    		EnemiesAlive = wave.count;
    
    		for (int i = 0; i < wave.count; i++)
    		{
    			SpawnEnemy(wave.enemy);
    			yield return new WaitForSeconds(1f / wave.rate);
    		}
    
    		waveIndex++;
    	}
    
    	void SpawnEnemy (GameObject enemy)
    	{
    		Instantiate(enemy, spawnPoint.position, spawnPoint.rotation);
    	}
    
    }
    ¿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 Sep 17, 2019 6:16 am, edited 3 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

Post Reply