Desert Space - Jump Motherfucker

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
Awaketo
Posts: 29
Joined: Thu Jul 18, 2019 9:29 am

Re: Desert Space - Jump Motherfucker

Post by Awaketo » Fri Oct 04, 2019 4:51 am

Image

Se logró hacer un feedback al momento de colisionar un enemigo con el player. El player recibe un empujón y cambia su color a rojo, Falta agregar que vuelva a su estado de color normal. Pero se consiguió que se sepa que el jugador recibió daño :)!

Se cambió el script de los enemigos, por este motivo ahora cambian de dirección cuando chocan con una pared, por esto se le puso dos muros a los costados.
Juan Osorio Ceballos
Estudiante de fundamentos de programación. :geek:
Gyga Tryhard

User avatar
EliteP
Posts: 29
Joined: Thu Jul 18, 2019 9:31 am

Re: Desert Space - Jump Motherfucker

Post by EliteP » Thu Oct 10, 2019 8:24 am

¿Qué hemos hecho?
Se diseñó el segundo nivel dentro de unity
Se creó un nuevo obstáculo (los picos o pinchos)
Se creó un segundo obstáculo (piscina de ácido*Sprite por elegir*)
El feedback de la vida ahora funciona



¿Qué vamos a hacer?
Agregar un segundo obstáculo de plataforma (plataforma que cae después de tocarla)
Agregar un nuevo PickUp que de más puntos
Posicionar los PickUps en el segundo nivel
Buscar Sprite para un segundo enemigo


¿Qué dificultades hemos tenido?
El feedback de vida presenta un error al activarse pero ahora por lo menos funciona.
Al subir el proyecto a la nube por algún motivo se mueven las vidas, un error pequeño que se puede arreglar en un momento

Sprint 11

Inicio: 04/10/2019
Final: 10/10/2019

Tareas
Mirar el video de la semana(todos)
Crear segundo PickUp y posicionarlos en el segundo nivel (Emanuel)
Programar la segunda plataforma(la que se cae)(Juan)
Hacer al segundo enemigo con el código del primero(Mateo)
Emanuel Perez, estudiante
"Keelah Se'lai"

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

Re: Desert Space - Jump Motherfucker

Post by xacarana » Thu Oct 10, 2019 8:38 am

Image

Sprint sin evidencias no es válido. Tienen todo el día para publicar el formato donde podamos ver el avance. Adicionalmente hay publicaciones que no tienen planeación y tampoco responden las preguntas.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
EliteP
Posts: 29
Joined: Thu Jul 18, 2019 9:31 am

Re: Desert Space - Jump Motherfucker

Post by EliteP » Thu Oct 10, 2019 10:59 pm

Se creo un segundo PickUp que otrorga mas punto al jugador
Este Pick Up esta programado de manera simiral anterior, cambia su tamaño como el de su Collider, las animaciones son distintas y esta distribuido por el mapa con menos frecuencia; en codigo tiene un puntaje otrogado diferente asi como su tag para que no se confunda con el otro Pick Up.


Animacion del segundo Pick Up
Se hizo la animacion del PickUp de cinco(5) puntos implementada al juego.

Image



Elementos y componentes del PickUp2
Tiene lo basico, un animador,un collider y su tag propia para evitar errores.

Image


Animator del Pick Up

Image


Codigo del segundo Pick Up
Las siguientes imagenes son las lineas que se agregaron al codigo del movimiento del jugador para que de un puntaje diferente y colisione con este al tener otra tag .

Se declara e inicializa la variable para los puntajes que otorgaran cada uno de los pick ups.

Image



Se agrega un if que desactive el Pick Up al colisionar con el y que sume el puntaje del Pick Up correspondiente.

Image


Adjunto tambien el codigo del movimiento del jugador actualizadocon este codigo.

Code: Select all

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

public class PlayerController : MonoBehaviour
{
    public int Puntaje = 1;
    public int Puntaje2 = 5;   //Puntajes para los PickUps

    public float speed = 2f;      //Permite elegir la velocidad
    public float maxSpeed = 5f;   //Establece un valor maximo de velocidad
    public bool grounded;         // booleanos que permite muestra si se encuentra o no en "el suelo"
    public float jumpPower = 6.5f;//Permite elegir la distancia del salto

    private Rigidbody2D rb2d;
    private Animator anim;         //Permite la animacion
    private bool jump;
    private Vector2 pos_0;
    //public const string MUERTE = "Muerte";

    // Start is called before the first frame update
    void Start()
    {
        pos_0 = this.transform.position;
        rb2d = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        anim.SetFloat("Speed", Mathf.Abs(rb2d.velocity.x));   //Determina si se encuentra o no en el suelo y permite o no realizar un salto
        anim.SetBool("Grounded", grounded);

        if (Input.GetKeyDown(KeyCode.UpArrow) && grounded)
        {
            jump = true;
        }
    }

    private void FixedUpdate()
    {
        float h = Input.GetAxis("Horizontal");

        rb2d.AddForce(Vector2.right * speed * h);                           //Determina las direcciones con respecto a la velocidad

       if (rb2d.velocity.x > maxSpeed)
        {
            rb2d.velocity = new Vector2(maxSpeed, rb2d.velocity.y);             
        }
        if (rb2d.velocity.x < -maxSpeed)
        {
            rb2d.velocity = new Vector2(-maxSpeed, rb2d.velocity.y);
        }

        if (h > 0.1f)
        {
            transform.localScale = new Vector3(1f, 1f, 1f);
        }

        if (h< -0.1f)
        {
            transform.localScale = new Vector3(-1f, 1f, 1f);
        }

        if (jump)
        {
            rb2d.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);             //Determinar la distancia de salto 
            jump = false;
        }
        Debug.Log(rb2d.velocity.x);

    }
    void OnTriggerEnter2D(Collider2D other)
    {

        if (other.gameObject.CompareTag("PickUp"))      //Al colisionar con el objeto con dicha Tag este se desactivara 
        {

            other.gameObject.SetActive(false);
            ControlPuntos.Score += Puntaje;             //Al colisionar con este objeto tambien sumara +1 al puntaje
            
        }
        if (other.gameObject.CompareTag("PickUp2"))      //Al colisionar con el objeto con dicha Tag este se desactivara 
        {

            other.gameObject.SetActive(false);
            ControlPuntos.Score +=  Puntaje2;             //Al colisionar con este objeto tambien sumara +1 al puntaje

        }

        if (other.gameObject.Equals("Muerte"))
        {
            this.transform.position = pos_0;
        }
        
    }

}

Distriucion de Pick Ups por el segundo mapa
Los espacios vacios son para enemigos nuevos, tambien de necesitarse se eliminaran alguno apra agregar elementos nuevos al mapa.
(Lo que se ve en gris es el Canvas que la edicion se ve sobre el mapa pero a la hora de jugar esta donde deberia, es un Canvas al fin y al cabo).

Image


Extra
Se cambio el color del Canvas de la Energia para que fuera perfectamente visible en el segundo nivel debido a la paleta del fondo.

Image
Emanuel Perez, estudiante
"Keelah Se'lai"

User avatar
Awaketo
Posts: 29
Joined: Thu Jul 18, 2019 9:29 am

Re: Desert Space - Jump Motherfucker

Post by Awaketo » Thu Oct 10, 2019 11:30 pm

Image

Se programó y se le dio color distintivo a nueva plataforma que cae al hacer contacto con el jugador, aún falta programar bien el delay de caiga y que no colapse con el resto de plataformas.

Image

Código de la plataforma.

Hubo un error al añadir el código para que no colapsara con las otras plataformas, pues al añadirlo la plataforma ni caía, se intentará solucionar lo más rápido posible.
Juan Osorio Ceballos
Estudiante de fundamentos de programación. :geek:
Gyga Tryhard

User avatar
Awaketo
Posts: 29
Joined: Thu Jul 18, 2019 9:29 am

Re: Desert Space - Jump Motherfucker

Post by Awaketo » Wed Oct 16, 2019 11:05 pm

¿Qué hemos hecho?
Se ubicaron nuevos espacios para los enemigos.
Se programó y creó la plataforma que cae.
Se ubicaron nuevos pick ups que dan más puntos en el segundo nivel.



¿Qué vamos a hacer?
Probar el segundo nivel y sus obstáculos.
Dar por terminado el efecto feedback de daño
Programar el paso de nivel
Programación final (movimiento y daño) del segundo enemigo

¿Qué dificultades hemos tenido?


Sprint 12

Inicio: 11/10/2019
Final: 17/10/2019

Tareas
Mirar el vídeo de la semana(todos)
Programar paso del nivel al llegar al portal (Emanuel)
Terminar feedback de daño (Juan)
Programación definitiva segundo enemigo (Mateo)
Juan Osorio Ceballos
Estudiante de fundamentos de programación. :geek:
Gyga Tryhard

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

Re: Desert Space - Jump Motherfucker

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

Image

Recuerden al publicar el código se debe hacer con las etiquetas apropiadas, muy bien por el seguimiento de hoy y la planeación. Recuerden al publicar las evidencias decir quien fue el encargado de cada entregable.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
Awaketo
Posts: 29
Joined: Thu Jul 18, 2019 9:29 am

Re: Desert Space - Jump Motherfucker

Post by Awaketo » Wed Oct 23, 2019 11:15 pm

Image

El feedback de la colisión con el enemigo está hecha, pero no quita corazones a pesar de que ya está el código.
Juan Osorio Ceballos
Estudiante de fundamentos de programación. :geek:
Gyga Tryhard

User avatar
Awaketo
Posts: 29
Joined: Thu Jul 18, 2019 9:29 am

Re: Desert Space - Jump Motherfucker

Post by Awaketo » Wed Oct 23, 2019 11:17 pm

Image
Se añadieron otros tres enemigos en distintas plataformas del nivel, se modificó el target.
Juan Osorio Ceballos
Estudiante de fundamentos de programación. :geek:
Gyga Tryhard

User avatar
EliteP
Posts: 29
Joined: Thu Jul 18, 2019 9:31 am

Re: Desert Space - Jump Motherfucker

Post by EliteP » Wed Oct 23, 2019 11:25 pm

Reinicio del nivel al perder todas las vidas


Image


Cambio de nivel al tocar el portal

Image

El portal que cambia de nivel con sus elementos

Image

El codigo usado(es el codigo del movimiento del jugador)

Code: Select all

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

public class PlayerController : MonoBehaviour
{
    public int Puntaje = 1; 

    public float speed = 2f;      //Permite elegir la velocidad
    public float maxSpeed = 5f;   //Establece un valor maximo de velocidad
    public bool grounded;         // booleanos que permite muestra si se encuentra o no en "el suelo"
    public float jumpPower = 6.5f;//Permite elegir la distancia del salto

    private Rigidbody2D rb2d;
    private Animator anim;         //Permite la animacion
    private SpriteRenderer spr;
    private bool jump;
    private Vector2 pos_o;
    private bool movement = true;
    public const string MUERTE = "Muerte";
    private int vidas = 3;

    //Asigna o retorna las vidas del personaje
    public int Vidas
    {
        get
        {
            return vidas;
        }
        set
        {
            vidas = value;
        }
    }


    // Start is called before the first frame update
    void Start()
    {
        pos_o = this.transform.position;
        rb2d = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
        spr = GetComponent<SpriteRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        anim.SetFloat("Speed", Mathf.Abs(rb2d.velocity.x));   //Determina si se encuentra o no en el suelo y permite o no realizar un salto
        anim.SetBool("Grounded", grounded);

        if (Input.GetKeyDown(KeyCode.UpArrow) && grounded)
        {
            jump = true;
        }
    }

    private void FixedUpdate()
    {
        float h = Input.GetAxis("Horizontal");
        if (!movement) h = 0;

        rb2d.AddForce(Vector2.right * speed * h);                           //Determina las direcciones con respecto a la velocidad

       if (rb2d.velocity.x > maxSpeed)
        {
            rb2d.velocity = new Vector2(maxSpeed, rb2d.velocity.y);             
        }
        if (rb2d.velocity.x < -maxSpeed)
        {
            rb2d.velocity = new Vector2(-maxSpeed, rb2d.velocity.y);
        }

        if (h > 0.1f)
        {
            transform.localScale = new Vector3(1f, 1f, 1f);
        }

        if (h< -0.1f)
        {
            transform.localScale = new Vector3(-1f, 1f, 1f);
        }

        if (jump)
        {
            rb2d.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);             //Determinar la distancia de salto 
            jump = false;
        }
        Debug.Log(rb2d.velocity.x);

    }


    void OnTriggerEnter2D(Collider2D other)
    {

        if (other.gameObject.CompareTag("PickUp"))      //Al colisionar con el objeto con dicha Tag este se desactivara 
        {

            other.gameObject.SetActive(false);
            ControlPuntos.Score += Puntaje;             //Al colisionar con este objeto tambien sumara +1 al puntaje
            
        }

        
        
    }
    public void EnemyKnockBack(float enemyPosX)
    {
        float side = Mathf.Sign(enemyPosX - transform.position.x);
        rb2d.AddForce(Vector2.left * side * jumpPower, ForceMode2D.Impulse);
        spr.color = Color.red;
        movement = false;
        
        
    }
    public void EnemyJumo()
    {
        jump = true;
    }

    private void OnCollisionEnter2D(Collision2D col)      //Al colisionar con:
    {
        if (col.transform.tag.Equals("Portal"))           //Al colisonar con el portal te lleva a la escena Lvl2
        {
            SceneManager.LoadScene("Lvl2");
        }

        if (col.transform.tag.Equals("Portal2"))         //Al colisionar con el portal te muestra la pantalla de Victoria
        {
            SceneManager.LoadScene("Ganaste SN");
        }

        if (col.transform.tag.Equals("PlataformaMovil"))
        {
            transform.parent = col.transform;
        }
        else
        {
            transform.parent = null;
        }

        if (col.gameObject.tag.Equals("Enemigo"))
        
        {
            vidas -= 1;
            Destroy(col.gameObject);
            spr.color = Color.red;

            Invoke("EnableMovement", 0.5f);
        }

        if (col.transform.tag.Equals(MUERTE))
        {
            if (--vidas > 0)
            {
                this.transform.position = pos_o;
            }
            else
            {
                Debug.Log("F");
            }
        }
        if (vidas <= 0)                                             //Al perder toda la vida el jugador se destruye
        {
            gameObject.SetActive(false);
            SceneManager.LoadScene(SceneManager.GetActiveScene().name);  //Reinicia la Escena actual






        }
    }
    void EnableMovement()
    {
        spr.color = Color.white;
    }



}
Last edited by EliteP on Thu Oct 24, 2019 6:29 am, edited 3 times in total.
Emanuel Perez, estudiante
"Keelah Se'lai"

Post Reply