Noticias

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

Hacer desaparecer objetos con retardo

Iniciado por Antonio Casas Rojas, Abril 20, 2018, 04:47:31 PM

Tema anterior - Siguiente tema
Abril 20, 2018, 04:47:31 PM Ultima modificación: Abril 23, 2018, 12:26:17 PM por pioj
Muy buenas compañeros de Unityspain. Mi problema es el siguiente:
 
Tengo 2 gameObjects y quiero que al atravesar el collider de un empty, estos 2 objetos desaparezcan pero primero uno y, 3 segundos después, el otro. Se que tengo que utilizar una corrutina o un invoke, pero no se cómo aplicarlo para que me de ese resultado. Aquí está lo que llevo puesto. Sabrían decirme lo que me faltaría. Gracias y saludos.
 

public class sensorQuitarObjetos : MonoBehaviour {
    public GameObject objeto1;
    public GameObject objeto2;
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Player")) {
            objeto1.SetActive(false);
            objeto2.SetActive(false);
        }
    }
}

 
 
 
 

Abril 20, 2018, 06:09:13 PM #1 Ultima modificación: Abril 20, 2018, 06:10:11 PM por lightbug
Cita de: Antonio Casas Rojas date=1524235651Sabrían decirme lo que me faltaría. Gracias y saludos.
   


Mirá, el on trigger se usa para dar mensajes, un toque de un cuadro, si lo que querés es algo dinámico que vaya realizando alguna acción en el tiempo no podés pensar resolver todo en OnTrigger, lo que podés hacer es llamar a la corrutina en onTrigger ... o , poner un bool en true por ej, y en Update o similar verificar, si está en true significa que debés realizar la acción. Osea que tu problema se separa en dos : 1 - hacer la acción (corrutina o update) , 2 . usar al ontrigger de disparador de dicha acción . Se poddría decir que 2 ya lo tenés
 
la corrutina por ej:
 

IEnumarator Accion()
{
objeto1.SetActive(false);
yield return new WaitForSeconds(3);
objeto2.SetActive(false);
}

 
y la llamas
 

StartCoroutine( Accion() );

 
 

Cita de: lightbug date=1524240553Mirá, el on trigger se usa para dar mensajes, un toque de un cuadro, si lo que querés es algo dinámico que vaya realizando alguna acción en el tiempo no podés pensar resolver todo en OnTrigger, lo que podés hacer es llamar a la corrutina en onTrigger ... o , poner un bool en true por ej, y en Update o similar verificar, si está en true significa que debés realizar la acción. Osea que tu problema se separa en dos : 1 - hacer la acción (corrutina o update) , 2 . usar al ontrigger de disparador de dicha acción . Se poddría decir que 2 ya lo tenés
   
   
      la corrutina por ej:
   
   

IEnumarator Accion()
{
objeto1.SetActive(false);
yield return new WaitForSeconds(3);
objeto2.SetActive(false);
}

   
      y la llamas
   
   

StartCoroutine( Accion() );

   
       
   


Muchas gracias, lightbug . Se nota que eres un experto. Saludos :)

Cita de: Antonio Casas Rojas date=1524244561Muchas gracias, lightbug . Se nota que eres un experto. Saludos :)
   


de nada! saludos

Etiquetas: