Waterman - Cydia Games

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

Moderator: julianmartinez16

User avatar
DanielCadavid
Posts: 6
Joined: Thu Aug 30, 2018 5:08 pm

Re: Waterman - Cydia Games

Post by DanielCadavid » Tue Feb 26, 2019 9:30 pm

Sprint # 5
Fecha de inicio: 26/02/2019
Fecha final: 5/03/2019

Actividades
Martes: se visualizara el 6to vídeo instructivo, el cual trata de los Disparos a enemigos, posteriormente a esto se procederá a poner en practica en el juego, lo visto en el vídeo.

Viernes: visualización del séptimo vídeo instructivo, en esta ocasión sobre la bala de vida y posteriormente implementar lo visto en el video en nuestro juego.

¿Qué hemos hecho?
hemos realizado lo que se ha visto en los vídeos del 1 al 6

¿Qué haremos?
Se visualizara el 6to vídeo instructivo para luego, implementarlo en el juego propio.

¿Qué dificultades han tenido?
se tuvo una dificultad con respecto a los sprites del enemigo los cuales se quedan estáticos al darle play al programa, lo cual no ha dejado corroborar si la programación del disparo al enemigo funciona o no, debido a que ni se mueven

Bala
Image

Bala en el programa
Image

Evidencia del Script del 6to video de la Bala
Image
Daniel Felipe Cadavid Duque
POO #2

User avatar
KevinAlejandro
Posts: 10
Joined: Tue Jan 22, 2019 2:10 pm

Re: Waterman - Cydia Games

Post by KevinAlejandro » Fri Mar 01, 2019 11:44 pm

Daily

Viernes, 1 de Marzo

¿Qué hemos hecho?
Hemos realizado lo que se ha visto en los vídeos del 1 al 6.

¿Qué haremos?
Aplicaremos lo visto en el septimo video acerca barra de vida.

¿Qué dificultades han tenido?
Las torres solo detectan un enemigo.
Errores por parte del Git Bash en el campo de agregar los nuevos cambios.

Evidencias

Image

Image

Image

Image
Kevin Alejandro Vasco Hurtado
PDOO #2

User avatar
KevinAlejandro
Posts: 10
Joined: Tue Jan 22, 2019 2:10 pm

Re: Waterman - Cydia Games

Post by KevinAlejandro » Tue Mar 05, 2019 11:22 pm

Sprint #6
  • Fecha de inicio: 05/03/2019
  • Fecha final: 12/03/2019
Martes: Se buscará e investigará asesoría acerca de errores que se presentan en el juego y explicaciones acerca el manejo correcto de las herramientas de trabajo. Posteriormente se dará un énfasis a las correcciones de errores en los scripts del juego.

Viernes: Se continuará con la asesoría y la investigación acerca de los errores del juego, las explicaciones acerca del manejo correcto de las herramientas de trabajo y su corrección o implementación de lo anterior mencionado.

¿Qué hemos hecho?
Hemos visualizado e implementado lo hecho en los videos dados como referencias gracias al profesor del curso.

¿Qué haremos?
Buscaremos asesoría para la corrección de errores presentes en el juego y en conjunto con la asesoría haremos investigación acerca del manejo correcto de las herramientas de trabajo y posibles soluciones frente a las problemáticas presentadas con ellas hasta el momento.

¿Qué dificultades han tenido?

Continuamos con problemas con la herramienta de trabajo GitBash ya que no deja concretar los
cambios hechos en los avances del juego.

Ocurre un problema con las barras de vida ya que, al momento de visualizar el juego en acción, la
barra de vida no concuerda con lo visto en el video de referencia “07 - Tower defense - Barra de vida -
Life Bar” por el motivo de que la parte trasera de la barra de vida no se mueve en conjunto con el
enemigo, sino que se sitúa en una posición diferente a la deseada.

Continuamos con el error con SlideShare. No deja subir las diapositivas con la explicación,
referencias y cronograma del proyecto.

Evidencias

Image

Image
Kevin Alejandro Vasco Hurtado
PDOO #2

User avatar
KevinAlejandro
Posts: 10
Joined: Tue Jan 22, 2019 2:10 pm

Re: Waterman - Cydia Games

Post by KevinAlejandro » Fri Mar 08, 2019 11:32 pm

Daily

Viernes, 8 de Marzo

¿Qué hemos hecho?
Hemos solucionado el problema con GitHub creando un nuevo repositorio.
Hemos encontrado una posible solucion al error de la barra de vida mediante modificaciones del codigo.

¿Qué haremos?
Continuaremos con la correcion de errores con la barra de vida.
Se añadira una nueva accion a realizar que sera busqueda de tematicas y sprites para el fondo del juego.

¿Qué dificultades han tenido?
Adiccion de nuevos scripts para el avance del juego.
Manejo del codigo para poder satisfacer las necesidades propuestas (correccion de errrores).

Evidencias
Image

Aqui se observa que se pudo clonear el nuevo repositorio para reemplazar el que ya se tenia.
Kevin Alejandro Vasco Hurtado
PDOO #2

User avatar
DanielCadavid
Posts: 6
Joined: Thu Aug 30, 2018 5:08 pm

Re: Waterman - Cydia Games

Post by DanielCadavid » Tue Mar 12, 2019 11:28 pm

Sprint #7
Fecha de inicio: 12/03/2019
Fecha final: 19/03/2019
Martes: Se buscarán formas de lograr que en el juego se puedan colocar monedas, que puedan ser las gotas es decir waterman, y a su vez dejar un contador de las gotas u monedas que se atrapan. Para esto nos basaremos en un video del profesor Hud de monedas

Viernes: se continuara con la idea del martes debido a que el video es muy extenso, y pulir detalles y errores.

¿Qué hemos hecho?
Hemos visualizado e implementado lo hecho en los videos dados como referencias gracias al profesor del curso. como corrección de algunos errores

¿Qué haremos?
Se buscarán formas de lograr que en el juego se puedan colocar monedas, que puedan ser las gotas es decir waterman, y a su vez dejar un contador de las gotas u monedas que se atrapan. Para esto nos basaremos en un video del profesor Hud de monedas

¿Qué dificultades han tenido?
se tuvo un problema con los números que dan el puntaje, debido a que no aparecen cuando se ejecuta el programa

Evidencias de los numeros que se utilizaran ya descargados en los recursos del programa
Image

Puntaje que inicia desde el numero 00
Image

En el script de Puntaje por ahora se ha programado lo siguiente:

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

public class Puntaje : MonoBehaviour
{
public GameObject centenas, decenas, unidades;
private Animator ce, de, un;
// Start is called before the first frame update
void Start()
{
ce = centenas.GetComponent<Animator>();
de = centenas.GetComponent<Animator>();
un = centenas.GetComponent<Animator>();

ce.Play("estado_07");
de.Play("estado_02");
un.Play("estado_00");
}

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

}
}
Daniel Felipe Cadavid Duque
POO #2

User avatar
KevinAlejandro
Posts: 10
Joined: Tue Jan 22, 2019 2:10 pm

Re: Waterman - Cydia Games

Post by KevinAlejandro » Fri Mar 15, 2019 11:30 pm

Daily

Viernes, 15 de Marzo.

¿Qué hemos hecho?
Hemos arreglado la gran mayoría de los errores tales como con la barra de vida, disparo de las torres, destrucción de enemigos, gracias a la ayuda de un compañero de estudio e implementado.
Se dejo de implementar el contador de monedas planeado por otra metodología basada en texto de UI.

¿Qué haremos?
Se continuará con la corrección de errores.
Se continuará con la correcta implementación del contador de monedas.

¿Qué dificultades han tenido?
Se desconoce el método de poder destruir algo, pero que se pueda volver a reutilizar luego. Esta mecánica es fundamental para la mejora de scripts del juego y futuros scripts.

Evidencias

Scripts modificados:

Unidad

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

public class Unidad : MonoBehaviour

{
public GameObject ruta;

private Vector3 posisicion_inicial;
private Vector3 posicion_siguiente;
public float Vida = 100f;
private float vel = .5f;
private float distancia_punto = 0.5f;
private int indice;
private bool esta_viva;


// Start is called before the first frame update
void Start()
{
esta_viva = true;
posisicion_inicial = this.transform.position;
posicion_siguiente = ruta.transform.GetChild(0).position;
}

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

Vector3 dir;

if (esta_viva == true)
{
dir = posicion_siguiente - this.transform.position;
dir.z = 0;
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);
}
else
{
indice = 0;
this.transform.position = posisicion_inicial;
posicion_siguiente = ruta.transform.GetChild(0).position;
}

}
}
if(Vida <= 0)
{
esta_viva = false;
Destroy(gameObject, 0.3f);

}
}

private void OnTriggerEnter2D(Collider2D otro)
{
if(otro.gameObject.tag == "bala")
{
Destroy(otro.gameObject);
this.Vida -= otro.gameObject.GetComponent<Bala>().Dano;
}
}

public bool Esta_viva
{
get
{
return esta_viva;
}

set
{
esta_viva = value;
}
}
}


Torre

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

public class Torre : MonoBehaviour
{
private GameObject enemigo;
private bool esta_activa;
public GameObject bala;
public float Dano=10f;
private float distancia_umbral = 2f;

public GameObject Enemigo
{
get
{
return enemigo;
}

set
{
enemigo = value;
}
}

public bool Esta_activa
{
get
{
return esta_activa;
}

set
{
esta_activa = value;
}
}

// Start is called before the first frame update
void Start()
{

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

}
float dist = (enemigo.transform.position - this.transform.position).magnitude;

if (dist <= distancia_umbral)
{
Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.green);
Disparar();
}

}

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


GameObject BuscarEnemigoCercano()
{
ArrayList enemigos = PoolingUnidades.unidades;
foreach(GameObject item in enemigos)
{

if (Vector3.Distance(item.transform.position, this.transform.position) < distancia_umbral);
{
return item;
}
}
return null;
}
}


LogicaBarra

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

public class LogicaBarra : Unidad
{
public GameObject enemigo;
public GameObject barra_verde;
public GameObject barra_roja;
float vidaInicio;
float vidaActual;
float escala = 0.001f;
float escala2 = 0f;
SpriteRenderer sr;
// Start is called before the first frame update
void Start()
{
sr = barra_verde.GetComponent<SpriteRenderer>();
vidaInicio = enemigo.GetComponent<Unidad>().Vida;
vidaActual = vidaInicio;
}

// Update is called once per frame
void Update()
{
escala = (vidaInicio - vidaActual) / 100f;
if (sr.transform.localScale.x > 0)
{

sr.transform.localScale -= new Vector3(escala, 0);
escala2 -= 1.85f*escala;

//barra_roja.transform.position = enemigo.transform.position - new Vector3(enemigo.transform.position.x - 3.0f, -.4f);


}
barra_verde.transform.position -= new Vector3(10* escala, 0);
barra_verde.transform.position = enemigo.transform.position - new Vector3(.3f - sr.bounds.size.x / 2, -.4f);
barra_roja.transform.position = enemigo.transform.position - new Vector3(.3f + escala2 - sr.bounds.size.x / 2, -.4f);

vidaInicio = vidaActual;
vidaActual = enemigo.GetComponent<Unidad>().Vida;
}
}


Bala

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

public class Bala : MonoBehaviour
{
private GameObject objetivo;
private float velocidad = 0.5f;
public float Dano { get; set; }
// Start is called before the first frame update
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;
Dano = torre.Dano;

}
}


Nuevo Script: Contador_Texto

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

public class Contador_Texto : MonoBehaviour
{
public Text contadorText;

private int contador;
// Start is called before the first frame update
void Start()
{
contador = 0;
SetContadorText();
}

// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D otro)
{
if (otro.gameObject.CompareTag("Vivo"))
{
otro.gameObject.SetActive(false);
contador = contador + 1;
SetContadorText();
}
}
void SetContadorText()
{
contadorText.text = "Score: " + contador.ToString();
}
}

Image
Kevin Alejandro Vasco Hurtado
PDOO #2

Post Reply