En el paso anterior, creamos un PNJ que puede avanzar, girar a la izquierda y girar a la derecha cuando recibe órdenes. Ahora, en este paso, configuraremos los tableros por los que puede moverse el personaje.
Para este juego, el tablero necesita conocer y gestionar lo siguiente:
Tamaño de la casilla: tamaño que tienen las casillas del tablero para que el personaje sepa a qué distancia debe moverse.
Cámara: cámara que se debe utilizar cuando el personaje llegue a este tablero. Para ello, utilizamos el dispositivo Cámara de punto fijo.
Posición inicial: posición en la que debe empezar el personaje en el tablero. Para ello, utilizamos un elemento del modo Creativo para que podamos establecerlo fácilmente como propiedad editable y obtener su transformación.
Objetivo final: el objetivo final hacia el que debe progresar el personaje y que indica el final del tablero. Para ello, utilizamos un dispositivo Activador que indica cuándo lo pisa el personaje.
Obstáculos: los obstáculos impiden que el personaje alcance inmediatamente el objetivo final. Se explican con más detalle en la sección Creación de obstáculos.
Cada uno de ellos se rastrea en el elemento class del tablero. La clase tiene el especificador `concrete` para que pueda ser una propiedad editable en un dispositivo de Verse, y cada miembro de la clase tiene un atributo editable para poder modificar sus valores desde UEFN.
# This class represents the gameboard and how it behaves.
# This class has the concrete specifier so it can be an editable property on a Verse device.
gameboard<public> := class<concrete>:
# The size of each tile on the gameboard. By default set to
# the default Fortnite tile size of 512x512x384.
@editable
TileSize<public>:vector3 = vector3{X:=512.0, Y:=512.0, Z:=384.0}
# The fixed point camera that provides a top-down view of the gameboard
Ahora que hemos definido el tablero con sus propiedades, vamos a añadir su comportamiento:
Manejo del objetivo final: cuando el tablero esté configurado, nos suscribiremos al evento
TriggeredEventdel objetivo final. Utilizamos un controlador de eventos y un evento personalizado para señalar públicamente que se ha alcanzado el objetivo final cuando el personaje active el dispositivo Activador. Para obtener más información, consulta Cómo programar las interacciones con dispositivos.Inicio del tablero: cuando se inicie el tablero, asigna el dispositivo Cámara a todos los jugadores.
Fin del tablero: cuando se finalice el tablero, retira el dispositivo Cámara de todos los jugadores.
A continuación se muestra la clase completa de gameboard:
# This class represents the gameboard and how it behaves.
# This class has the concrete specifier so it can be an editable property on a Verse device.
gameboard<public> := class<concrete>:
# The size of each tile on the gameboard. By default set to
# the default Fortnite tile size of 512x512x384.
@editable
TileSize<public>:vector3 = vector3{X:=512.0, Y:=512.0, Z:=384.0}
# The fixed point camera that provides a top-down view of the gameboard
Creación de obstáculos
Los obstáculos impiden que el personaje alcance inmediatamente el objetivo final. En este juego, utilizamos dispositivos Barrera como obstáculos para impedir que el personaje se mueva y dispositivos Activador que desactivan las barreras.
Nuestra definición de la clase obstacle incluye:
IsObstaclePassed: datos para almacenar si las barreras están actualmente activadas o desactivadas. Es de tipo logic porque solo hay dos estados.
Barriers: dispositivos Barrera asociados al obstáculo. Esto significa que puedes tener más de un dispositivo Barrera conectado a un activador que los desactive.
BarrierDissolves: secuencias cinemáticas que se reproducen cuando se superan los obstáculos.
BarrierAppears: secuencias cinemáticas que se reproducen cuando se reinician los obstáculos.
Trigger: un dispositivo Activador que el personaje debe alcanzar para desactivar el obstáculo.
A continuación se muestra la clase completa para representar obstáculos. La clase tiene el especificador `concrete` para que pueda ser una propiedad editable en un dispositivo de Verse.
# An obstacle on the gameboard, with an associated set of
# Barrier devices, Trigger devices that deactivate the barriers,
# and Cinematic Sequence devices that play sequences for barriers dissolving and appearing for visual feedback on what is happening.
# This class has the concrete specifier so it can be an editable property on a Verse device.
obstacle := class<concrete>:
# Data for storing whether barriers are currently enabled/disabled.
var IsObstaclePassed:logic = false
# The array of barriers for this obstacle.
Cómo añadir tableros
Ahora que ya está definido el tablero, puedes añadir una matriz de estos tableros a tu dispositivo de Verse, tal y como verás más adelante en 6. Gestión del bucle del juego.
En el proyecto que has creado a partir de la plantilla VKT - Juegos de iniciación de dispositivos Verse, busca en el esquematizador el dispositivo Minijuego Verse Commander y selecciónalo para abrir su panel Detalles.
En el panel Detalles, en Tableros, verás cinco elementos que corresponden a tableros del juego. Expande estos elementos para ver qué dispositivos, cinemáticas y otras propiedades se utilizan en el tablero.
Si quieres añadir más niveles al juego, puedes añadir tableros seleccionando Añadir elemento en Tableros.
Si quieres eliminar niveles del juego, puedes eliminar tableros seleccionando el desplegable situado junto al tablero que quieras eliminar.
También puedes reordenar los tableros para cambiar el orden de los niveles en el juego si mantienes pulsado el elemento y lo arrastras antes o después de otros elementos del tablero.
Para probar niveles concretos, puedes reordenar los tableros de modo que el nivel que quieras probar sea el primero de la lista.
Siguiente paso
Hemos definido los tableros y hemos visto que puedes añadir tantos como quieras. En el siguiente paso, aprenderás a diseñar los tableros para desarrollar acertijos divertidos y superar limitaciones.