Noticias

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

no repetir audio

Iniciado por ramunda, Agosto 09, 2016, 12:28:51 AM

Tema anterior - Siguiente tema
Buenas noches, necesito una idea por favor:
 
Estoy haciendo un flipper, bien los Flippers osea las manecillas que golpean la bola, al activarse hacen un ruido, bien.
 
el ruido va perfecto excepto cuando mantengo el boton de el mouse para retener la bola, el sonido se repite.
 
He tenido en cuenta la opción de cambiar esto:(script completo mas abajo).
 

if(Input.GetButton(buttonName))

 
por esto
 

if(Input.GetButtonDown(buttonName))

 
Pero veréis que no es alternativa ya que utilizo Fuerza para moverlos y no funcionan en este caso.
 
Aqui el script completo:
 
 
 

using UnityEngine;
using System.Collections;
public class ApplyForceAtOffet : MonoBehaviour {
public float force = 100.0f;
public Vector3 forceDirection = Vector3.forward;
public string buttonName = "Fire1";
public Vector3 offset;
//public AudioClip flipersound;
AudioSource audio;
public AudioClip flipersound;
private bool detener;
   
void Update ()
{
if(Input.GetButton(buttonName))
{
audio = GetComponent<AudioSource>();
if (!audio.isPlaying)
fliper ();
GetComponent<Rigidbody>().AddForceAtPosition(forceDirection.normalized*force,transform.position+offset);
}
else
{
GetComponent<Rigidbody>().AddForceAtPosition(forceDirection.normalized*-force,transform.position+offset);
}
}
void fliper()
{
   detener = true;
   audio.clip = flipersound;
   audio.loop = false;
   //audio.PlayOneShot(flipersound, 0.7F);
   audio.Play();
   
}
}

 
Gracias de antemano.
 
 
 
 

Falta un el if del primer RigidBody xD, no cambies el get button, añade otro antes del GetMouseButton
 
 
 

void Update ()
{
     audio = GetComponent<AudioSource>();
     if(input.GetMouseButtonDown(buttonName) && !audio.isPlaying){
    Fliper();
}
if(Input.GetButton(buttonName))
{
   
GetComponent<Rigidbody>().AddForceAtPosition(forceDirection.normalized*force,transform.position+offset);
}
else
{
GetComponent<Rigidbody>().AddForceAtPosition(forceDirection.normalized*-force,transform.position+offset);
}
}

 
 

Cita de: hammer date=1470733148Falta un el if del primer RigidBody xD, no cambies el get button, añade otro antes del GetMouseButton
   
   
       
   
   

void Update ()
{
     audio = GetComponent<AudioSource>();
     if(input.GetMouseButtonDown(buttonName) && !audio.isPlaying){
    Fliper();
}
if(Input.GetButton(buttonName))
{
   
GetComponent<Rigidbody>().AddForceAtPosition(forceDirection.normalized*force,transform.position+offset);
}
else
{
GetComponent<Rigidbody>().AddForceAtPosition(forceDirection.normalized*-force,transform.position+offset);
}
}

   
       
   


Opppps que tonto soy!!!, muchas gracias hammer!! 
 
 
 
Saludos
 
 

Etiquetas: