Loader

Shoutbox

for (var i = 0; i < 1; ++i) se repite (solucionado)

Publicado por Ikaro3d, Diciembre 14, 2021, 12:38:26 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 14, 2021, 12:38:26 AM Ultima modificación: Diciembre 17, 2021, 10:05:15 AM por Ikaro3d
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

Diciembre 14, 2021, 06:35:16 AM #2 Ultima modificación: Diciembre 14, 2021, 07:04:14 AM por Jeffrey Faper
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]

Diciembre 16, 2021, 05:22:17 PM #3 Ultima modificación: Diciembre 16, 2021, 05:24:24 PM por Ikaro3d
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

Powered by EzPortal