Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Alemar5 en Septiembre 01, 2020, 07:27:20 PM

Título: Como coloco el sonido de pisadas en diferentes suuperficies?
Publicado por: Alemar5 en Septiembre 01, 2020, 07:27:20 PM
Hola amigos, que tal les va?
en muchos juegos he visto que cuando un personaje camina, se escucha un sonido de pisadas, cuando se detiene estas tambien paran, a la vez veia que cuando caminaba en diferentes superficies, este colocaba un sonido diferente, me preguntaba cómo podría hacerlo?

pd. ya intente poner un audio_play_sound en cada movimiento, sin embargo no funciono.

Esta es la linea de codigo que uso para el movimiento de mi personaje:

[gml]///Movimiento

if (stop == true) { exit;}

//movimiento del jugador
if correr = 0 && global.prota_mover = 1
{
if keyboard_check(vk_up)
{
    y-= 3
    sprite_index= spr_prota_arriba
    image_speed = 0.2
}
if keyboard_check(vk_down)
{
    y+= 3
    sprite_index = spr_prota_abajo
    image_speed = 0.2
}
if keyboard_check(vk_left)
{
    x-=3
    sprite_index = spr_prota_izquierda
    image_speed = 0.2
}
if keyboard_check(vk_right)
{
    x+=3
    sprite_index = spr_prota_derecha
    image_speed = 0.2
}
}

if keyboard_check_released(vk_left) or keyboard_check_released(vk_right) or keyboard_check_released(vk_up) or keyboard_check_released(vk_down)
{
image_speed = 0
image_index = 0
}
if keyboard_check(ord("Z"))
{
    correr = 1
}
if keyboard_check_released(ord("Z"))
{
    correr = 0
}
if correr = 1 && global.prota_mover = 1
{
if keyboard_check(vk_up)
{
    y-= 5
    sprite_index= spr_prota_arriba
    image_speed = 0.3
}
if keyboard_check(vk_down)
{
    y+= 5
    sprite_index = spr_prota_abajo
    image_speed = 0.3
}
if keyboard_check(vk_left)
{
    x-=5
    sprite_index = spr_prota_izquierda
    image_speed = 0.3
}
if keyboard_check(vk_right)
{
    x+=5
    sprite_index = spr_prota_derecha
    image_speed = 0.3
}
}
[/gml]
Título: Re:Como coloco el sonido de pisadas en diferentes suuperficies?
Publicado por: T789 en Septiembre 01, 2020, 07:39:26 PM
Saludos alemar5

Lo que se me ocurre para tu solución, es que almacenes los sonidos de las distintas pisadas en una variables en cada objeto de plataforma o superficie
[gml]
///Definela en cada objeto de superficie que tengas y añádeles un padre a todos para una colision unica
Superficie_sound = snd_pisada_roca;
[/gml]
Y en un evento de colision o en el codigo añade un simple verificador para que sepa cuando deba reproducirse
[gml]
if !sound_isplaying(other.Superficie_sound)
  sound_play(other.Superficie_sound);
[/gml]
Tambien puedes añadir una variable de temporizador si quieres un efecto mas concreto y calibrado