Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

En esta lección, exploraremos una nueva forma de activar eventos dentro del juego.

En lugar de usar objetos coleccionables, crearemos un sistema basado en botones que deben ser activados por el jugador para liberar una plataforma o ejecutar otra acción.

Este ejemplo es un poco más avanzado y nos ayudará a practicar varios conceptos aprendidos hasta ahora, como la comunicación entre Entidades, el uso de propiedades, etiquetas y la organización de la lógica visual.

En esta primera parte, crearemos la lógica de la plataforma y aprenderemos a usar propiedades almacenadas directamente en la Escena.

Esto es muy útil cuando necesitas compartir información entre diferentes Entidades en el juego. En lugar de almacenar datos solo dentro de una Entidad, la Escena puede funcionar como un lugar centralizado donde múltiples sistemas pueden leer y modificar la misma información.

En este ejemplo, los botones aumentarán un valor almacenado en la Escena, y la plataforma leerá ese mismo valor para saber cuándo todos los botones han sido activados.

1. Crear la Plataforma

Primero, al igual que aprendimos en las lecciones anteriores, vamos a crear un nuevo Plantilla de Entidad para nuestra plataforma.

Configura la Malla que se usará como la representación visual de la plataforma de acuerdo con el estilo y necesidades de tu proyecto.

Luego, agrega y configura la colisión, para que el Jugador pueda interactuar con la plataforma correctamente dentro de la escena.

En este ejemplo, la plataforma no necesitará ninguna Etiqueta o Propiedad específica, porque la lógica de activación será controlada por los otros elementos del sistema que crearemos en los siguientes pasos.

image.png

2. Crear la Lógica de la Plataforma

Ahora vamos a crear un nuevo Bloque de Lógica y vincularlo a nuestra Entidad plataforma.

Dentro de este Bloque de Lógica, desarrollaremos la lógica responsable de controlar el comportamiento de la plataforma y su interacción con el resto del sistema.

Puedes agregar este Bloque de Lógica directamente a la Entidad o configurarlo a través de la plantilla de la plataforma, de la misma manera que hicimos en las lecciones anteriores.

Dado que esta plataforma es algo que probablemente querrás reutilizar, configurarlo a través de la plantilla suele ser una buena opción.

image.png

Primero, vamos a crear dos propiedades.

La primera se añadirá al Bloque de Lógica de la plataforma. Debe ser una propiedad Int llamada Botones.

Esta propiedad almacenará más adelante el número total de botones disponibles en el mapa.

Con este valor, la plataforma podrá saber cuántos botones existen y comparar ese número con cuántos botones ya han sido activados por el jugador.

image.png

La segunda propiedad se creará directamente en la Escena, para que podamos acceder a ella fácilmente desde diferentes partes de la lógica del juego.

Para hacer esto, en la Vista 3D, haz clic en el cielo/fondo de la escena para seleccionar la Escena en sí.

Luego, en el panel de Propiedades, deberías ver que el tipo de objeto seleccionado es Escena, junto con el nombre de la escena actual.

Esta propiedad se usará más adelante para almacenar y compartir información global.

image.png

Haz clic en la pestaña Propiedades de la Escena y crea una nueva propiedad llamada Contador de Botones.

Esta propiedad tendrá más sentido cuando creemos los botones, porque los botones serán responsables de cambiar su valor cada vez que sean activados por el jugador.

Aún así, ya podemos crearla ahora, porque también será utilizada pronto por la lógica de la plataforma.

En resumen:

  • Botones pertenece a la plataforma y almacena cuántos botones existen.
  • Contador de Botones pertenece a la Escena y almacena cuántos botones han sido activados.

image.png

Ahora que hemos creado las dos propiedades, una en la Escena y otra en el Bloque de Lógica de la plataforma, comencemos a desarrollar la lógica de la plataforma.

Regresa a la Gráfica.

La primera información que necesitamos es el número total de botones que existen en el mapa.

Dado que este valor solo necesita calcularse una vez cuando comienza el juego, ejecutaremos esta lógica a través de Al Comenzar.

Primero, obtiene la Escena y utiliza el nodo que busca todas las Entidades con la etiqueta botón.

Aún no hemos creado los botones, pero ya podemos preparar esta lógica porque más tarde añadiremos esta etiqueta a ellos.

Luego, utiliza el nodo Tamaño para obtener el número de Entidades encontradas en esa lista.

Este valor representa el número total de botones presentes en la escena.

Finalmente, almacena este resultado en la propiedad Botones de la plataforma utilizando Establecer Botones.

image.png

Ahora vamos a crear la lógica responsable de activar la acción de la plataforma después de que todos los botones hayan sido presionados.

En este ejemplo, eliminaremos la Entidad plataforma de la escena, pero puedes adaptar esta lógica para hacer cualquier cosa que desees, como mover la plataforma, reproducir una animación, abrir un pasaje, habilitar otro objeto o activar una escena cinemática.

Para esta verificación, utilizaremos Al Actualizar, asegurándonos de que la condición se verifique continuamente mientras el juego esté en ejecución.

Primero, obtiene la Escena y accede a sus propiedades.

Dado que anteriormente creamos la propiedad Contador de Botones en la Escena, podemos acceder a ella a través del nodo Obtener Propiedades, que devuelve un diccionario que contiene todas las propiedades de la Escena.

Luego, conecta este diccionario al nodo Obtener Propiedad e indica el nombre Contador de Botones para recuperar exactamente la propiedad que creamos en la Escena.

Por defecto, la salida de Obtener Propiedad es del tipo Cualquiera.

Dado que necesitamos comparar este valor con la propiedad Botones de la plataforma, que es un número entero, cambia el tipo de salida de Obtener Propiedad a Int.

Luego, compara este valor con la propiedad Botones de la plataforma, que almacena el número total de botones disponibles en el mapa.

Si ambos valores son iguales, significa que todos los botones han sido activados por el jugador.

En este momento, podemos ejecutar la acción deseada.

En este ejemplo, eliminaremos la Entidad plataforma de la escena.

image.png

Perfecto. La lógica de nuestra plataforma ahora está lista.

La plataforma ya puede identificar automáticamente, cuando comienza el juego, cuántos botones existen en el mapa.

Esto nos da la libertad de agregar o eliminar botones de la escena sin tener que cambiar manualmente ningún valor, porque la lógica recalculará la cantidad cada vez que comience el juego.

Con esto, la plataforma puede determinar dinámicamente cuándo todos los botones han sido activados al comparar el número total de botones con el valor almacenado en la propiedad Contador de Botones de la Escena.

También hemos preparado toda la estructura para el siguiente paso, incluyendo el uso de la etiqueta botón, que se añadirá a los botones más adelante.

Esto significa que la comunicación entre los elementos ya está planeada:

  • la plataforma cuenta cuántos botones existen
  • cada botón actualizará la propiedad de la Escena cuando sea activado
  • la plataforma verifica la propiedad de la Escena
  • cuando el contador coincide con el total, la plataforma ejecuta su acción

Ahora estamos listos para pasar al siguiente paso: crear los botones y desarrollar la lógica que los conecte a la plataforma, completando la interacción entre estos dos sistemas.