Golem Clash - Black Hole Studios

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

Moderator: julianmartinez16

User avatar
Sofial1224
Posts: 22
Joined: Tue Jan 22, 2019 12:15 pm

Re: Golem Clash - Black Hole Studios

Post by Sofial1224 » Tue Apr 02, 2019 11:24 am

Sofia Alvarez Villanueva
PDOO1

User avatar
Sofial1224
Posts: 22
Joined: Tue Jan 22, 2019 12:15 pm

Re: Golem Clash - Black Hole Studios

Post by Sofial1224 » Tue Apr 02, 2019 9:05 pm

Sprint #9:

Fecha de inicio: 1/4/2019
Fecha de finalización: 5/4/2019

Clase #1 (martes):
Preentrega (3)
Continuación de programación en unity (3)

Que hemos hecho?
Las flechas que disparan las torretas apuntan y se dirigen hacia los enemigos y las torretas ya tienen visualización el rango de disparo en el juego al momento de la construcción.

Image

Code: Select all

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

public class bullet : MonoBehaviour
{
    [SerializeField]
    private float speed;
    [SerializeField]
    private float damage;
    public Transform enemyTarget;

    void Update()
    {
        if (enemyTarget == null)
        {
            Destroy(gameObject);
        }

        transform.rotation = Quaternion.LookRotation(Vector3.forward, enemyTarget.transform.position - transform.position);
        transform.position = Vector2.MoveTowards(transform.position, enemyTarget.position, speed * Time.deltaTime);

        if (Vector3.Distance(transform.position, enemyTarget.transform.position) <= 0.2 && enemyTarget != null)
        {
            enemyTarget.GetComponent<EnemyAI>().health -= damage;
            Destroy(gameObject);
        }
     
    }

}
Image

Code: Select all

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

public class Spot : MonoBehaviour
{
    [Header("No Cambiables")]
    [SerializeField] private Color mousecolor;
    [SerializeField] private Color nopecolor;
    [SerializeField] private Color upColor;

    [SerializeField] private GameObject player;

    private Color turretColor;
    private Color startColor;
    private Renderer rend;
    private GameObject cursor;
    private GameObject cursor2;
    private string mouseState;

    public Text cursorText;

    [Header("Cambiables")]
    [SerializeField] private GameObject PTower;
    [SerializeField] private GameObject MTower;
    [SerializeField] private GameObject samplePT;
    [SerializeField] private GameObject sampleMT;
    [SerializeField] private GameObject sample;

    private bool turretPlaced;
    private GameObject placedTurret;

    private int cost;

    private int currency;
    private GameObject child;

    void Update()
    {
        mouseState = MouseState.mouseState; ;
    }

    void Start()
    {
        turretPlaced = false;

        rend = GetComponent<Renderer>();
        startColor = rend.material.color;

        cursor = GameObject.FindGameObjectWithTag("Cursor");
        cursor2 = GameObject.FindGameObjectWithTag("Cursor2");

        cursorText.text = null;
    } 

    void OnMouseEnter()
    {
        if (!turretPlaced)
        {
            if (mouseState == "PTower")
            {
                cost = PTower.GetComponent<TurretAI>().cost;
                rend.material.color = mousecolor;
                cursorText.text = "Build (-$" + cost + ")";
                sample = Instantiate(samplePT, transform.position, transform.rotation);
            }
            else if (mouseState == "MTower")
            {
                cost = MTower.GetComponent<TurretAI>().cost;
                rend.material.color = mousecolor;
                cursorText.text = "Build (-$" + cost + ")";
                sample = Instantiate(sampleMT, transform.position, transform.rotation);
            }            
        }

        if (turretPlaced)
        {
            if (mouseState == "Upgrade")
            {
                cost = placedTurret.GetComponent<TurretAI>().cost;
                placedTurret.GetComponent<Renderer>().material.color = upColor;
                rend.material.color = upColor;
                cursorText.text = "Upgrade (-$" + (cost/2) + ")";
            }

            else if (mouseState == "Destroy")
            {
                cost = placedTurret.GetComponent<TurretAI>().cost;
                placedTurret.GetComponent<Renderer>().material.color = nopecolor;
                rend.material.color = nopecolor;
                cursorText.text = "Demolish (+$" + (cost / 2) + ")";
            }
        }

        ChangeCursor();
    }

    void OnMouseExit()
    {
        rend.material.color = startColor;
        ChangeCursor();
        cursorText.text = null;

        if (mouseState == "PTower" || mouseState == "MTower") Destroy(sample);

        if (turretPlaced) placedTurret.GetComponent<Renderer>().material.color = turretColor;
    }

    void OnMouseDown()
    {
        currency = GameObject.FindGameObjectWithTag("Player").GetComponent<FortHealth>().currency;

        if (mouseState == "PTower")
        {
            cost = PTower.GetComponent<TurretAI>().cost;
        }
        else if (mouseState == "MTower")
        {
            cost = MTower.GetComponent<TurretAI>().cost;
        }

        if (cost <= currency && (mouseState == "PTower" || mouseState == "MTower") && !turretPlaced)
        {
            if (mouseState == "PTower")
            {
                player.GetComponent<FortHealth>().currency -= cost;
                placedTurret = Instantiate(PTower, transform.position, transform.rotation);
                turretColor = placedTurret.GetComponent<Renderer>().material.color;
            }
            if (mouseState == "MTower")
            {
                player.GetComponent<FortHealth>().currency -= cost;
                placedTurret = Instantiate(MTower, transform.position, transform.rotation);
                turretColor = placedTurret.GetComponent<Renderer>().material.color;
            }

            Destroy(sample);
            turretPlaced = true;
        }

        if (mouseState == "Destroy" && turretPlaced)
        {
            player.GetComponent<FortHealth>().currency += (cost / 2);
            Destroy(placedTurret);
            turretPlaced = false;
        }

        if (mouseState == "Upgrade" && turretPlaced && currency >= (cost/2))
        {
            placedTurret.GetComponent<TurretAI>().fireRate += 0.5f;
            player.GetComponent<FortHealth>().currency -= (cost / 2);
        }

        else return;
    }



    public void ChangeCursor()
    {
        if (cursor.GetComponent<Renderer>().enabled)
        {
            cursor.GetComponent<Renderer>().enabled = false;
            cursor2.GetComponent<Renderer>().enabled = true;
        }

        else if (cursor2.GetComponent<Renderer>().enabled)
        {
            cursor2.GetComponent<Renderer>().enabled = false;
            cursor.GetComponent<Renderer>().enabled = true;
        }

        else return;
    }

}
Que vamos a hacer?
Vamos a continuar la programación en unity y seguir puliendo detalles del juego.
Sofia Alvarez Villanueva
PDOO1

User avatar
StevanAlzate
Posts: 17
Joined: Tue Jan 22, 2019 12:13 pm

Re: Golem Clash - Black Hole Studios

Post by StevanAlzate » Thu Apr 04, 2019 10:48 pm

Sprint #9:

Fecha de inicio: 1/4/2019
Fecha de finalización: 5/4/2019

Clase #2 (Jueves):
Continuación de programación en unity (3)
Detalles estéticos (2)
Balanceo de enemigos(1)

Que hemos hecho?
Se cambió el logo de los minerales para que se acomode a los enemigos por implementar, también se hizo una pantalla de game over cuando el jugador pierde toda la vida que le permite reiniciar el juego y se aplicaron animaciones a los enemigos además de balancear sus características para disminuir la dificultad del juego y una barra de vida para dar feedback al jugador de su vida actual.

Image

Image

Game Over script

Code: Select all

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

public class GameOver : MonoBehaviour
{
    [SerializeField] private Text goWaveText;
    [SerializeField] private GameObject spawner;
    private bool active;

    void Start()
    {
        byte wave = spawner.GetComponent<WaveSpawn>().wave;
        goWaveText.text = "You Survived " + wave + " Waves";
        active = false;

        StartCoroutine(Activate());
    }

    void Update()
    {

        if (Input.GetMouseButtonDown(0) && active)
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().name);
        }
    }

    IEnumerator Activate()
    {
        yield return new WaitForSeconds(2.5f);
        active = true;
    }
}
FortHealth script

Code: Select all

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

public class FortHealth : MonoBehaviour
{
    [SerializeField] private Text currencyText;
    [SerializeField] private int mps;
    [SerializeField] private int startCurrency;

    [SerializeField] public Image healthBar;
    [SerializeField] private Animator blood;

    public float health;
    public int currency;

    [SerializeField] private GameObject gameOver;

    private GameObject cursor2;

    void Start()
    {
        InvokeRepeating("UpdateCurrency", 0f, 1f);

        health = 100;
        currency = startCurrency;

        currencyText.text = "        $" + currency.ToString();

        cursor2 = GameObject.FindGameObjectWithTag("Cursor2");
        cursor2.GetComponent<Renderer>().enabled = false;

        gameOver.SetActive(false);
    }

    void UpdateCurrency ()
    {
        currency += mps;
        currencyText.text = "       $" + currency.ToString();
    }

    void Update()
    {
        if (healthBar.fillAmount != health / 100)
        {
            blood.SetTrigger("damaged");
            healthBar.fillAmount = health / 100;
        }

       
        if (health <= 0) gameOver.SetActive(true); ;
    }
}
Que vamos a hacer?
Vamos a hacer cambios a algunas mecánicas ppara que el juego no sea tan repetitivo.
Esteban Alzate

User avatar
StevanAlzate
Posts: 17
Joined: Tue Jan 22, 2019 12:13 pm

Re: Golem Clash - Black Hole Studios

Post by StevanAlzate » Wed Apr 10, 2019 2:43 pm

Sprint #10:

Fecha de inicio: 8/4/2019
Fecha de finalización: 12/4/2019

Clase #1 (Martes):
Arreglos a bugs en la cámara del juego (3)
Ideación de los poderes del jugador (1)
Creación del los íconos para poderes del jugador (2)

¿Qué hemos hecho?
Se arreglaron problemas que se estaban teniendo con la cámara cuando se iniciaba el build del juego, además se expandió la interfaz para poner los logos de los poderes que va a poder usar el jugador aparte de tener torres.

Image
Ícono Hielo
Image
Ícono Lodo
Image
Ícono Cañón

¿Qué vamos a hacer?
Vamos a empezar con la programación de los poderes.
Last edited by StevanAlzate on Thu Apr 11, 2019 1:20 pm, edited 1 time in total.
Esteban Alzate

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

Re: Golem Clash - Black Hole Studios

Post by xacarana » Thu Apr 11, 2019 1:16 pm

Image

Se debe publicar el día de la clase, se debe poner la descripción de las imágenes.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
Sofial1224
Posts: 22
Joined: Tue Jan 22, 2019 12:15 pm

Re: Golem Clash - Black Hole Studios

Post by Sofial1224 » Thu Apr 11, 2019 9:45 pm

Sprint #10:

Fecha de inicio: 8/4/2019
Fecha de finalización: 12/4/2019


Clase #2 (Jueves):
Instauración en unity del los íconos para poderes del jugador (1)
Inicio de programación de los íconos para poderes del jugador (3)

¿Qué hemos hecho?
Se organizaron dentro de unity los losogs de los poderes como botones y se comenzo la programación de su funcionamiento mostrando el rango y el precio.

Image
Poder Slow

Image
Poder Freeze



¿Que vamos a hacer?
Vamos a continuar con la programación de los poderes y avanzar con las animaciones de éstos.
Sofia Alvarez Villanueva
PDOO1

User avatar
StevanAlzate
Posts: 17
Joined: Tue Jan 22, 2019 12:13 pm

Re: Golem Clash - Black Hole Studios

Post by StevanAlzate » Sun Apr 21, 2019 11:42 am

Avance Semana Santa

Actividades:
  • Ajustes de animación(2)
  • Programación de poderes del jugador(4)
¿Qué hemos hecho?
  • Se hizo que la animación de caminado de los enemigos cambie de velocidad de acuerdo a la velocidad del enemigo
  • Se programaron 3 distintos poderes, cada uno tiene un costo, rango y efecto distintos:
    El primero pone una capa de barro en el piso que realentiza a los enemigos en un área grande por un tiempo y luego desaparece, este poder es útil contra grupos grandes de enemigos.
    El segundo congela a todos los enemigos en un área de tamaño mediano, dejándolos paralizados en un bloque de hielo que luego desaparece. Esto los deja vulnerables a ataques de torretas por un tiempo, se puede usar como último recurso para enemigos llegando al fuerte.
    El último poder es una bola de calñón que mata a todos los enemigos en un rango pequeño, a pesar de que es muy poderosa, vale mucho y se demora unos segundos en hacer efecto, por lo que hay que saber calcular donde van a estar los enemigos a los que se quiere matar después de ese tiempo.
  • Se descubrió y arregló bug que hacía que los enemigos no murieran cuando la vida era igual a 0
  • Se limitó el uso de los poderes para que el jugador no pueda usar un poder si hay otro activo en el momento, de esta manera se asegura que el jugador no abuse de los poderes en el juego tardío cuando tenga mucha plata
Script Enemigos (cambio en animaciones y términos de muerte)

Code: Select all

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

public class EnemyAI : MonoBehaviour
{
    public float speed;
    [SerializeField] public int damage;
    [SerializeField] private GameObject drop;

    private GameObject player;
    private WaypointArray wp;
    private byte wpcounter;

    private Animator animator;

    public float health;

    void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player");
        wp = GameObject.FindGameObjectWithTag("Waypoints").GetComponent<WaypointArray>();

        animator = GetComponent<Animator>();
    }

    void Update()
    {
        if (health >= 0)
        {
            transform.position = Vector2.MoveTowards(transform.position, wp.waypoints[wpcounter].position, speed * Time.deltaTime);
            animator.speed = speed;

            if (Vector2.Distance(transform.position, wp.waypoints[wpcounter].position) < 0.02)
            {
                if (wpcounter < wp.waypoints.Length - 1)
                {
                    wpcounter++;
                }
                else
                {
                    player.GetComponent<FortHealth>().health -= damage;
                    Destroy(gameObject);
                }
            }
        }

        else if (health < 1)
        {
            IEnumerator Muerte()
            {
                animator.SetTrigger("estaMuerto");
                yield return new WaitForSeconds(1);
                Instantiate(drop, transform.position, transform.rotation);
                Destroy(gameObject);
            }
            StartCoroutine(Muerte());
        }
    }


}
Script Botónes de poderes

Code: Select all

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

public class PowerButton : MonoBehaviour
{
    [SerializeField] private string state;

    [SerializeField] private string action;
    [SerializeField] private int cost;
    [SerializeField] private Text cursorText;

    [SerializeField] private Color startColor;
    [SerializeField] private Color selectedColor;
    private Renderer rend;

    private GameObject powerIns;
    private bool selected;

    [SerializeField] private GameObject power;

    void Start()
    {
        rend = GetComponent<Renderer>();
        startColor = rend.material.color;
        cursorText = GameObject.FindGameObjectWithTag("CursorText").GetComponent<Text>();
    }


    void OnMouseEnter()
    {
        transform.localScale = new Vector2(0.3f, 0.3f);
    }

    void OnMouseExit()
    {
        transform.localScale = new Vector2(0.24f, 0.24f);
    }

    void OnMouseDown()
    {
        if (!selected)
        {
            MouseState.mouseState = state;
            powerIns = Instantiate(power, transform.position, transform.rotation);
            cursorText.text = action + " (-$" + cost + ")";
            selected = true;
        }
    }

    void Update()
    {
        if (MouseState.mouseState == state)
        {
            rend.material.color = selectedColor;
        }

        else
        {
            rend.material.color = startColor;
            Destroy(powerIns);
            selected = false;
        }
    }
}
Script poderes

Code: Select all

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

public class Power : MonoBehaviour
{
    [SerializeField] private GameObject mudPower;
    [SerializeField] private GameObject icePower;
    [SerializeField] private GameObject cannonPower;
    private bool inUse;

    [SerializeField] private float range;
    [SerializeField] private int cost;

    [SerializeField] private int currency;

    void Start()
    {
        if (MouseState.mouseState == "Mud")
        {
            range = 2.5f;
            transform.localScale = new Vector2(0.3307724f, 0.3307724f);
            cost = 10;
        }
        else if (MouseState.mouseState == "Ice")
        {
            range = 1.7f;
            transform.localScale = new Vector2(0.2275714f, 0.2275714f);
            cost = 15;
        }
        else if (MouseState.mouseState == "Cannon")
        {
            range = 1.2f;
            transform.localScale = new Vector2(0.1631687f, 0.1631687f);
            cost = 20;
        }

        GameObject.FindGameObjectWithTag("Player").GetComponent<FortHealth>().currency += cost;
    }

    void Update()
    {        
            if (Input.GetMouseButtonDown(0))
            {
                currency = GameObject.FindGameObjectWithTag("Player").GetComponent<FortHealth>().currency;

                if (MouseState.mouseState == "Mud" && cost <= currency && !inUse)
                {
                    StartCoroutine(EffectSeconds(3.5f, 1));                
                }

                else if (MouseState.mouseState == "Ice" && cost <= currency && !inUse)
                {
                    StartCoroutine(EffectSeconds(2f, 2));
                }

                else if (MouseState.mouseState == "Cannon" && cost <= currency && !inUse)
                {
                   StartCoroutine(EffectSeconds(2f, 3));
                }
            }
    }

    IEnumerator EffectSeconds(float t, int a)
    {
        inUse = true;

        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
        GameObject.FindGameObjectWithTag("Player").GetComponent<FortHealth>().currency -= cost;

        int i = 1;

        if (a == 1)
        {
            GameObject mud = Instantiate(mudPower, transform.position, transform.rotation);

            foreach (GameObject enemy in enemies)
            {
                float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);

                if (distanceToEnemy <= range)
                {
                    i++;
                }
            }

            GameObject[] enemiesInRange = new GameObject[i];
            int j = 0;

            foreach (GameObject enemy in enemies)
            {
                float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);

                if (distanceToEnemy <= range)
                {
                    enemiesInRange[j] = enemy;
                    j++;
                }
            }

            for (int k = 0; k<enemiesInRange.Length; k++)
            {
                if (enemiesInRange[k] != null)
                {
                    enemiesInRange[k].GetComponent<EnemyAI>().speed = (enemiesInRange[k].GetComponent<EnemyAI>().speed / 2);
                }
            }

            yield return new WaitForSeconds(t);

            for (int k = 0; k < enemiesInRange.Length; k++)
            {
                if (enemiesInRange[k] != null)
                {
                    enemiesInRange[k].GetComponent<EnemyAI>().speed = (enemiesInRange[k].GetComponent<EnemyAI>().speed * 2);
                }
            }

            Destroy(mud);
        }

        else if (a == 2)
        {
            foreach (GameObject enemy in enemies)
            {
                float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);

                if (distanceToEnemy <= range)
                {
                    i++;
                }
            }

            GameObject[] enemiesInRange = new GameObject[i];
            float[] speeds = new float[i];
            GameObject[] ice = new GameObject[i];
            int j = 0;

            foreach (GameObject enemy in enemies)
            {
                float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);

                if (distanceToEnemy <= range)
                {
                    enemiesInRange[j] = enemy;
                    j++;
                }
            }

            for (int k = 0; k < enemiesInRange.Length; k++)
            {
                if (enemiesInRange[k] != null)
                {
                    speeds[k] = enemiesInRange[k].GetComponent<EnemyAI>().speed;
                    ice[k] = Instantiate(icePower, enemiesInRange[k].transform.position, enemiesInRange[k].transform.rotation);
                    enemiesInRange[k].GetComponent<EnemyAI>().speed = 0;
                }
            }

            yield return new WaitForSeconds(t);

            for (int k = 0; k < enemiesInRange.Length; k++)
            {
                if (enemiesInRange[k] != null)
                {
                    enemiesInRange[k].GetComponent<EnemyAI>().speed = speeds[k];
                    Destroy(ice[k]);
                }
            }
        }

        else if (a == 3)
        {
            GameObject cannon = Instantiate(cannonPower, transform.position, transform.rotation);

            foreach (GameObject enemy in enemies)
            {
                float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);

                if (distanceToEnemy <= range)
                {
                    enemy.GetComponent<EnemyAI>().health -= 100;
                }
            }

            yield return new WaitForSeconds(2);
            Destroy(cannon);
        }

        inUse = false;
    }
}

En este video se muestra el funcionamiento de los poderes y otros cambios.


¿Que vamos a hacer?

Vamos a hacer los diseños de los demás enemigos y sus animaciones para que no sean solo golems de distintos colores.
Esteban Alzate

User avatar
StevanAlzate
Posts: 17
Joined: Tue Jan 22, 2019 12:13 pm

Re: Golem Clash - Black Hole Studios

Post by StevanAlzate » Tue Apr 23, 2019 6:33 pm

Diagrama de Clases
Image
Esteban Alzate

User avatar
Sofial1224
Posts: 22
Joined: Tue Jan 22, 2019 12:15 pm

Re: Golem Clash - Black Hole Studios

Post by Sofial1224 » Tue Apr 23, 2019 10:51 pm

Sprint #11:

Fecha de inicio: 22/4/2019
Fecha de finalización: 26/4/2019


Clase #1 (Martes):
Inicio de diseño de las variaciones de enemigos(1)

¿Qué hemos hecho?
Comenzamos a diseñar como se verán estéticamente las demás variaciones de enemigos del juego.

Image

Image

Image

¿Que vamos a hacer?
Vamos a digitalizar los enemigos y a comenzar las animaciones respectivas.
Sofia Alvarez Villanueva
PDOO1

User avatar
StevanAlzate
Posts: 17
Joined: Tue Jan 22, 2019 12:13 pm

Re: Golem Clash - Black Hole Studios

Post by StevanAlzate » Thu Apr 25, 2019 4:39 pm

Sprint #11:

Fecha de inicio: 22/4/2019
Fecha de finalización: 26/4/2019

Clase #2 (Jueves):
Ajustes de drops (2)

¿Qué hemos hecho?
Se hicieron coambios a los drops para que sucedan cada cierto número determinado de veces para que no sea tan tedioso recolectarlos, para compensar esto se subió la cantidad de materiales que dan estos drops.

Drops Script

Code: Select all

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

public class Drop : MonoBehaviour
{
    [SerializeField] private byte drop;
    [SerializeField] private Color mousecolor;
    [SerializeField] private Color startColor;

    private GameObject player;
    private Renderer rend;

    void Start()
    {
        rend = GetComponent<Renderer>();
        startColor = rend.material.color;
        player = player = GameObject.FindGameObjectWithTag("Player");
    }

    void OnMouseEnter()
    {
        rend.material.color = mousecolor;
        transform.localScale = new Vector2(0.08f, 0.08f);
    }

    void OnMouseExit()
    {
        rend.material.color = startColor;
        transform.localScale = new Vector2(0.0685f, 0.0685f);
    }

    void OnMouseDown()
    {
        player.GetComponent<FortHealth>().currency += drop;
        Destroy(gameObject);
    }
}
FortHealth Script

Code: Select all

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

public class FortHealth : MonoBehaviour
{
    [SerializeField] private Text currencyText;
    [SerializeField] private int mps;
    [SerializeField] private int startCurrency;

    [SerializeField] public Image healthBar;

    public float health;
    public int currency;

    public int dropCount;

    [SerializeField] private GameObject gameOver;

    private GameObject cursor2;

    void Start()
    {
        InvokeRepeating("UpdateCurrency", 0f, 1f);

        health = 100;
        currency = startCurrency;

        currencyText.text = "        $" + currency.ToString();

        cursor2 = GameObject.FindGameObjectWithTag("Cursor2");
        cursor2.GetComponent<Renderer>().enabled = false;

        gameOver.SetActive(false);
    }

    void UpdateCurrency ()
    {
        currency += mps;
        currencyText.text = "       $" + currency.ToString();
    }

    void Update()
    {
        if (healthBar.fillAmount != health / 100)
        {
            healthBar.fillAmount = health / 100;
        }

       
        if (health <= 0) gameOver.SetActive(true); ;
    }
}
¿Que vamos a hacer?
Vamos a digitalizar y animar a los sprites de los enemigos nuevos para meterlos al juego.
Esteban Alzate

Post Reply