Neste tutorial, você aprenderá a criar um Blueprint que gera novos cubos no nível quando ficamos em cima de um interruptor. Use este objeto de jogabilidade para permitir que o público jogador consiga novos cubos em qualquer sala de quebra-cabeça onde os cubos possam ser perdidos ou destruídos.
Para o gerador de cubos, você criará um Blueprint que contém apenas a funcionalidade de surgimento. Dessa forma, terá a flexibilidade para usar qualquer elemento geométrico ou ativo de arte para criar o efeito de cubos caindo de uma geometria específica.
A criação desse Blueprint não é obrigatória se você seguiu o nível de amostra, mas pode querer incluir essa mecânica de geração de cubos em seu projeto se continuar expandindo o jogo de aventura e quebra-cabeça.
Antes de começar
Certifique-se de entender os tópicos abordados nas seções anteriores da série de tutoriais Como projetar uma aventura de quebra-cabeça:
Noções básicas sobre Blueprints, incluindo Interfaces de Blueprint, eventos personalizados e variáveis.
Você precisará dos seguintes ativos criados em Quebra-cabeças: interruptores e cubos:
Blueprint
BP_CubeBP_SwitchBlueprintInterface de Blueprint de
BPI_Interaction
Como criar um novo Blueprint
Primeiro, crie um ativo de Blueprint para o gerador de cubos. Este Blueprint implementará a Interface de Blueprint BPI_Interaction para responder a BP_Switch, que utiliza os eventos dessa interface.
Para configurar um novo Blueprint, siga estes passos:
No Navegador de Conteúdo, acesse a pasta Content, Adventure Game, Designer, Blueprints, Activation.
Clique com o botão direito e selecione Blueprint Class. Na janela de seleção de classe, selecione a classe Actor.
Dê o nome
BP_CubeSpawnao Blueprint e abra-o.No Editor de Blueprint, acesse a aba EventGraph .
Na parte superior do editor de Blueprint, clique no botão Class Settings.
No painel Detalhes, na seção Interfaces, clique no menu suspenso Add ao lado de Implemented Interfaces e selecione BPI Interaction.
Clique em Compile e Save.
Depois de adicionar a interface BPI_Interaction, no painel My Blueprint, você verá uma nova seção chamada "Interfaces". Esta seção contém os eventos fnBPISwitchOff e fnBPISwitchOn que fazem parte da interface BPI Interaction.
Em BP_CubeSpawn, você usará o evento fnBPISwitchOn para definir o que acontece quando pisamos em um interruptor e acionamos esse evento no jogo.
Como construir a lógica de geração de cubos
Antes de implementar a lógica para gerar os cubos, considere como o sistema de geração de cubos deve funcionar:
Para gerar um cubo, devemos ativar o interruptor, que utiliza a interface adicionada na seção anterior.
Deve haver um número máximo de cubos que podem ser gerados para não encher demais a área com cubos.
Se tentarmos gerar mais cubos do que o número máximo, é preciso destruir o primeiro cubo gerado. Você rastreará os cubos gerados com uma variável de matriz.
O gerador de cubos deve usar um temporizador de recarga curto para que não seja possível gerar cubos rápido demais.
Verifique as condições de geração de cubos
Para iniciar o gráfico de evento do gerador de cubos, verifique se é possível gerar um novo cubo e se o número máximo de cubos tiver sido criado.
Para verificar se um novo cubo pode aparecer, siga estes passos:
No painel My Blueprint, na categoria Interfaces, clique duas vezes na interface fnBPISwitchOn para adicioná-la ao gráfico.
No nó fnBPISwitchOn , arraste o pin de execução e crie um novo nó Branch.
No nó Branch, arraste o pin Condition, selecione Promote to variable e nomeie essa variável como
CanSpawn. Você usará essa variável para verificar se o tempo de recarga passou.No painel My Blueprint, crie uma nova variável chamada
CubesSpawneddo tipo Integer. Assim, rastreamos os cubos gerados no nível.Crie outra variável chamada
MaxNumCubes. Esta variável define o número máximo de cubos que podem ser gerados.Configure MaxNumCubes:
Defina o tipo como Integer.
Clique no ícone de olho para torná-lo público e editável.
No painel Detalhes , clique no campo Categoria e entre em
Setup.Clique em Compile e defina o valor padrão da variável como
3.Sua lista de variáveis deve estar assim:
No nó Branch, arraste o pin True e adicione um segundo nó Branch.
Arraste o pin Condition do segundo nó Branch e adicione um nó Less Than (<).
Configure o nó Less Than para verificar se o número de cubos gerados é menor que o número máximo de cubos permitido:
Na lista Variables, arraste CubesSpawned para o pin de entrada superior do nó Less Than.
Arraste a variável MaxNumCubes para o pin de entrada inferior.
Como contar os cubos gerados e destruir os extras
Se o número atual de cubos gerados no jogo for menor que o máximo, a execução passará pelo pin "True" do segundo nó "Branch". Nesse caso, você pode ir direto para a lógica que adiciona 1 à contagem de cubos antes de gerar um cubo.
Para incrementar o número de cubos gerados, siga estes passos:
Arraste o pin True do segundo nó Branch e adicione um nó Increment Int. Mova o novo nó para adicionar espaço extra entre ele e o nó Branch.
Na lista Variables, arraste CubesSpawned para o pin de entrada do nó Increment Int.
Em seguida, adicione a lógica para a situação contrária; onde o valor de Cubes Spawned é maior que o valor de Max Num Cubesou quando a execução passa pelo pin "False" de "Branch". Se atingirmos o número máximo de cubos, o cubo mais antigo é destruído antes da geração de um novo.
Para destruir um cubo e abrir espaço para um novo cubo, siga estes passos:
Arraste o pin False do segundo nó Branch e adicione um nó Destroy Actor.
No nó Destroy Actor, arraste o pin Target e adicione um nó Get (a copy).
Mantenha o segundo pin de entrada do nó Get definido como 0, pois a lista de uma matriz começa em 0 e você quer recuperar o primeiro elemento.
No nó Get, arraste do nó de entrada Array e selecione Promote to variable.
Dê à nova variável o nome de
SpawnedCubes. Você usará esta matriz para armazenar todos os cubos que geramos no nível durante o jogo.No nó Destroy Actor, arraste o pin de execução e adicione um nó Remove Index.
Arraste a entrada Array e adicione um nó de referência Get Spawned Cubes.
Clique duas vezes no fio entre o segundo nó Branch e o nó Increment Int para criar um nó reroute móvel. Arraste o nó reroute para mais perto do nó Increment Int.
Conecte o pin de execução de saída do nó Remove Index ao nó reroute.
(Você também pode conectar o nó Remove Index diretamente ao nó Increment Int.)
Agora, antes que um cubo seja gerado, o Blueprint incrementa o contador CubesSpawned ou exclui um cubo e, em seguida, incrementa o contador CubesSpawned. Em seguida, adicione a lógica que gera um novo cubo.
Como gerar um cubo
Agora que já verificou se a pessoa jogando pode criar um cubo e garantiu que não há muitos cubos no nível, você pode gerar um ator BP_Cube.
Para gerar um novo cubo, siga estes passos:
Do nó Add, arraste o pin de execução e adicione um nó Spawn Actor from Class.
Configure o nó SpawnActor:
Clique no menu suspenso ao lado do pin Class , procure e selecione
BP_Cube. O nome do nó muda de SpawnActor NONE para SpawnActor BP Cube.Clique com o botão direito no pin laranja Spawn Transform e selecione Split Struct Pin. Três novos pins substituem o pin "Spawn Transform": Spawn Transform Location, Spawn Transform Rotation e Spawn Transform Scale.
Você precisa clicar com o botão direito no pin circular Spawn Transform especificamente, não em todo o nó.
Clique com o botão direito do mouse no Event Graph e procure e selecione um nó Get Actor Transform. Clique com o botão direito no pin Return Value e selecione Split Struct. Conecte os pins Location e Rotation aos pins correspondentes no nó Spawn Actor.
No nó SpawnActor arraste o pin de execução e adicione um nó Add na categoria Array (você também pode pesquisar por
Add Arraye selecionar o nó Add).No nó Adicionar Array, faça o seguinte:
Arraste o pin de entrada Array e adicione um nó Get Spawned Cubes.
Conecte o pin de entrada inferior do nó ao pin Return Value do nó SpawnActor .
Quando um cubo for gerado no jogo, não será possível gerar outro até que o temporizador de recarga expire. Arraste o pin de execução do nó Add Array e adicione um nó Set Can Spawn. Mantenha Can Spawn definido como falso (sem uma marca de seleção).
Como implementar um temporizador de recarga
Use a variável CanSpawn e um nó Delay para impedir que outro cubo seja gerado no jogo até que tenha decorrido um tempo definido.
Para criar e acionar um evento que redefine o temporizador de recarga de geração de cubos, siga estes passos:
Clique com o botão direito em uma área vazia do EventGraph, pesquise e selecione Add Custom Event.
Dê ao novo evento o nome de
EvResetSpawne mova-o para o nó Event fnBPISwirchOn.Arraste o pin de execução do nó do evento EvResetSpawn e adicione um nó Delay.
No nó Delay, arraste o pin Duration e selecione Promote to variable. Dê à variável o nome de
SpawnCooldown.Configure a nova variável SpawnCooldown:
Certifique-se de que o tipo seja Float.
Clique no ícone de olho para torná-lo público e editável.
Mude a categoria para Setup.
Clique em Compile e defina seu valor padrão como
1. Sua lista completa de variáveis deve ficar assim:
No nó Delay, arraste o pin Completed e adicione um nó Set Can Spawn. Certifique-se de alterar o valor Can Spawn deste nó para "True".
Volte ao nó Set Can Spawn no final da lógica de geração de cubos. Arraste o pin de execução do nó Set Can Spawn e adicione um nó EvResetSpawn para acionar o evento e ativar o atraso de recarga.
Clique em Save e Compile.
Agora, o EventGraph deve ficar assim:
Se você usar o trecho de código a seguir, verifique se o Blueprint tem as variáveis personalizadas, o evento e a interface do Blueprint mencionados nas instruções acima.
Para copiar esses nós para o seu Blueprint, clique em Copy Snippet, acesse o gráfico de eventos e pressione CTRL+V. Após copiar a lógica para o Editor de Blueprint, talvez seja necessário excluir o nó azul Ev Reset Spawn e adicioná-lo manualmente após o nó Set Can Spawn.
Agora você já pode sair do Editor de Blueprint e voltar para o Editor de Níveis.
Adicione o Blueprint de geração de cubos ao nível.
Em seguida, configure um BP_CubeSpawn e um BP_Switch para o nível.
O Blueprint do gerador de cubos não tem componentes visuais, então você pode posicioná-lo em qualquer geometria ou ativo artístico para criar o efeito de um cubo saindo dessa geometria.
Escolha uma posição no nível e use as malhas na pasta Content, LevelPrototyping, Meshes para bloquear alguma geometria e representar o gerador de cubos.
Se estiver usando o nível de amostra, posicione-o no espaço nos fundos de Room 1. Neste exemplo, usaremos um cilindro para representar um cano no qual os cubos podem surgir e de onde podem sair.
Então, para configurar um BP_CubeSpawn em um nível, siga estes passos:
No Navegador de Conteúdo, navegue até a pasta Content, Adventure Game, Designer, Blueprints, Activation.
Arraste o Blueprint
BP_CubeSpawnpara a posição desejada no nível.No Navegador de Conteúdo, arraste o Blueprint
BP_Switchpara o nível na linha de visão do gerador de cubos.Selecione o ator
BP_Switchno nível.No painel Detalhes, na seção Setup, adicione um novo elemento de matriz à Interact Object List.
Use o menu suspenso ao lado de Index [0] para selecionar o ator
BP_CubeSpawn. Assim, passamos o evento fnBPISwitchOn deste interruptor para o atorBP_CubeSpawn.Selecione o ator
BP_CubeSpawn. Opcionalmente, altere a variável Max Cubes Allowed para o número de cubos que deseja permitir no nível.
Agora, se jogar o jogo, poderá pisar no interruptor para gerar novos cubos.
A seguir
Para continuar trabalhando no nível, adicionando materiais, iluminação, efeitos de pós-processamento, som e efeitos visuais, experimente a série de tutoriais Artist Track:
Se você tiver interesse em criar um pacote com o seu projeto, em forma de programa independente para testar e compartilhar, confira a seguinte documentação: