Llevo bastante tiempo intentando que al empezar un nuevo nivel de juego haya una cuentas atras, tipo 3...2...1...Gooo.

El problema es que al empezar los niveles los objetos ya empiezan a moverse por la pantalla, y quiero que se empiecen a mover justo cuando acaba la cuenta, pero que a su vez se vean en su posicion origianl cuando empieza la cuenta atras.

Habia pensado en hacer como una pantalla tipo pausa incluyendo la cuenta regresiva, pero no funciona bien.

¿Alguna ideo o sugerencia?.

#1 Junio 05, 2013, 02:40:04 PM Ultima modificación: Junio 05, 2013, 08:28:49 PM por Wadk
Podés probar así.
Creá un objeto nuevo y ponele de nombre objCountdown. Ponele una depth muy baja (tiene que tener la depth más baja de todos los objetos del juego) como -9999999, y ponele en draw:
[gml]instance_create(0, 0, objActualCountdown);
instance_destroy();[/gml]

Después en otro objeto nuevo, de nombre objActualCountdown, poné en create:
[gml]sprite_index = sprite_create_from_screen(view_xview, view_yview, view_wview, view_hview, false, false, false, true, 0, 0);
instance_deactivate_all(true);
count = 3;  // Esta es la cantidad de números de la cuenta atrás.
time = 2;  // Esta es la duración en segundos de cada número.

alarm[0] = time * room_speed;[/gml]

En la alarma 0:
[gml]count -= 1;
if (count <= 0) {
    instance_destroy();
}
alarm[0] = time * room_speed;[/gml]

En destroy:
[gml]sprite_delete(sprite_index);
instance_activate_all();[/gml]

Y en draw:
[gml]draw_sprite(sprite_index, 0, view_xview, view_yview);
// Acá abajo podés poner el código que dibuje el número actual de la cuenta, al que podés acceder con la variable count.
// E.g.:
draw_text(view_xview + view_wview / 2, view_yview + view_hview / 2, string(count));[/gml]

Después poné el objeto objCountdown en las rooms que quieras que tengan una cuenta atrás.
No está probado pero debería funcionar.
Vim.

Mmmmm ¿no sería mejor simplemente usar un solo objeto y hacer que en una alarma a un step se copie la pantalla?. No recuerdo muy bien como funcione esto de los eventos en studio, pero creo que al crear un nuevo objeto el evento create es instantaniamente ejecutado, antes de que se ejecute el evento draw de los demas objetos y por lo tanto no se habria dibujado nada para cuando la pantalla se haya copiado. Ahora no estoy en mi casa así que no tengo gm para probar.

Cita de: brunoxzx en Junio 05, 2013, 03:16:16 PM
Mmmmm ¿no sería mejor simplemente usar un solo objeto y hacer que en una alarma a un step se copie la pantalla?. No recuerdo muy bien como funcione esto de los eventos en studio, pero creo que al crear un nuevo objeto el evento create es instantaniamente ejecutado, antes de que se ejecute el evento draw de los demas objetos y por lo tanto no se habria dibujado nada para cuando la pantalla se haya copiado. Ahora no estoy en mi casa así que no tengo gm para probar.
Como lo puse los eventos draw de los objetos deberían ejecutarse antes de que se ejecute el instance_create, así que debería funcionar bien, creo yo.
Pero tenés razón, una alarma de un step podría ser una mejor opción.
Vim.

Cita de: Wadk en Junio 05, 2013, 08:28:52 PM
Como lo puse los eventos draw de los objetos deberían ejecutarse antes de que se ejecute el instance_create, así que debería funcionar bien, creo yo.
Ups perdón  ???. Me confundí creí que el orden del depth iba al revés (-99999 sería el primero en dibujarse y no el ultimo).