Jump to content
unityFer

Cuenta atrás-restar recursos (C#)

Recommended Posts

Buenas, explico la cuestión, tengo un mecanismo que guarda los items que recoges y al llegar a un sitio la cantidad numérica se traspasa a "la base"

El tema es que quiero hacer que por cada minuto que pase se resten X unidades de lo almacenado hasta el momento, una cuenta atrás vamos, pero no tengo ni la mas remota idea de cómo hacerlo. El código es un poco largo pero simple así que adjunto un archivo.

Básicamente tengo dos variables int que controlan lo que tengo yo y lo que tengo acumulado en la base.

-Dos triggers, uno para recoger un objeto y otro para saber si has llegado a la base

-y una funcion para mostrar en pantalla la cantidad para cada tipo de objeto en mi "bolsa" o en la base.

Agradezco de antemano toda la ayuda posible..
 

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

public class ContadorBasico : MonoBehaviour{


    //BARRAS

    private float time;
    private Text guiTime;
    private Image guiBar;


    ///

    public Text countText; //Controla la funcion de texto de la cuenta

	public GameObject YouWin;

    //Variables de texto de recursos

    //:::::::::::::::::::::PLAYER_RESOURCES::::::::::::::::::::://

    //Oxígeno
    public Text oxigenCounter;
    //Plasma
    public Text plasmaCounter;
    //Comida
    public Text foodCounter;



    //:::::::::::::::::::::BASE_RESOURCES::::::::::::::::::::::://

    public Text baseComida;

    public Text basePlasma;

    public Text baseOxigeno;


   

	//:::::::::::::::::::::EARTH_PROGRESS::::::::::::::::::::::://

	public Text progresoTierra;


    //:::::::::::::::::::::PUBLIC RESOURCES::::::::::::::::::::://

    public Text BarraDePlasma;

	//**********************************************//



    public Text winText; //Controla la funcion de texto de win
     
    //VARIABLES DE CUENTA
    private int count; 
    private int plasma;
    private int oxigeno;
    private int comida;

    //::::::::::::::::::::::MECANISMOS BASE::::::::::::::::::::::::://

	//aqui iran las variables que controlan los recursos de la base
								
    private int base_Plasma; 
    private int base_Comida;
    private int base_Oxigeno;


	//::::::::::::::::::::::MECANISMO TIERRA:::::::::::::::::::::::://

	public int terra; //Controla los recursos de la tierra

    //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://

    void Start() {

        YouWin.SetActive (false); //Panel de youWin desactivado por defecto

        //cuentas mochila

        count = ; //Inicia la cuenta a 0
        plasma = ;
        comida = ;
        oxigeno = ;

        //cuentas base

         base_Plasma = 100;
         base_Comida=;
         base_Oxigeno=;

        
        terra = ;

    }


    void Update(){

 /////////////  INICIALIZAMOS RECURSOS!!! \\\\\\\\\\\\\\

        //en Bolsa
        SetCountText();
        SetCountPlasma();
        SetCountOxy();
        SetCountFood();

        //en base
        SetBaseCountFood();

        SetBaseCountOxy();

        SetBaseCountPlasma();


        //En tierra
        SetTierraProgreso();

        //cuentatras//

        float plasmaLeft = base_Plasma;

        plasmaLeft -= Time.deltaTime;

    }

    //TRIGGERS//****************************************
    
        void OnTriggerEnter(Collider other){  //SI colisiona con un item

        if (other.gameObject.CompareTag("Pick Up"))  { //y el item se llama X
                other.gameObject.SetActive(false); //El objeto desaparece
                count = count + 1; //Y se añade 1 en el contador         
                SetCountText(); //LLamamos la funcion que muestra el contador

            }
        else if (other.gameObject.CompareTag("plasma_Item")){ //y el item se llama X
                other.gameObject.SetActive(false); //El objeto desaparece
                plasma = plasma + 1; //Y se añade 1 en el contador
                SetCountPlasma(); //LLamamos la funcion que muestra el contador

            }
        else if (other.gameObject.CompareTag("oxy_item")){ //y el item se llama X 

                other.gameObject.SetActive(false); //El objeto desaparece
                oxigeno = oxigeno + 1; //Y se añade 1 en el contador
                //terra = terra + 5;
            SetCountOxy(); //LLamamos la funcion que muestra el contador

            }
        else if (other.gameObject.CompareTag("food_item")){  //y el item se llama X

                other.gameObject.SetActive(false); //El objeto desaparece
                comida = comida + 1; //Y se añade 1 en el contador
                SetCountFood(); //LLamamos la funcion que muestra el contador
            }
        }


      void OnTriggerStay(Collider other){ //Si estamos


        if (other.tag == "Base") { //En la base

            //:::::::::::::::::::::::::OXIGENORESET:::::::::::::::::::::::::://

            SetCountOxy(); //llamamos la funcion que controla el oxigeno
            SetBaseCountOxy(); //llamamos oxigeno de  la base

            base_Oxigeno = base_Oxigeno + oxigeno; //pasamos el oxigeno a la base

            terra = terra + oxigeno ;
       
      
            oxigeno = ; //Y lo reseteamos a 0, el contador vuelve a 0

            //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://

            //:::::::::::::::::::::::PLASMARESET:::::::::::::::::::::::::::://
         

            SetCountPlasma(); 

            base_Plasma = base_Plasma + plasma; //pasamos el plasma a la base

            terra = terra + plasma ;

            Debug.Log("HOLAMUNDO");


            plasma = ;

            //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://

            //::::::::::::::::::::::::COMIDARESET::::::::::::::::::::::::::://


            SetCountFood();

            base_Comida = base_Comida + comida; //pasamos la comida a la base

            terra = terra + comida ;

            comida = ;

            //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://
     
        }
    }

    //COUNTERS********************************************
    void SetCountText(){ //Cuenta de prueba
        countText.text = "Count: " + count.ToString(); // Muestrea el texto COUNT
        if (count >= 12){ //Si la cuenta llega a 12
            winText.text = "You Win!"; //Nos enseña el texto de you win
        }
    }


    //CONTADOR DE PLASMA
    void SetCountPlasma() {

        plasmaCounter.text = "" + plasma.ToString(); // Muestra el texto COUNT     
        
    }

    //CONTADOR DE OXIGENO
    void SetCountOxy()  {
        oxigenCounter.text = "" + oxigeno.ToString(); // Muestra el texto COUNT

    }

    //CONTADOR DE COMIDA
    
    void SetCountFood() {
        foodCounter.text = "" + comida.ToString(); // Muestra el texto COUNT

    }

    //::::::::::::::::::::::CONTADORESBASE::::::::::::::::::::::::::::://

    void SetBaseCountFood() //comida{
        baseComida.text = "" + base_Comida.ToString(); // Muestra el texto COUNT

    }

    void SetBaseCountPlasma() //plasma{
        basePlasma.text = "" + base_Plasma.ToString(); // Muestra el texto COUNT

    
    }

    void SetBaseCountOxy() //oxigeno{
        baseOxigeno.text = "" + base_Oxigeno.ToString(); // Muestra el texto COUNT

    }


	//::::::::::::TIERRA::::::::::://
	void SetTierraProgreso() //oxigeno{
		progresoTierra.text = "" + terra.ToString(); // Muestra el texto COUNT


		if (terra > 10 ){ //Si llegamos a 20...

			YouWin.SetActive (true); //activa you win
			Time.timeScale = 0.0f; //para el tiempo

            Debug.Log ("WINWINWIN");
		}  
	}
}



Supongamos que por cada minuto quiero que se resten 2 de plasma en la base. Cómo me lo monto?



 

Edited by unityFer

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...