Kabuki frogs - Aesthetic peach

En esta sección se realizará el seguimiento de los proyectos de semestre, con los respectivos avances periódicos según lo definido en la metodología SCRUM.

Moderator: julianmartinez16

User avatar
mushu
Posts: 10
Joined: Thu Jul 18, 2019 9:28 am

Re: Kabuki frogs - Aesthetic peach

Post by mushu » Thu Sep 19, 2019 8:48 am

Sprint 9

¿Qué hemos hecho?
  • Script vida del personaje:

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class Barra_de_vida : MonoBehaviour
    {
        float hp, maxHp = 100f;
        public Image vidas;
        void Start()
        {
            hp = maxHp;  
        }
    
         public void TakeDamage (float amount)
        {
            hp = Mathf.Clamp(hp - amount, 0f, maxHp);
            vidas.transform.localScale = new Vector2(hp / maxHp,1);
        }
        void Update()
        {
            
        }
    }
    
  • Script Enemy controller

    Code: Select all

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Enemy_Controller : MonoBehaviour
    {
        public float altura_salto;
        public float speed=1f;
        public float maxSpeed=1f;
        private Animator anim;
        private Rigidbody2D rb;
    
        void Start()
        {
            rb = GetComponent<Rigidbody2D>();
            anim = GetComponent<Animator>();
        }
    
        // Update is called once per frame
        void FixedUpdate()
        {
            rb.AddForce(Vector2.right * speed);
            float limitedSpeed = Mathf.Clamp(rb.velocity.x, -maxSpeed,maxSpeed);
            rb.velocity = new Vector2(limitedSpeed, rb.velocity.y);
    
            if (rb.velocity.x>-0.01f && rb.velocity.x < 0.01f)
            {
                speed = -speed;
                rb.velocity = new Vector2(speed, rb.velocity.y);
            }
            if (speed<0)
            {
                transform.localScale = new Vector3(1f, 1f, 1f);
    
            }
            else if (speed>0)
            {
                transform.localScale = new Vector3(-1f, 1f, -1f);
            }
        }
    }
    
  • Limitamos la cámara.
  • Presentación de la semana
¿Qué dificultades tuvimos?
La limitación de la cámara resultó en diversos bugs, desde ver solo el fondo que consiste en un color plano, a que siga el personaje con un desface en x que incomoda, no pudimos corregirlos en el tiempo que disponíamos, el juego se pausa después de tener contacto con el enemigo, hay que animar la barra de vida y programar la muerte del personaje.

¿Qué vamos a hacer?
Inicio: 19/09/2019
Final: 26/09/2019

  • Aplicar los scripts a la versión sin bugs: Michelle
Last edited by mushu on Thu Oct 24, 2019 1:07 am, edited 1 time in total.
Michelle Cadavid, estudiante
Image
"my drill is the drill that will pierce the heavens"

User avatar
mushu
Posts: 10
Joined: Thu Jul 18, 2019 9:28 am

Re: Kabuki frogs - Aesthetic peach

Post by mushu » Thu Oct 03, 2019 6:17 am

Sprint 10

¿Qué hemos hecho?
  • Aplicar los scripts a la versión sin bugs en la cámara:
Image

¿Qué dificultades tuvimos?
no son dificultades de esta tarea pero hacen falta realizar las siguientes correcciones: Limitar la cámara para que no se traslade más de lo necesario tanto arriba como abajo, programar muerte del personaje, corregir error al tocar el enemigo, corregir temblor al contacto con plataformas móviles, animar barra de vida.

¿Qué vamos a hacer?
Inicio: 26/09/2019
Final: 3/10/2019

  • Limitar la cámara, para esto:
    buscar información: Ambas.
    desarrollo del script: Michelle.
Last edited by mushu on Thu Oct 24, 2019 1:08 am, edited 4 times in total.
Michelle Cadavid, estudiante
Image
"my drill is the drill that will pierce the heavens"

User avatar
mushu
Posts: 10
Joined: Thu Jul 18, 2019 9:28 am

Re: Kabuki frogs - Aesthetic peach

Post by mushu » Thu Oct 03, 2019 6:39 am

Sprint 11

¿Qué hemos hecho?
  • Limitar la cámara, para esto modificamos el script que permite que siga el movimiento del personaje, aplicando Mathf.Clamp :

Code: Select all

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

public class camara : MonoBehaviour
    
{
    public Transform heroe;
    public Vector3 desplazamiento;
    public float limit_abajo = -3;
    public float limit_arriba = -1;
    public float limit_izq = -10;
    public float limit_der = 500;

    // Update is called once per frame
    void FixedUpdate()
    {
        transform.position = new Vector3(
            Mathf.Clamp (heroe.position.x + desplazamiento.x, limit_izq, limit_der),
            Mathf.Clamp(heroe.position.y + desplazamiento.y, limit_abajo, limit_arriba),
            desplazamiento.z);
    }
}
funciona:

Image

¿Qué dificultades tuvimos?
la mayoría de los tutoriales estaban para Unity 3D, utilizando las variables de diferentes maneras, por lo que se desarrolló el script según cada una, hasta comprender cómo funcionaba Mathf.Clamp donde pudimos aplicarlo al script que teníamos inicialmente.

¿Qué vamos a hacer?
Inicio: 03/10/2019
Final: 10/10/2019

  • corregir bugs en los scripts existentes: Michelle
    los bugs: Tocar enemigo, salto y temblor en plataforma movil, problema con la vida.
    Script de muerte de personaje: Marian
    Iniciar montaje de nivel 2: Marian.
Last edited by mushu on Thu Oct 24, 2019 1:08 am, edited 2 times in total.
Michelle Cadavid, estudiante
Image
"my drill is the drill that will pierce the heavens"

User avatar
mushu
Posts: 10
Joined: Thu Jul 18, 2019 9:28 am

Re: Kabuki frogs - Aesthetic peach

Post by mushu » Thu Oct 10, 2019 8:39 am

Sprint 12

¿Qué hemos hecho?
  • Coreregir bug que no permitía saltar fuera de la plataforma móvil, para eso aplicamos la función OnCollisionExit.

    fragmento del código:

    Code: Select all

    
    public class PlayerController : MonoBehaviour
    {
        public float altura_salto;
        public float velocidad_mov;
        private Rigidbody2D rb;
        private Animator anim;
        private bool toco_piso;
        private bool toco_movil;
        // Start is called before the first frame update
        void Start()
        {
            rb = GetComponent<Rigidbody2D>();                    // le indico al prograba que el personaje trabajará con las propiedades que tiene un rigidbody normalmente
            anim = GetComponent<Animator>();          // indico que el animator que afecta el rigidbody será utilizado en este script
        }
    
        private void OnCollisionEnter2D(Collision2D collider)   // indica qué hará el personaje cuando empiece a tener una colision
        {
            toco_piso = collider.gameObject.tag.Equals("piso");   //definimos cuándo son true los bool, dice que cuando está chocando con algo cuya etiqueta es piso.
            toco_movil = collider.gameObject.tag.Equals("plataforma_movil"); // true cuando está chocando con algo cuya etiqueta es plataforma_movil.
    
            if (toco_movil)   
            {
                rb.velocity = new Vector3(0f, 0f, 0f);   //la velocidad del personaje será 0 juuusto en el momento en que tocó la plataforma, sirve para la vertical pero está fallando en la horizontal.
                rb.transform.parent = collider.transform; //toma el movimiento de la plataforma
                Debug.Log(collider.transform);
            }
        }
    
        private void OnCollisionStay2D(Collision2D collider)
        {
            toco_piso = collider.gameObject.tag.Equals("piso");
            toco_movil = collider.gameObject.tag.Equals("plataforma_movil");
    
            if (toco_movil)
            {
    
                Debug.Log("Estoy en una plataforma móvil jijiji");  // imprimirá esto en la consola y me permite saber si esta función está ejecutandose correctamente.
                rb.transform.parent = collider.transform; //toma el movimiento de la plataforma.
            }
    
            if (toco_piso)
            {
                Debug.Log("Estoy tocando el piso -.-");
            }
    
        }
    
        private void OnCollisionExit2D(Collision2D collision)
        {
            Debug.Log("no estoy tocando nada jijiji");
            rb.transform.parent = null;
    
            if (toco_piso)
            {
            toco_piso = false;
            }
                    
            if (toco_movil)
            {
                toco_movil = false;
            }
        }
    
    funciona:
  • Corregir el bug del temblor, era un problema con el tiempo de muestreo de la cámara, para eso cambiamos el FixedUpdate por LateUpdate:

    Code: Select all

    
    public class camara : MonoBehaviour
        
    {
        public Transform rb;
        public Vector3 desplazamiento;
        public float limit_abajo = -3;
        public float limit_arriba = -1;
        public float limit_izq = -10;
        public float limit_der = 500;
    
        // Update is called once per frame
        void LateUpdate()
        {
            transform.position = new Vector3(
                Mathf.Clamp (rb.position.x + desplazamiento.x, limit_izq, limit_der),
                Mathf.Clamp(rb.position.y + desplazamiento.y, limit_abajo, limit_arriba),
                desplazamiento.z);
        }
    }
    
    
    antes y después:
¿Qué dificultades tuvimos?
no sabía cómo encontrar una función que sirviera para volver false toco__móvil (tocar plataforma movil) ya que desde void Update no funcionaba como si lo hacía con toco_piso.

¿Qué vamos a hacer?
Inicio: 10/10/2019
Final: 17/10/2019

  • Script de muerte de personaje: Marian
    Iniciar montaje de nivel 2: Marian.
    Programar jefe final lvl1: Michelle.
    hud de monedas: Michelle.
Last edited by mushu on Thu Oct 24, 2019 1:09 am, edited 3 times in total.
Michelle Cadavid, estudiante
Image
"my drill is the drill that will pierce the heavens"

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

Re: Kabuki frogs - Aesthetic peach

Post by xacarana » Thu Oct 17, 2019 8:41 am

Image

Hoy no veo la planeación ni tampoco avances, plazo hasta las 11:59 p.m.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
mushu
Posts: 10
Joined: Thu Jul 18, 2019 9:28 am

Re: Kabuki frogs - Aesthetic peach

Post by mushu » Thu Oct 17, 2019 10:47 pm

Sprint 13

¿Qué hemos hecho?
  • ahora el personaje se puede mover con WASD o con las flechas, a parte de poder saltar con W o UpArrow también se puede hacer con espacio, como se sienta más cómodo quien juegue, hicimos mejora en el movimiento del personaje, antes se podía pegar de las paredes, ahora tienen fricción 0 los colliders y la fricción en X es simulada desde el PlayerController.

    fragmento del código donde se hizo la simulación de fricción:

    Code: Select all

    
     void Update()
    
        {
         Vector2 FixedVelocity = rb.velocity;  //defino un vector igual al de la velocidad del rigidbody que es el héroe
            FixedVelocity.x *= 0.75f;   //  reasigno el valor en X, que al ser menor a 1 irá reduciendo la velocidad hasta llegar a 0
    
          if (toco_piso || toco_movil)    //si toco alguno de los dos tipos de suelo, se hará la siguiente resignación
            {
                rb.velocity = FixedVelocity;      
            }
        }
        
    
    antes del código (continua avanzando infinitamente aunque no camine) :

    Image

    después del código (se mueve normal) :

    Image
  • Ahora el HUD de vidas funciona

    Script del HUD:

    Code: Select all

    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Hud : MonoBehaviour
    {
    
        public PlayerController heroe;
        public GameObject barra_de_vida;
        private Animator anim;
        public const string ESTADO_VIDAS = "vidas";
    
        // Start is called before the first frame update
        void Start()
        {
            anim = barra_de_vida.GetComponent<Animator>();
        }
    
        // Update is called once per frame
        void Update()
        {
            anim.SetInteger(ESTADO_VIDAS, heroe.vidas);
        }
    }
    
    
    Fragmento de ajustes en el Script del personaje para el HUD:

    Code: Select all

    
     public int vidas = 3;
    
     private void OnCollisionEnter2D(Collision2D collider)
     
     	if (collider.transform.tag.Equals("muerte"))
            {
                if (--vidas>0)
                {
                    this.transform.position = pos_o;
                }
                else
                {
                    Debug.Log("ay me morí xd");
                }
                
            }
      
    
    Animator:

    Image

    Funciona:

    Image
¿Qué dificultades tuvimos?
tuvimos que quitar los enemigos porque se buggeaba, cuando abrimos el proyecto desde otro computador dejaron de funcionar varios scripts debido a un cambio en el nombre que no se guardó, La posición del HUD se comenzó a alterar, cosa que tampoco ocurría antes y tuvimos que pensar en una solución para ello, la cámara cambia de tamaño y posición cada vez que se abre el proyecto desde un pc diferente, entonces constantemente hay que reajustar tanto posición como límites de desplazamiento, yo hice el Script de muerte y el HUD de vidas, por lo que el tiempo no me alcanzó para hacer el de monedas, por eso ahora la tarea pasó a Marian para el siguiente Sprint.

¿Qué vamos a hacer?
Inicio: 17/10/2019
Final: 19/10/2019

  • Código para corregir movimiento del personaje: Michelle.
Last edited by mushu on Thu Oct 24, 2019 1:20 am, edited 1 time in total.
Michelle Cadavid, estudiante
Image
"my drill is the drill that will pierce the heavens"

User avatar
mushu
Posts: 10
Joined: Thu Jul 18, 2019 9:28 am

Re: Kabuki frogs - Aesthetic peach

Post by mushu » Thu Oct 24, 2019 1:19 am

Sprint 14

¿Qué hemos hecho?
  • Script para evitar que de saltos cuando la colisión es en el eje Y.

    Code: Select all

    
    
        public PlayerController heroe;                     // lo hago para poder acceder al bool eje_x
        public ContactPoint2D contact_plat;                // lo hago para poder definir el Vector normal mas adelante
        private Vector2 eje_y;                             // vector normal al eje Y, con dirección negativa
        private Vector2 eje_y_positivo;                    
        private Vector2 eje_x_positivo;                    // vector normal al eje X, con dirección positiva
        private Vector2 normal;
        private Vector2 eje_x_negativo;
    
        // Start is called before the first frame update
        void Start()
        {
            // doy valor a los vectores xd
           eje_y = new Vector2(-1f, 0f);
            eje_y_positivo = new Vector2(1f, 0f);
            eje_x_positivo = new Vector2(0f, 1f);
            eje_x_negativo = new Vector2(0f, -1f);
    
        
        }
        public void OnCollisionEnter2D(Collision2D coll)   // indica qué hará el personaje cuando empiece a tener una colision
        {
            //defino el punto de contacto y el vector normal
           contact_plat = coll.GetContact(0);
            normal = contact_plat.normal;
            //Debug.Log(normal);     //verificador
        
           if (normal == eje_y)
            {
                heroe.eje_x = false;
            }
            else
            { if (normal == eje_y_positivo || normal == eje_x_positivo)
                {
                    heroe.eje_x = false;
                }
    
                else
                {
                    if (normal == eje_x_negativo)
                        heroe.eje_x = true;
                }
            
            }
                              
            // Debug.Log(contact_plat.point.x); // lo usé para verificar que si lo tomaba
        }
        public void OnCollisionStay2D(Collision2D coll) // Indica que continuará haciendo el personaje
        {
            contact_plat = coll.GetContact(0);
            normal = contact_plat.normal;
    
            if (normal == eje_y)
            {
                heroe.eje_x = false;
            }
            else
            {
                if (normal == eje_y_positivo || normal == eje_x_positivo)
                {
                    heroe.eje_x = false;
                }
    
                else
                {
                    if (normal == eje_x_negativo)
                    {
                        heroe.eje_x = true;
                    }
                }
    
            }
        }
    }
    
        
    
    ¿Qué dificultades tuvimos?
    Tenía muchas carencias en el área de geometría entonces me costó mucho plantear esta solución.

    ¿Qué vamos a hacer?
    Inicio: 19/10/2019
    Final: 24/10/2019

    • Diapositivas: Ambas
    • Poner enemigos de nuevo y ajustar interacciones: Michelle.
    • Hud de Monedas: Marian.
    • Botón de pausa: Marian.
    • Boton de reinicio: Marian.
Michelle Cadavid, estudiante
Image
"my drill is the drill that will pierce the heavens"

User avatar
MarianJ_20
Posts: 9
Joined: Thu Jul 18, 2019 9:30 am

Re: Kabuki frogs - Aesthetic peach

Post by MarianJ_20 » Fri Nov 01, 2019 6:59 pm

Sprint 15

¿Qué hemos hecho?

preparamos la presentación del día 24 de octubre



tareas completadas:

HUD de monedas.
menú se pausa.
script del menú de pausa.
logramos que los enemigos hagan daño al personaje.
Los enemigos mueren.

¿Qué problemas tuvimos?

Muchas complicaciones al utilizar el repositorio, por lo que el HUD de monedas y el menú de pausa se encuentran en un proyecto diferente al que tiene enemigos funcionales.

¿Qué vamos a hacer?

Inicio: 24/10/2019
Final: 31/10/2019

Plataforma con movimiento circular: Michelle.
Pantalla GameOver: Marian.
Poner música: Marian.
Ranas con diálogos: Michelle.
Mejorar diapositivas: Ambas.
Cofres funcionales: Ambas.
Last edited by MarianJ_20 on Fri Nov 01, 2019 8:22 pm, edited 2 times in total.
Marian Johanna Piedrahita Ramirez
Alumna Fundamentos de programación 2019-2
“Inteligence lives longer than beauty.” ;)

User avatar
MarianJ_20
Posts: 9
Joined: Thu Jul 18, 2019 9:30 am

Re: Kabuki frogs - Aesthetic peach

Post by MarianJ_20 » Fri Nov 01, 2019 8:14 pm

Sprint 16

Pitch



Video Game Play

Marian Johanna Piedrahita Ramirez
Alumna Fundamentos de programación 2019-2
“Inteligence lives longer than beauty.” ;)

Post Reply