Brain Damage-Pshyco Games

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

Moderator: julianmartinez16

User avatar
Norejuan
Posts: 17
Joined: Fri Jan 22, 2016 8:10 am

Re: Brain Damage-Pshyco Games

Post by Norejuan » Sun Aug 18, 2019 9:54 am

Creación de mapa e importación a Unity

Creacón de mapa en Tiled Map
Image


Dificultad para importar el Tiled a Unity
Image



:o :o :o :o :o :o :o :o :o :o :o :o :o :o :o

Image


Ya lo arregle, era un paquete de testuras que no se importo adecuadamente, toco reemplazarlo

Image
Juan Pablo Noreña Mejia
Programación y diseño orientado a objetos 2019 02

"The blue society is bullsh... :lol: :lol: :lol: "

User avatar
LordFrodo
Posts: 14
Joined: Tue Jul 16, 2019 6:25 am

Re: Brain Damage-Pshyco Games

Post by LordFrodo » Mon Aug 19, 2019 10:35 pm

Código de movimiento en el mapa:

Code: Select all

public class MovEnemigo2 : MonoBehaviour
{

    public float speed = .02f;
    [SerializeField] GameObject[] meta=new GameObject[4];
    public int i = 0;
    Vida basealiada;


    void Start()
    {
        //Busqueda de los puntos donde se debe ubicar
        meta[0] = GameObject.Find("Punto1");
        meta[1] = GameObject.Find("Punto2");
        meta[2] = GameObject.Find("Punto3");
        meta[3] = GameObject.Find("Punto4");
        basealiada = GetComponent<Vida>();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
            Vector3 forwardAxis = new Vector3(0, 0, -1);


            transform.LookAt(meta[i].transform.position, forwardAxis);
            Debug.DrawLine(transform.position, meta[i].transform.position);
            transform.eulerAngles = new Vector3(0, 0, -transform.eulerAngles.z);
            transform.position -= transform.TransformDirection(Vector2.up) * speed;
            float diferenciaPosX = transform.position.x - meta[i].transform.position.x;
            float diferenciaPosY = transform.position.y - meta[i].transform.position.y;
            float diferenciarotacionZ = transform.rotation.z - meta[i].transform.rotation.z;
            
           //Condicion para que cambie de objetivo al estar cerca del que estaba siguiendo
            if (diferenciaPosX>=0&&diferenciaPosX<=0.7&&diferenciaPosY>=0&&diferenciaPosY<=0.7)
            {
                if (i < meta.Length - 1)
                {
                    i++;
                }
            }

    }
    public void OnTriggerEnter(Collider other)
    {
        //Daño a la base, aun no sirve, no detecta el trigger
        if (other.CompareTag("Base"))
        {
            basealiada.Daño(10);
            Destroy(gameObject);
        }
    }
}
Código Spawn de enemigos:

Code: Select all

public class Spawn : MonoBehaviour
{
    [SerializeField] GameObject enemigo;
    public Vector3 spawn_valor=new Vector3(-11,1,0);
    public float contador = 10, spawnwait, startwait, wavewait;

    void Start()
    {
        StartCoroutine(SpawnOlas());
 
    }
    void Update()
    {

    }

    IEnumerator SpawnOlas()
    {
        while (true)
        {
            yield return new WaitForSeconds(startwait);
            for (int i = 0; i < contador; i++)
            {
                Vector3 spawn_posicion = new Vector3(spawn_valor.x, 0, spawn_valor.z);
                Quaternion spawn_rotacion = Quaternion.identity;
                Instantiate(enemigo, spawn_posicion, spawn_rotacion);
                yield return new WaitForSeconds(spawnwait);
            }
            yield return new WaitForSeconds(wavewait);
        }
    }
}

Sprite mina:
Image


-¿Que falta por hacer?
Terminar los sprites de las defensas (falta darles color a la mayoría y a el cañón y torre eléctrica darles volumetría y color), ademas de hacer las animaciones de las explosiones, tanto de los enemigos como de las minas. Digitalizar a los enemigos (no se ha hecho ni uno).

-Dificultades
Durante dos semanas hubo mucho relajo, causando retrasos (en la digitalización de las defensas), hubo poca comunicación.
Otra dificultad es que aunque se había programado de una vez el daño a la base, esta no interactuaba con la barra de vida, al final no se descubrió cual fue el error. Se opto por ver si bajaba al menos el valor de vida pero tampoco.

Code: Select all

public class Vida : MonoBehaviour
{
    // Start is called before the first frame update
    public int vida;
    void Start()
    {
        vida = 100;
    }

    // Update is called once per frame
    void Update()
    {
        Debug.Log(vida);

    }
    public void Daño(int x)
    {
        vida -= x;
   
    }
}
Manuel Felipe Velasquez S.
Estudiante de Programación Orientada a Objetos. 2019-02
If( X>1)FrodoSabeProgramar
Else FrodoEsPringado

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

Re: Brain Damage-Pshyco Games

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

Falta la planeación del sprint con las asignaciones de cada integrante, la ultima publicación mejoro la presentación de las evidencias.

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

User avatar
LordFrodo
Posts: 14
Joined: Tue Jul 16, 2019 6:25 am

Re: Brain Damage-Pshyco Games

Post by LordFrodo » Fri Aug 30, 2019 6:19 am

PLANEACION SPRINT 7
Inicio: Agosto 27
Termina: Septiembre 2

-Digitalizacion de enemigos: Manuel Felipe Velasquez (4)
-Arreglo movimiento en el mapa: Manuel Felipe Velasquez (3)
-Implementacion de vida: Manuel Felipe Velasquez (2)
-Programacion Torres: Juan pablo noreña (4)
Manuel Felipe Velasquez S.
Estudiante de Programación Orientada a Objetos. 2019-02
If( X>1)FrodoSabeProgramar
Else FrodoEsPringado

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

Re: Brain Damage-Pshyco Games

Post by xacarana » Fri Aug 30, 2019 6:30 am

Strike dos, no hubo avance la clase pasada. :(

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

User avatar
LordFrodo
Posts: 14
Joined: Tue Jul 16, 2019 6:25 am

Re: Brain Damage-Pshyco Games

Post by LordFrodo » Sun Sep 01, 2019 4:39 pm

Sprites defensas:

-Cañon
Image

Para ser utilizado en unity se necesita separar la torreta de la base
Image

-Cañon congelante
Image

Para ser utilizado en unity se necesita separar la torreta de la base
Image

-Torre tesla (Sometible a cambios)
Image

-Enemigo Basico (sometible a mejoras)
Image

-Enemigo rapido (sometible a mejoras)
Image

-Enemigo Jefe (sometible a mejoras)
Image

-Movimiento enemigos (implementado por el video del profesor)

Code: Select all

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

public class Unidad : MonoBehaviour
{
    public GameObject ruta;
    private int indice;
    private Vector3 posicion_siguiente;
    private float velocidad =1;
    private float distancia = 0.5f;
    // Start is called before the first frame update
    void Start()
    {
        ruta = GameObject.Find("Ruta1");
        posicion_siguiente = ruta.transform.GetChild(0).position;
        //Para que vea hacia donde se dirige (rote)
       // Vector3 forwardAxis = new Vector3(0, 0, -1);
        //transform.LookAt(ruta.transform.GetChild(0).transform.position, forwardAxis);

    }

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


        Vector3 direccion = posicion_siguiente - this.transform.position;
        this.transform.position += direccion * velocidad * Time.deltaTime;
        if (direccion.magnitude <= distancia)
        {
            if (indice + 1 < ruta.transform.childCount)
            {
                indice++;
                posicion_siguiente = ruta.transform.GetChild(indice).position;
                //Vector3 forwardAxis = new Vector3(0, 0, -1);
                //transform.LookAt(ruta.transform.GetChild(indice).transform.position, forwardAxis);
            }
        }
    }
}
-Destruccion de enemigos al llegar a la base

Code: Select all

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

public class DestruirEnemigo : MonoBehaviour
{
    public void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Enemigo"))
        {
            other.gameObject.SetActive(false);
            //item.Destruir();
        }
    }
}
-Que falta por hacer?
Implementacion de animacion para que se entienda que es una nave espacial, se planea buscar alguna que haya por internet y sea de uso libre, en caso de no encontrar, buscar un como diseñar una e implementarla.

-Dificultades
1) Al arreglar el movimiento (pues el que habia generaba errores), este genero otros problemas como lo son el que no se ve en la pantalla de juego y que se congelan un rato cuando llegan al siguiente punto de la ruta
2) Falta de comunicación en el equipo, pues no se ve aporte por parte del compañero ni intenciones de averiguar o avanzar en el proyecto
Last edited by LordFrodo on Mon Sep 09, 2019 8:59 pm, edited 3 times in total.
Manuel Felipe Velasquez S.
Estudiante de Programación Orientada a Objetos. 2019-02
If( X>1)FrodoSabeProgramar
Else FrodoEsPringado

User avatar
LordFrodo
Posts: 14
Joined: Tue Jul 16, 2019 6:25 am

Re: Brain Damage-Pshyco Games

Post by LordFrodo » Mon Sep 09, 2019 1:21 pm

Sprint 8
Inicio: Septiembre 3
Finaliza: Septiembre 9

-Detección de enemigos y creación de torres: Manuel Felipe Velasquez (4)
-Arreglo movimiento: Juan Pablo Noreña (4)
Manuel Felipe Velasquez S.
Estudiante de Programación Orientada a Objetos. 2019-02
If( X>1)FrodoSabeProgramar
Else FrodoEsPringado

User avatar
LordFrodo
Posts: 14
Joined: Tue Jul 16, 2019 6:25 am

Re: Brain Damage-Pshyco Games

Post by LordFrodo » Mon Sep 09, 2019 6:39 pm

Codigo Spawn torres (falta agregar para que se seleccione diferentes tipos de torre)

Code: Select all

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

public class ColocarTorre : MonoBehaviour
{
    public GameObject torre;

    private void OnMouseDown()
    {
        GameObject temp;
        Vector3 posicion = this.transform.position;
        temp = Instantiate(torre);
        temp.transform.position = posicion;
        temp.layer = 5;
        
    }
}
Rotacion torreta (esta es usada para los cañones)

Code: Select all

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

public class Rotacion_torreta : MonoBehaviour
{
    public GameObject enemigo;
    private float rango = 250;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        enemigo = GameObject.Find("Enemigo(Clone)");
        float distancia = (enemigo.transform.position - this.transform.position).magnitude;
        if (distancia < rango)
        {
            Vector3 forwardAxis = new Vector3(0, 0, -1);
            this.transform.LookAt(enemigo.transform.position,forwardAxis);
            this.transform.eulerAngles = new Vector3(0, 0, -transform.eulerAngles.z*1.2f);
        }
    }
}
Deteccion de enemigos (usando el tutorial del profesor)

Code: Select all

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

public class Torre : MonoBehaviour
{
    public GameObject enemigo;
    private float rango = 250;
    // Start is called before the first frame update
    void Start()
    {
      
    }

    // Update is called once per frame
    void Update()
    {
        enemigo = GameObject.Find("Enemigo(Clone)");
        float distancia = (enemigo.transform.position - this.transform.position).magnitude;
        if (distancia < rango)
        {
            Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.black);
        }
        
    }
}
Que falta por hacer?
No se investigo nada sobre las animaciones para los motores. Toca arreglar detalles de la torre tales como son que los cañones sigan al objetivo, ademas de mejorar el botón para que sea posible generar las diversas torres. Cuadrar los códigos en clases tal como se vio en clase.

Dificultades
1)Falta de comunicación y compromiso en el equipo, pues no se ve aporte por parte del compañero ni intenciones de averiguar o avanzar en el proyecto
2)Aunque se implemento una rotación al cañón este solo sigue adecuadamente al enemigo cuando entra en el rango establecido, despues de que este avanza su rotación avanza muy lento respecto a lo que avanza el enemigo
3)No hay conocimiento de como organizar dichos scripts en las clases vistas en el aula de estudio
Manuel Felipe Velasquez S.
Estudiante de Programación Orientada a Objetos. 2019-02
If( X>1)FrodoSabeProgramar
Else FrodoEsPringado

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

Re: Brain Damage-Pshyco Games

Post by xacarana » Tue Sep 10, 2019 7:11 am

Image

Strike para Juan Pablo, acumula dos, en cuanto al equipo deben publicar la planeación del siguiente sprint, con la asignación de tareas por estudiante.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
LordFrodo
Posts: 14
Joined: Tue Jul 16, 2019 6:25 am

Re: Brain Damage-Pshyco Games

Post by LordFrodo » Tue Sep 10, 2019 10:45 pm

Sprint 9
Inicio: Septiembre 10
Finaliza: Septiembre 16

-Arreglo del movimiento: Juan Pablo Noreña (4)
-Arreglo vista de sprites en el juego: Juan Pablo Noreña (4)
-Implementacion de botones para le creacion de las diferentes torres: Manuel Felipe Velasquez (4)
-Implementacion Menu, victoria y derrota: Manuel Felipe Velasquez (4)
-Implementacion vida: Manuel Felipe Velasquez (2)
Manuel Felipe Velasquez S.
Estudiante de Programación Orientada a Objetos. 2019-02
If( X>1)FrodoSabeProgramar
Else FrodoEsPringado

Post Reply