Na etapa anterior, criamos um PNJ que pode se mover para frente, girar para a esquerda e girar para a direita ao receber comandos. Agora, nesta etapa, configuraremos os tabuleiros nos quais os personagens podem se mover.
Para este jogo, o tabuleiro precisa conhecer e gerenciar o seguinte:
Tamanho do quadrado: o tamanho dos quadrados do tabuleiro para que os personagens saibam até onde podem se mover.
Câmera:Qual câmera usar quando o personagem chegar ao tabuleiro. Para isso, usamos o dispositivo Câmera de Ponto Fixo.
Posição inicial: a posição onde o personagem deve começar no tabuleiro. Para isso, usaremos um Adereço do Modo Criativo para que possamos defini-lo facilmente como uma propriedade editável e obter a transformação dele.
Meta final: a meta final para a qual o personagem irá progredir, sinalizando o fim do tabuleiro. Para isso, usaremos um dispositivo Gatilho que sinaliza quando o personagem pisar nele.
Obstáculos: os obstáculos impedem que o personagem atinja imediatamente a meta final. Para obter uma explicação mais detalhada, confira Como criar obstáculos.
Cada um deles é rastreado na classe do tabuleiro. A classe tem o especificador concreto para que possa ser uma propriedade editável em um dispositivo Verse, e cada membro de classe tem um atributo editável para poder alterar seus valores a partir do 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
Agora que o tabuleiro está definido com suas propriedades, vamos adicionar o comportamento dele:
Tratamento da meta final: quando o tabuleiro estiver definido, o inscreveremos no
TriggeredEventda meta final. Utilizamos um manipulador de eventos e um evento personalizado para sinalizar publicamente que a meta final foi alcançada quando o gatilho tiver sido acionado pelo personagem. Para obter mais informações, confira Como programar interações de dispositivo.Como iniciar o tabuleiro: quando estiver no início do tabuleiro, atribua a câmera a todos os jogadores.
Como encerrar o tabuleiro: quando estiver no fim do tabuleiro, remova a câmera de todos os jogadores.
Confira a seguir a classe completa para o tabuleiro:
# 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
Como criar obstáculos
Os obstáculos impedem que o personagem atinja imediatamente a meta final. Usamos dispositivos Barreira como obstáculos neste jogo para impedir que o personagem se mova e dispositivos Gatilho para desativar as barreiras.
Nossa definição da classe obstacle inclui:
IsObstaclePassed: os dados para armazenar se as barreiras estão ativadas e desativadas atualmente. O tipo Logic é usado porque há apenas dois estados.
Barreiras: os dispositivos Barreira associados ao obstáculo. Ou seja, você pode ter mais de uma barreira anexada a um gatilho para desativá-lo.
BarrierDissolves: as sequências cinemáticas que serão reproduzidas quando os obstáculos forem superados.
BarrierAppears: as sequências cinemáticas que serão reproduzidas quando os obstáculos forem redefinidos.
Gatilho: um dispositivo Gatilho para o personagem alcançar para desativar o obstáculo.
Confira a seguir a classe completa para representar obstáculos. Ela tem o especificador concreto para que possa ser uma propriedade editável em um dispositivo 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.
Como adicionar tabuleiros
Agora que o tabuleiro foi definido, é possível adicionar uma matriz] desses tabuleiros ao dispositivo Verse, que você verá mais tarde em 6. Como gerenciar o loop de jogo.
No projeto que você criou no modelo VKT - Jogos Iniciais do Dispositivo Verse, pesquise no Outliner para o dispositivo Minijogo de Comandante Verse e o selecione no painel Detalhes.
No painel Detalhes, em Tabuleiros, você verá cinco elementos que correspondem aos tabuleiros no jogo. Expanda esses elementos para ver quais dispositivos, cinematografias e outras propriedades são usadas para o tabuleiro.
Você pode adicionar tabuleiros selecionando Adicionar elemento para tabuleiros, para adicionar mais níveis ao jogo.
Você pode remover tabuleiros selecionando o menu suspenso ao lado do tabuleiro que quer remover, para remover níveis do jogo.
Pode também reordenar os tabuleiros para alterar a ordem dos níveis no jogo segurando o elemento e arrastando-o antes ou depois de outros elementos do tabuleiro.
Para testar níveis específicos, você pode reordenar os tabuleiros para que o nível que você deseja testar seja o primeiro na lista.
Próxima etapa
Definimos os tabuleiros e mostramos como adicionar quantos você quiser. Na próxima etapa, você aprenderá a definir o design dos tabuleiros para desenvolver quebra-cabeças divertidos e contornar limitações.