Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Cuenta atrás-restar recursos (C#)

Iniciado por unityFer, Julio 21, 2016, 05:23:07 PM

Tema anterior - Siguiente tema
Julio 21, 2016, 05:23:07 PM Ultima modificación: Julio 21, 2016, 05:23:52 PM por unityFer
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?
 



 

Puedes utilizar Time.deltaTime que viene en segundos, mediante una regla de 3:
 
60 segundos ----> -2
 
Time.deltaTime ---> y
 
 
 
O utilizando corrutinas: https://docs.unity3d.com/ScriptReference/WaitForSeconds.html

Etiquetas: