firulais goxstudio

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

Moderator: julianmartinez16

User avatar
andreaossa
Posts: 12
Joined: Fri Jan 24, 2020 2:05 pm

Re: firulais goxstudio

Post by andreaossa » Wed Feb 26, 2020 2:07 pm

animaciones , diseños (personajes) practicamente listos

Image

Publicación incompleta, faltó responder las preguntas y planear el sprint.

Segundo strike :(

Image



Que hicimos?
animación de personajes

Que falta?
terminar animación de jefes

En que hemos tenido dificultad?
realizar las animaciones de torres
Last edited by andreaossa on Fri Mar 06, 2020 2:54 pm, edited 1 time in total.
Andrea ossa
148617
POO

User avatar
andreaossa
Posts: 12
Joined: Fri Jan 24, 2020 2:05 pm

Re: firulais goxstudio

Post by andreaossa » Fri Feb 28, 2020 2:06 pm

Control de cámara

Code: Select all

using UnityEngine;

public class CameraController : MonoBehaviour {

	public float panSpeed = 30f;
	public float panBorderThickness = 10f;

	public float scrollSpeed = 5f;
	public float minY = 10f;
	public float maxY = 80f;

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

		if (GameManager.GameIsOver)
		{
			this.enabled = false;
			return;
		}

		if (Input.GetKey("w") || Input.mousePosition.y >= Screen.height - panBorderThickness)
		{
            transform.Translate(Vector3.forward * panSpeed * Time.deltaTime, Space.World);
		}
		if (Input.GetKey("s") || Input.mousePosition.y <= panBorderThickness)
		{
			transform.Translate(Vector3.back * panSpeed * Time.deltaTime, Space.World);
		}
		if (Input.GetKey("d") || Input.mousePosition.x >= Screen.width - panBorderThickness)
		{
			transform.Translate(Vector3.right * panSpeed * Time.deltaTime, Space.World);
		}
		if (Input.GetKey("a") || Input.mousePosition.x <= panBorderThickness)
		{
			transform.Translate(Vector3.left * panSpeed * Time.deltaTime, Space.World);
		}

		float scroll = Input.GetAxis("Mouse ScrollWheel");

		Vector3 pos = transform.position;

		pos.y -= scroll * 1000 * scrollSpeed * Time.deltaTime;
		pos.y = Mathf.Clamp(pos.y, minY, maxY);

		transform.position = pos;

	}
}
¿Qué hicimos?

Realización de código de cámara y seguimos con las animaciones de personajes

¿Qué nos falto?

Programar el personaje en el camino

¿que haremos?

programacion de torres y terminar programacion del personaje
Last edited by andreaossa on Fri Mar 06, 2020 2:42 pm, edited 1 time in total.
Andrea ossa
148617
POO

User avatar
Emanuel_Duque
Posts: 30
Joined: Tue Jan 22, 2019 6:22 am

Re: firulais goxstudio

Post by Emanuel_Duque » Wed Mar 04, 2020 2:22 pm

Ruta enemigos




Diagrama de clases

Image

¿Que hicimos?
La ruta de los enemigos.


¿Que falta?
Corregir algunos errores de la ruta


¿En que hemos tenido dificultad?
En corregir algunos errores de la ruta del enemigo.
Last edited by Emanuel_Duque on Fri Mar 06, 2020 2:50 pm, edited 5 times in total.
Emanuel Duque Álvarez
Programación orientada a objetos :geek:
000370648

User avatar
andreaossa
Posts: 12
Joined: Fri Jan 24, 2020 2:05 pm

Re: firulais goxstudio

Post by andreaossa » Fri Mar 06, 2020 1:50 pm

Instanciación de torres y detección de enemigos





Diagrama de clases

Image

Que hicimos?
La ruta de los enemigos, la instanciación de las torres y la detección de los enemigos

Que falta?
Corregir algunos errores, mejorar la abstracción y los disparos de las torres

En que hemos tenido dificultad?
En corregir algunos errores que tienen que ver con la abstracción de los objetos.
Andrea ossa
148617
POO

User avatar
Emanuel_Duque
Posts: 30
Joined: Tue Jan 22, 2019 6:22 am

Re: firulais goxstudio

Post by Emanuel_Duque » Wed Mar 11, 2020 1:07 pm

POOLING ENEMIGOS

Image


DIAGRAMA ACTUALIZADO

Image

¿Que hicimos?
El respawneo de hordas de enemigos.


¿Que falta?
El disparo de las torres a los enemigos.


¿En que hemos tenido dificultad?
En corregir algunos errores de la ruta del enemigo y su respawneo.
Emanuel Duque Álvarez
Programación orientada a objetos :geek:
000370648

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

Re: firulais goxstudio

Post by xacarana » Wed Mar 11, 2020 2:20 pm

Image

Bien por la publicación, suban por favor un video para saber como va el funcionamiento del juego y la programación respectiva.

El diagrama tiene variables que no están encapsuladas. Recuerden publicar la planeación.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
andreaossa
Posts: 12
Joined: Fri Jan 24, 2020 2:05 pm

Re: firulais goxstudio

Post by andreaossa » Fri Mar 13, 2020 11:30 am

Codigo para que la torre busque al enemigo

Code: Select all

GameObject BuscarEnemigoCercano()
        {
            ArrayList enemigos = PoolingEnemigos.enemigos;
            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 la bala

Code: Select all

public class Bala : MonoBehaviour
{
    private GameObject Objetivo;
    private float velocidad = 2;

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



    }
}
}
Image


b]¿Qué hicimos?[/b]

codigo de bala y busqueda de enemigo

¿Qué nos falto?

coliciones

¿que haremos?

terminar movimiento de personaje
Andrea ossa
148617
POO

User avatar
Emanuel_Duque
Posts: 30
Joined: Tue Jan 22, 2019 6:22 am

Re: firulais goxstudio

Post by Emanuel_Duque » Thu Mar 19, 2020 4:06 pm

BARRA VIDA ENEMIGO



CODE

Code: Select all

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

public class Barra : MonoBehaviour
{
    public GameObject enemigo;
    public GameObject barravida;
    public GameObject barrasangre;
    float escala = .001f;
    SpriteRenderer sr;

    void Start()
    {
        sr = barravida.GetComponent<SpriteRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        if (sr.transform.localScale.x>0)
        {
            sr.transform.localScale -= new Vector3(escala, 0);
            barravida.transform.position = enemigo.transform.position - new Vector3(.3f - sr.bounds.size.x / 2, -.4f);
            barrasangre.transform.position = enemigo.transform.position - new Vector3(-0.25f, -0.4f);

        }
    }
}
¿Que hicimos?
La barra de vida de los enemigos y su lógica


¿Que falta?
Corregir algunos errores de la ruta, su fluidez y animaciones


¿En que hemos tenido dificultad?
Algunos bugs con la ruta
Last edited by Emanuel_Duque on Wed Mar 25, 2020 11:51 pm, edited 1 time in total.
Emanuel Duque Álvarez
Programación orientada a objetos :geek:
000370648

User avatar
andreaossa
Posts: 12
Joined: Fri Jan 24, 2020 2:05 pm

Re: firulais goxstudio

Post by andreaossa » Fri Mar 20, 2020 12:30 pm

programa de direccion para la animacion

Code: Select all

 public class Direccion : MonoBehaviour
{
    [SerializeField]
    private int ubicacion;
    public const int ARRIBA = 1;
    public const int DERECHA = 2;
    public const int ABAJO = 3;
    public const int IZQUIERDA = 4;

    public int Ubicacion { get => ubicacion; set => ubicacion = value; }
}
mapa de animacio

Image


Que hicimos?
programar animaciones

Que falta?
corregir errores de ruta

En que hemos tenido dificultad?
configurando los scripts
Andrea ossa
148617
POO

User avatar
Emanuel_Duque
Posts: 30
Joined: Tue Jan 22, 2019 6:22 am

Re: firulais goxstudio

Post by Emanuel_Duque » Wed Mar 25, 2020 11:45 pm

REFACTORING


BALA

Code: Select all

using UnityEngine;
using System.Collections;
using System;

public class Bala : MonoBehaviour {

    public const float TIEMPO_DISPARO = .5f;
    private GameObject objetivo;
    private float velocidad;
    private bool disparada;
    private Vector3 punto_inicial;

    private float tiempo;

    private SpriteRenderer sr;

    void Start () {
        velocidad = 7;
        sr = this.GetComponent<SpriteRenderer>();
        punto_inicial = new Vector3(-5, 4);
        CambiarOpacidad(0f);
    }
	
	// Update is called once per frame
	void Update () {
                
        if(objetivo!=null)
        {
            if(TiempoVida())
            {
                MoverBalaAUnPunto();
            }
            else
            {
                ReciclarBala();
            }
        }

        if (!disparada) {
            ReciclarBala();
        }
	}

    private bool TiempoVida()
    {
        tiempo += Time.deltaTime;
        return tiempo < TIEMPO_DISPARO;
    }

    private void MoverBalaAUnPunto()
    {
        Vector3 direccion;
        eNE unidad = objetivo.GetComponent<Unidad>();

        if (unidad.Esta_viva)
        {            
            Disparada = true;
            direccion = objetivo.transform.position - this.transform.position;
            this.transform.position += velocidad * direccion * Time.deltaTime;
            
        }        
    }    

    private void CambiarOpacidad(float valor)
    {
        sr.color = new Color(1f, 1f, 1f, valor);
    }

    private void ReciclarBala()
    {
        this.transform.position = punto_inicial;
        objetivo = null;
        Disparada = false;
        CambiarOpacidad(0f);
        tiempo = 0;
    }

    public void ActivarBala(Torre torre)
    {
        Disparada = true;
        objetivo = torre.Enemigo;
        tiempo = 0;
        punto_inicial = torre.transform.position;
        transform.position = punto_inicial;
        CambiarOpacidad(1f);
    }

    public bool Disparada
    {
        get
        {
            return disparada;
        }

        set
        {
            disparada = value;
        }
    }
}

BARRA

Code: Select all

using UnityEngine;
using System.Collections;

public class LogicaBarra : MonoBehaviour {
    [SerializeField]
    private GameObject barra_verde;
    [SerializeField]
    private GameObject barra_roja;
    //private float escala_actual;// = .001f
    private SpriteRenderer sr;

    // Use this for initialization
    void Start () {
        sr = barra_verde.GetComponent<SpriteRenderer>();
    }

	public void ModificarBarra(float escala)
    {
        if (sr.transform.localScale.x > 0)
        {
            sr.transform.localScale -= new Vector3(escala, 0);            
        }
        else
        {
            //Disparar evento de muerte
        }
    }
	// Update is called once per frame
	void Update () {
            
    }
}
¿Que hicimos?
El refactoring de algunos códigos del juego


¿Que falta?
Personalizar enemigos y demás assets


¿En que hemos tenido dificultad?
Algunos bugs con la ruta
Emanuel Duque Álvarez
Programación orientada a objetos :geek:
000370648

Post Reply