Veran, tengo 2 objetos, por un lado el jugador y por otro lado un soldado enemigo.
Dicho soldado camina y el jugador puede escuchar sus pisadas, el problema es que lo que quiero es que esas pisadas se escuchen a un determinado volumen segun la distancia del jugador y el soldado.
Es decir, si el soldado esta cerca, el jugador escuchara fuerte sus pisadas, pero si esta lejos las oira flojito, o ni las escuchara.
¿Como hago para que haga ese efecto de volumen dinamico?

Cita de: Marth en Mayo 25, 2018, 11:11:08 PM
Veran, tengo 2 objetos, por un lado el jugador y por otro lado un soldado enemigo.
Dicho soldado camina y el jugador puede escuchar sus pisadas, el problema es que lo que quiero es que esas pisadas se escuchen a un determinado volumen segun la distancia del jugador y el soldado.
Es decir, si el soldado esta cerca, el jugador escuchara fuerte sus pisadas, pero si esta lejos las oira flojito, o ni las escuchara.
¿Como hago para que haga ese efecto de volumen dinamico?
Has probado manejando el audio_sound_gain?? o audio_music_gain??

Cita de: zorge en Mayo 26, 2018, 12:11:07 AM
Cita de: Marth en Mayo 25, 2018, 11:11:08 PM
Veran, tengo 2 objetos, por un lado el jugador y por otro lado un soldado enemigo.
Dicho soldado camina y el jugador puede escuchar sus pisadas, el problema es que lo que quiero es que esas pisadas se escuchen a un determinado volumen segun la distancia del jugador y el soldado.
Es decir, si el soldado esta cerca, el jugador escuchara fuerte sus pisadas, pero si esta lejos las oira flojito, o ni las escuchara.
¿Como hago para que haga ese efecto de volumen dinamico?
Has probado manejando el audio_sound_gain?? o audio_music_gain??

audio_music_gain ya no existe en esta versión de GM. En este programa es muy facil que las funciones relacionadas con el sonido se queden obsoletas.
Pero la otra función si ha funcionado. He creado este código:

if(instance_exists(Jugador))
   global.distancia=(radio-point_distance(x,y,Jugador.x,Jugador.y))/radio
else
   global.distancia=0.25

if(global.distancia>0.15){
   global.cantar=audio_play_sound(argument0,1,false)
   audio_sound_gain(global.cantar,global.distancia,0)
}

Me alegra te haya servido :)
Cita de: Marth en Mayo 26, 2018, 11:38:15 AM
Cita de: zorge en Mayo 26, 2018, 12:11:07 AM
Cita de: Marth en Mayo 25, 2018, 11:11:08 PM
Veran, tengo 2 objetos, por un lado el jugador y por otro lado un soldado enemigo.
Dicho soldado camina y el jugador puede escuchar sus pisadas, el problema es que lo que quiero es que esas pisadas se escuchen a un determinado volumen segun la distancia del jugador y el soldado.
Es decir, si el soldado esta cerca, el jugador escuchara fuerte sus pisadas, pero si esta lejos las oira flojito, o ni las escuchara.
¿Como hago para que haga ese efecto de volumen dinamico?
Has probado manejando el audio_sound_gain?? o audio_music_gain??

audio_music_gain ya no existe en esta versión de GM. En este programa es muy facil que las funciones relacionadas con el sonido se queden obsoletas.
Pero la otra función si ha funcionado. He creado este código:

if(instance_exists(Jugador))
   global.distancia=(radio-point_distance(x,y,Jugador.x,Jugador.y))/radio
else
   global.distancia=0.25

if(global.distancia>0.15){
   global.cantar=audio_play_sound(argument0,1,false)
   audio_sound_gain(global.cantar,global.distancia,0)
}

Si puse las dos porque no sabia que versión usabas, por eso puse primero la de audio_sound_gain y despues la obsoleta audio_music_gain de hecho audio_soun_gain es la que recomiendan para sustituir audio_music_gain. Hay mucha gente que aun usa gm 8.1

Ups, olvide indicar que yo uso GMS2.
En cualquier caso, es curioso lo cambiante que son las funciones. Cuando usaba el primer GMS, me lleve un susto cuando drásticamente dejaron obsoletos muchas de las funciones de sonido y tuve que ponerme a cambiar todo el código.

Cita de: Marth en Mayo 26, 2018, 05:40:02 PM
Ups, olvide indicar que yo uso GMS2.
En cualquier caso, es curioso lo cambiante que son las funciones. Cuando usaba el primer GMS, me lleve un susto cuando drásticamente dejaron obsoletos muchas de las funciones de sonido y tuve que ponerme a cambiar todo el código.
Un dato importante mencionar la version jajaja....
PD : De nada.....  ;)

Otra forma es utilizar el sistema de audio 3D, que además atenúa el sonido en el lado izquierdo o derecho.

En el evento Create del soldado crea un emisor de audio y colocalo sobre el personaje
[gml]
ae = audio_emitter_create();
audio_emitter_position(ae, x,y,0);
[/gml]
En el evento Step del soldado actualiza la posición del emisor
[gml]
audio_emitter_position(ae, x,y,z);
[/gml]
Reproduce el sonido con
[gml]
audio_play_sound_on(ae, sound, 1,1);
[/gml]
En el evento Step del protagonista actualiza la posición del oyente
[gml]
audio_listener_position(x,y,z);
[/gml]

Para evitar fugas de memoria destruye el emisor en el evento Destroy del soldado
[gml]
if audio_emitter_exists(ae)
audio_emitter_free(ae);
[/gml]

Mi juego es en 2D, por lo que supongo que la variable z la dejo siempre a 0.
Algo complejo, pero lo voy a mirar.

Edito: Ya he logrado que funcione este sistema, aunque me da que se escucha muy flojo el sonido.
¿Se puede usar alguna función para alterar el volumen de los sonidos creados de esta forma?