Invisible Man - Der Unsichtbare | Lou Nova | Télécharger Part 3

Tutorial Creación de una "Pausa" en GameMaker

OP

YoshiFanGM

Gimmick Master
Colaborador
Mensajes
1.055
Calificaciones
476 3
Puntos
160
Ubicación
MTY
#1
Holas! Vengo con un nuevo tutorial escrito para Game Maker; esta vez me enfocaré en cómo crear una "Pausa" muy simple que funcione en casi cualquier juego creado en Game Maker. :unsure:

Lo que vamos a lograr en este tutorial será crear una room que se utilice únicamente para una Pausa, y que pueda regresar al room anterior manteniendo la posición original de los objetos (sin cambios).



Nota: Si lo prefieren, pueden descargar un editable sencillo para seguir el tutorial, es aquí en donde me voy a basar para hacerlo:
Tutorial Pausa 1.zip [Google Drive]

En este tutorial vamos a hacer uso de las rooms persistentes. Una room persistente hace que los objetos conserven su "estado" (posición, sprites, etc.) aún cuando se tenga que trasladar a otra room diferente. Además de esto vamos a utilizar un objeto persistente (persistent) que permanezca en todas las rooms para se encargue de mostrar la pausa cuando pulsemos el botón indicado, en cualquier momento.

Dicho esto, lo primero que haremos es crear una room nueva que servirá para mostrar la pausa del juego. Le renombramos a "room_pausa" y lo podemos decorar como queramos, pero en este tutorial lo dejaré con un fondo negro. También da igual si lo dejamos al principio o al final de la lista de rooms existentes (o entre ellos).

Después de esto, creamos un objeto al cual renombramos "control_pausa", y le marcamos el "Persistent". En el evento Create de este objeto, tenemos que crear las variables que controlarán la pausa en el juego:
Código:
// Evento "Create"

// Para guardar el room en el que estabamos antes de pausar.
room_anterior = -1;

// Para indicar si estamos en una pausa, o no
pausa = 0;

En el mismo objeto, agregamos un evento de Key Press que servirá para mostrar o salir de la pausa. Puede ser con el botón que nosotros queramos. En mi caso, lo pondré en Key Press <Enter>. Dentro de este evento agregamos el siguiente código para mostrar la pausa si estamos en una room normal, o para regresar al juego en caso de que ya estemos en el pause.
Código:
// Evento "Key press <Enter>"

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);
}

Luego agregamos el evento de Room Start que es en donde volveremos a poner el "Persistent" del room anterior en 'false'. Aquí también se controla si hemos llegado hasta el room_pausa sin haber pulsado el botón; en ese caso, solamente iremos al siguiente room (se brinca):
Código:
// Evento "Room Start"

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;
   }
}

Para mostrar un texto mientras estemos en el room de pausa, agregamos el evento Draw para dibujar un texto simple mientras el juego esté "pausado". Podemos usar una fuente que ya tengamos en el juego por medio de draw_set_font(fuente):
Código:
// Evento "Draw"

// Poner el texto de pausa solo cuando estemos en el room_pausa
if (room == room_pausa)
{  draw_set_font(fuente_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 botón para regresar");
}

Por último, solamente colocamos el objeto "control_pausa" en el primer room del juego (o a partir del room donde queramos pausar).

Si probamos y presionamos el botón que elegimos para pausar el juego, se debe mostrar el room previamente creado con el texto de la pausa:

Y si volvemos a pulsar el botón regresaremos al room en el que estabamos sin ningún cambio en los objetos.

Es una pausa bastante simple, aunque se puede personalizar en gran parte (siendo una room completa).

Para descargar el ejemplo terminado de este tutorial (compatible con GameMaker 8.1 y Studio 1.x), pueden ir al link:
Tutorial Pausa 2.zip [Google Drive]

Y para ver la segunda parte en donde explico cómo hacer que se vea el room anterior en la pausa (detrás del texto), pueden ver el tema:
Tutorial - Crear imagen "congelada" de una room en GameMaker

Saludos :)
 
Última edición: