Noticias

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

Trigger exit audio

Iniciado por ramunda, Abril 22, 2017, 06:51:45 PM

Tema anterior - Siguiente tema
Abril 22, 2017, 06:51:45 PM Ultima modificación: Abril 22, 2017, 06:53:03 PM por ramunda
Buenas tardes , tengo un simple script que al entrar en un trigger empiexa a sonar una musica y quiero que al salir se detenga bajando el volumen.
 
No me da error , y suena al entrar...pero no disminuye al salir como yo esperaba.
 
El debug lo marca bien , osea que detecta al jugador al salir.
 
Alguna idea por favor?
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class activaenemigos : MonoBehaviour {
private GameObject player;
public GameObject enemigos;
private GameObject cameramain;
private GameObject cameraenemiga;
float audioVolume;
AudioSource audio;
void Start ()
{
enemigos.SetActive (false);
player = GameObject.FindWithTag ("Player");
audio = GetComponent<AudioSource>();
}
void OnTriggerEnter (Collider col)
{
   if (col.tag == "Player")
   {  
      enemigos.SetActive (true);
      audio.Play ();
   }
}
void OnTriggerExit (Collider col)
{
   Debug.Log ("salida");
   if (audio.volume > 0.09)
   {
      audio.volume -= 0.1f * Time.deltaTime;
   }   
        Invoke ("desactivalos",5);
}
void Update()
{
   if (player.GetComponent<vidajugador> ().curHealth < )
   {
      if (audio.volume > 0.09)
      {
         audio.volume -= 0.1f * Time.deltaTime;
      }
      Invoke ("desactivalos",16);
   }
}
void desactivalos()
{
    enemigos.SetActive (false);
   if (audio.volume > 0.09)
   {
      audio.volume -= 0.1f * Time.deltaTime;
   }
}
}

 
Gracias

Abril 22, 2017, 07:05:39 PM #1 Ultima modificación: Abril 22, 2017, 07:06:08 PM por lightbug
Cuando salis de un trigger se dispara OnTriggerExit una sola vez por lo que tenes que tener constancia de en que estado estas/queres. En ese momento podes disparar una corutina, o manejarte con una bool/enum o cualquier tipo de variable, que cuando salgas (OnTriggerExit) se ponga, y manejar la accion mediante Update.
 

OnTriggerExit()
{
//El flag para el Update
hacerFade = true;
//O podes llamar a la corutina y dentro de ella hacer lo que tengas que hacer en un tiempo dado, o hasta que el volumen sea 0
StartCoroutine(Fade());
}
//Si fuera con el Update y con una bool
void Update()
{
if(hacerFade)
    {      
   if(condicion de salida : volumen = 0)
      hacerFade = false;
   else
      volumen -= tasa;
   
    }
}
//Corutina
IEnumarator Fade()
{
...   
}

 
 

Muchas gracias por la pronta respuesta lightbug, ya lo habia intentado con bool pero lo esta estructurando mal ahora veo la manera correcta ,muchas gracias!!
 
 

Etiquetas: