Noticias

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

Puntuación doble

Iniciado por ramunda, Agosto 15, 2016, 01:54:10 PM

Tema anterior - Siguiente tema
Buenas tardes , una pregunta por favor.
 
Estoy haciendo algo parecido a un pinball.
 
Bien la cosa es que quiero hacer que cuando se encienda un x2 o x4 la puntuación global de todo sea pos eso x2 x3.etc.
 
Tengo un simple script que recoge esta puntuación y los demás se basan en este pero no veo la manera de decirle un momento dado que me los multiplique por ejemplo mintras este encendido un botón o lo que sea.
 
mi script de puntuación es el siguiente:
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour {

public static int score = ;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
}

 
 
 
Y este por ejemplo es el que uso para sumar puntos en uno de los objetos.
 

using UnityEngine;
using System.Collections;
public class Bumper : MonoBehaviour {
public float force = 100.0f;
public float forceRadius = 1.0f;
public int scoreValue = 100;
public GameObject spotlight;
public AudioClip bumpersound;
AudioSource audio;
void Start ()
{
   audio = GetComponent<AudioSource>();
}

void OnCollisionEnter()
{
   foreach(Collider col in Physics.OverlapSphere(transform.position, forceRadius))
   {
      if (col.GetComponent<Rigidbody> ()) {
         col.GetComponent<Rigidbody> ().AddExplosionForce (force, transform.position, forceRadius);
         spotlight.SetActive(true);
         audio.PlayOneShot(bumpersound, 0.7F);
      }
      else
      {
   Invoke ("apagado",01);
      }
   }
   ScoreManager.score += scoreValue;
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}

 
Seguro que es algo sencillo pero no le veo ni pies ni cabeza.
 
Gracias de antemano.
 
 
 
 

Agosto 15, 2016, 07:05:27 PM #1 Ultima modificación: Agosto 17, 2016, 01:19:54 AM por pioj
Pos no deberia se muy dificil xD, tendrias que tener algun tipo de manager de la partida,que guarde variables,estados,eventos que puedan suceder en la partida, te dara mucha libertad para controlarla ej:si llega al millon,si quieres poner "misiones",bonificaciones por golpear 3 veces seguidas algun bumper iluminado.............lo que se te ocurra,lo suyo es que fuera una classe global para poder acceder a sus datos directamente.Lo instancias cuando comience la partida y lo destruyes al salir de esta cogiendo los datos que te interese antes de volver al menu .Ahi tendrias alguna variable de scorePower que la vas cambiando sgun necesites a 1,2 o 4 y luego algo asi.
 



   
      ScoreManager.score += (scoreValue * MatchManager.scorePower).
   

[/quote]
 
o te creas alguna funcion dentro del manager y que sea el el que lleve las cuentas
 



   
      MatchManager.ScoreUp(scoreValue);
   

[/quote]
 
y dentro de esta funcion que compruebe estado y cuanto a de sumar
 
Es mas de organizacion que otra cosa,segun como tengas montado todo.

Cita de: hammer date=1471280727Pos no deberia se muy dificil xD, tendrias que tener algun tipo de manager de la partida,que guarde variables,estados,eventos que puedan suceder en la partida, te dara mucha libertad para controlarla ej:si llega al millon,si quieres poner "misiones",bonificaciones por golpear 3 veces seguidas algun bumper iluminado.............lo que se te ocurra,lo suyo es que fuera una classe global para poder acceder a sus datos directamente.Lo instancias cuando comience la partida y lo destruyes al salir de esta cogiendo los datos que te interese antes de volver al menu .Ahi tendrias alguna variable de scorePower que la vas cambiando sgun necesites a 1,2 o 4 y luego algo asi.
   
   
      ScoreManager.score += (scoreValue * MatchManager.scorePower).
   
   
      o te creas alguna funcion dentro del manager y que sea el el que lleve las cuentas
   
   
      MatchManager.ScoreUp(scoreValue);
   
   
      y dentro de esta funcion que compruebe estado y cuanto a de sumar
   
   
      Es mas de organizacion que otra cosa,segun como tengas montado todo.
   


Gracias Hammer por la respuesta de echo el script que he posteado esta dentro de ScoreManager un GO.
 
entiendo lo que me dices pero no imagino como montarlo , talvez estas hablando tipo Singleton? o algo asi?
 
Nose intentare hacer pruebas sobre tu solución, muchas gracias.
 
 
 
 
 
 
 
 

Agosto 15, 2016, 08:45:36 PM #3 Ultima modificación: Agosto 17, 2016, 01:20:49 AM por pioj
XD no me fije XD si algo tipo singleton pero que no hace falta mantenerlo entre niveles, en verdad con que sea un gameobject que instancies cuando comienza el nivel y puedas acceder a el con getComponent ya te sirve,   te creas una variable para marcarte la "potencia" de las puntuaciones y la vas modificando segun quieras
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour {

     private int scorePower = 1;
private int score = 0 ;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
     
  void ScoreUp(int points){
   
       score += (points * scorePower);
  }
  void SetScorePower(int power){
   
       scorePower = power;
  }
 
}

 
Luego cuando se produzca la colision llamas a la funcion que te has creado, ScoreManager.ScoreUp y ella ya se encarga de mirar el estado de la puntuacion,cuando quieras cambiar el multiplicador pues llamas a ScoreManager.SetScorePower(aqui el multiplicador) .Tambien puedes ponerle una funcion que te devuelva el score para cuando finalize la partida y vayas a cambiar de scene puedas recogerlo y utilizarlo
 
Manera facil, nada mas cargar el nivel
 

  •    Instancias el GameObject con un tag ScoreManagerGO,por ejemplo,que contenga el script ScoreManager


  •    En el Start() de los objetos usas un ScoreManager scoreManager = FindGameObjectWithTag("ScoreManagerGO).GetComponent<ScoreManager>();


  •    Luego ya puedes ir llamando a las funciones del ScoreManager cuando necesites.


No te pongo como usar un singleton, porque no lo he hecho nunca y aunque entiendo su funcionamiento no quiero equivocarme en algo y liarla XD, hay post en el foro explicando como hacerlo por si quieres mirar

Agosto 15, 2016, 08:57:14 PM #4 Ultima modificación: Agosto 17, 2016, 01:21:08 AM por pioj
Cita de: hammer date=1471286736XD no me fije XD si algo tipo singleton pero que no hace falta mantenerlo entre niveles, en verdad con que sea un gameobject que instancies cuando comienza el nivel y puedas acceder a el con getComponent ya te sirve,   te creas una variable para marcarte la "potencia" de las puntuaciones y la vas modificando segun quieras
   
   
       
   
   

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour {

     private int scorePower = 1;
private int score = 0 ;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
     
  void ScoreUp(int points){
   
       score += (points * scorePower);
  }
  void SetScorePower(int power){
   
       scorePower = power;
  }
 
}

   
      Luego cuando se produzca la colision llamas a la funcion que te has creado, ScoreManager.ScoreUp y ella ya se encarga de mirar el estado de la puntuacion,cuando quieras cambiar el multiplicador pues llamas a ScoreManager.SetScorePower(aqui el multiplicador) .Tambien puedes ponerle una funcion que te devuelva el score para cuando finalize la partida y vayas a cambiar de scene puedas recogerlo y utilizarlo
   
   
      Manera facil, nada mas cargar el nivel
   
   
      -Instancias el GameObject con un tag ScoreManagerGO,por ejemplo,que contenga el script ScoreManager
   
   
      -En el Start() de los objetos usas un ScoreManager scoreManager = FindGameObjectWithTag("ScoreManagerGO).GetComponent<ScoreManager>();
   
   
      -Luego ya puedes ir llamando a las funciones del ScoreManager cuando necesites.
   
   
      No te pongo como usar un singleton, porque no lo he hecho nunca y aunque entiendo su funcionamiento no quiero equivocarme en algo y liarla XD, hay post en el foro explicando como hacerlo por siquieres mirar
   


Joder !! , pedazo de explicación , muchass gracias!!! me sirve y de mucho, me pongo manos a la obra jejejeje , repito muchas gracias.
 
 
 
Saludossss
 
 

lml Hevy Metal!!!!!! XD

Cita de: hammer date=1471287602lml Hevy Metal!!!!!! XD
   


hahahhahah muy buenaaaaaaaaaaaaaaaaaaaaaaaa ;)
 
 

Agosto 15, 2016, 11:55:44 PM #7 Ultima modificación: Agosto 17, 2016, 01:21:27 AM por pioj
Cita de: hammer date=1471287602lml Hevy Metal!!!!!! XD
   


Hammer , no hay manera no maclaro, no consigo poner las variables que quiero.
 
He modificado el Scoremañager , lo he puesto como me has dicho he creado un empty llamado Controlapuntos y le he puesto de tag ScoremanagerGO y dentro el script ScoreManager.
 
Le meti un sigleton lo cual no hace falta instanciarlo enel start.
 
Mira:
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;
 
void Awake()
{
   instance = this;
}
public static int score = ;
public static int puntobumper = 100;
public static int puntoagujero = 100;
public  static int scorePower = 1;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
public static void ScoreUp(int points)
{
score += (points * scorePower);
}
public static void SetScorePower(int power)
{
   scorePower = 100*2;
}
}
 

 
bien hasta aqui todo bien pero no me da resultado tu comentario anterio:
 
"Luego cuando se produzca la colisión llamas a la función que te has creado, ScoreManager.ScoreUp y ella ya se encarga de mirar el estado de la puntuación. "
 
pero si solo llamo como me has dicho no soluciono nada ya que tendría que cambiar manualmente cada objeto que tenga el "public int scoreValue= 0;".
 
Me refiero a que , imaginamos que un botón al encenderse ponga X2, 
 
no puedi para el juego y decirle que cuando se active el bumper en vez de 100 puntos me de 200, si el scoreValue(int) de cada objeto ya tiene los puntos asignados.
 
ScoreManager.score +=(scoreValue);
 
vamos que tengo un cacao de la india del copon y encima ahora no da ni un punto jejejje, bueno espero no molestarte demasiado y si no respondes lo entendere y te doy las gracias de ante mano.

Agosto 16, 2016, 02:04:47 AM #8 Ultima modificación: Agosto 16, 2016, 02:07:29 AM por hammer
Mhhh XD a ver si consigo explcarme mejor XD
 
Tienes un script que hace de manager, en un objeto,singleton o no XD,bien,este lleva la puntuacion que lleva el jugador, los potencimetros que pueda tener(x2,x4...) y todo lo que lleve el nivel, vidas,ultimo objeto golpeado etc por ejemplo.
 
Luego los bumpers tienen un script con su propia configuracion sobre la puntuacion que quieras,cuando la bola choque con OnCollisionEnter() llamas a la funcion del manager enviandole la variable de puntos que otorga.
 
Te lo ordeno que ya lo tienes
 
Primero el manager,lo instancias justo despues de cargar el nivel
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;
 
void Awake()
{
   instance = this;
}
private int score = ;
private int scorePower = 1;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
public static void ScoreUp(int points)
{
score += (points * scorePower);
}
public static void SetScorePower(int power)
{
   scorePower = power;
}
}

 
Y este lo pones en los objetos que actuen de bumpers,con el scoreValue que quieras puesto
 

using UnityEngine;
using System.Collections;
public class Bumper : MonoBehaviour {
public float force = 100.0f;
public float forceRadius = 1.0f;
public int scoreValue = 100;
public GameObject spotlight;
public AudioClip bumpersound;
AudioSource audio;
void Start ()
{
   audio = GetComponent<AudioSource>();
}

void OnCollisionEnter()
{
   foreach(Collider col in Physics.OverlapSphere(transform.position, forceRadius))
   {
      if (col.GetComponent<Rigidbody> ()) {
         col.GetComponent<Rigidbody> ().AddExplosionForce (force, transform.position, forceRadius);
         spotlight.SetActive(true);
         audio.PlayOneShot(bumpersound, 0.7F);
      }
      else
      {
   Invoke ("apagado",01);
      }
   }
   ScoreManager.ScoreUp(scoreValue);
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}

 
Solo he cambiado el ScoreManager.ScoreUp(scoreValue);, llamos a la funcion  del manager ScoreUp pasandole los valores de scoreValue.Si quieres que sea cuando pasa un agujero pues lo mismo pero con un OnTriggerEnter
 
Luego cuando quieras cambiaar el potencimetro solo tienes que llamar a la funcion ScoreManager.SetPowerScore(aqui lo que quierascon un "int" 1 puntuacion normal,2 doble,4 .......) en el momento que quieras
 
Acuerdate de eliminar el singleton cuando salga de la partida.Y si tienes un singleton con funciones publicas para cambiar los valores de las variables no las pongas en public static, ponlas en private,por seguridad
 
 
 
Cheerss!!

Agosto 16, 2016, 02:51:27 AM #9 Ultima modificación: Agosto 17, 2016, 01:22:01 AM por pioj
Cita de: hammer date=1471305887Mhhh XD a ver si consigo explcarme mejor XD
   
   
      Tienes un script que hace de manager, en un objeto,singleton o no XD,bien,este lleva la puntuacion que lleva el jugador, los potencimetros que pueda tener(x2,x4...) y todo lo que lleve el nivel, vidas,ultimo objeto golpeado etc por ejemplo.
   
   
      Luego los bumpers tienen un script con su propia configuracion sobre la puntuacion que quieras,cuando la bola choque con OnCollisionEnter() llamas a la funcion del manager enviandole la variable de puntos que otorga.
   
   
      Te lo ordeno que ya lo tienes
   
   
      Primero el manager,lo instancias justo despues de cargar el nivel
   
   

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;
 
void Awake()
{
   instance = this;
}
private int score = ;
private int scorePower = 1;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
public static void ScoreUp(int points)
{
score += (points * scorePower);
}
public static void SetScorePower(int power)
{
   scorePower = power;
}
}

   
      Y este lo pones en los objetos que actuen de bumpers,con el scoreValue que quieras puesto
   
   

using UnityEngine;
using System.Collections;
public class Bumper : MonoBehaviour {
public float force = 100.0f;
public float forceRadius = 1.0f;
public int scoreValue = 100;
public GameObject spotlight;
public AudioClip bumpersound;
AudioSource audio;
void Start ()
{
   audio = GetComponent<AudioSource>();
}

void OnCollisionEnter()
{
   foreach(Collider col in Physics.OverlapSphere(transform.position, forceRadius))
   {
      if (col.GetComponent<Rigidbody> ()) {
         col.GetComponent<Rigidbody> ().AddExplosionForce (force, transform.position, forceRadius);
         spotlight.SetActive(true);
         audio.PlayOneShot(bumpersound, 0.7F);
      }
      else
      {
   Invoke ("apagado",01);
      }
   }
   ScoreManager.ScoreUp(scoreValue);
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}

   
      Solo he cambiado el ScoreManager.ScoreUp(scoreValue);, llamos a la funcion  del manager ScoreUp pasandole los valores de scoreValue.Si quieres que sea cuando pasa un agujero pues lo mismo pero con un OnTriggerEnter
   
   
      Luego cuando quieras cambiaar el potencimetro solo tienes que llamar a la funcion ScoreManager.SetPowerScore(aqui lo que quierascon un "int" 1 puntuacion normal,2 doble,4 .......) en el momento que quieras
   
   
      Acuerdate de eliminar el singleton cuando salga de la partida.Y si tienes un singleton con funciones publicas para cambiar los valores de las variables no las pongas en public static, ponlas en private,por seguridad
   


Vente paca que montamos una empresa!!!, no es que te expliques mal!, es que yo soy muy lerdoooo :),
 
Y para que veas que te he entendido ;
 
supongamos que se activa un boton y es X2....tonces le pondria esto:
 

using UnityEngine;
using System.Collections;
public class x2 : MonoBehaviour {
// Use this for initialization
void Start () {
ScoreManager.SetScorePower (1);

}

// Update is called once per frame
void Update () {

}
}

 
Es asi?, el 1 puede ser un 2 un 3 etc...
 
Cositas que me han pasado:
 
si pongo los ints en privado , no los encuentra, si los pongo sin static, tampoco funciona.
 
Creo que aqui:
 
ScoreManager.SetPowerScore(aqui lo que quierascon un "int" 1 puntuacion normal,2 doble,4 .......) en el momento que quieras
 
esta al reves creo que seria;
 
ScoreManager.SetScorePower (1); (me lo has escrito al reves o soy yo que ya desvario) XDDD
 
Y ahora la buena noticia, buno las buenas noticias .
 
1ra: QUE TODO FUNCIONA DE PERLAS!!!
 
2da: que por fin te voy a dejar tranquilo!! :)
 
y 3ra y ultima : que gracias a gente como vosotros esto se nos hace mas ameno y aprendemos cada dia mas en este mundo.
 
un sincero, GRACIAS.
 
y para acabar de una vez dejare los scrips que ahora si me funcionan para futuras visitas:
 
Manager:
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;
 
void Awake()
{
   instance = this;
}
public static int score =;
public  static int scorePower = 1;
public TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
public static void ScoreUp(int points)
{
score += (points * scorePower);
}
public static void SetScorePower(int power)
{
   scorePower = power;
}
}
 

 
BUMPER:
 

using UnityEngine;
using System.Collections;
public class Bumper : MonoBehaviour {
public float force = 100.0f;
public float forceRadius = 1.0f;
public int scoreValue= 100;
public GameObject spotlight;
public AudioClip bumpersound;
AudioSource audio;
 
void Start ()
{
   audio = GetComponent<AudioSource> ();
}

void OnCollisionEnter()
{
   foreach(Collider col in Physics.OverlapSphere(transform.position, forceRadius))
   {
      if (col.GetComponent<Rigidbody> ())
      {  
         spotlight.SetActive (true);
         col.GetComponent<Rigidbody> ().AddExplosionForce (force, transform.position, forceRadius);
         audio.PlayOneShot (bumpersound, 0.7F);
                  
      }
      else
      {
       Invoke ("apagado",01);
      }
   }
   ScoreManager.ScoreUp(scoreValue);
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}

 
Y por ultimo un objeto cualquiera puede ser un cubo XDD para cambiar la puntuación cuando este activo en pantalla:
 
 
 

using UnityEngine;
using System.Collections;
public class x2 : MonoBehaviour {
// Use this for initialization
void Start () {
ScoreManager.SetScorePower (3); //// cambiamos el numero por lo que quieras que se doble,1 normal...2 doble etc. Gracias Hammer!!

}

//   // Update is called once per frame
//   void Update () {
//   
//   }
}

 
Y asi pegamos carpetazo!!!
 
Buenas noches!!! y gracias!

Agosto 16, 2016, 03:18:35 AM #10 Ultima modificación: Agosto 16, 2016, 03:21:52 AM por hammer
XD me alegro pues, seguramente me habre equivocado con el SetPowerScore, o como sea XD.
 
El ultimo script lo hace muy lioso y no lo necesitas,para cambiar el potencimetro me refira a por ejemplo, tienes una moneda en algun lugar y el cuando el jugador la recoje se cambia el potencimetro a por 2 y te da unos puntillos, la moneda tiene un trigger para que no choque y la recoja , pues seria asi el script de la moneda
 

using UnityEngine;
using System.Collections;
public class EspecialItem: MonoBehaviour {
    public int scoreValue; //Puntuacion que da al cogerla
    public int scorePower; //A cuanto se pone el potencimetro
    void OnTriggerEnter(Collider other) {
        if(other.tag == "bola"){ // Para asegurarnos que es la bola
            ScoreManager.SetScorePower(scorePower);// Establecemos el potencimetro a por el que hayamos puesto en el inspector de unity
            ScoreManager.ScoreUp(scoreValue);//establecemos la puntuacion que da la moneda,que se yo 50.000 xD
            Destroy(this);
        }
    }
}

 
Puedes llamar a las dos funciones desde donde quieras pasandole los valores que quieras
 
Tambien puedes poner gameobjects vacios con un trigger para saber cuando pasa por alguna rampa por ejemplo y darle puntos.
 
Para volver a la normalidad pues llamas a la funcion ScoreManager.SetScorePower(1);, podrias pasarle el tiempo que tiene que durar el potencimetro al SceneManager, actualizando un poquillo la funcion ScoreManager.SetScorePower ,y ahi hacer la cuenta de cuando volver a llamar a la funcion si quieres que sea por tiempo,maneras hay muchisimas

Agosto 16, 2016, 01:47:51 PM #11 Ultima modificación: Agosto 17, 2016, 01:22:24 AM por pioj
Cita de: hammer date=1471310315XD me alegro pues, seguramente me habre equivocado con el SetPowerScore, o como sea XD.
   
   
      El ultimo script lo hace muy lioso y no lo necesitas,para cambiar el potencimetro me refira a por ejemplo, tienes una moneda en algun lugar y el cuando el jugador la recoje se cambia el potencimetro a por 2 y te da unos puntillos, la moneda tiene un trigger para que no choque y la recoja , pues seria asi el script de la moneda
   
   

using UnityEngine;
using System.Collections;
public class EspecialItem: MonoBehaviour {
    public int scoreValue; //Puntuacion que da al cogerla
    public int scorePower; //A cuanto se pone el potencimetro
    void OnTriggerEnter(Collider other) {
        if(other.tag == "bola"){ // Para asegurarnos que es la bola
            ScoreManager.SetScorePower(scorePower);// Establecemos el potencimetro a por el que hayamos puesto en el inspector de unity
            ScoreManager.ScoreUp(scoreValue);//establecemos la puntuacion que da la moneda,que se yo 50.000 xD
            Destroy(this);
        }
    }
}

   
      Puedes llamar a las dos funciones desde donde quieras pasandole los valores que quieras
   
   
      Tambien puedes poner gameobjects vacios con un trigger para saber cuando pasa por alguna rampa por ejemplo y darle puntos.
   
   
      Para volver a la normalidad pues llamas a la funcion ScoreManager.SetScorePower(1);, podrias pasarle el tiempo que tiene que durar el potencimetro al SceneManager, actualizando un poquillo la funcion ScoreManager.SetScorePower ,y ahi hacer la cuenta de cuando volver a llamar a la funcion si quieres que sea por tiempo,maneras hay muchisimas
   


Totalmente de acuerdo con tigo Hammer,es mas mira este simple script que he puesto para tner x2 durante XXX tiempo facil y s
 

using UnityEngine;
using System.Collections;
public class x2 : MonoBehaviour {
public GameObject botonx2;
// Use this for initialization
void Start ()
{
   
botonx2.SetActive (false);
}
void OnCollisionEnter (Collision col)
{
if(col.gameObject.name == "bola")
{
ScoreManager.SetScorePower (3);
Invoke ("tiempo",50);
}
}
void tiempo()
{
botonx2.SetActive (false);   
}

      

//   // Update is called once per frame
//   void Update () {
//   
//   }
}

 
simplemente un botón en medio de donde sea que ponga x2, lo ponemos en el inspector y wala.
 
Cuando le des a XXx objecto que lo llame y se activa este botón y la puntuación x3 durará 50 segundos y luego se desactiva.
 
si quieres aumentar el tiempo de la durada solo amplias el 50 de el invoke a lo que quieras, 50 son segundos , osea 120 2 minutos etc.
 
Una manera fácil de administrar los tiempos :)
 
Hahaha Hammer a este paso montamos el pinball aquí mismo hahhahaha.

Agosto 16, 2016, 07:40:16 PM #12 Ultima modificación: Agosto 16, 2016, 07:40:50 PM por hammer
MMMhhhhh , diria que te falta un ScoreManager.SetScorePower(1) en la funcion tiempo() para volver a la normalidad, aun asi me parece que de esta manera puedes tener problemas o limitaciones,te pongo un ejemplo, como harias  si yo cojo un x2 de 50 y cuando va por el segundo 40 cojo otro x2 de 50???? Lo pondras a 50 y pierdo los 10 segundos que me quedaban del primer x2 o se sumaran los 10 segundos que quedan del primer x2 a los 50 segundos del segundo??Y en cualquiera de los dos casos, como cancelarias  invoke si tienes que "reconfigurar el x2" para llamar a uno nuevo ??

Cita de: hammer date=1471369216MMMhhhhh , diria que te falta un ScoreManager.SetScorePower(1) en la funcion tiempo() para volver a la normalidad, aun asi me parece que de esta manera puedes tener problemas o limitaciones,te pongo un ejemplo, como harias  si yo cojo un x2 de 50 y cuando va por el segundo 40 cojo otro x2 de 50???? Lo pondras a 50 y pierdo los 10 segundos que me quedaban del primer x2 o se sumaran los 10 segundos que quedan del primer x2 a los 50 segundos del segundo??Y en cualquiera de los dos casos, como cancelarias  invoke si tienes que "reconfigurar el x2" para llamar a uno nuevo ??
   


Wooops ,cierto ,,, lo de cancelar el invoke es facil 
 

CancelInvoke();

 
lo de varios 50 a la vez seguramente lo que pasaría es que se sumaría todo a destajo hahahhaa 40 por aqui 50 por alla....prontolo averiguare...estoy con lo de que salgan los puntos tipo texto flotante......otro quebradero.....
 
 
 
 

vaya no sabia que existia el  CancelInvoke xD xD hahaha,bueno a ver que pasa cuando llegues, supongo que tendras que guardar el tiempo en una variable y si llega el momento cancelar el invoke y sumarle el tiempo restante al nuevo invoke

Etiquetas: