Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ramunda

#46
General (Antiguo) / Añadir +1 a un int...
Agosto 29, 2016, 07:21:47 PM
Cita de: hammer date=1472490699Pues no deberia, asi tendria que funcionar, yo he puesto el scoreExtraBall en 10 000 por poner algo, pero si estas usando los scores que tienes ,aunque ya habiamos dicho que no deberias xD xD, bumper 50 000, pues obviamente te sumara varias bolas en pocos frames,ponlo en 100 000 o 1 000 000
   


Si , esta vez si Maestro Yoda XD , al tener poca puntuación se multiplicaban con una puntuación de 100.000 funciona bien ,la única pega es que no se añade al instante sino que se añade cuando se pierde la bola, osea sabes que la tiene pero no se refeja hasta que se te va.
 
Seguramente por el "mal gestionado Update...." , pero ya vere como me las apaño.
 
Muchas gracias hammer otro 10 para ti :)
 
Un abrazo.
#47
General (Antiguo) / Añadir +1 a un int...
Agosto 29, 2016, 06:26:21 PM
Er hahaha sihammer lo del +=3 lo tenia bien pero justamente copie el script al estar probando aver si era eso...
 
Igualmente con el +=3 no funciona no añade la bola.voy a probar el metodo 2 el que me has exouesto y si lo del up`dtae...XDDDD soy lerdo recuerdas hahahhaha.
 
Vale Metodo 2 ....
 
con una puntuación de 205000 me da 20 bolas extras.....y eso que le he puesto +1..
 
Esta multiplicando?
 
no lo entiendo
 
:(
 
 
 
 
#48
General (Antiguo) / Añadir +1 a un int...
Agosto 29, 2016, 01:45:42 PM
Buenas tardes
 
Tengo un problema con un int que aprenetemente es facul pero me lleva de cabeza.
 
Quiero añadir +1 a un public int en este caso numero de bolas al llegar a una puntuación...pues no hay manera.
 
Este script alberga el numero de bolas:
 

using UnityEngine;
using System.Collections;
public class BallManager : MonoBehaviour
{
public GameObject ball;
public Transform spawnPosition;
public TextMesh display;
public int lives = 3;
public bool gameOver = false;
AudioSource audio;
public GameObject luzx1;
public GameObject luzx2;
public GameObject luzx3;
 
   
void Update()
{
   AudioSource audio = GetComponent<AudioSource> ();
   //Check for gameover
   if (lives < ) {
      if (display) {
         display.text = "GAME OVER";
         gameOver = true;
      }
   }
   
   //Ball cae y no es game over
   if (!GameObject.FindGameObjectWithTag ("Ball") && !gameOver) {
      lives--;
      Instantiate (ball, spawnPosition.position, ball.transform.rotation);
      audio.Play ();
      luzx1.SetActive (true);
      luzx2.SetActive (false);
      luzx3.SetActive (false);
      ScoreManager.Instance.SetScorePower (1);
      //Update bolas restantes
      if(display)
      {
         display.text = "BOLAS RESTANTES: " + lives.ToString();
      }
   }
   
   if(gameOver)
   {
      if(Input.GetKeyDown(KeyCode.Return))
      {
         Application.LoadLevel(Application.loadedLevel);
      }
   
   }
}
}

 
Este es el que intento que añada una bola extra al llegar a xxxx puntos.
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager Instance;
void Awake()
{
Instance = this;
}
public   int score =;
public   int scorebumper =50000;
public   int scoredianas =100;
public   int scoreagujeros =10000;
public   int scoretarjets =100;
public   int scorePower = 2;
public   int bankvalue =10000;
public    TextMesh display;
public GameObject Ballmanager;
private bool detener;
 
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
   if (score == 10000 && detener == false) {
   Invoke("millonn",1);
}   
}
public   void ScoreUp(int points)
{
score += (points * scorePower);
}
public  void SetScorePower(int power)
{
   scorePower = power;
}
void millonn()
{
Debug.Log ("MILLLOOOOONNN");
   Ballmanager.GetComponent<BallManager> ().lives =+3 ;
}
}

 
Pues no hay manera me aumenta las 3 bolas...pero si me queda una bola antes de llegar a la puntuación me suma las 3.... si le pongo +1 me deja en 1....agradeceria un aire a este problema , 
 
Gracias de antemano y un saludo.
 
 
#49
General (Antiguo) / Rotación objecto
Agosto 28, 2016, 02:54:41 AM
Cita de: Biarox1166 date=1472345619De nada @ramunda!!!!!!! buenísimo que te pude ayudar y no hay problema con lo de las corutinas habeces también me mareo un poco jajaja saludos.
   


:), Salut!!
 
 
#50
General (Antiguo) / Rotación objecto
Agosto 28, 2016, 02:44:08 AM
Biarox1166, simplemente has dado en el clavo, no se me ocurrió usar una bool...en fin va perfecto, y si efectivamente tenia pensado meterle un timer o algo, pero como me lio con las coorutinas pues ago uso de el timer de los novatos jejejjejjee, lo dejo asi;
 

using UnityEngine;
using System.Collections;
public class gira : MonoBehaviour {
public float speed;
public bool girar = false;
 
void Update ()
{
if(girar){
transform.Rotate(20,,*Time.deltaTime*speed);
}
}
void OnCollisionEnter(Collision collision){
girar = true;
Invoke ("para",3);
}
void para()
{
girar = false;
    }
    }

 
Así meto mano de la bool y le digo que a los 3 segundos me la desactive y yata :)
 
Mil gracias :)
#51
General (Antiguo) / Rotación objecto
Agosto 28, 2016, 01:47:21 AM
Buenas noches, una pregunta por favor.
 
Necesito que una plataforma de vueltas cuando algo se le choca.
 
 si le añado esto:
 

public float speed;
transform.Rotate(20,*Time.deltaTime*speed,);

 
Gira sin problemas sobre su axis.
 
Pero si le añado la colisión:
 

using UnityEngine;
using System.Collections;
public class gira : MonoBehaviour {
public float speed;
//public float time;
 
void OnCollisionEnter(Collision collision){
   
   foreach (ContactPoint contact in collision.contacts) {
   transform.Rotate(20,*Time.deltaTime*speed,);
  }
}
}

 
Gira pero se detiene en el primer segundo de el time.deltatime.
 
Probé con trigger en vez de collision y el resultado es el mismo.
 
Probé añadiendo un float tiempo pero hace caso omiso...
 
Agradeceria una idea.
 
Gracias
 
 
#52
General (Antiguo) / Tengo un pequeño lio....
Agosto 27, 2016, 12:34:39 AM
Estoy de acuerdo al 100% de todo lo que has dicho de echo es lo que estoy haciendo, con tu solución anterior es exactamente como has dicho cada trasto tiene su puntuación y la mandamos tanto al score como al Texto flotante, lo estoy ordenado todo y puliendo puntuaciones hahahha, y si lo del x2 y x3 eso esta suoper resuelto(fuistes tu XDDd).
 
Todo anda bien Hammer, mil gracias por tu tiempo, por la paciencia , y por las explicaciones que son mas que extensas y comprensibles
 
Cuando tenga algo....decente echo lo posteare para que lo veais :).
 
Muchas gracias de nuevo , si me saturo...ya posteare :)
 
 
 
Salut y gracias.
 
 
 
 
#53
General (Antiguo) / Tengo un pequeño lio....
Agosto 26, 2016, 10:56:47 PM
Muchas gracias hammer , te has explicado de lujo, como antaño Xd.
 
Pero el que no se explica soy yo.
 
Esto me funcionaba mas o menos bien , ahorra mejor jejje.
 
Pero realmente lo que pedía era no tener que coger el valor de scorevalue sino el de el Gamemanager , veras que cree ints para todo , bumperscore, agujeroscore etc...
 
Quiero añadir a la puntuación el valor de el int de scoremanager + el multiplicador que tenga el scoreup osea x1 , x2 etc.
 
ahora lo esta cojiendo como tu bien me has dicho desde scorevalue.
 
lo quiero coger desde aqui:
 

public   int scorebumper =50000;
public   int scoredianas =100;
public   int scoreagujeros =10000;
public   int scoretarjets =100;
public   int scorePower = 1;
public   int bankvalue =10000;

 
no de aquí:
 

ScoreManager.Instance.ScoreUp(scoreValue);

 
ni de Text On Spot
 
i eso es lo que no puedo conseguir :)
 
Porque lo que he entendido es que, asi el TexTonspot es solo un portador esporadico que mostrara el valor que tenga el Scorevalue?
 
Bien , pero es que me esta cogiendo el valor de El TextOnspot no el de el scorevalue :)
 
Vale ya esta , bien lo pome mi nick soy nooobbbbbbb con B alta, era tan facil como quitarle el valor al TextOnSpot....ponerlo a 0.
 
Mil gracias hammer, eres un genio!!!
 
P.D todo esos ints se puede borrar no sirven para nada XD.
 
Saludos.
 
 
 
 
 
 
 
 
 
 
 
 
#54
General (Antiguo) / Tengo un pequeño lio....
Agosto 26, 2016, 05:23:40 PM
Buenas tardes,
 
tengo un pequeño lío.
 
Tengo un Scoremanager donde controlo todas las puntuaciones de los objetos por ejemplo un bumper.
 
Cojo los valores desde alli asi me es mas fácil cambiarlos globalmente.
 
Pero nose que he liado....y ahora no veo la luz, estoy atascado.
 
Este script es el maestro:
 

using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager Instance;
void Awake()
{
Instance = this;
}
public   int score =;
public   int scorebumper =50000;
public   int scoredianas =100;
public   int scoreagujeros =10000;
public   int scoretarjets =100;
public   int scorePower = 1;
public   int bankvalue =10000;
public    TextMesh display;
void Update()
{
   if (display)
   {
      display.text = score.ToString ("D8");
   }
}
public   void ScoreUp(int points)
{
score += (points * scorePower);
}
public  void SetScorePower(int power)
{
   scorePower = power;
}
}
 

 
Bien desde aqui controlo casi todo...
 
Ahora el objeto que me da puntos por ejemplo el 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;
public  GameObject TextOnSpotGO;
 
 
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.Instance.ScoreUp(scoreValue);
   Instantiate (TextOnSpotGO, transform.position, Quaternion.identity);
   TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.Instance.scorebumper * ScoreManager.Instance.scorePower + "";
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}

 
lineas 40 a 42.
 
en la 42 le digo que me coja los valores de Scoremanager y los digamos enseñe en un texto flotante en la pantalla.
 
El problema me viene que , en la linea 40:
 
ScoreManager.Instance.ScoreUp(scoreValue);
 
cojo el valor de scorevalue (linea8), para que se me sume al marcador (Scoremanager), pero lo que quiero es cojer el valor de scorebumper no el de scoremanager, y me estoy volviendo loco!!
 
Sera una tonteria pero me tiene saturado.
 
Agradeceria una ayuda por favor.
 
Gracias de antemano.
 
 
 
 
 
 
 
 
 
 
#55
Kaito me has dejado sin palabras las 2 maneras son excelentes, mil gracias!!!
 
 
 
 
#56
Buenas tardes,
 
tengo un pequeño dilema que me lleva de cabeza, he buscado y remirado pero nada da en el clavo.
 
Tengo una puerta que se abre con una animación con un trigger, bien la animación abre la puerta ,
 
El caso es que quiero que se cierre la puerta cuando por ejemplo me matan o lo que sea.En este caso en cuando pierdo una bola.
 
Pues no hay manera. He probado con rewind, con -1 y +1 de todo ..la puerta no se cierra.
 
Os enseño como lo tengo aver si teneis alguna idea.
 
este la abre:
 

using UnityEngine;
using System.Collections;
public class x3 : MonoBehaviour {
public float force = 100.0f;
public float forceRadius = 1.0f;
public int scoreValue=100000;
public GameObject spotlight;
public AudioClip bumpersound;
public AudioClip puerta;
AudioSource audio;
public GameObject puerta3;
public GameObject luzx1;
public  GameObject TextOnSpotGO;
public GameObject light;
Animation anim;
// public GameObject puntacos;
void Start ()
{
   audio = GetComponent<AudioSource>();
   anim =puerta3.GetComponent<Animation> ();
   light.SetActive (false);
   spotlight.SetActive (false);
}
void OnTriggerEnter (Collider col)
{
   ScoreManager.Instance.SetScorePower (2);
   if(col.gameObject.name == "Ball")
   Instantiate (TextOnSpotGO, transform.position, Quaternion.identity);
   TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.Instance.scoreagujeros * ScoreManager.Instance.scorePower + "";
   ScoreManager.Instance.ScoreUp(scoreValue);
   anim.Play ("Take001");
   Invoke ("apagado", 03);
      
}
void apagado()
{
   spotlight.SetActive(true);
   audio.PlayOneShot(bumpersound, 0.9F);
   light.SetActive (true);
   luzx1.SetActive (false);
   spotlight.SetActive (true);
}
}

 
Este debería cerrarla al perder una bola:
 

using UnityEngine;
using System.Collections;
public class BallManager : MonoBehaviour
{
public GameObject ball;
public Transform spawnPosition;
public TextMesh display;
public int lives = 3;
public bool gameOver = false;
AudioSource audio;
public GameObject luzx1;
public GameObject luzx2;
//public GameObject puerta1;
//public GameObject puerta2;
public GameObject puerta3;
Animation anim;
 
void Start()
{
   
   anim = GetComponent<Animation>();
   AudioSource audio = GetComponent<AudioSource> ();
}
   
void Update()
{
   //AudioSource audio = GetComponent<AudioSource> ();
   //Check for gameover
   if (lives < ) {
      if (display) {
         display.text = "GAME OVER";
         gameOver = true;
      }
   }
   
   //Ball cae y no es game over
   if (!GameObject.FindGameObjectWithTag ("Ball") && !gameOver) {
      lives--;
      Instantiate (ball, spawnPosition.position, ball.transform.rotation);
      audio.Play ();
      luzx1.SetActive (true);
      luzx2.SetActive (false);
      puerta3.GetComponent<Animation>() ["Take 001"].speed = -1;
      puerta3.GetComponent<Animation> () ["Take 001"].time = GetComponent<Animation> () ["Take 001"].length;
      puerta3.GetComponent<Animation> ().Play ("Take 001");
   

      //Update bolas restantes
      if(display)
      {
         display.text = "BOLAS RESTANTES: " + lives.ToString();
      }
   }
   
   //Reset game with return key if game is over
   if(gameOver)
   {
      if(Input.GetKeyDown(KeyCode.Return))
      {
         Application.LoadLevel(Application.loadedLevel);
      }
   
   }
}
}

 
Gracias de antemano.
 
 
 
 
#57
General (Antiguo) / Puntuación doble
Agosto 17, 2016, 01:32:07 AM
Cita de: pioj date=1471389847Está genial que os lo paséis bien resolviendo la duda y eso, pero por favor: Recordad que esto es un foro de consultas. Centraros en preguntar o responder, no empecéis aquí un chat privado, porque el hilo se vuelve infinitamente largo y pesado de seguir...
   
   
      Por cierto, no hace falta ir repitiendo el quote de TODO el código de nuevo, ya posteado, en cada respuesta, si no hay ningún cambio al respecto, ¿ok?  Si ese código no aporta ya nada a la conversación, no sigáis incluyéndolo en la respuesta....
   


*pioj Tienes toda la razón, pido disculpas, se nos ha ido de las manos...esque la cosa se ha puesto tan guay que no me he dado cuenta de esto.
 
Lo dicho , pido disculpas.Ha sido culpa mía y de nadie más.
 
Hammer ha sido más que atento y simpático conmigo y pido que no se le reproche.
 
P.D : gracias por todo hammer si eso mandame un privado y pasame un skype o lo que sea si quieres seguir el hilo.
 
 
 
 
 
 
#58
General (Antiguo) / Puntuación doble
Agosto 16, 2016, 10:14:56 PM
Cita de: hammer date=1471377997XD Perdona lo escribo aqui sin mas y no lo pruebo en unity, asi que siempre me equivoco en algo xD XD
   
   
      TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = (ScoreManager.scoreValue * ScoreManager.scorePower) + "";
   
   
      haciendole una suma +"" a un int lo conviertes en string
   
   
      Tambien puedes crearte una variable, hacer la multiplicacion y luego to string
   
   
      int spotText = ScoreManager.scoreValue * ScoreManager.scorePower;
   
   
      TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = spotText.ToString();
   
   
      Incluso puede que funcione con
   
   
      TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = (ScoreManager.scoreValue * ScoreManagerScorePower).ToString();
   
   
       
   
   
       
   


Peta todo porque....
 
scoreValue no esta en ScoreManager, esta en el valor local de el objeto...y lo estas llamando con ScoreManager.scoreValue.
 
Y nada que perdonar me lo estoy pasando de muedo hahahhaha, aprendo y me divierto..que mas puedo pedir...
 
aver como solucionamos esto Xd.
 
 
 
Despues de 3 cafes......:
 
Modificado:
 

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

 
He metido toda la cizalla padentro y la llamo desde el invoke:
 

ScoreManager.ScoreUp(scoreValue);
   Instantiate (TextOnSpotGO, transform.position, Quaternion.identity);
   TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.Instance.scorebumper * ScoreManager.scorePower + "";

 
cada una por su int....
 
Ademas no vees nada raro?
 
Ya no son Public static....
 
Solo public....y sabes porque funciona asi ahora?, porque soy tonto del culo XD, he creado un singleton ya los has visto antes.
 
Bien estaba llamando a las ints asi:
 

Instantiate (TextOnSpotGO, transform.position, Quaternion.identity);
TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.scorebumper * ScoreManager.scorePower + "";

 
y esto asi:
 

ScoreManager.Instance.ScoreUp(scoreValue);

 
pero como soy lerdo....Unity me lo decia claro , no podia acceder a una non static int...y claro yo les meti static.....pero no se me ocurrio que si lo he instanciado con el singleton....era tan facil como esto!!
 

DisplayText = ScoreManager.Instance.scorebumper * ScoreManager.Instance.scorePower + "";

 
Instance!!!!!
 
igual aquí:
 
ScoreManager.Instance.ScoreUp(scoreValue);
 
En fin....hahahhahahha soy lerdo XDDDd
#59
General (Antiguo) / Puntuación doble
Agosto 16, 2016, 08:49:57 PM
Cita de: hammer date=1471372360XD Si no entiendo mal, esto es la puntuacion que sale al golpear un objeto, no???
   
   
      Si es asi creas un prefab, y lo instancias desde el script Bumper
   
   

using UnityEngine;
using System.Collections;
public class Bumper : MonoBehaviour {
     public GameObject TextOnSpotGO;
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);
        GameObject instTextOnSpotGO = Instantiate(textOnSpotGO,transform.position,Quaternion.identity)
        instTextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = scoreValue.ToString();
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}



mmm un prefab con lo que te he puesto?
 
y esto:
 
GameObject instTextOnSpotGO = Instantiate (textOnSpotGO, transform.position, Quaternion.identity);

 instTextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = scoreValue.ToString();
 
me peta de por todos lados  Xd, detras de identity faltaba ";"
 
eso esta arreglado.
 
el fallo 1: error CS0103: The name `textOnSpotGO' does not exist in the current context( creo que dice que no encuentra dicho objeto)
 
Fallo2: error CS1502: The best overloaded method match for `UnityEngine.Object.Instantiate(UnityEngine.Object, UnityEngine.Vector3, UnityEngine.Quaternion)' has some invalid arguments
 
fallo 3: error CS1503: Argument `#1' cannot convert `object' expression to type `UnityEngine.Object'
 
jur...aver como arreglamos esto Xd
 
------------
 
Arreglado:
 

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;
public  GameObject TextOnSpotGO;
 

void Start ()
{
   audio = GetComponent<AudioSource> ();
   //TextOnSpotGO = GameObject.Find ("TextOnSpotGO");
}

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);
   Instantiate (TextOnSpotGO, transform.position, Quaternion.identity);
   TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = scoreValue.ToString();
}
 
void apagado()
{
   
   spotlight.SetActive (false);
}
}

 
pero ojo aqui solo está cogiendo las puntuaciones de el ScoreValue no de el total en caso de multiplicado...he probado esto:
 
TextOnSpotGO.GetComponent<TextOnSpotScript>().DisplayText = ScoreManager.ScoreUp(scoreValue).ToString();
 
pero no....
 
no lo acepta porque ScoreUp es un void....:(
 
 
 
 
 
 
 
 
#60
General (Antiguo) / Puntuación doble
Agosto 16, 2016, 07:58:12 PM
Cita de: hammer date=1471369884vaya 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
   


Si si existe hahahha, y si algo asi tendre que hacer , ya veras con lo de el texto flotante ya he conseguido que salga flotando...pero claro cuando es x2 o x3....fuuuu mira esto es lo que he echo:
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class TextOnSpotScript : MonoBehaviour {
public string DisplayText;
public Text TextPrefab;
public float Speed;
public float DestroyAfter;
private float Timer;
// Use this for initialization
void Start () {
   Timer = DestroyAfter;
   TextPrefab = GetComponentInChildren<Text>();
}

// Update is called once per frame
void Update () {
   Timer -= Time.deltaTime;
   if(Timer < ) {
      Destroy(gameObject);
   }
   if(DisplayText != null) {
      TextPrefab.text = DisplayText;
   }
   if(Speed > ) {
      transform.Translate(Vector3.up * Speed * Time.deltaTime, Space.World);
   }
}
}

 
esto va de lujo le pones el valor que quieres y te lo saca flotando ...pero lo suyo seria que cojiera el valor de el ScoreValue de el objeto.....