Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: gonzalitosk8 en 11 Junio 2015, 16:46 pm



Título: Alguien experto que me ayude con una ecuación?
Publicado por: gonzalitosk8 en 11 Junio 2015, 16:46 pm
Buenos días! espero que estén todos muy bien! paso a comentar lo que quiero hacer, pero no puedo plasmarlo!

estoy tratando de hacer un sonido del motor de un auto en c#, con sus respectivos sonidos básicos (low, mid, high y offlow, offmid, offhigh)
pude construir algo muy básico.

ejemplo de lo que tengo:

Código
  1. if(dt.rpm > 800){ // las revoluciones del motor
  2. float factor=drivetrain.rpm/drivetrain.maxRPM;
  3.  {if (!LowSource.isPlaying) LowSource.Play();}
  4.  LowSource.volume = 0.1f;
  5.  LowSource.pitch= 0.1f + LowPitchFactor*factor+0.15f;
  6. }

como puse en ese guion, lo tengo hecho 10 veces por cada audio (low, mid, high)
para que en cada uno, el volumen aumente 0.1 llegando a la rpm que le marque.

osea:

Código
  1. if(dt.rpm > 1200){
  2. LowSource.volume = 0.2f;
  3.  
  4. }
  5. if(dt.rpm > 1500){
  6. LowSource.volume = 0.3f;
  7.  
  8. }
y asi sucecivamente hasta llega a el volumen maximo..

mi pregunta seria, como puedo hacer para que el sonido del motor aumente suavemente entre dos floats?

ejemplo

float minimo = 1000, el volumen seria 0
float maximo = 3500, el volumen seria 1

entre esos dos floats el volumen comience a aumentar de 0 a 1 suave!


Mod: Los códigos dene llevar Etiquetas GeSHi, movido a .net


Título: Re: Alguien experto que me ayude con una ecuación?
Publicado por: El Benjo en 11 Junio 2015, 19:39 pm
Lo que puedes hacer es una relación entre ambos valores, es decir:

maximo - minimo = 1000 - 3500 = 2500 y después la diferencia entre tus valores 0 y 1, o sea:

1 - 0 = 1 y sacas la relación 1 / 2500 = 0.0004

De esta manera, en vez de los 'if' utilices algo como:

Código
  1. LowSource.volume = dt.rpm * 0.0004f;

Espero que te sirva de algo, saludos.