Hola querida comunidad!
Quisiera que me ayuden con éste problemilla que se presento cuando quiero que se reproduzca un sonido al destruirse  una vasija.

Éste es el código:


//Event STEP

if caja_rota = 0
    {
    image_speed = 0.6
    audio_play_sound(Snd_Vasija_Romper,0,false)
    }


Lo que quiero hacer aquí, es que cuando la vida de la vasija llegue a 0, se reproduzca la animación de destrucción y a la vez el sonido de cuando se rompe.

Me funciona bien la animación, pero lo que no sale bien es el sonido de romperse. Ya que se reproduce muchas veces a la vez.

Será porque está en el event STEP? pero si ese es el problema, donde podría poner el código.

Espero me puedan ayudar!



#2 Septiembre 04, 2018, 11:32:33 PM Ultima modificación: Septiembre 05, 2018, 01:30:53 AM por Luis En
Intenté probar en Event Destroy y tampoco funciona, es más, como que se reproduce solo una parte del sonido.

Así tengo los códigos:


//Obj_Vasija:

//Event CREATE:

///Variable

image_speed = 0                 
vasija_rota = 3         //Vida de Vasija (Con tres toques se le destruye)
golpe = false            //No es tocada


//Event STEP:

if place_meeting(x-1,y,Obj_Player)       
    {
    if (golpe == false)
       {
       audio_play_sound(Snd_Golpe_Vasija,0,false)
        golpe = true
        vasija_rota -= 1
       alarm[0] = room_speed
       }                     
    }
    else
    {
    golpe = false
    }
   
if vasija_rota = 0
    {
    image_speed = 0.6
    audio_play_sound(Snd_Vasija_Romper,0,false)
    }
exit

//Event Alarm 0:

golpe = false

//Event Animated End:

instance_destroy()




No sucede el problema con el sonido del Golpe_Vasija, pero si con el sonido Vasija_Romper.





Cita de: Luis En en Septiembre 04, 2018, 11:32:33 PM
Intenté probar en Event Destroy y tampoco funciona, es más, como que se reproduce solo una parte del sonido.

Así tengo los códigos:


//Obj_Vasija:

//Event CREATE:

///Variable

image_speed = 0                 
vasija_rota = 3         //Vida de Vasija (Con tres toques se le destruye)
golpe = false            //No es tocada

sonido_cajarota = false

//Event STEP:

if place_meeting(x-1,y,Obj_Player)       
    {
    if (golpe == false)
       {
       audio_play_sound(Snd_Golpe_Vasija,0,false)
        golpe = true
        vasija_rota -= 1
       alarm[0] = room_speed
       }                     
    }
    else
    {
    golpe = false
    }
   
if vasija_rota = 0
    {
    image_speed = 0.6
    audio_play_sound(Snd_Vasija_Romper,0,false)
    }
exit

//Event Alarm 0:

golpe = false

//Event Animated End:

instance_destroy()




No sucede el problema con el sonido del Golpe_Vasija, pero si con el sonido Vasija_Romper.

Ya lo solucioné! compañeros.

Lo que hice fue:

En vez de establecer la vida de la Vasija, con la variable: "vasija_rota". Utilice la función "lives" de game maker para establecer la vida de la Vasija. Entonces cambie: "vasija_rota" por "lives", y en Event Other>No more lives, puse que se reprodujera el sonido al cuando "lives" llegue a 0. No se si me explique bien, pero aquí el código que cambie:
[gml]

//Event STEP:

if place_meeting(x-1,y,Obj_Player)       
    {
    if (golpe == false)
       {
       audio_play_sound(Snd_Golpe_Vasija,0,false)
        golpe = true
        lives -= 1                                        //Se restará 1 de vida
       alarm[0] = room_speed
       }                     
    }
    else
    {
    golpe = false
    }
   
if lives = 0                                          //Si no le queda vida
    {
    image_speed = 0.6
    }

//Event Other> No more lives:           //Reproducir sonido de destrucción

audio_play_sound(Snd_Vasija_Romper,0,false)
[/gml]