Noticias

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

Tiempo para empezar juego

Iniciado por ajdb, Octubre 07, 2015, 12:14:48 PM

Tema anterior - Siguiente tema
Hola, he estado buscando, y estudiando como hacerlo, pero no lo veo.Necesito, que al cargar la escena del juego, tarde un tiempo en empezar a poder jugar, que esté en pausa un segundo.He visto en Unity esta función, pero no se implementarla, y no se si será la solución.A ver si me puede decir alguien como hacerlo. Gracias.
void OnApplicationPause(bool pauseStatus)

No, esto es el evento que se lanza desde el so para decirte que te han puesto en pausa (el usuario o el propio so).Necesitarías una coroutine con yield return WaitForSeconds(seconds);

Si te entiendo bien, lo quieres que en el Awake()  el tiempo este a cero, y después de la coroutine sea 1.Pero si el tiempo está a cero, nunca se ejecutará la coroutine, no?.No si eso como quiere que lo haga.

En el awake no. Ponlo en el Start.Pero necesitas crear y llamar a una coroutine:
eature=oembed" frameborder="0" allowfullscreen="true"> 

Ya hice la coroutine. Le decía antes:  Time.timeScale = 0; Pero claro el tiempo se detiene y no llega a la parte de: yield return WaitForSeconds(seconds);Ese es mi gran problema. Asi es como me comentabas de hacerlo?. La llamada a la coroutine esta en el Start(), pero vamos eso da igual con el metodo que lo he echo. 


Lo que te dice es que no detengas el timeScale. Que simplemente haces la courutine y después del yield wait for seconds empieza lo que tu quieres.

[quote author=mrpacogp" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="29171" data-ipsquote-contentcommentid="116974 date=1444294605]Lo que te dice es que no detengas el timeScale. Que simplemente haces la courutine y después del yield wait for seconds empieza lo que tu quieres.[/quote]Y como hago que empiece el juego, estando ya la escena cargada?. Quiero dar un 1 segundo al jugador antes de que empiece el juego y poder situarse. 
[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="29171" data-ipsquote-contentcommentid="116969 date=1444293620]Pon el código que tienes.[/quote]    void Start()
    {
        StartCoroutine(TiempoEspera());
    }
    
    IEnumerator TiempoEspera()
    {
        Time.timeScale = 0;
        yield return new WaitForSeconds(2f);
        Time.timeScale = 1;
       
    }

Como también comenta @mrpacogp. Quita los dos Time.timeScale que no son para eso y ya está, pero necesitas lanzar la coroutine con yield return StartCoroutine(TiempoEspera()); para que no vuelva antes. En el tutorial que pasé lo deberías tener todo.

Bueno ya lo solucioné.Lo que he echo de que se active el jugador dentro del tiempo, con una coroutine.No había caído en hacerlo así, muchas veces es imaginación .Como me comentabais, no era capaz de echar a andar la coroutine, seguro no entendía bien lo que me decían.Muchas gracias a los dos, de todas formas.

"Bueno ya lo solucioné."..."Muchas gracias a los dos, de todas formas."Whatever....

Etiquetas: