Page 6 of 7

Re: Neugier Battles - Wintergarnele Studios

Posted: Thu Apr 25, 2019 11:58 pm
by wintuh
¿Qué hemos hecho?

Programación:

Principalmente se implementó un minijuego de combate con las caras de ambos integrantes del equipo. Este minijuego va a ser accedido a manera de "easter egg" al final de los créditos, y su único propósito es divertir y hacer reír a quienes lo encuentren. No hay vidas, y tiene mecanismos un tanto alocados, con un video trippy que hizo martín. También se terminó el mapa del juego, agregandole sombras y texturas que le dan más vida al dibujo. Se implementó una transición animada que aparece entre cada cambio de escena. Al igual que una pequeña animación básica del menu de pausa, en vez de aparecer instantáneamente.

Animación:

Se implentaron animaciones de las mejoras de los personajes. Dos para el tank nivel 2, y una para el Nigglet nivel 2. También cuando un jugador gana, un amiguito apuntará cual lado gana, y otro indicará el ganador. Se implementaron nuevo apartado gráfico chetadísimo en el hud, pantalla de carga, etc... Bastantes avances gráficos que le dan mucha vida al juego

Evidencias:

Code: Select all

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

public class JugadorMinijuego : MonoBehaviour {

    public KeyCode kizq;
    public KeyCode kder;
    public KeyCode karr;
    public KeyCode kabj;
    public string axis;

    public float speed;
    public float downspeed;
    public int jump;

    public bool tocandopiso;
    public bool cooldownsalto;

    public Vector3 ultimacolision;

    Vector3 basescale;

    int dir;

    public GameObject plataforma1;
    public GameObject plataforma2;

	void Start () {
        dir = 1;
        basescale = transform.localScale;
        StartCoroutine(LoopPlataformas());
    }

    private void FixedUpdate()
    {
        GetComponent<Rigidbody2D>().AddForce(Vector2.right * Input.GetAxisRaw(axis) * speed);
        GetComponent<Rigidbody2D>().AddForce(Vector2.right * GetComponent<Rigidbody2D>().velocity.x * - 5);
        
        if (Input.GetKey(kabj) && !tocandopiso) GetComponent<Rigidbody2D>().AddForce(Vector2.down * downspeed);
    }
    void Update () {

        transform.localScale = new Vector3(dir *basescale.x, basescale.y, 1);
        if (Input.GetKeyDown(kizq)) dir = -1;
        if (Input.GetKeyDown(kder)) dir = 1;



        if (Input.GetKeyDown(karr) && tocandopiso && !cooldownsalto)
        {
            GetComponent<Rigidbody2D>().AddForce(Vector2.up * jump);
            if (transform.position.y - ultimacolision.y < 0.5f)
            {
                GetComponent<Rigidbody2D>().velocity = new Vector2(0, GetComponent<Rigidbody2D>().velocity.y);
                GetComponent<Rigidbody2D>().AddForce((ultimacolision.x > transform.position.x) ? Vector2.left * 500 : Vector2.right * 500);
            }
            tocandopiso = false;
            StartCoroutine(CoolDownSalto());
        }

        if((transform.position + Vector3.down * 0.5f - ultimacolision).magnitude > 1.5f || ultimacolision.y > transform.position.y) tocandopiso = false;


        Debug.DrawRay(transform.position + Vector3.down * 0.5f, ultimacolision - transform.position + Vector3.down * 0.5f);

        if (transform.position.y < -10 || transform.position.y > 100)
        {
            transform.position = Vector3.zero;
            basescale = new Vector3(Random.Range(0.5f, 5), Random.Range(0.5f, 5), 1);
        }
    }


    void OnCollisionEnter2D(Collision2D collision)
    {
        ultimacolision = collision.contacts[0].point;
        if (collision.contacts[0].point.y < transform.position.y)
        {
            tocandopiso = true;
        }

        if (collision.gameObject.CompareTag("PersonajeMinijuego"))
        {
            collision.gameObject.GetComponent<Rigidbody2D>().AddForce(GetComponent<Rigidbody2D>().velocity * 20);
        }
    }

    void OnCollisionStay2D(Collision2D collision)
    {
        ultimacolision = collision.contacts[0].point;
        if (collision.contacts[0].point.y < transform.position.y)
        {
            tocandopiso = true;
        }
    }

    private void OnCollisionExit2D(Collision2D collision)
    {
    }

    IEnumerator CoolDownSalto()
    {
        cooldownsalto = true;
        yield return new WaitForSeconds(0.2f);
        cooldownsalto = false;
    }
    IEnumerator LoopPlataformas()
    {
        for (int i = 0; i < 100; i++)
        {
            plataforma1.transform.position += Vector3.up * 0.01f;
            plataforma2.transform.Rotate(0, 0, 1);
            yield return new WaitForSeconds(0.01f);
        }
        for (int i = 0; i < 100; i++)
        {
            plataforma1.transform.position -= Vector3.up * 0.01f;
            plataforma2.transform.Rotate(0, 0, -1);
            yield return new WaitForSeconds(0.01f);
        }
        StartCoroutine(LoopPlataformas());
    }
}
JugadorMinijuego.cs

Image
Animación walk de TANK 2

Image
Animación de walk de TANK 2

Image
Nigglet 2 walk

Image
¡Ganador!

Image
¡Este es el ganador!


Easter Egg

Re: Neugier Battles - Wintergarnele Studios

Posted: Fri Apr 26, 2019 12:08 am
by Gamba04
Transicion entre escenas y ajustes gráficos al fondo

Re: Neugier Battles - Wintergarnele Studios

Posted: Wed May 01, 2019 12:00 am
by wintuh
Sprint 12

Sprint de tutorial!

Actividad 1

Implementar un tutorial

Reconstruir scripts de control general y mecanicas limitadas especificamente para el tutorial (Juan Camilo) :: 5

Programar HUD del tutorial (Juan Camilo) :: 3

Hacer íconos y hud del tutorial (Martín) :: 3

Hacer los sprites correspondientes (Martín) :: 5

Avances del Nigglet 2:

Image Image Image

Re: Neugier Battles - Wintergarnele Studios

Posted: Thu May 02, 2019 12:31 pm
by xacarana
Image

Van muy bien, no pierdan el ritmo, pero recuerden publicar el día de la clase.

Re: Neugier Battles - Wintergarnele Studios

Posted: Thu May 02, 2019 11:47 pm
by wintuh
¿Qué hemos hecho?

En cuanto a diseño de mecánicas y así, estructuramos como sería el tutorial, y acto seguido, lo estamos desarrollando. Este consta de una línea, con un personaje el cuál será el guía a lo largo de este para enseñarle a los jugadores a jugar. Planteando las mecánicas base y a su vez, tacticas no muy complejas, para dejarle estas, a los jugadores. El guía va a constar de varias animaciones, para explicar, moverse por la pantalla (Sin estar cortado porque fue un consejo que nos dio Xaca) y señalar cosas.

En gráficos, se tiene una base de el mapa del tutorial, con ambas bases establecidas con un diseño ya planteado. Este tendrá varios elementos clickeables con los cuales interactuar para generar pequeños movimientos, dándole más vida al juego.

¿Qué vamos a hacer?

En el cercano futuro, se terminará el tutorial, para luego empezar a refinar todo el código, para que este tenga un mejor diseño y a su vez, sea más "clean code". También trabajaremos en más animaciones para darle el sentimiento de progreso a los jugadores

Complicaciones

Nada, 0, todo bien, vamos melos

Adelantos místicos:

Image
Esta es la idea de mostrar cosas en el tutorial

Image
Aquí explicaría algo

Image
Y así se desplazaría

Image
Ya el nigglet punch está coloreado

Image
Esta es la base del mapa de tutorial que constra de una sola línea

Image
Gradualmente le iremos poniendo más cosas al mapa, como este amiguito que saluda

Code: Select all

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

public class BotonTutorial : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler,IPointerDownHandler,IPointerUpHandler {

    public static int pagina;
    public Color desselect;
    public Color over;
    public Color click;

    public GameObject anim0;
    public GameObject anim1;
    public GameObject anim2;
    public GameObject anim3;
    public GameObject anim4;
    public GameObject anim5;

    public Text page;

	void Start () {
        BotonTutorial.pagina = 0;
        GameObject.Find("Transicion").GetComponent<Animator>().SetTrigger("Intro");
    }

    void Update () {
        page.text = BotonTutorial.pagina.ToString();

        anim0.SetActive((BotonTutorial.pagina == 0) ? true : false);
        anim1.SetActive((BotonTutorial.pagina == 1) ? true : false);
        anim2.SetActive((BotonTutorial.pagina == 2) ? true : false);
        anim3.SetActive((BotonTutorial.pagina == 3) ? true : false);
        anim4.SetActive((BotonTutorial.pagina == 4) ? true : false);
        anim5.SetActive((BotonTutorial.pagina == 5) ? true : false);
	}

    public void OnPointerEnter(PointerEventData eventData)
    {
        GetComponent<Text>().color = over;

    }
    public void OnPointerExit(PointerEventData eventData)
    {
        GetComponent<Text>().color = desselect;

    }
    public void OnPointerDown(PointerEventData eventData)
    {
        if (gameObject.name == "Next")
        {
            if (BotonTutorial.pagina < 5) BotonTutorial.pagina++;
            else StartCoroutine(Boton.Delay("Main"));

        }
        if (gameObject.name == "Previous")
        {
            if (BotonTutorial.pagina > 0) BotonTutorial.pagina--;

        }

        GetComponent<Text>().color = click;
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        GetComponent<Text>().color = desselect;

    }

}
Este es el código del tutorial.

Re: Neugier Battles - Wintergarnele Studios

Posted: Fri May 03, 2019 3:28 pm
by xacarana
Image

Bien, recuerden incluir las mejoras en la presentación y contarnos como estan asignando las tareas de programación.

Re: Neugier Battles - Wintergarnele Studios

Posted: Tue May 07, 2019 11:58 pm
by wintuh
Sprint 13

Actividad 1:

Terminar el tutorial y empezar a refinar código

Refinamiento de código para que quede mejor diseñado (Juan Camilo) :: 4
Terminar el tutorial con todas las animaciones (Juan Camilo) :: 3

Actividad 2:

Gráficas del tutorial (Martín) :: 4
Adelantar sprites de evolución (Martín) :: 4

Re: Neugier Battles - Wintergarnele Studios

Posted: Thu May 09, 2019 12:17 pm
by xacarana
Iban muy bien, pero no publicaron evidencia de avance.
Image

¡Strike!

Image

Re: Neugier Battles - Wintergarnele Studios

Posted: Thu May 09, 2019 11:55 pm
by wintuh
¿Qué hemos hecho?

Quedó listo la estructura del tutorial con los sprites correspondientes. Esto incluye un personaje amigable rojo el cuál se mueve por la pantalla caminando y se detiene a explicar los aspectos claves del juego. Se compuso la música de acción para el combate principal, y se trasladó la música que ya había para el tutorial. En el tutorial el texto sale de una manera amigable para que los usuario entiendan las mecánicas más importantes de Neugier.


Image Image
Personajes que alentarán al jugador en el tutorial, irán de muchos colores

Image
Así el personaje explicará las mecánicas
Image
Y así se desplazará

Image
Esta es una flecha para el tutorial

Image

Este es el guion (sin tilde porque es monosílaba) del tutorial.

Image

Image

Aquí está nuestro amiguito del tutorial en acción



¿Qué vamos a hacer?

Animación: Terminar los sprites que faltan para entregar el juego completo.

Programación: Implementar nuevas animaciones, corregir y balancear detalles del juego, repasar mucho el código para la presentación.

Dificultades

Dificultades:

Martín tuvo un lunes complicado ya que tuvo que quedarse hasta tarde en un hospital acompañando a un familiar que estaba siendo operado del manguito rotador. Juan Camilo abordó una cantidad elevada de proyectos los cuales está balanceando para que todo se pueda dar.

Re: Neugier Battles - Wintergarnele Studios

Posted: Tue May 14, 2019 11:00 pm
by wintuh
SPRINT FINAL FINALOSO PARA ENTREGAR BIEN MELOSO #14

Actividad #1

Animación

Se completará todo lo que se pueda con respecto a las mejoras de las tropas y torretas (Martín) :: 5

Actividad #2
Programación

Terminar de pulir detalles generales del juego (Juan Camilo y Martín) :: 3
Implementar ultimas animaciones de los niveles de los personajes (Juan Camilo) :: 2
Terminar el tutorial (Juan Camilo)

Actividad #3
Presentación

Realizar video Trailer oficial del juego (Juan Camilo y Martín) :: 4
Se harán piezas gráficas para la presentación final (Martín y Juan Camilo) :: 3
PAUSA (Juan camilo) :: 4


AVANCES LOCOS
Los elementos en la tabla tienen 3 números correspondientes a las mejoras
Image

Image
Este es el tank 2 por detrás

Code: Select all

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

public class Portal : MonoBehaviour {

    public GameObject otroportal;

	void Start () {
		
	}
	
	void Update () {
        if (!otroportal.activeInHierarchy)
        {
            transform.localScale = Vector3.one * 5;
            GetComponent<Image>().color = new Color(GetComponent<Image>().color.r, GetComponent<Image>().color.g, GetComponent<Image>().color.b, 0.3f);
        }
        else
        {
            transform.localScale = Vector3.one * 10;
            GetComponent<Image>().color = new Color(GetComponent<Image>().color.r, GetComponent<Image>().color.g, GetComponent<Image>().color.b, 0.7f);
        }
        transform.Rotate(0, 0, 100);
	}
}
Código de los portales locos