Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Marzo 10, 2017, 02:09:58 PM

Título: audio pitch acelerar/decelerar(resuelto)
Publicado por: ramunda en Marzo 10, 2017, 02:09:58 PM
Buenas tardes,
 
Tengo una duda y no se porque no la puedo solucionar....
 
Tengo un barco que al estar parado/relenti , el sonido es de bajas revoluciones.
 
Al acelerar acelero el pitch de el audioclip(eso funciona no me hace el Time.deltatime) pero funciona.
 
El problema viene cuando decelero.
 
El sonido baja el pitch pero no al numero que yo le doy, solo una coma por debajo.
 
Expongo el scrip asi lo entienden mejor:;
 

using System.Collections;
using UnityEngine;
    public class controlbarco : MonoBehaviour {

public float velocidadgiro = 50f;
public float marcha =50f;
AudioSource audio;
private Rigidbody rb;
public GameObject espuma;
public float decelera = 0.49f;
public float acelera = 1f;
 
void Start()
{
   rb = GetComponent<Rigidbody>();
   espuma.SetActive(false);
   audio = GetComponent<AudioSource>();
   audio.pitch = decelera;
}
void FixedUpdate ()
{
   
   float h = Input.GetAxis ("Horizontal") * velocidadgiro * Time.deltaTime;
   float v = Input.GetAxis ("gatilloderecha") * marcha * Time.deltaTime;
   rb.AddTorque (transform.up * h);
   rb.velocity = transform.forward * v;
            
   if (v >= 0.1f) {
      espuma.SetActive (true);
      if (audio.pitch <= 1f) {      
      audio.pitch += acelera * Time.deltaTime;
      }
   }
   
   if (v <= 0.1f) {
   if (audio.pitch >= acelera)
   {      
   audio.pitch -= decelera *Time.deltaTime;
   Invoke ("paraespumas", 2);
   }
   }
   Debug.Log("Velocity: " + rb.velocity + "//Variable V " + v);
    }
   void paraespumas()
   {
   espuma.SetActive (false);
   {      
   }
   }
}

 
los floats publicos los tengo en :
 
Acelera 1
 
Decelera 0.49
 
El acelera va bien (se pone a 1), porque en el start le tengo que el pitch este en el valor de decelera.
 
El decelera se queda a: 0.99 en vez de los -0.49 que debería quedar.
 
Donde lo estoy haciendo mal?
 
 
 
Muchas gracias por adelantado.
 
 
Título: audio pitch acelerar/decelerar(resuelto)
Publicado por: gomeslaw en Marzo 10, 2017, 05:08:19 PM
Yo creo que lo tienes en esta linea:
 

if (audio.pitch >= acelera)

 
Cuando audio.pitch es menor que acelera(1f), entra en el if y le resta :
 

audio.pitch -= decelera *Time.deltaTime;

 
 
 
En ese momento audio.pitch es 0.99, y la condicion del  if no se cumple, por eso no te lo resta mas. Supongo que tendrias que sustituir acelera por decelera.
 
 
 
Saludos
Título: audio pitch acelerar/decelerar(resuelto)
Publicado por: ramunda en Marzo 10, 2017, 05:26:55 PM
Cita de: gomeslaw date=1489162099Yo creo que lo tienes en esta linea:
   
   

if (audio.pitch >= acelera)

   
      Cuando audio.pitch es menor que acelera(1f), entra en el if y le resta :
   
   

audio.pitch -= decelera *Time.deltaTime;

   
       
   
   
      En ese momento audio.pitch es 0.99, y la condicion del  if no se cumple, por eso no te lo resta mas. Supongo que tendrias que sustituir acelera por decelera.
   
   
       
   
   
      Saludos
   


Pero que tonto soy...tienes toda la razón del mundo.
 
Funciona perfectamente con tu explicación que ademas es muy detallada y bien explicada.
 
Muchisimas gracias!!
 
Un abrazo.