Tutorial: Cómo pausar un juego en GameMaker Studio

By | 16 agosto, 2018

En este video-tutorial, muestro cómo poner un pause muy sencillo en GameMaker: Studio, utilizando un room completo y un objeto persistente. La clave es ajustar la variable room_persistent a true, antes de cambiar de room, para que los objetos conserven su posición y sus propiedades al regresar.

Códigos

#1 – Evento Create del objeto control_pausa

room_anterior = -1;
pausa = 0;

 

#2 – Evento Key Press del objeto control_pausa

if (room != room_pausa)
{  // Se debe habilitar el "persistent" en el room antes de ir a la pausa, para que todos
   // los objetos guarden su posición al regresar.
   room_persistent = true;
 
   // Guardamos el "id" del room en el que estabamos
   room_anterior = room;
   pausa = 1;
   room_goto(room_pausa);
}
else
{  // Si ya estabamos en la pausa, regresar al room anterior
   pausa = 0;
   room_goto(room_anterior);
}

 

#3 – Evento Room Start del objeto control_pausa

if (pausa == 0)
{  if (room == room_pausa)
   {  // Ir de inmediato al siguiente room en caso de que se haya accedido al room
      // de la pausa sin haber pulsado el botón
      room_goto_next();
   }
   else
   {  // Se vuelve a poner "persistent" en 'false' tras regresar al room anterior
      room_persistent = false;
   }
}

 

#4 – Evento Draw del objeto control_pausa

// Poner el texto de pausa solo cuando estemos en el room_pausa
if (room == room_pausa)
{  draw_set_color(c_white);
   draw_set_halign(fa_center);
   draw_text(room_width / 2, 100, "PAUSA");
   draw_text(room_width / 2, 150, "Pulsa el boton para regresar");
}

 

Los códigos funcionan en cualquier versión. Puede ser en GameMaker 8, GameMaker: Studio, o en GameMaker Studio 2.

Descargas

Juego de ejemplo que se usó en el tutorial (.gm81 y .gmz)

Ejemplo de pausa terminado (.gm81 y .gmz)

One thought on “Tutorial: Cómo pausar un juego en GameMaker Studio

  1. Pingback: Tutorial: Hacer una captura (screenshot) de un room en GameMaker Studio – EliasMaker

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *