Golem Clash - Black Hole Studios

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

Moderator: julianmartinez16

User avatar
Sofial1224
Posts: 17
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: 17
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: 7
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: 7
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: 1071
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: 17
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

Post Reply