En este tutorial, aprenderás a crear un blueprint que genera nuevos cubos en el nivel cuando el jugador se sube a un interruptor. Usa este objeto de jugabilidad para permitir a los jugadores conseguir nuevos cubos en cualquier sala de rompecabezas donde los cubos se puedan perder o destruir.
Para el generador de cubos, crearás un blueprint que solo contenga la función de generación de cubos, de modo que tengas la flexibilidad de usar cualquier contenido de geometría o recurso artístico para crear el efecto de cubos que se desprenden de esa geometría.
No es obligatorio crear este blueprint si has seguido el nivel de muestra, pero tal vez te interese incluir esta mecánica de regeneración de cubos en tu proyecto si quieres seguir ampliando el juego de aventuras y rompecabezas.
Antes de empezar
Asegúrate de que comprendes los temas tratados en las secciones anteriores de la serie de tutoriales sobre El diseño de una aventura de puzles:
Aspectos básicos de los blueprints, incluidos eventos personalizados, interfaces de Blueprint y variables.
Necesitarás los siguientes recursos que creaste en Rompecabezas: interruptores y cubos:
Blueprint
BP_CubeBlueprint
BP_SwitchInterfaz de Blueprint
BPI_Interaction
Cómo crear un nuevo blueprint
Primero, crea un nuevo recurso de blueprint para el generador de cubos. Este blueprint implementará la interfaz de Blueprint BPI_Interaction para que pueda responder a BP_Switch, que usa los eventos de esa interfaz.
Para configurar un nuevo blueprint, sigue estos pasos:
En el explorador de contenido, ve a la carpeta Contenido > AdventureGame > Diseñador > Blueprints > Activación.
Haz clic con el botón derecho y selecciona Clase de Blueprint. En la ventana de selección de clase, elige la clase Actor.
Dale al blueprint el nombre
BP_CubeSpawny ábrelo.En el editor de blueprints, ve a la pestaña EventGraph.
En la parte superior del editor de blueprints, haz clic en el botón Ajustes de clase.
En el panel Detalles, en la sección Interfaces, haz clic en el desplegable Añadir junto a Interfaces implementadas y selecciona BPI_Interaction.
Haz clic en Compilar y Guardar.
Tras añadir la interfaz BPI_Interaction, en el panel My Blueprint, verás una nueva sección llamada Interfaces. Esta sección contiene los eventos fnBPISwitchOff y fnBPISwitchOn, que forman parte de la interfaz de BPI_Interaction.
En BP_CubeSpawn, usarás el evento fnBPISwitchOn para definir qué ocurre cuando el jugador pisa un interruptor y activa este evento.
Cómo compilar la lógica de generación de cubos
Antes de implementar la lógica para generar los cubos, piensa en cómo debería funcionar el sistema de generación de cubos:
Para generar un cubo, el jugador debe activar el interruptor que utiliza la interfaz que añadiste en la sección anterior.
Debería haber un número máximo de cubos que el jugador pueda generar para no llenar demasiado el área con cubos.
Si el jugador intenta generar más cubos que la cantidad máxima, destruye el primer cubo generado. Realizarás un seguimiento de los cubos generados con una variable de matriz.
El generador de cubos debería usar un cronómetro de enfriamiento breve para que el jugador no pueda generar nuevos cubos demasiado rápido.
Cómo verificar las condiciones de generación de cubos
Para iniciar el grafo de eventos del generador de cubos, primero comprueba si se puede aparecer un nuevo cubo y si el jugador ha creado la cantidad máxima de cubos.
Para comprobar si un nuevo cubo puede aparecer, sigue estos pasos:
En el panel My Blueprint, en la categoría Interfaces, haz doble clic en la interfaz fnBPISwitchOn para añadirla al grafo.
Desde el nodo fnBPISwitchOn, arrastra el pin de ejecución y crea un nuevo nodo Branch.
En el nodo Branch, arrastra el pin Condition, selecciona Ascender a variable y nombra la variable
CanSpawn. Usarás esta variable para comprobar si el enfriamiento ha pasado o no.En el panel My Blueprint, crea una nueva variable llamada
CubesSpawnedde tipo entero. Realiza un seguimiento de los cubos generados en el nivel.Crea otra variable llamada
MaxNumCubes. Esta variable establece el número máximo de cubos que el jugador puede generar.Configura MaxNumCubes:
Establece que el tipo sea Integer.
Haz clic en el icono del ojo para hacerla pública y editable.
En el panel Detalles , haz clic en el campo Categoría y escribe
Configuración.Haz clic en Compilar y establece el valor predeterminado de la variable en
3.De momento, tu lista de variables debería tener este aspecto:
En el nodo Branch, arrastra desde el pin True y añade un segundo nodo Branch.
En el segundo nodo Branch, arrastra el pin Condition y añade un nodo Less Than (<).
Configura el nodo Less Than para comprobar si el número de cubos generados es inferior al número máximo permitido:
En la lista de variables, arrastra CubesSpawned hasta el pin de entrada superior del nodo Less Than.
Arrastra la variable MaxNumCubes hasta el pin de entrada inferior.
Cómo contar los cubos generados y destruir cubos extra
Si el número actual de cubos que ha generado el jugador es inferior al máximo, la ejecución pasa por el pin True del segundo nodo Branch. En este caso, puedes pasar directamente a la lógica que suma 1 al recuento de cubos antes de generar un cubo.
Para aumentar la cantidad de cubos generados, sigue estos pasos:
En el segundo nodo Branch, arrastra el pin True y añade un nodo Increment Int. Mueve el nuevo nodo para añadir espacio adicional entre él y el nodo Branch.
En la lista de variables , arrastra CubesSpawned hasta el pin de entrada del nodo Increment Int.
A continuación, añade la lógica para la situación opuesta, donde el valor de Cubes Spawned sea mayor que el valor de Max Num Cubes, o cuando la ejecución pase por el pin False de Branch. Si el jugador ha alcanzado el número máximo de cubos, destruye el cubo más antiguo antes de generar uno nuevo.
Para destruir un cubo y dejar sitio a un nuevo cubo, sigue estos pasos:
En el segundo nodo Branch, arrastra el pin False y añade un nodo Destroy Actor.
En el nodo Destroy Actor, arrastra el pin Target y añade un nodo Get (a copy).
Deja el segundo pin de entrada del nodo Get en 0, ya que las listas de una matriz empiezan en 0 y lo que quieres es recuperar el primer elemento.
En el nodo Get, arrastra desde el nodo de entrada Array y selecciona Ascender a variable.
Dale a la nueva variable el nombre
SpawnedCubes. Usarás esta matriz para almacenar todos los cubos que el jugador genere en el nivel.Desde el nodo Destroy Actor, arrastra el pin de ejecución y añade un nodo Remove Index.
Arrastra su entrada Array y añade un nodo de referencia Get Spawned Cubes.
Haz doble clic en el cable entre el segundo nodo Branch y el nodo Increment Int para crear un nodo de redirección móvil. Arrastra el nodo de redirección más cerca del nodo Increment Int.
Conecta el pin de salida de ejecución del nodo Remove Index al nodo de redirección.
(También puedes conectar el nodo Remove Index directamente al nodo Increment Int).
Ahora, antes de que se genere un cubo, el blueprint incrementa el contador de CubesSpawned o elimina un cubo y, a continuación, incrementa el contador de CubesSpawned. A continuación, añadirás la lógica que genera un nuevo cubo.
Cómo generar un cubo
Ahora que has comprobado si el jugador puede crear un cubo y te has asegurado de que no hay demasiados cubos en el nivel, puedes generar un nuevo actor BP_Cube.
Para generar un nuevo cubo, sigue estos pasos:
Desde el nodo Add, arrastra el pin de ejecución y añade un nodo Spawn Actor from Class.
Configura el nodo SpawnActor:
Haz clic en el menú desplegable junto al pin Class. Busca y selecciona
BP_Cube. El nombre del nodo cambia de SpawnActor NONE a SpawnActor BP Cube.Haz clic con el botón derecho en el pin Spawn Transform naranja y selecciona Split Struct Pin. Tres nuevos pines reemplazan al pin Spawn Transform: Spawn Transform Location, Spawn Transform Rotation y Spawn Transform Scale.
Tienes que hacer clic derecho específicamente en el pin circular Spawn Transform, no en todo el nodo.
Haz clic derecho en el grafo de eventos y busca y selecciona un nodo Get Actor Transform. Haz clic derecho en el pin Return Value y selecciona Split Struct. Conecta los pines Location y Rotation a los pines correspondientes en el nodo Spawn Actor.
En el nodo SpawnActor, arrastra el pin de ejecución y añade un nodo Add en la categoría Array (también puedes buscar
Add Arrayy seleccionar el nodo Add).En el nodo Añadir Array, haz lo siguiente:
Arrastra el pin de entrada de Array y añade un nodo Get Spawned Cubes.
Conecta el pin de entrada inferior del nodo al pin Return Value del nodo SpawnActor.
Cuando el jugador genera un cubo, no debería poder generar otro de nuevo hasta que finalice un cronómetro de enfriamiento. Arrastra el pin de ejecución del nodo Add Array y añade un nodo Set Can Spawn. Mantén Can Spawn desactivado (no tiene ninguna marca de verificación).
Cómo implementar un cronómetro de enfriamiento
Usa la variable CanSpawn y un nodo Delay para evitar que el jugador genere otro cubo hasta que haya transcurrido un tiempo determinado.
Para crear y activar un evento que reinicie el cronómetro de enfriamiento de generación de cubos, sigue estos pasos:
Haz clic con el botón derecho en un espacio vacío del grafo de eventos. Busca y selecciona Add Custom Event.
Nombra el nuevo evento
EvResetSpawny colócalo debajo del nodo Event fnBPISwirchOn.Arrastra el pin de ejecución del nodo de evento EvResetSpawn y añade un nodo Delay.
En el nodo Delay, arrastra el pin Duration y selecciona Ascender a variable. Dale a la variable el nombre
SpawnCooldown.Configura la nueva variable SpawnCooldown:
Asegúrate de que su tipo sea Float.
Haz clic en el icono del ojo para hacerla pública y editable.
Cambia su categoría a Configuración.
Haz clic en Compilar y luego establece su valor predeterminado en
1. Tu lista completa de variables debería tener el siguiente aspecto:
Desde el nodo Delay, arrastra el pin Completed y añade un nodo Set Can Spawn. Asegúrate de cambiar el valor de Can Spawn de este nodo a true.
Vuelve al nodo Set Can Spawn al final de la lógica de generación de cubos. Arrastra el pin de ejecución del nodo Set Can Spawn y añade un nodo EvResetSpawn para activar el evento y el retraso de enfriamiento de generación.
Haz clic en Guardar y luego en Compilar.
Ahora, tu grafo de eventos debería tener este aspecto:
Si usas el fragmento de abajo, asegúrate de que tu blueprint tenga las variables personalizadas, el evento y la interfaz de BP que se mencionan en las instrucciones anteriores.
Para copiar estos nodos en tu blueprint, haz clic en Copiar fragmento, ve tu grafo de eventos y pulsa Ctrl+V. Tras copiar la lógica en el editor de blueprints, puede que tengas que eliminar el nodo azul Ev Reset Spawn y volver a añadirlo manualmente después del nodo Set Can Spawn.
Ahora puedes salir del editor de blueprints y volver al editor de niveles.
Añade el blueprint de generación de cubos al nivel.
A continuación, configura un BP_CubeSpawn y un BP_Switch en el nivel.
El blueprint del generador de cubos no tiene componentes visuales, por lo que puedes colocarlo dentro de cualquier geometría o recurso gráfico para crear el efecto de un cubo que se desprende de esa geometría.
Elige una posición en tu nivel y usa las mallas de la carpeta Contenido > LevelPrototyping > Mallas para bloquear algo de geometría y representar el generador de cubos.
Si usas el nivel de muestra, puedes colocarlo en el espacio que hay al fondo de la sala 1. En este ejemplo, usaremos un cilindro para representar un tubo dentro del cual los cubos pueden aparecer y salir.
Luego, para configurar un BP_CubeSpawn en un nivel, sigue estos pasos:
En el explorador de contenido, ve a la carpeta Contenido > AdventureGame > Diseñador > Blueprints > Activación.
Arrastra el blueprint
BP_CubeSpawna la posición que quieras en el nivel.Desde el explorador de contenido, arrastra el blueprint
BP_Switchhasta el nivel que esté dentro de la línea de visión del generador de cubos.Selecciona el actor
BP_Switchen el nivel.En el panel Detalles, en la sección Configuración , añade un nuevo elemento de matriz a la lista de objetos de interacción.
Usa el desplegable junto a Index [0] para seleccionar el actor
BP_CubeSpawn. Esto pasa el evento fnBPISwitchOn desde este interruptor al actorBP_CubeSpawn.Selecciona el actor
BP_CubeSpawn. También puedes cambiar la variable Max Cubes Allowed por el número de cubos que quieres que haya en el nivel.
Ahora, durante el juego, puedes pisar el interruptor para generar nuevos cubos.
Siguiente
Para seguir trabajando en tu nivel añadiendo materiales, iluminación, efectos de posprocesamiento, sonido y efectos visuales, prueba la serie de tutoriales de pistas de artista:
Si quieres empaquetar tu proyecto como programa independiente para probar y compartir, consulta la siguiente documentación: