Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Agosto 09, 2016, 12:28:51 AM

Título: no repetir audio
Publicado por: ramunda en Agosto 09, 2016, 12:28:51 AM
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.
 
 
 
 
Título: no repetir audio
Publicado por: hammer en Agosto 09, 2016, 10:59:08 AM
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);
}
}

 
 
Título: no repetir audio
Publicado por: ramunda en Agosto 09, 2016, 11:29:59 AM
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