Take Sides . WW III

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

Moderator: julianmartinez16

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 12, 2017 10:42 pm

¿Que hemos hecho?
Empezamos a montar la parte del bando de alien en unity.

¿Que dificultades hay?
Ninguna

¿Que vamos a hacer?
vamos a organizar el bando de humanos, también vamos a programar el contador de la vida de los humanos. y seguir creando los assets del mundo aliens.

Ya se empezó a montar el mundo de aliens
Image
El fondo no está definido todavía

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Tue Oct 17, 2017 1:28 pm

¿Que hemos hecho?
Ya definimos el diseño del bando aliens.

¿Qué dificultades hay?
Hay dificultad con la barra de vida, que cuando la bala colisiona con el enemigo no disminuye la barra hasta morir.

¿Qué vamos a hacer?
Vamos a organizar el mundo de aliens, y lograr hacer lo de la barra de vida

Diseño de Fondo Alien
Image

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 19, 2017 8:50 pm

¿Qué hemos hecho?
Hemos programado la vida, cambiamos la imágen del fondo que se vea más opaca para que se vean las torres(Recomendación de pre-entrega), también se programó el contador de diamantes,que (cuando muere un enemigo se van acumulando los diamantes).

¿Qué dificultades hay?
Programar el game over y el Pause

Qué vamos a hacer?
Vamos a buscar referencias o tutoriales de como programar el game over, y seguir programando el diseño del nivel(Bando Aliens).
Vista Previa en Unity
Image

Unidades con vida y contador(Nivel Humanos)
Image
Image

Vista Previa Bando Aliens
Image

vista Previa Bando Humanos
Image

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

Re: Take Sides . WW III

Post by xacarana » Sat Oct 21, 2017 9:24 am

Bien el avance, recuerden lo que les dije la preentrega, voy a hacer énfasis en la sustentación del código de su proyecto, eso es lo que mas vale de la nota.

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

User avatar
santiagomesa.497
Posts: 13
Joined: Tue Jul 18, 2017 4:08 pm

Re: Take Sides . WW III

Post by santiagomesa.497 » Tue Oct 24, 2017 10:50 pm

[22:25, 10/24/2017] Samuel : Qué hemos hecho?
Terminamos las gráficas al 100% de todo el juego, tenemos el nivel(bando humanos) casi terminado.


¿Qué dificultades hay?
Tener claros códigos del juego y su debida sustentación

¿Qué vamos a hacer?
Vamos a terminar de programar el GAME OVER, hacer la pausa del juego, y terminar el nivel(Bando aliens), también vamos a publicar los efectos de sonido. y vamos a publicar las gráficas de (bando aliens).

Gráficas del juego"Bando Aliens"

Vida
Image
Torre 1
Image
Torre 2
Image
Torre 3
Image
Base
Image
Button Pausa
Image
Diamantes
Image

Iconos
Image
Image
Image

Otros Botones para el menú
Image
Image
Image
Image
[22:25, 10/24/2017] Samuel :

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 26, 2017 8:27 pm

¿Qué hemos hchos?
Programamos el botton de pausa, reanudar, salir, el script del GAME OVER, y ya las torres tienen agregado el sonido del disparo

¿Que dificultades hay?
Ningunos

Que vamos a hacer?
vamos a programar que las torres tengan un precio, (mortero, trinchera, y la torre 3)

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 26, 2017 8:28 pm


User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 26, 2017 8:32 pm

Códigos utilizados en nuestro juego

Vida

Code: Select all

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

public class Vida : MonoBehaviour {

	

    public int vida;
    public Animator vidasController;


    void OnTriggerEnter2D(Collider2D otro)
    {
        if (otro.gameObject.tag == "bala")
        {
            vida = vida - 1;
            vidasController.SetInteger("vidas", vida);

        }
    }

    // Use this for initialization
    void Start()
    {

    }



    // Update is called once per frame
    void Update()
    {
        if (vida < 0) { vida = 0; }
        if (vida == 0)
        {
            // Esta seccion de codigo se ejecuta cuando un enemigo muere
            Puntuacion.contadorMuertes++;
            PoolingUnidades.unidades.Remove(this.gameObject);           
            Destroy(this.gameObject);
        }
        // Debug.Log("Has matado " + Puntuacion.contadorMuertes + " enemigos");
    }
}
Bala

Code: Select all

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

public class Bala : MonoBehaviour {

    private GameObject objetivo;
    private float speed = 9;

	// Use this for initialization
	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 += speed * direccion * Time.deltaTime;
        }
    }

    public void ActivarBala(Torre torre)
    {
        objetivo = torre.Enemigo;
    }
}
Cargar icono

Code: Select all

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

public class CargarIcono : MonoBehaviour {



    public GameObject Trinchera;
    public GameObject carpa;
    
    // Use this for initialization
    void Start()
    {
        Trinchera.SetActive(false);
        carpa.SetActive(false);
        
    }

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

    }

    //al precionar click
    void OnMouseDown()
    {
        //Trinchera
  
        Vector3 posuno = this.transform.position;
        posuno.x = posuno.x - .3f;
        posuno.y = posuno.y + .2f;
        Trinchera.transform.position = posuno;
        Trinchera.SetActive(true);

        //carpa
        Vector3 posdos = this.transform.position;
        posdos.x = posdos.x + .2f;
        posdos.y = posdos.y + .2f;
        carpa.transform.position = posdos;
        carpa.SetActive(true);


        

        

        //destructor de tarjet
        Destroy(this.gameObject);

    }


}
Create tower type

Code: Select all

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

public class CreateTowerType : MonoBehaviour {

    public GameObject towerSelectorButtons;

    public GameObject gunner;
    public GameObject trinchera;
    public GameObject mortero;

   
    [HideInInspector]
    public Vector3 pos;
    
	// Use this for initialization
	void Start () {
        //pos = new Vector3(0, 0, 0);
		
	}
	
	// Update is called once per frame
	void Update () {
    }

    public void CreateGunner ()
    {
        GameObject temp = Instantiate(gunner, pos, Quaternion.identity);
        temp.transform.position = pos;
        temp.layer = 5;
        towerSelectorButtons.SetActive(false);
    }

    public void CreateTrinchera()
    {
        GameObject temp = Instantiate(trinchera, pos, Quaternion.identity);
        temp.transform.position = pos;
        temp.layer = 5;
        towerSelectorButtons.SetActive(false);
    }

    public void CreateMortero()
    {
        GameObject temp = Instantiate(mortero, pos, Quaternion.identity);
        temp.transform.position = pos;
        temp.layer = 5;
        towerSelectorButtons.SetActive(false);
    }
}

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 26, 2017 8:40 pm

Game over

Code: Select all

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

public class GameOverLifes : MonoBehaviour {

    public static int vidasGameOver = 12;     

	// Use this for initialization
	void Start () {

	}
	
	// Update is called once per frame
	void Update () {
		
	}
}
Vida aliens

Code: Select all

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

public class GameOverLifes : MonoBehaviour {

    public static int vidasGameOver = 12;     

	// Use this for initialization
	void Start () {

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

Code: Select all

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

public class LogicaPausa : MonoBehaviour {

    public static bool isGamePaused = false;
    public GameObject dialogPause;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    public void PausarOReanudar()
    {
        // Si el juego no esta pausado
        if (isGamePaused == false)
        {
            PausarJuego();
        }
        else if (isGamePaused == true)
        {
            ReanudarJuego();
        }
    }

    public void PausarJuego()
    {
        isGamePaused = true;
        Time.timeScale = 0.0f;
        dialogPause.SetActive(true);
    }

    public void ReanudarJuego()
    {
        Time.timeScale = 1.0f;
        isGamePaused = false;
        dialogPause.SetActive(false);
    }

    public void SalirJuego(string scene)
    {
        SceneManager.LoadScene(scene);
    }
}
Logica poner torre

Code: Select all

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

public class LogicaPonerTorre : MonoBehaviour {


    
    public GameObject torre;
    public GameObject towerSelector;

    public GameObject objEvents;
    

    [HideInInspector]
    public bool showTowerSelectorMenu = false;

    private CreateTowerType towerType;

    void Start()
    {
        towerType = objEvents.GetComponent<CreateTowerType>();
    }

	void OnMouseDown()
    {
        Vector3 pos = this.transform.position;
        pos.y = pos.y + .4f;
        showTowerSelectorMenu = true;
        towerSelector.SetActive(showTowerSelectorMenu);
        towerType.pos = pos;
        Destroy(this.gameObject);
        }}

User avatar
Samuelparedes1404
Posts: 66
Joined: Tue Jul 18, 2017 4:10 pm

Re: Take Sides . WW III

Post by Samuelparedes1404 » Thu Oct 26, 2017 8:48 pm

Pooling unidades

Code: Select all

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

public class PoolingUnidades : MonoBehaviour {

    public GameObject unidad;
    public static ArrayList unidades = new ArrayList();
    // Use this for initialization  
    void Start()
    {
        CrearEnemigos(3);
    }

    public void CrearEnemigos(int countEnemies)
    {
        GameObject temp;
        
        //Vector3 incremento = new Vector3(0, 0, 0);
        Vector3 posicion_actual = unidad.transform.position;
        Vector3 incremento = new Vector3(posicion_actual.x, posicion_actual.y, 24);

        for (int i = 0; i < countEnemies; i++)
        {
            temp = (GameObject)Instantiate(unidad, posicion_actual + incremento, Quaternion.identity);
            temp.GetComponent<Unidad>().enabled = true;
            posicion_actual = temp.transform.position;
            unidades.Add(temp);
        }
    }

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

        if (unidades.Count == 0)
        {
            CrearEnemigos(3);
        }

    }
}
Puntuación

Code: Select all

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

public class Puntuacion : MonoBehaviour {

    public static int contadorMuertes = 0;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}
Torre

Code: Select all

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

public class Torre : MonoBehaviour
{
    private AudioSource audioSource;
    private AudioClip sonidoDisparo;
    private GameObject enemigo;
    private bool esta_activa;
    private float distancia_umbral = 3;

    public GameObject bala;
    private Transform torreTransform;

    private int disparar;

    [Range(0.1f, 10.0f)]
    public float shootDeltaTime = 1f; // disparar cada 2 segundos
    private float lastShootTime;

    // Use this for initialization
    void Start()
    {
        //  bala = GetComponent<GameObject>();
        torreTransform = GetComponent<Transform>();
        audioSource = gameObject.GetComponent<AudioSource>();
        audioSource.Stop();
        sonidoDisparo = audioSource.clip;
    }

    // Update is called once per frame
    void Update()
    {
        Enemigo = BuscarEnemigoCercano();
        //Debug.Log(PoolingUnidades.unidades.Count);
        if (enemigo != null)
        {
            if (Time.time - lastShootTime > shootDeltaTime)
            {                
                Disparar();
                lastShootTime = Time.time;
            }            
            Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.yellow);
        }
    }
Unidad

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_inicial;
    private Vector3 posicion_siguiente;
    private float vel = .4f;
    private float distancia_punto = 0.7f;
    private bool esta_viva;



    void OnTriggerEnter2D(Collider2D otro)
    {
        if (otro.gameObject.tag == "bala")
        {
            Destroy(otro.gameObject);
        }
    }
   
    // Use this for initialization
    void Start()
    {
        posicion_inicial = this.transform.position;
        posicion_siguiente = ruta.transform.GetChild(0).position;
    }

    // Update is called once per frame
    void Update()
    {
        Vector3 dir = posicion_siguiente - this.transform.position;
        this.transform.position += dir * vel * Time.deltaTime;



        if (esta_viva)
        {

        }

        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 = posicion_inicial;
                posicion_siguiente = ruta.transform.GetChild(0).position;
            }
        }

    }

    public bool Esta_viva
    {
        get
        {
            return esta_viva;
        }

        set
        {
            esta_viva = value;
        }
    }

}

Post Reply