Hola compañeros ,pues eso que no termino de entender, el for , se supone que si coloco un for en step y quiero que me repita solo una vez debo de hacerlo de esta manera ,pues no, no para de repetirme el sonido o si genero un objeto , algo se me esta escapando
[gml]
if speed>1 {
for (var i = 0; i < 1; ++i) {
audio_play_sound(sound_rapido,0,0)}
instance_create_layer(x + 0, y + 0, "Instances", obj_robot_stela);
[/gml]
Hola amigo, te explico, el evento step se ejecuta en cada frame del juego, es decir que en cada frame estas ejecutando un for que se crea una sola vez y por ende te da el bucle infinito, por lo que veo en tu codigo quieres reproducir un sonido UNA sola vez y crear un objeto, en tal caso te recomiendo que cambies ese codigo por este:
[EVENTO STEP]
[gml]
if speed>1
{
//Creas una alarma donde se reproduzca tu sonido
if (alarm[0] == -1)
{
alarm[0] = 1
}
}
[/gml]
[ALARMA 0]
[gml]
audio_play_sound(sound_rapido,0,false)
instance_create_layer(x + 0, y + 0, "Instances", obj_robot_stela);
[/gml]
Con este codigo crearas una sola vez un objeto y reproducira una sola vez el audio, en caso tengas otra duda o no te funciono el codigo puedes avisarme, un saludo :3
es muy simple tiene que usar break para romper el bucle , pero si la velocidad sigue siendo mayor que 1 seguira reproduciendose asi que es mejor que use una alarma o cree una condicion para evitar que el bucle continue ejecutandose
[gml]
if(speed>1 && instance_number(obj_robot_stela)<1) //condicion se volvera a reproducir el sonido
//hasta que la instancia obj_robot_stela sea destruida
{
for(var i = 0; i<1; i++;)
{
audio_play_sound(sound_rapido,0,0);
}
instance_create_layer(x + 0, y + 0, "Instances", obj_robot_stela);
}
[/gml]
Muchas gracias a los dos compañeros, a
Ahora ya lo entendí ,pensaba que sería más simple , le pondré una condición para que no entre en bucle ,da gusto volver por el foro con Compañeros a si