Neste tutorial, você criará a lógica por trás de uma plataforma móvel e a ativará com os objetos de jogabilidade que criou em Quebra-cabeças: interruptores e cubos. Você também incorporará o tempo da mecânica de jogo ao quebra-cabeça.
Usando um fluxo de trabalho modular, você poderá modificar a escala, o movimento, o destino e a velocidade da plataforma na janela de visualização. Você também poderá escolher qual plataforma o interruptor ativará com um único clique.
Com essa flexibilidade, você pode fazer alterações no seu nível e testar sua funcionalidade em tempo real enquanto cria. Escolhas de design eficientes e flexíveis melhoram a velocidade e a resiliência do seu pipeline de desenvolvimento.
Antes de começar
Este tutorial pressupõe que você já entenda os seguintes tópicos, abordados nas seções anteriores de Como projetar uma aventura de quebra-cabeça:
Materiais
Blueprints
Variáveis
Interfaces de Blueprint
Modo Jogar no Editor (JNE)
Você precisará dos seguintes ativos criados em Criar uma chave e Quebra-cabeças: interruptores e cubos:
BP_SwitchBP_CubeBP_KeyBPI_InteractionM_BasicColorM_EmissiveColorM_BasicColor_Blue
Criar uma plataforma móvel
Aprendendo a criar uma plataforma móvel e ativá-la com um interruptor, você pode design funcionalidade simples, como transportar um jogador em um nível. O interruptor, o cubo e a plataforma podem ser combinados para criar funcionalidades complexas, como um quebra-cabeça de plataforma completo, como o que fornecemos no final deste tutorial.
Para manter seu fluxo de trabalho modular, você começará criando uma instância de material e uma classe de Blueprint para a plataforma.
Criar uma instância de Material
Para criar uma instância de material para a plataforma, siga estas etapas:
No Navegador de Conteúdo, em AdventureGame > Designer > Materiais, clique com o botão direito M_BasicColor e selecione Criar instância de material.
Dê o nome
M_BasicColor_Orangepara a instância. Clique duas vezes na instância para abri-la no Editor de Material.Expanda Valores de parâmetro vetorial globais e habilite Cor para substituí-la.
Defina o parâmetro Cor como valor Hex sRGB
F76E00FF.Salve a instância e feche-a.
A pasta Materiais deve ficar assim:
Configurar uma classe de Blueprint
Para criar uma classe de Blueprint para a plataforma, siga estas etapas:
No Navegador de Conteúdo, vá para AdventureGame > Designer > Blueprints e crie uma nova pasta chamada and
Platforms.Dentro da pasta Platforms, clique com o botão direito e crie uma Classe de Blueprint.
Na caixa de diálogo Escolher classe-pai, selecione Ator e atribua o nome
BP_Platformao novo Blueprint.Clique duas vezes nele para abrir
BP_Platformno Editor de Blueprint.Na aba Componentes, crie uma malha estática ao clicar em Adicionar, pesquise o
cuboe selecione-o.Dê o nome
Plataformapara a malha.No painel Detalhes, no cabeçalho Materiais, defina Elemento 0 como
M_BasicColor_Orange.
Para tornar a escala da sua plataforma personalizável rapidamente no Editor de Níveis e criar plataformas de diferentes tamanhos, você pode usar uma variável editável:
Na aba Meu Blueprint, vá até o cabeçalho Variáveis. Clique no botão + para criar uma variável e dê o nome de
PlatformScale.Defina o tipo de pin como Vetor e clique no ícone de olho para abrir o olho.
No painel Detalhes, perto de Categoria, adicione-o à categoria
Configurações.Compile o Blueprint e defina o valor padrão de PlatformScale como
2,2,0,1.No gráfico Script de Construção, arraste o pin Execução do nó Script de Construção e crie Set World Scale 3D (Platform).
Arraste o pin Nova escala no nó Set World Scale 3D e crie um nó Get PlatformScale. Isso aplica novos valores de escala ao componente de malha de plataforma.
Salve e compile.
O gráfico do Script de Construção deve ficar assim:
Se copiar este trecho no seu gráfico, será preciso conectar o nó de entrada Script de Construção com Set World Scale 3D.
Se voltar para a aba Janela de Visualização do Blueprint, você verá o script de construção aplicado aos novos valores de escala da plataforma.
No Navegador de Conteúdo, arraste uma instância da plataforma para o seu nível, ou para a Sala 1 se continuar com o nível que fornecemos. Para este tutorial, verifique se você também tem uma instância de BP_Switch e BP_Cube no nível:
Criar com lógica
Quando um objeto se sobrepõe ao interruptor, a plataforma deve se mover para frente e para trás entre duas posições. Antes de começar a criar, vamos esboçar a lógica por trás dessa interação respondendo às seguintes perguntas: o que precisa acontecer com quem e quando?
Veja a seguir um detalhamento da lógica da plataforma:
Se BP_Platform estiver ativa:
Se
BP_Platformestiver na posição inicial, vá para frente até a posição final e aguarde 2 segundos.Se
BP_Platformestiver na posição final, vá para trás até a posição inicial e aguarde 2 segundos.
Se BP_Platform não estiver ativa e o BP_Platform para.
O motivo para designar um tempo de espera é permitir tempo ao jogador de subir na plataforma (ou empurrar algo para dentro). Você pode dimensionar o tempo de espera de acordo com a dificuldade que deseja ter na tarefa de jogabilidade. Mais adiante neste tutorial, você usará o tempo para definir a velocidade da plataforma, o que também pode afetar a dificuldade.
Como você já criou BP_Platform, é preciso de um booleano para determinar se está ativo ou inativo.
Para criar um booleano, siga estas etapas:
Na aba Meu Blueprint de
BP_Platform, clique no botão + para criar uma nova variável com o nomeAtiva.Defina o tipo de pin como booleano e clique no ícone de olho para abri-lo.
No painel Detalhes, mude a categoria para
Configurações.Compile seu Blueprint e verifique se o valor padrão de Ativa tem uma marca de seleção (verdadeira).
Em seguida, você definirá posições para a plataforma se mover.
Definir posições
O esboço da lógica afirma que a plataforma requer dois locais:
Posição inicial
Posição final
Para manter a modularidade no trabalho, você definirá o local de início fazendo referência à instância da plataforma. Você definirá a posição final referenciando um ator de ponto de destino.
Um ponto de destino é um ator sem renderização com dados de coordenadas. Você pode usar pontos de destino como pontos de surgimento, para definir caminhos de animação, guiar o movimento da IA ou controlar a orientação das articulações em rigs de CI.
Você também precisará de vetores para armazenar os dados de coordenadas da instância de plataforma e do ator de ponto de destino, além de implementá-los em BP_Platform:
Nome da variável | Tipo | Explicação |
StartLocation | Vetor | Armazena as coordenadas de BP_Platform. |
EndLocation | Vetor | Armazena as coordenadas do ator de ponto de alvo. |
TargetPoint | TargetPoint | O ator do ponto de alvo que designa a EndLocation (posição final) no nível. |
Para definir as variáveis, siga estas etapas:
Na aba Meu Blueprint, clique no botão de + duas vezes para criar variáveis novas.
Dê o nome
StartLocationeEndLocationpara as variáveis.Defina os tipos de pin como Vector.
Crie uma variável chamada
TargetPointe defina o tipo de pin como Target Point (Object Reference). Esse tipo de variável é usado para referenciar atores de ponto de destino em Blueprints.Com a variável
TargetPointselecionada, vá para o painel Detalhes. Mude a Categoria paraConfiguraçõese adicione uma caixa de seleção para Instância Editável.
A lista de variáveis deve ficar assim:
Com as variáveis criadas, você pode adicionar a lógica:
Vá até o EventGraph e exclua os nós Event ActorBeginOverlap e Event Tick. Você não precisará deles. Mantenha Event BeginPlay.
No pin de Execução do nó Event BeginPlay, arraste e crie Set StartLocation.
No pin Posição inicial, arraste e crie Get Actor Location. Verifique se o campo Destino está definido como Self.
No pin de Execução de Set StartLocation, arraste e crie Set EndLocation.
No pin Vetor de posição inicial, arraste e crie Get Actor Location.
No pin Destino do Get Actor Location, arraste e crie Get TargetPoint.
Salve e compile.
O EventGraph deve ficar assim:
Agora você pode criar um ator de ponto de destino em seu nível para o Blueprint referenciar:
Na barra de ferramentas principal do editor, clique no botão Adicionar.
Procure o ponto de destino e selecione-o para criar um no nível.
Mova o ponto de destino até onde você deseja que a plataforma fique. Para continuar no nível da amostra, defina a Posição do ponto de destino como
-6200,570,-5,5(na parte inferior da Sala 1).Na janela de visualização, selecione a instância de
BP_Platforme mova-a para onde você deseja que a plataforma comece.Com
BP_Platformselecionada, na seção Configurações do painel Detalhes, ao lado do ponto de destino, pesquise a instância do ponto de destino no seu nível (ou use o conta-gotas para selecioná-la na janela de visualização).
Em seguida, você criará o movimento da plataforma.
Criar movimento
O esboço da lógica exige que a plataforma se mova de quatro maneiras:
Mover para frente
Aguardar
Mover para trás
Parar
Para sinalizar os eventos para frente, para trás e parar, você criará eventos personalizados’. O evento de aguardar pode ser criado usando uma variável posteriormente.
Para criar eventos personalizados, siga estas etapas:
No
EventGraphdo BP_Platform, clique com o botão direito e crie um nó Add Custom Event.Dê o nome
evMoveForwardpara o novo nó. Você deverá ver o evento aparecer no cabeçalho EventGraph, na aba Meu Blueprint.Crie mais dois eventos personalizados. Dê os nomes
evMoveBackwardeevStoppara eles.Como você só quer que a plataforma se mova se o booleano
Ativaverdadeiro, arraste do pin Execução no nó Set End Location e crie um nó Branch.No nó Branch, arraste do pin Condição e crie o nó Get Active.
No pin Verdadeiro do nó Branch, arraste e crie EvMoveForward para acionar o evento.
Salve e compile.
O EventGraph deve ficar assim:
Se você testar a plataforma no modo JNE, a plataforma não fará nada. Isso ocorre porque os eventos personalizados só sinalizam um evento; ele precisa de mais lógica para descrever o movimento da plataforma.
Criar movimento para a frente
Para complementar os eventos personalizados, você usará um nó da linha do tempo. Em uma linha do tempo, você pode criar dois keyframes que representam as posições inicial e final da plataforma.
Para criar uma linha do tempo, siga estas etapas:
Clique com o botão direito no EventGraph, procure e crie Adicionar linha do tempo.
Não selecione o componente "Adicionar linha do tempo".
Dê o nome
TM_MovePlatformpara o nó da linha do tempo.Quando você cria o nó da linha do tempo, uma referência TM_MovePlatform aparece na lista Componentes do painel Meus Blueprints. Assim como com outros componentes, você pode usar essa referência no gráfico para obter ou definir suas propriedades.
Conecte o pin de Execução do nó evMoveForward ao pin de Reproduzir da TM_MovePlatform.
Conecte o pin de Execução do nó evStop ao pin de Parar do nó TM_MovePlatform.
Conecte o pin de Execução do nó evMoveBackward ao pin de Reverter.
Clique duas vezes em TM_MovePlatform para abrir o Editor de linha do tempo. No momento, a linha do tempo está em branco, então pressione o botão Faixa e selecione Float Track (Faixa float) como o tipo de faixa.
Dê o nome
Alphapara a nova faixa.Defina o Comprimento da faixa como
1.00. Define por quantos segundos a linha do tempo é executada do início ao fim.Para adicionar um keyframe, clique com o botão direito na linha do tempo e selecione Adicionar chave a CurveFloat_0.
Defina o Tempo e o Valor do keyframe para
0,0.Clique com o botão direito na chave e mude a a interpolação da chave para automático. Isso adiciona suavização às curvas do gráfico, deixando sua plataforma mais lenta no início e no fim do movimento.
Adicione um segundo keyframe, mas defina o Tempo e o Valor como
1,0, além de definir a Interpolação de chave como automático.Salve e compile.
A linha do tempo deve ficar assim:
Para criar movimento, você instruirá a plataforma a definir uma nova posição incrementalmente a cada quadro de jogo, ao longo de um caminho linear, entre as posições inicial e final. Se estiver familiarizado com software de animação, você pode pensar nisso como uma interpolação. Para fazer isso, use um nó Lerp (interpolação linear).
Os nós Lerp usam um alfa, como o que você criou em TM_MovePlatform, para mesclar dois valores de forma incremental. Você pode usar lerps para interpolar cores, materiais ou, neste caso, posições.
Para criar um lerp e conectá-lo à lógica existente, siga estas etapas:
Volte para a aba EventGraph. Arraste do pin Atualizar de TM_MovePlatform e crie um nó Set World Location (Platform).
No pin Nova posição do nó Set World Location e crie um nó Lerp (Vector).
No pin A do nó Lerp, arraste um nó Get StartLocation.
No pin A do nó Lerp, arraste um nó Get EndLocation.
Para usar o alfa criado em TM_MovePlatform, conecte o pin Alpha de TM_MovePlatform ao pin alfa do lerp.
Salve, compile e feche o Editor de Blueprint.
O EventGraph deve ficar assim:
Agora você tem lógica suficiente para testar a plataforma. Na barra de ferramentas principal do editor, clique no botão Jogar para entrar no modo JNE. No tempo de execução, a plataforma deve se mover para a posição final. A plataforma se move rápido, então pode ser difícil de observar. Em seguida, adicione um movimento para trás para que a plataforma se mova de forma contínua quando ativa. Depois, adicione uma variável para desacelerar.
Experimente mover o ponto de destino no nível para ver o efeito.
A linha do tempo que você criou tem 1 segundo de duração, então a plataforma sempre leva um segundo para se mover da posição inicial até o ponto de destino. Quanto mais longe você posicionar a plataforma do ponto de destino, mais rápido ela precisará se mover para cobrir essa distância.
Até o momento, a plataforma só se move em uma direção. Em seguida, você criará o movimento para trás.
Criar movimento para trás
Para reverter o movimento da plataforma, você precisará de uma lógica que verifique a direção do movimento da linha do tempo. Se estiver se movendo para a frente, a lógica deverá chamar evMoveBackwards. Se não for para a frente, a lógica deverá chamar evMoveForward. Você pode usar um nó de ramificação para realizar essa verificação.
Para criar um nó de ramificação e conectá-lo à lógica existente, siga estas etapas:
Do pin Concluído da TM_MovePlatform, arraste e crie um nó Branch.
Do pin Condição da ramificação, arraste e crie um nó Equal (Enum).
Conecte o pin de Direção do TM_MovePlatform ao pin A do nó Equal.
Verifique se a condição está definida como Para a frente.
Do pin Verdadeiro da ramificação, arraste e crie o nó evMoveBackwards.
Do pin Falso da ramificação, arraste e crie evMoveForward.
Como você só deseja que o movimento ocorra se o booleano
Ativafor verdadeiro, verifique isso primeiro com outra ramificação:Para adicionar um novo nó entre TM_MovePlatform e o nó Branch, arraste do pin Concluído e adicione um novo nó Branch. Isso mantém as conexões existentes e adiciona o segundo nó Branch entre elas.
No pin Condição do novo nó Branch, arraste e crie Get Active.
Salve e compile.
O EventGraph deve ficar assim:
No entanto, a lógica do esboço declara que a plataforma deve aguardar um tempo antes de mudar de direção. Em seguida, você criará esse atraso.
Criar um atraso
Você pode usar um nó de atraso para instruir a plataforma a aguardar e uma variável do tipo float para definir o tempo de espera.
Para criar um nó de atraso e um float, siga estas etapas:
Na aba Meu Blueprint de
BP_Platform, clique no botão + para criar uma nova variável com o nomeWaitDuration.Defina o tipo de pin como Float.
No painel Detalhes, adicione-o à categoria Configurações e habilite Instância Editável.
Compile para acessar o valor padrão da variável e defina-o como
2segundos. Esse é o tempo que estamos usando no nível de amostra.Para adicionar o atraso antes da mudança de direção da plataforma, arraste do pin Concluído de TM_MovePlatform e crie um nó Delay.
No pin Duração do nó Delay, arraste e crie o nó Get Wait Duration.
Salve e compile.
A lista de variáveis deve ficar assim:
O EventGraph deve ficar assim:
Teste a plataforma no modo JNE. Ela deve mover para frente, aguardar, retroceder, aguardar e repetir indefinidamente.
Por fim, você precisa ativar a plataforma pelo BP_Switch.
Conectar o interruptor à plataforma
A plataforma só deve se mover quando o BP_Switch for ativado por um jogador ou outro objeto. Você usará as funções de interface de Blueprint criadas em Quebra-cabeças: interruptores e cubos e o booleano Ativa para sinalizar quando a plataforma deve para a frente e parar.
Para fazer com que as mensagens BPI_Interaction do interruptor iniciem e parem o movimento da plataforma, siga estas etapas:
Em
BP_Platform, na barra de menus do Editor de Blueprint, clique em Configurações de Classe.No painel Detalhes, nos cabeçalhos Interfaces, clique no menu suspenso perto de Interfaces implementadas. Procure e adicione BPI_Interaction.
Isso cria um cabeçalho Interfaces na aba My Blueprint.
No cabeçalho Interfaces, clique com o botão direito em fnBPISwitchOn e selecione Implementar evento para preenchê-la no EventGraph como um evento.
Faça o mesmo para fnBPISwitchOff.
No pin de Execução de de fnBPISwitchOn, pesquise e crie o nó Set Active. Marque a caixa de seleção ao lado de Ativa para definir o valor como verdadeiro.
No pin de Execução do nó Set, pesquise e crie o nó EvMoveForward.
No pin de Execução de fnBPISwitchOff, pesquise e crie o nó Set Active.
No pin de Execução do nó Set, pesquise e crie EvStop.
Salve e compile.
Toda a lógica por trás do BP_platform está pronta. Agora que já fez o trabalho pesado, você pode modificar as plataformas ativadas pelo interruptor, os locais de partida e de destino, além do redimensionamento delas, tudo isso na janela de visualização. Com essas configurações disponíveis na janela de visualização, você pode criar e testar seu nível sem precisar editar continuamente os Blueprints.
Em seguida, você preencherá a matriz do interruptor que criou em Quebra-cabeças: interruptores e cubos.
Preencher a lista de objetos de interação
Você pode preencher a matriz da lista de objetos de interação do interruptor com qualquer objeto no nível que deseja que o interruptor ative, desde que ele tenha uma lógica. Nesse caso, você selecionará a instância de BP_Platform no nível.
Para preencher a matriz, siga estas etapas:
Selecione a plataforma na janela de visualização. Nos painéis Detalhes, defina Ativo para falso (desmarcado). Isso interrompe a ativação em tempo de execução e aguarda o sinal do interruptor.
Selecione o interruptor na janela de visualização. No painel Detalhes, em Configurações, perto da Lista de objetos de interação, clique no botão Adicionar elemento (+) para criar um novo índice na matriz.
No menu suspenso, pesquise
BP_Platformou use a ferramenta de conta-gotas para selecioná-la na janela de visualização.
Entre no modo JNE para testar o objeto final da jogabilidade. Quando você ou um cubo de física se sobrepõe ao interruptor, a plataforma deve se mover para frente e para trás (e parar quando você ou o cubo se afastar).
Tente habilitar ActivateOnce no BP_Switch. Você perceberá que, como o interruptor permanece ativo, a plataforma continua se movendo mesmo que você se afaste dele.
Você pode notar um problema dependendo de onde colocou o ponto alvo no nível. Se você colocar o cubo de física na plataforma e pisar no interruptor, a plataforma se moverá tão rápido que o cubo cairá. A física impraticável pode frustrar os jogadores e impedi-los de concluir o quebra-cabeça.
Na próxima seção, você vai depurar esse problema.
Depuração
Nesta seção, você fará ajustes e adicionará mais funcionalidades ao cubo de física e à plataforma para mitigar problemas que podem frustrar os jogadores para os jogadores ao resolver o quebra-cabeça.
Como ajustar o amortecimento
Ao empurrar o cubo, você perceberá que ele parece muito leve e fácil de empurrar. Essa sensibilidade à força pode causar problemas quando os jogadores manobram o cubo em um quebra-cabeça ou quando ele se move sobre uma plataforma.
Para aumentar o amortecimento no cubo, siga estas etapas:
Abra
BP_Cubeno Editor de Blueprint e selecione a malha estática Cubo.No painel Detalhes, em Física, defina o Amortecimento linear como
0,7e o Amortecimento angular como0,8. Essa é uma quantidade sugerida e pode variar de acordo com as necessidades do projeto.Salve e compile.
Teste o cubo de novo. Se ainda estiver caindo da plataforma, ajuste a velocidade da plataforma.
Como ajustar a velocidade
Como a velocidade da plataforma afeta o cubo de física, diminuir a velocidade da plataforma pode ajudar o cubo a se manter a bordo.
Para ajustar a velocidade da plataforma, siga estas etapas.
No
EventGraphde BP_Platform, crie uma variável chamadaTimeToTarget.Defina o tipo de pin como Float.
Compile o Blueprint.
No painel Detalhes, habilite Instância editável, adicione à categoria Configurações e defina o valor padrão para
2,0. Essa é uma quantidade sugerida que varia dependendo do seu nível.Vá para o grupo de nós perto da parte superior do gráfico que começa com Event BeginPlay.
Arraste do pin de Execução do nó Set End Location. Pesquise e crie Set Play Rate (Timeline).
Talvez seja necessário desmarcar Sensível ao contexto para encontrar esse nó.
No pin de Destino do nó Set Play Rate, pesquise e crie um nó Get TM Move Platform.
No pin Nova taxa do nó Set Play Rate, arraste e crie um nó de operador Divide. Defina o valor A como
1,0.No pin B do nó Divide, arraste e crie Get TimeToTarget.
Salve e compile.
O EventGraph deve ficar assim:
Teste o nível no modo JNE e veja como isso altera a interação entre a plataforma e o cubo. O cubo deve permanecer na plataforma ao se mover.
Como você incluiu a variável TimeToTarget na categoria Configuração, é fácil ajustar a velocidade da plataforma e testá-la na janela de visualização enquanto cria o nível.
Exemplo de quebra-cabeça
Criamos um quebra-cabeça para a Sala 1 usando o interruptor, o cubo, a plataforma e os ativos de keyframe descritos neste tutorial. Se quiser copiar nosso quebra-cabeça em vez de criar o seu próprio, as seções a seguir descrevem como posicionar os ativos exatamente onde foram colocados. Cada seção destaca uma percepção que descobrimos durante os testes de jogo e que influenciou nossas escolhas de design.
Para copiar o quebra-cabeça, os Blueprints devem ter o seguinte nome:
BP_Switch
BP_Cube
BP_Platform
BP_Key
Se você não criou seus ativos de acordo com este tutorial, o trecho de código pode não ser copiado como o esperado.
Os obstáculos, os cubos e a chave
Durante os testes, descobrimos que os jogadores tinham dificuldade para controlar o movimento do cubo de física. Adicionamos paredes para guia o cubo conforme o jogador o empurra pela sala e amortecemos para reduzir a reatividade do cubo. Isso reduz a frustração e evita uma penalidade injusta ao jogador por um comportamento físico incomum.
Também descobrimos que precisávamos de uma maneira de restaurar nosso quebra-cabeça em caso de falha do jogador. Como é provável que os jogadores arremessem cubos das plataformas enquanto jogam, preenchemos as posições principais com mais cubos para reduzir a quantidade de retrocesso necessária para restaurar o quebra-cabeça e substituir os cubos destruídos.
Sequência de desenvolvimento da Sala 1
Para copiar os obstáculos para o nível, siga estas etapas:
Copie o trecho abaixo clicando em Copiar trecho completo.
Command LineTrecho de linha de comandoBegin Map Begin Level Begin Actor Class=/Script/Engine.StaticMeshActor Name=StaticMeshActor_32 Archetype="/Script/Engine.StaticMeshActor'/Script/Engine.Default__StaticMeshActor'" ExportPath="/Script/Engine.StaticMeshActor'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32'" Begin Object Class=/Script/Engine.StaticMeshComponent Name="StaticMeshComponent0" Archetype="/Script/Engine.StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32.StaticMeshComponent0'" End Object Begin Object Name="StaticMeshComponent0" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32.StaticMeshComponent0'" StaticMesh="/Script/Engine.StaticMesh'/Game/LevelPrototyping/Meshes/SM_Cube.SM_Cube'" StaticMeshImportVersion=1 StaticMeshDerivedDataKey="STATICMESH_FD1BFC73B5510AD60DFC65F62C1E933E_228332BAE0224DD294E232B87D83948FQuadricMeshReduction_V2$2e1_6D3AF6A2$2d5FD0$2d469B$2dB0D8$2dB6D9979EE5D2_CONSTRAINED0_100100000000000000000000000100000000000080FFFFFFFFFFFFFFFFFFFFFFFF000000000000803F00000000000000803F0000803F00000000000000003D19FC1626C9B248DECA64C7201D34D790CF7B09D3C0873700000000010000000100000000000000010000000100000000000000000000000100000001000000400000000000000001000000000000000000F03F000000000000F03F000000000000F03F0000803F00000000050000004E6F6E65000C00000030000000803FFFFFFFFF0000803FFFFFFFFF0000000000000041000000000000A0420303030000000000000000_RT00_0" RelativeLocation=(X=-5940.000136,Y=1669.999995,Z=-400.499900)No Unreal Editor, clique em Editar > Colar ou Ctrl + V na janela de visualização.
As plataformas
Da mesma forma que adicionar mais cubos de física funcionou como uma redefinição do quebra-cabeça, adicionamos uma plataforma que levanta o jogador até a posição inicial da sala. Ao usar a variável Ativa, essa plataforma de restaurar é ativada em tempo de execução.
Para copiar os obstáculos para o nível, siga estas etapas:
Copie o trecho abaixo clicando em Copiar trecho completo.
Command LineTrecho de linha de comandoBegin Map Begin Level Begin Actor Class=/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C Name=BP_MovingPlatform_C_16 Archetype="/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.Default__BP_Platform_C'" ExportPath="/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16'" Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.DefaultSceneRoot'" End Object Begin Object Class=/Script/Engine.StaticMeshComponent Name="Platform" Archetype="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C:Platform_GEN_VARIABLE'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.Platform'" End Object Begin Object Class=/Script/Engine.TimelineComponent Name="TM_MovePlatform" ExportPath="/Script/Engine.TimelineComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.TM_MovePlatform'" End Object Begin Object Name="DefaultSceneRoot" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.DefaultSceneRoot'"No Unreal Editor, clique em Editar > Colar ou Ctrl + V na janela de visualização.
Conecte as plataformas ao ponto de destino correspondente:
BP_Platform1faz referência a TargetPoint1BP_Platform2faz referência a TargetPoint2BP_Platform3faz referência a TargetPoint3BP_Platform4faz referência a TargetPoint4BP_Platform5faz referência a TargetPoint5
Os interruptores
Usamos a matriz InteractObjectList para conectar alguns interruptores a diversas plataformas. Dessa forma, mantivemos o quebra-cabeça conciso e desafiador, evitando etapas extras que poderiam entediar ou frustrar o jogador.
Para copiar os obstáculos para o nível, siga estas etapas:
Copie o trecho abaixo clicando em Copiar trecho completo.
Command LineTrecho de linha de comandoBegin Map Begin Level Begin Actor Class=/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C Name=BP_ActivationPlate_C_9 Archetype="/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.Default__BP_Switch_C'" ExportPath="/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9'" Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.DefaultSceneRoot'" End Object Begin Object Class=/Script/Engine.StaticMeshComponent Name="Switch" Archetype="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:Switch_GEN_VARIABLE'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.Switch'" End Object Begin Object Class=/Script/Engine.BoxComponent Name="Trigger" Archetype="/Script/Engine.BoxComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:Trigger_GEN_VARIABLE'" ExportPath="/Script/Engine.BoxComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.Trigger'" End Object Begin Object Name="DefaultSceneRoot" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.DefaultSceneRoot'"No Unreal Editor, clique em Editar > Colar ou Ctrl + V na janela de visualização.
Conecte cada interruptor à plataforma correta:
BP_Switch1faz referência aBP_Platform1.BP_Switch2faz referência aBP_Platform2eBP_Platform 3.BP_Switch3faz referência aBP_Platform5.
Agora, teste o nível para garantir que está funcionando corretamente e veja se você consegue desvendar o quebra-cabeça. Você pode comparar seu trabalho com o nível concluído que fornecemos no final desta série de tutoriais.