Noticias

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

Suena al entrar pero no para al morir...

Iniciado por ramunda, Julio 11, 2015, 10:09:30 PM

Tema anterior - Siguiente tema
Hola muy buenas tengo un dilema que me trae de cabeza, aver si alguien tiene una idea diferente....
 
 
La cosa es que tengo una zona la principal, que cuando se activa un Ontriggerenter empieza a sonar una música y si sales se para...esto funciona bien.
 
 
Pero la cosa se estropea cuando mi personaje se tele trasporta a otra zona no un nuevo nivel, zona de el mismo plano, se activa otra musica y arranca bien hasta que mi personaje muere en la zona tele transportada y reaparece en la zona principal donde empieza a sonar el primer trigger pero el segundo no se para.....
 
 
Osea que suenan los dos a la vez.
 
Lo que quisiera es que, se parara cada uno al salir de su radio, pero parece que al morir como se va a un vector3 no se entera de que se ha ido de el trigger.....
 
Creo que me explico..
 
 
este es el script que uso que al reconocer al jugador, activa o desactiva el audio, repito funciona bien mientras este fisicamente en el sphere collither pero si muere....digamos que vuela al respawn XX no se detecta y no para.
 
 
el script:

#pragma strict
private var theCollider : String;
function OnTriggerEnter (other : Collider)
{
theCollider = other.tag;
if (theCollider == "jugador")
{
   GetComponent.<AudioSource>().Play();
   //GetComponent.<AudioSource>().loop = false;
}
}
function OnTriggerExit (other : Collider)
{
theCollider = other.tag;
if (theCollider == "jugador")
{
   GetComponent.<AudioSource>().Stop();
   //GetComponent.<AudioSource>().loop = false;
}
}

Gracias de antemano!!!!
 
 
 

Hola!
 
Podrías hacer que cuando muera tu personaje pare todas las músicas.
 
Suerte!

@ramunda
 
tienes 2 opciones, te la explico de forma teorica:
 
1. Cuando muere el player llamar a una funcion para que pare la musica a traves de .SendMessage
 
2. Crear una variable que contenga la ubicacion del jugador de tal manera que en update puedas comprobar si se ha desplazado demasiado en ese pequeño tiempo(Porque a sido transportado al spawn).
 
Creo que te va a resultar mas sencilla la primera. 
Un saludo.
 
PD: Se me acaba de ocurrir otra, poner un OnTriggerEnter en el Respawn y desactivar la musica en ese trigger

Visita http://www.programacionwh.com encontraras tutoriales y muchas cosas .


Tambien puedes visitar mi canal de YouTube https://www.youtube.com/channel/UClSCTn0wPN1iFjED0yaoJUA



Cita de: cazagavilan date=1436647293Hola!
 
Podrías hacer que cuando muera tu personaje pare todas las músicas.
 
Suerte!
Gracias por la respuesta @cazagavilan, pues no es tan mala idea no

Cita de: ProgramacionWH date=1436665173@ramunda
 
tienes 2 opciones, te la explico de forma teorica:
 
1. Cuando muere el player llamar a una funcion para que pare la musica a traves de .SendMessage
 
2. Crear una variable que contenga la ubicacion del jugador de tal manera que en update puedas comprobar si se ha desplazado demasiado en ese pequeño tiempo(Porque a sido transportado al spawn).
 
Creo que te va a resultar mas sencilla la primera. 
Un saludo.
 
PD: Se me acaba de ocurrir otra, poner un OnTriggerEnter en el Respawn y desactivar la musica en ese trigger
Hey compañero @ProgramacionWH , cimo andas!!
 
La primera opción tambien me parece mejor que la segunda , porque la tercera aunquie es la mas atractiva no puedo a plicarla y te explico por que:
 
Yo no tengo un gameobject para respawn ni un sitio fijo, mi personaje respawnea mas o menos aleatoriamente dentro de coordenadas vector 3.
 
Ver linea:
 
transform.position = new Vector3(Random.Range(400.0f, 700.0f), 0, Random.Range(300.0f, 800.0f));
 
lo cual....
 
No puedo aplicar esta ultima...
 
La de el compañero no es mala idea de parar el audio al morir.
 
Pero....tende que cagarla bastante antes de conseguirlo juas.
 
Y la que me comentas de llamar a la function con SendMesage como seria WH?
 
gracias de antemano.

Solucionado se me ha ocurrido una idea a raiz de vuestros comentarios y por probar y me ha funcionado....
 
 
Lo expongo para quien le pueda servir:
 
El sonido de donde queria que se parase esta adjunto a un gameobject, entonces lo que he echo es :
 
public GameObject sonidoisladino; crear esta variable publica  la cual me pide que sonido es en el inspector.
 
 
despues cuando el pelele se muere le digo que pare este audio asi:
 
if(currentHealth <= 0 && !muerto ){
muerto = true;
sonido.PlayOneShot(deathClip2);
GetComponent<FPSInputController>().enabled = false; 
GetComponent<CharacterController>().enabled = false;
Bocaarma.SetActive(false);
sonidoisladino.SetActive(false);
 
que hace esto pues desactiva el sonido de ese sitio que no paraba y deja que suenen los demas
 
 
jejej lo resolvi :PPP

Me alegro que te haya servido por lo menos para una idea

Pues si toda ayuda es poca en estos casos jeje gracias.

Etiquetas: