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 );
}
}
Alguien que me eche una mano, por favor.
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.
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 );
}
}
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.
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.