Nesta parte do tutorial, você modificará o Blueprint da pessoa jogadora para adicionar a capacidade de disparada em movimento, mantendo uma tecla específica pressionada. Você aprenderá sobre o Enhanced Input System (sistema de entrada aprimorado) da Unreal Engine, o sistema recomendado para receber comandos no jogo. Você usará este sistema para:
Criar uma ação de entrada que define qual entrada aciona o movimento de corrida.
Conectar a ação de entrada ao Blueprint da pessoa jogadora transformando-a em um evento.
Aumentar a velocidade de movimento enquanto está em disparada.
Na seção anterior, você criou a lógica do personagem inimigo para que os inimigos persigam a pessoa jogadora quando ela estiver no campo de visão do inimigo. Com uma mecânica de disparada, você está fornecendo uma mecânica de jogo que pode ser usada para fugir desses personagens inimigos.
Ao projetar jogos, é importante criar desafios, como inimigos, ao mesmo tempo em que se fornece uma ferramenta ou estratégia que possa ser usada para superar esses desafios.
A disparada é uma funcionalidade popular disponível na maioria dos jogos em vários gêneros e que permite o movimento mais rápido. Essa mecânica altera a forma como de percorrer os espaços que projetados na fase.
Antes de começar
Certifique-se de entender os tópicos abordados na seção anterior de Como projetar uma aventura de quebra-cabeça:
Noções básicas de Blueprints, como adicionar nós, funções e eventos.
Você precisará dos seguintes ativos dos documentos anteriores desta série de tutoriais:
BP_AdventureCharacter
Crie um ativo de ação de entrada
Primeiro, você criará um ativo de ação de entrada, que define:
O nome da ação.
O tipo de valor da ação.
O tipo de gatilho (pressionar, segurar ou soltar uma tecla).
A ação de entrada é o que o Blueprint do personagem jogável escuta antes de executar um novo comportamento.
Depois, você vinculará a ação de entrada a uma tecla específica, ação também conhecida como mapeamento, usando um ativo de Input Mapping Context (contexto de mapeamento de entrada) que já existe no projeto.
Aqui está um diagrama que mostra a relação entre os diferentes ativos usados no sistema de entrada aprimorado. Consulte mais informações na documentação de Entrada aprimorada.
| Ação de entrada | Contexto de mapeamento de entrada | Blueprint |
|---|---|---|
Define as regras de intenção e detecção. | Mapeia as teclas e os botões para as ações de entrada. | Usa as ações de entrada para implementar comportamentos. |
Para criar um ativo de ação de entrada para um novo movimento de disparada, siga estes passos:
Acesse o Navegador de Conteúdo e navegue até a pasta "Input, Actions" (Entrada, Ações). Nessa pasta, você verá os ativos de ação de entrada relacionados a Jump (saltar), Look (olhar), MouseLook (olhar com mouse) e Move (mover-se).
Clique com o botão direito no Navegador de Conteúdo, acesse Input e crie um ativo de ação de entrada.
Dê o a este ativo o nome de
IA_Sprint.A convenção de nomenclatura é a nossa maneira de definir que esse é um arquivo de ação de entrada, mas não é necessário receber esse nome.
Clique duas vezes em
IA_Sprintpara abri-lo. Uma ação de entrada é um ativo de dados e é aberto em uma nova janela com um painel Detalhes.
Tipos de ações de entrada
Vamos conferir o painel Detalhes na janela de dados de IA_Sprint. Use o painel Detalhes para modificar as propriedades deste ativo, como definir a ação que você gostaria de ouvir do personagem jogável.
Primeiro, vá para a propriedade Tipo de valor. Determina o tipo de dado na ação de entrada. Ao criar ações de entrada, você escolherá um Tipo de valor dependendo do tipo de movimento que deseja capturar com a ação.
Por padrão, o tipo da ação de entrada é Digital (bool), o que significa que há um estado ativado e desativado (correndo em disparada ou não). Mantenha o valor padrão para IA_Sprint.
O Tipo de valor também pode ser:
Axis1D: a ação tem um valor para o movimento unidimensional (rolagem para dentro e para fora) ou um ajuste escalar (alteração da velocidade do movimento).
Axis2D: a ação tem valores X e Y para movimento bidimensional, como controles WSAD.
Axis3D: a ação tem valores X, Y e Z para movimento tridimensional, como controles de voo ou nado.
Configure a ação de entrada com um gatilho
Para definir que tipo de pressionamento de tecla aciona a ação de disparada, siga estes passos:
Na seção Action, ao lado de "Triggers" (gatilhos), clique no botão mais (+) para adicionar um novo elemento à matriz Triggers.
Clique no campo do menu suspenso que diz Nenhum no novo elemento que você adicionou. Você verá uma lista de opções, como Combo, Segurar, Para baixo e até mesmo entrada por toque, como Toque. Em geral, a corrida em disparada é feita quando você mantém pressionada uma tecla, então selecione a opção Para baixo na lista.
Clique no botão Save (Salvar), no canto superior esquerdo da janela, para salvar as alterações. Feche
IA_Sprint.
A ação usa Down (para baixo) em vez de Hold (segurar) porque Down é acionado imediatamente ao pressionar uma tecla, enquanto Hold é acionado após um certo tempo em que a tecla permanece pressionada.
Hold pode ser útil para ações como habilidades de ataque pesado, em que você precisa concentrar o ataque antes de soltar a tecla. Para descobrir mais sobre cada seleção, passe o mouse sobre ela para ler as dicas.
Expanda um gatilho para ver seu Actuation Threshold (limite de atuação), ou até que ponto uma entrada deve ser pressionada ou movida antes que a ação seja acionada. A tecla do teclado tem uma atuação de 0 quando não é pressionada e 1 quando é pressionada. Os comanos do controle também podem ter valores fracionários entre 0 e 1 se as entradas forem parcialmente pressionadas.
Agora, o ativo de ação entrada está configurado. Você deu um nome para a ação, IA_Sprint, e definiu o que aciona a ação (pressionar uma tecla ou botão). Em seguida, você usará um contexto de mapeamento de entrada para definir qual tecla aciona a ação.
Atribuir um mapeamento de teclas
Um ativo de contexto de mapeamento de entrada coleta os ativos de ação de entrada atribuídos a ele, como o IA_Sprint que você acabou de criar, para definir as teclas de entrada e passar valores a um Blueprint de personagem, como o nosso personagem jogável BP_AdventureCharacter.
Para mapear uma tecla à ação "IA_Sprint", siga estes passos:
Volte ao Navegador de Conteúdo. Na pasta "Input, Actions", suba um nível para a pasta "Input". Aqui, você verá dois ativos de contexto de mapeamento de entrada,
IMC_DefaulteIMC_MouseLook.IMC significa contexto de mapeamento de entrada.
Clique duas vezes em
IMC_Defaultpara abri-lo em uma nova janela do editor com um painel Detalhes.IMC_Defaulté o ativo de contexto de mapeamento de entrada que usamos neste projeto para as habilidades padrão de jogo, como movimento e salto.Na seção Mappings (Mapeamentos) expanda a lista mapeamentos, que revela três entradas: IA_Jump, IA_Move e IA_Look. Essas são as ações de entrada que você viu anteriormente na pasta Input, Actions.
Ao lado dos mapeamentos, clique em Add(+) para adicionar uma entrada extra à lista.
Para a nova entrada, use o menu suspenso para selecionar o ativo IA_Sprint criado antes.
Expanda a entrada IA_Sprint para revelar a seleção de tecla para esta ação. Clique o botão Teclado e pressione a tecla Caps Lock. Você também pode usar o menu suspenso para atribuir uma tecla a essa ação.
Salve e feche o contexto de mapeamento de entrada.
Após definir a tecla de ação de entrada IA_Sprint, temos uma ação de entrada que é acionada quando a pessoa jogadora mantém essa tecla pressionada, e essa ação está mapeada para a tecla Caps Lock.
Alguns mapeamentos de tecla (Shift, Ctrl, Alt etc.) são usados pelo Unreal Editor e, portanto, podem não funcionar ao testar o jogo no modo JNE. Se estiver usando um desses mapeamentos, você precisará testar no modo independente ou usar uma tecla diferente durante o desenvolvimento e, em seguida, mudar para a tecla desejada antes de criar o pacote com o seu jogo. Mapeamentos de teclas que costumam ser seguros no modo JNE incluem letras e números, setas, Caps Lock, Enter, Backspace, Page Up/Down e Home/End.
Modifique o Blueprint do jogador para correr em disparada
Com a ação de entrada configurada, modificaremos o Blueprint da pessoa jogadora para executar a disparada usando a tecla que atribuída.
Criaremos a funcionalidade de disparada aumentando a velocidade de movimento quando o gatilho do IA_Sprint for pressionado. Quando o jogador solta a tecla de disparada, o personagem retorna à velocidade de movimento padrão.
Para começar, dê ao personagem uma velocidade de movimento padrão, e depois crie a mecânica de disparada.
Como criar variáveis de velocidade de movimento
Primeiro, você criará variáveis para armazenar a velocidade de movimento padrão e a velocidade de corrida no jogo. O componente de movimento da pessoa jogadora define a velocidade padrão de movimento, mas armazená-la em uma variável preserva essa velocidade e garante que possamos retornar a ela após o término da ação de corrida.
Para configurar variáveis que armazenam as diferentes velocidades de movimento, siga estes passos:
Acesse o Navegador de Conteúdo, navegue até a pasta "Content, AdventureGame, Designer, Blueprints, Characters" (Conteúdo, AdventureGame, Designer, Blueprints, Personagens) e abra o Blueprint
BP_AdventureCharacter.Usando o painel Meus Blueprints, adicione uma variável chamada DefaultMovementSpeed do tipo Float.
Adicione mais uma variável chamada SprintMovementSpeed, também do tipo Float.
Clique no botão Compilar no canto superior esquerdo do Editor de Blueprint.
Em seguida, clique na variável SprintMovementSpeed. No painel Detalhes, altere o Valor padrão > Velocidade de movimento de disparada para 1000.
Defina o movimento padrão de interação.
Quando o jogo iniciar, capture a velocidade de movimento padrão inicial.
Para salvar a velocidade de movimento padrão quando o jogo iniciar, siga estes passos:
No Event Graph, clique com o botão direito em um espaço vazio e crie um nó Event BeginPlay. Esse nó é executado uma vez quando o jogo é iniciado.
Você usará o evento BeginPlay para obter a velocidade de movimento padrão quando o jogo começar. Arraste o pin Exec deste nó e crie um nó Set Default Movement Speed.
Como você viu na criação de
BP_Enemy, o componente de movimento do personagem contém as propriedades que controlam a velocidade. No painel Components (Componentes), arraste o movimento do personagem (CharMoveComp) para o Event Graph.Arraste o pin do nó Character Movement e crie um nó Get Max Walk Speed.
Conecte o pin Max Walk Speed ao nó Set Default Movement Speed.
Essa funcionalidade define o valor da variável DefaultMovementSpeed que criamos como a velocidade de caminhada padrão da pessoa jogadora, usando a Max Walk Speed do componente de movimento do personagem jogável.
Se você selecionar o componente Movimento do personagem e conferir o painel Detalhes na seção Movimento do personagem: caminhada, você verá que a velocidade máxima de caminhada é 600 cm/s.
O componente Character Movement contém muitas propriedades que controlam como o personagem se move, e você pode usar e alterar qualquer uma delas em tempo de execução com a lógica do Blueprint.
Como definir o comportamento da ação de disparada
Agora que a pessoa jogadora tem uma velocidade de movimento inicial, você pode aumentar essa velocidade quando ela pressionar a tecla de disparada.
Quando adicionamos uma ação de entrada a um Event Graph, a Unreal Engine cria um nó de evento que é executado quando pressionamos a tecla mapeada dessa ação, conforme definido no contexto de mapeamento de entrada. Nesse caso, o evento IA_Sprint é executado quando a tecla Caps Lock é pressionada.
Para usar a ação de entrada IA_Sprint para criar a mecânica de corrida, siga estes passos:
Clique com o botão direito em qualquer lugar vazio no Event Graph, pesquise IA_Sprint e selecione o nó IA_Sprint na categoria Entrada > Eventos de ação melhorada.
Clique na seta, na parte inferior do nó, para ver mais pins. Você usará os pins Acionado e Concluído:
Acionado: o jogador está pressionando a tecla de ação, então o personagem deve se mover na velocidade SprintMovementSpeed.
Concluído: o jogador soltou a tecla, então o jogador deve retornar à sua DefaultMovementSpeed.
No painel Componentes, arraste o componente Movimento do personagem (CharMoveComp) para o Event Graph novamente.
Arraste do pin Movimento do personagem e crie um nó Set Max Walk Speed.
No nó Set Max Walk Speed, arraste o pin Velocidade máxima de caminhada e crie um nó Get Sprint Movement Speed.
Conecte o pin com Trigger do nó IA_Sprint ao nó Set Max Walk Speed.
Assim, definimos a velocidade de movimento do personagem jogável para o valor de Sprint Movement Speed (velocidade de movimento de disparada), que havíamos definido como 1000 anteriormente.
Por fim, você precisa reverter a velocidade do movimento para valor padrão quando o jogador soltar a tecla, e essa ação será marcada como Concluída.
Para retornar o personagem ao seu movimento padrão ao terminar a disparada, siga estes passos:
No n IA_Sprint , arraste o pin Concluído e crie outro nó Set Max Walk Speed.
Configure o nó Set Max Walk Speed:
Conecte uma referência a DefaultMovementSpeed ao nó Max Walk Speed.
Em Alvo, conecte o nó de referência do componente Movimento do personagem.
Compile e salve o Blueprint.
Teste seu personagem
No Unreal Editor, clique no botão Reproduzir para jogar. Agora você poderá correr em disparada ao se mover e segurar a tecla mapeada para corrida (Caps Lock).
Teste diferentes valores de Max Walk Speed e Sprint Movement Speed no seu personagem jogável para decidir o que funciona melhor para o seu jogo. Agora que podemos executar uma disparada no jogo, reveja seus personagens BP_Enemy e aumente o valor de Max Speed para ajustar o nível de dificuldade dos encontros no Corredor 3 e na Cômodo 3.
Você também pode continuar adicionando entradas e comportamentos se quiser expandir o que implementou neste tutorial e adicionar outras funcionalidades ao jogo.
Próxima
Agora que você adicionou com sucesso todas as mecânicas e funcionalidade do seu personagem jogável, está tudo pronto para terminar o nível. No último módulo desta série, você dará os toques finais no seu nível usando todos os elementos criados até então.