Page 2 of 3

Re: Sharcade Adventures - SLBG

Posted: Sat Feb 29, 2020 10:57 pm
by SharkLava
¿QUE HEMOS HECHO?
  • Finalizacion mapa y correciones a torretas (Marcelo)
  • Script deteccion enemigos (Laura)
Correciones a torres
Image

Mapa Finalizado
Image

Script deteccion enemigos

Code: Select all

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

public class Torre : MonoBehaviour
{

    public GameObject Enemigo;
    private float distancia_umbral = 4;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float dist = (Enemigo.transform.position - this.transform.position).magnitude;

        if(dist <= distancia_umbral)
        {
            Debug.DrawLine(this.transform.position, Enemigo.transform.position, Color.green);
        }
    }
}
Deteccion de enemigos en Unity
Image

¿QUE VAMOS A HACER?
  • Sprites Enemigos (Laura)
  • Creacion de torres Unity (Marcelo)

¿PROBLEMAS HASTA AHORA?
Tenemos un problema con el Collab de unity, el cual al bajar las actualizaciones de cambios en el proyecto, actualiza el contenido de las carpetas, más no del viewport.

Re: Sharcade Adventures - SLBG

Posted: Wed Mar 04, 2020 10:18 pm
by BoyGirl
¿QUÉ HEMOS HECHO?
  • Spritesheet enemigos (Laura)
  • Spawn Torres y Pooling Unity (Marcelo)
Spawn Torres:

Image

Código poner torre:

Code: Select all

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

public class LogicaPonerTorre : MonoBehaviour
{
    public GameObject torre;

    private void OnMouseDown()
    {
        GameObject temp;
        Vector3 pos = this.transform.position;
        pos.y = pos.y + 1.3f;
        temp = Instantiate(torre);
        temp.transform.position = pos;
        temp.layer = 5;
        Destroy(this.gameObject);
    }

}
Código pooling unidades:

Code: Select all

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

public class PoolingUnidades : MonoBehaviour
{
    public static ArrayList unidades = new ArrayList();
    // Start is called before the first frame update
    void Start()
    {
        GameObject unidad = GameObject.Find("TemporalPlayer");
        GameObject temp;
        Vector3 incremento = new Vector3(0, -1);
        Vector3 posicion_actual = unidad.transform.position;
        for (int i = 0; i < 10; i++)
        {
            temp = (GameObject)Instantiate(unidad, posicion_actual + incremento, Quaternion.identity);
            posicion_actual = temp.transform.position;
            unidades.Add(temp);
        }
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
Spritesheet Enemigos:

Image

¿QUÉ VAMOS A HACER?
  • Entorno del mapa (Laura)
  • Barra de vida y dirección de movimiento enemigos (Marcelo)
  • Pruebas de balance y correcciones (Ambos)
¿PROBLEMAS HASTA AHORA?
  • Mismo del anterior post :(
Image

Re: Sharcade Adventures - SLBG

Posted: Fri Mar 06, 2020 2:47 pm
by xacarana
Image

Muy bien como se van viendo los avances.

Re: Sharcade Adventures - SLBG

Posted: Fri Mar 06, 2020 11:00 pm
by SharkLava
¿QUÉ HEMOS HECHO?
  • Codigo disparo enemigos (Marcelo)
  • Cambios a otros codigos (Laura)

Codigo disparo

Code: Select all

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

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()
    {
        if(objetivo != null)
        {
            Vector3 direccion = objetivo.transform.position - this.transform.position;
            this.transform.position += velocidad * direccion * Time.deltaTime;
        }

    }

    public void ActivarBala(Torre torre)
    {
        objetivo = torre.Enemigo;
    }
}
Cambios en otros scripts

Script de Torre

Code: Select all

    void Disparar()
    {
        GameObject obj = (GameObject)Instantiate(GameObject.Find("BalaTemporal"), this.transform.position, Quaternion.identity);
        Bala BalaTemporal = obj.GetComponent<Bala>();
        BalaTemporal.ActivarBala(this);
    }
Script de Unidad

Code: Select all

    private void OnTriggerEnter2D(Collider2D otro)
    {
        if(otro.gameObject.tag == "bala")
        {
            Destroy(otro.gameObject);
        }
    }

¿QUÉ VAMOS A HACER?
  • Barra de vida y direccion de movimiento de enemigos(Marcelo)
  • Finalizar detalles del mapa y otros sprites(Laura)
¿PROBLEMAS HASTA AHORA?
  • El mismo de los ultimos posts

Re: Sharcade Adventures - SLBG

Posted: Wed Mar 11, 2020 2:29 pm
by xacarana
Image

¡Muy bien! Incluyan un avance gráfico, ojala un video para ir viendo el avance.

Re: Sharcade Adventures - SLBG

Posted: Wed Mar 11, 2020 11:35 pm
by BoyGirl
¿QUE HEMOS HECHO?
  • direccion de movimiento de enemigos(Marcelo)
Image

Código Unidades:

Code: Select all

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

public class Unidad : MonoBehaviour
{
    [SerializeField]
    private GameObject ruta;
    private int indice;
    private Vector2 posicion_inicial;
    private Transform posicion_siguiente;
    private Transform posicion_actual;
    private float vel;
    private float distancia_punto;
    private bool esta_vivo;
    private float tiempo;
    private int vidas;
    private Vector3 posicion_muerte;
    private Animator controlador;
    



    void Start()
    {
        vel = 1f;
        vidas = 3;
        distancia_punto = 0.1f;
        esta_vivo = true;
        posicion_inicial = this.transform.position;
        posicion_siguiente = ruta.transform.GetChild(0);
        controlador = this.GetComponent<Animator>();
    }


    void Update()
    {
        //Vector3 dir = posicion_siguiente - this.transform.position;

        if (esta_vivo)
        {
            transform.position = Vector2.MoveTowards(transform.position, posicion_siguiente.position, vel * Time.deltaTime);

            if (Vector2.Distance(transform.position,posicion_siguiente.position) < distancia_punto)
            {
                if (indice + 1 < ruta.transform.childCount)
                {
                    indice++;
                    posicion_actual = posicion_siguiente;
                    posicion_siguiente = ruta.transform.GetChild(indice);  
                    CambiarPosicion();
                }
                else
                {
                    indice = 0;
                    transform.position = posicion_inicial;
                    posicion_siguiente = ruta.transform.GetChild(0);
                    posicion_actual = null;

                }
            }
        }
       
    }

    private void CambiarPosicion()
    {
        int direccion = 1;
        Direccion mira_hacia;

        if (posicion_actual != null)
        {
            mira_hacia = posicion_actual.GetComponent<Direccion>();
            if(mira_hacia.Ubicacion == Direccion.ARRIBA)
            {
                direccion = Direccion.ARRIBA;
            }
            if (mira_hacia.Ubicacion == Direccion.DERECHA)
            {
                direccion = Direccion.DERECHA;
            }
            if (mira_hacia.Ubicacion == Direccion.IZQUIERDA)
            {
                direccion = Direccion.IZQUIERDA;
            }
            controlador.SetInteger("Direccion", direccion);
        }
    }

    private void OnTriggerEnter2D(Collider2D otro)
    {
        if(vidas > 0)
        {
            if (otro.gameObject.tag == "bala")
            {
                Destroy(otro.gameObject);
            }
        }
        
    }

    public bool Esta_vivo { get => esta_vivo; set => esta_vivo = value; }
}

Código Dirección:

Code: Select all

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

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

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

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

¿QUE VAMOS A HACER?
  • Finalización Assets (Laura)
  • Musica del juego (Laura)
  • Barra de vida (Marcelo)

PROBLEMAS HASTA AHORA

Solucionado

Re: Sharcade Adventures - SLBG

Posted: Fri Mar 13, 2020 11:40 pm
by SharkLava
[b]¿QUE HEMOS HECHO?[/b]
  • Finalizacion detalles del mapa (hojas)(Laura)
  • Se comenzo a refactorizar el proyecto (Marcelo)
Detalles y animaciones en el juego
Image

Sprites de las hojas
Image
Image
Image

¿QUE VAMOS A HACER?
  • Finalizar refactorizacion (Marcelo)
  • Sprites balas y hud(Laura)
  • Musica del juego(Ambos)

PROBLEMAS HASTA AHORA
  • Solucionado

Re: Sharcade Adventures - SLBG

Posted: Wed Mar 18, 2020 11:28 pm
by BoyGirl
¿QUÉ HEMOS HECHO?
  • Avances gráficos (letreros y flechas) (Laura)
  • Scripts: unidad, bala, logica de barra (Marcelo)

Letreros:

Image

Image

Barras de Vida:

Image

Script Unidad

Code: Select all

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

public class Unidad : MonoBehaviour
{
    [SerializeField]
    private GameObject ruta;
    private int indice;
    private Vector2 posicion_inicial;
    private Transform posicion_siguiente;
    private Transform posicion_actual;
    [SerializeField]
    private float vel;
    private float distancia_punto;
    private bool esta_vivo;
    private float tiempo;
    [SerializeField]
    private int vidas;
    private Vector3 posicion_muerte;
    private Animator controlador;
    private LogicaBarra lb;
    private float delta_vida;

    public bool Esta_vivo { get => esta_vivo; set => esta_vivo = value; }
    public Vector3 Posicion_muerte { get => posicion_muerte; set => posicion_muerte = value; }

    void Start()
    {
        vel = 1f;
        vidas = 3;
        distancia_punto = 0.1f;
        delta_vida = 1f / vidas;
        Esta_vivo = true;
        posicion_inicial = this.transform.position;
        posicion_siguiente = ruta.transform.GetChild(0);
        controlador = this.GetComponent<Animator>();
        lb = this.GetComponent<LogicaBarra>();
    }


    void Update()
    {
        //Vector3 dir = posicion_siguiente - this.transform.position;

        if (Esta_vivo)
        {
            transform.position = Vector2.MoveTowards(transform.position, posicion_siguiente.position, vel * Time.deltaTime);

            if (Vector2.Distance(transform.position,posicion_siguiente.position) < distancia_punto)
            {
                if (indice + 1 < ruta.transform.childCount)
                {
                    indice++;
                    posicion_actual = posicion_siguiente;
                    posicion_siguiente = ruta.transform.GetChild(indice);  
                    CambiarPosicion();
                }
                else
                {
                    indice = 0;
                    transform.position = posicion_inicial;
                    posicion_siguiente = ruta.transform.GetChild(0);
                    posicion_actual = null;

                }
            }

        }
        else
        {
            Posicion_muerte = this.transform.position;
            this.transform.position = posicion_inicial;
        }

    }

    private void CambiarPosicion()
    {
        int direccion = 1;
        Direccion mira_hacia;

        if (posicion_actual != null)
        {
            mira_hacia = posicion_actual.GetComponent<Direccion>();
            if(mira_hacia.Ubicacion == Direccion.ARRIBA)
            {
                direccion = Direccion.ARRIBA;
            }
            if (mira_hacia.Ubicacion == Direccion.DERECHA)
            {
                direccion = Direccion.DERECHA;
            }
            if (mira_hacia.Ubicacion == Direccion.IZQUIERDA)
            {
                direccion = Direccion.IZQUIERDA;
            }
            controlador.SetInteger("Direccion", direccion);
        }
    }

    private void OnTriggerEnter2D(Collider2D otro)
    {
        Bala bala;

        if(vidas > 0)
        {
            if (otro.gameObject.tag == "bala")
            {
                bala = otro.gameObject.GetComponent<Bala>();
                bala.Disparada = false;

                if(--vidas == 0)
                {
                    Esta_vivo = false;
                    Hud.ActualizarMoneda(10);
                }
                else
                {
                    lb.ModificarBarra(delta_vida);                   
                }

            }
        }
        
    }

}

Script Bala

Code: Select all

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

public class Bala : MonoBehaviour
{
    public const float TIEMPO_DISPARO = 0.5f;
    private GameObject objetivo;
    private float velocidad;
    private bool disparada;
    private Vector3 punto_inicial;
    private float tiempo;
    private SpriteRenderer sr;

    public bool Disparada { get => disparada; set => disparada = value; }

    // Start is called before the first frame update
    void Start()
    {
        velocidad = 7;
        sr = this.GetComponent<SpriteRenderer>();
        punto_inicial = new Vector3(-5, 6);
        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;
        Unidad unidad = objetivo.GetComponent<Unidad>();

        if (unidad.Esta_vivo)
        {
            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);
    }
}
Script Logica 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.0)
        {
            sr.transform.localScale -= new Vector3(escala, 0);
        }
        else
        {
            
        }
    }
    // Update is called once per frame
    void Update()
    {

    }
}
¿QUÉ VAMOS A HACER?
  • Hud (Marcelo)
  • Script del HUD(Laura)
¿PROBLEMAS HASTA AHORA?
  • Bugs menores

Re: Sharcade Adventures - SLBG

Posted: Fri Mar 20, 2020 9:30 pm
by SharkLava
¿QUÉ HEMOS HECHO?
  • Assets mejora torre, bala y demas, script ControlesTorre (Laura)
  • Script Hud y ActualizarTorre, ganar dinero, precios torres e implementacion de UI a Unity(Marcelo)
Script ControlesTorre

Code: Select all

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

public class ControlesTorre : MonoBehaviour
{
    [SerializeField]
    private GameObject btn_actualizar;
    [SerializeField]
    private GameObject btn_vender;


    // Start is called before the first frame update
    void Start()
    {
        CambiarEstadoBotones(false);
    }

    private void OnMouseDown()
    {
        CambiarEstadoBotones(true);
    }
    public void CambiarEstadoBotones(bool estado)
    {
        btn_actualizar.SetActive(estado);
        btn_vender.SetActive(estado);
    } 

}
Script ActualizarTorre

Code: Select all

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

public class ActualizarTorre : MonoBehaviour
{
    private ControlesTorre ct;
    private Animator estados;

    // Start is called before the first frame update
    void Start()
    {
        ct = this.GetComponentInParent<ControlesTorre>();
        estados = this.GetComponentInParent<Animator>();
    }

    private void OnMouseDown()
    {
        estados.SetInteger("Nivel", 1);
        ct.CambiarEstadoBotones(false);
        
    }

}
Script Hud

Code: Select all

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

public class Hud : MonoBehaviour
{
    private static Hud instancia;
    [SerializeField]
    private Text monedas;
    private int contador_monedas;

    public int Contador_monedas { get => contador_monedas; set => contador_monedas = value; }

    public void ActualizarMoneda(int valor)
    {
        Contador_monedas += valor;
    }

    public static Hud GetInstance()
    {
        return instancia;
    }

    private void Start()
    {
        instancia = this;
        contador_monedas = 75;
    }

    // Update is called once per frame
    void Update()
    {
        monedas.text = Contador_monedas.ToString();
    }
    public void DescontarSaldo(int valor)
    {
        contador_monedas -= valor;
        StartCoroutine("CambiarColorSaldo", Color.green);
    }

    public void ErrorSaldoInsuficiente()
    {
        StartCoroutine("CambiarColorSaldo", Color.red);       
    }
    public IEnumerator CambiarColorSaldo(Color color)
    {
        monedas.color = color;
        yield return new WaitForSeconds(0.5f);
        ResetearColorSaldo();
    }

    public void ResetearColorSaldo()
    {
        monedas.color = Color.black;
    }
}
Assets moneda, mejora y bala
Image
Image
Image

Hud Implementado
Image

Hud, venta de torres y ganar dinero implementado en Unity
Image

Re: Sharcade Adventures - SLBG

Posted: Wed Mar 25, 2020 10:17 pm
by BoyGirl
¿QUÉ HEMOS HECHO?
  • Finalizar tutoriales (Ambos)
  • Menu (Laura)
  • Script Menú:

Code: Select all

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

public class PauseMenu : MonoBehaviour
{

    public static bool GameIsPaused = false;
    public GameObject pauseMenuUI;


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

            }
        }
    }

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

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

    public void LoadMenu()
    {
        Time.timeScale = 1f;
        SceneManager.LoadScene("Menu");
    }
    public void QuitGame()
    {
        Debug.Log("Quitting...");
    }

        
}
Image


Image

¿QUÉ VAMOS A HACER?
Corregir Bugs(Ambos), Menu de Inicio (Laura), Banda sonora (Externo)


¿PROBLEMAS HASTA AHORA?
Problemas para upgradear la torre por segunda vez.