hola,

la pregunta es tal vez sencilla, ¿porque no puedo utilizar la sentencia "while" en un evento tipo "step"?

simplemente se queda trabado, imagino que se debe a la naturaleza del evento Step, pero quiero corroborarlo con los expertos.

gracias de antemano.

saludos.

Un evento while puede usarse en el evento step, si se traba es porque no consigue salir del bucle, puedes poner el codigo?

Un saludo!

Hola Zeran_Maran

Se te pega porque la condición que le diste al while nunca se deja de cumplir, de ser así se te va a pegar en cualquier evento, room_start, create, etc. No tiene nada que ver el STEP

Recuerda colocar en tu post el ícono de la versión de GM que estés utilizando.
alaberga regué el café.

BA:STFW&RTFM

#4 Noviembre 28, 2018, 03:34:43 AM Ultima modificación: Noviembre 28, 2018, 03:52:24 AM por Zeran_Maran
hola,

gracias por las respuestas,  les colocaré aqui le codigo que estoy utilizando.

while(distance_to_object(objeto_player) > 50)
     {
          sprite_index=sprite_avanzando;
          otras acciones...
     }
sprite_detenido;

básicamente quiero cambiar el sprite en función de la distancia con un objeto y ejecutar incrementos y decrementos en algunas variables (ojo, ya verifique que el problema no este en las variables adicionales y todo esta correcto).

otro ejemplo que también se me cuelga.

en otra función voy contando las veces que es golpeado, al llegar a dos veces quiero que se aleje una buena distancia del player

while (golpeado==2)
                    {
                       sprite_index=sprite_caminando;
                            if(x>obj_player.x)
                                {
                                    move_towards_point(x+300, y, 10);
                                }
                            else
                                {
                                    move_towards_point(x-300, y, 10);
                                }
                    }

gracias nuevamente.


Sí, el problema es que la sentencia nunca deja de cumplirse y se queda "atrapado" en el mismo step.

Hasta donde sé, en cada "step" el Game Maker ejecuta uno por uno los objetos que tienen este evento; por lo que al llegar al objeto que tiene ese código y la condición se cumple, entonces se ejecuta ese código indefinidamente; lo que ocasiona que no se pase a la ejecución de los demás objetos y por ende ese "step" nunca se termine.  :-[

El evento "step" puede entenderse como un bucle que se ejecuta a través del tiempo; por lo que en este caso lo que debes hacer es cambiar el "while" por un simple "if" ya que quieres que ese código se ejecuta cada step siempre y cuando se cumpla la condición.