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]
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