Noticias

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

audio pitch acelerar/decelerar(resuelto)

Iniciado por ramunda, Marzo 10, 2017, 02:09:58 PM

Tema anterior - Siguiente tema
Marzo 10, 2017, 02:09:58 PM Ultima modificación: Marzo 11, 2017, 11:45:53 AM por pioj
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.
 
 

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

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.

Etiquetas: