Noviembre 26, 2018, 06:25:32 PM Ultima modificación: Noviembre 27, 2018, 05:50:54 PM por kostra
PERO COMO SE HACE?!?!?!?!?!

he probado el new audio sistem y el viejo y no hay manera!! cómo puedo saber el volument de una musica específica?? ya sea con el audio antiguo o con el nuevo (prefiero el antiguo, que me ha costado cambiarlos todos xD)

lo que quiero es que una musica vaya bajando poco a poco su volumen y cuando el volumen esté a 0 entonces cambio la música (para un tipico cambio de música en el boss)

PD: el audio_master_gain no lo entiendo, ni siquiera sé lo que es un listener, supongo que un canal o algo así, pero no entiendo nada :S solo encuentro comandos para cambiar el volumen (que no funcionan) pero ninguno para saber cuál es el volumen actual, me voy a volver loco!! (sry estoy estresao hoy xD)
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]


Si la he probado, y no funca, he creado una variable aparte a 1 y en un bucle le voy incrementando 0.1 a la vez que le asigno con sound_volume el valor fe tal variable y al final un if variableparaelvolumen <= 0 cambia la musica.
Pero pum, se baja de golpe
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Lo bajas quitando 0.1? Eso es mucho si lo haces por ejemplo en un evento STEP, ya queen solo 10 steps la bajas a 0. En que evento bajas la musica? Puedes poner el codigo?

#4 Noviembre 27, 2018, 03:09:35 PM Ultima modificación: Noviembre 27, 2018, 04:44:57 PM por kostra
Gracias por corregirme ese detalle, ahora no estoy en el pc, voy a comer algo y dentro de una hora o poco mas digo como me va, para no hacer doble post ni editar para que nadie lo vea, puedes plis comentarme cuanto me aconsejas ponerle?

EDITO: No tenia 0.1 se me olvidó que probé también con 0.001 y ahora acabo de probar 0.0001 y tampoco me funca... este es el código:
[gml]for (vol=1;vol>0;vol-=0.0001) {
    sound_volume(mlvl1,vol);
    if vol == 0
        alarm[0] = 1;
    }[/gml]
está en un evento colisión el cual al cumplirse todo se destruye para evitar bucles infinitos, es un típico activador invisible
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Eso no deberías hacerlo en bucle, ya que como has dicho en el for, se repetirá mientras que el valor 'vol' sea mayor a 0. Por lo que el usuario ve que el volumen se baja al instante.

Quita el for, y simplemente pon en el mismo evento:


vol -= 0.001;
sound_volume(mlvl1,vol);

if (vol <= 0) {
//Destruir al instante, ya que si se repite esto, la alarma no podrá cumplirse nunca.
}

Cabe destacar que el player inevitablemente pasa de largo (está encima de un boost, así que la colisión no es constante
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Puedes crear una variables que sea chocado = false.
Puedes hacer que cuando colisione, la variable se vuelva true, y entonces un sistema esté esperando a que se vuelva true para bajar el volumen.

if (chocado) {
//Código de antes
}


#9 Noviembre 27, 2018, 05:50:07 PM Ultima modificación: Noviembre 27, 2018, 05:55:24 PM por kostra
LISTO!! lo que me diste no funcionaba puesto a que se ejecutaba una sola vez, por no colisionar, así que por mucho que esté "chocado en true", si no colisionas no se lee xD, así que añadí un step y así quedó todo:

create:
[gml]///vars

ok = 0;
vol = 1;[/gml]

colision:
[gml]///activar boss

oboss1intro.alarm[0] = 1; //ni caso a esto
with oactivadorboss1 //es este mismo objeto, para cuando el camino es más ancho y necesito más de una instancia...
    ok = 1;[/gml]

step:
[gml]///bajar volumen

if ok == 1 {
    vol -= 0.005;
    sound_volume(mlvl1,vol);
    if (vol <= 0) {
        with oactivadorboss1
               ok = 2;
        alarm[0] = 1;
        }
    }[/gml]

alarm0:
[gml]///activar mboss y destruirse

sound_stop_all();
sound_loop(mboss);
with oactivadorboss1
     instance_destroy();[/gml]

GRACIAS GRACIAS GRACIAS GRACIAS GRACIAS !!!
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]