Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Argo214 en Enero 02, 2016, 08:57:26 PM

Título: Mensaje no desaparece después de unos segundos
Publicado por: Argo214 en Enero 02, 2016, 08:57:26 PM
Buenas. Estoy intentando que al colisionar mi player con un objeto aparezca un mensaje durante 3 segundos y luego desaparezca, pero no desaparece. Este es el código que he puesto. Agradezco vuestras sugerencias. Gracias. using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Mensaje5puntos : MonoBehaviour {

    public GameObject ventana;

    void OnTriggerEnter(Collider other)
    { 
    
        if (other.gameObject.tag == "Player") {

            ventana.SetActive (true);
            StartCoroutine ("mensaje");
        }
    }
    IEnumerator mensaje() 
    {
        yield return new WaitForSeconds (3);
        ventana.SetActive( false );
    }
}
Título: Mensaje no desaparece después de unos segundos
Publicado por: Argo214 en Enero 04, 2016, 09:53:04 AM
Alguien que me eche una mano, por favor.
Título: Mensaje no desaparece después de unos segundos
Publicado por: Quel en Enero 04, 2016, 12:46:58 PM
El código parece estar correcto. Ponle algunos Debug.Log para comprobar si realmente entre en la coroutina, si espera los tres segundos y luego sigue. A parte de eso, te aconsejo que busques en otra parte. Porque tu error no parece estar en esas lineas.
Título: Mensaje no desaparece después de unos segundos
Publicado por: mrpacogp en Enero 04, 2016, 02:13:12 PM
Prueba a lanzarla del siguiente modo:
  StartCoroutine (mensaje());
Incluso si la quieres personalizar
Buenas. Estoy intentando que al colisionar mi player con un objeto aparezca un mensaje durante 3 segundos y luego desaparezca, pero no desaparece. Este es el código que he puesto. Agradezco vuestras sugerencias. Gracias.

 

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

public class Mensaje5puntos : MonoBehaviour {

    public GameObject ventana;

    void OnTriggerEnter(Collider other)
    {
   
        if (other.gameObject.tag == "Player") {

            ventana.SetActive (true);
            StartCoroutine (mensaje(2.0f));
        }
    }
    IEnumerator mensaje(float cuanto)
    {
        yield return new WaitForSeconds (cuanto);
        ventana.SetActive( false );
    }
}
 
Título: Mensaje no desaparece después de unos segundos
Publicado por: rubiodelimon en Enero 04, 2016, 05:51:30 PM
Unity incorpora un genial motor de interfaz que se llama UI, documentarte sobre este en el caso de que no lo conozcas y verás como es mejor que usar un gameObject.Por otro lado, si quieres seguir usando un gameObject, deberías escribir una sentencia Destroy en el gameObject para que desaparezca, porque lo que estás haciendo ahí es que mientras esté colisionando, es inicie, pero no que desaparezca.
Título: Mensaje no desaparece después de unos segundos
Publicado por: Argo214 en Enero 04, 2016, 06:59:34 PM
Ya lo he conseguido. Muchas gracias! El código estaba correcto pero otra parte del inventario al que pertenecían los objetos no me dejaba ejecutar la corrutina.