Blueprint - Enhanced Input
Ao final deste tutorial, você conseguira criar a configuração de input para controlar um personagem simples sem utilizar nenhum template.
1. Criando o projeto
2. Enhanced Input
o Enhanced Input é uma nova feature da UE5, que oferece maior flexibilidade para projetos que tem muita alteração do sistema de controle. O que eles chamam de “Dinâmico e Contextual”, ou seja, a depender da interação do seu personagem, é possível fazer o remapeamento dos inputs de maneira rápida, ou ainda ter o mesmo input para ações diferentes dentro do jogo.
2.1 Input Actions
Input Actions definem ações possíveis do seu jogador, e que serão respondidas a
depender dos dispositivos de entrada. Elas podem ser de diversos tipos, bool
que podem ser usados para botões, Axis1D
pode ser o valor de um slider,
Axis2D
pode ser a posição do joystick em um controle, e Axis3D
que pode ser
utilizado para acessar os dados de acelerômetro por exemplo.
Para criar um arquivo de Input Action clique em + Add
no Content
Browser/Drawer, procure por Input e selecione Input Action
Para mater uma organização é bom utilizarmos alguma norma para os nomes de
nossos assets, nos projetos da Epic, ele utilizam muito IA_
como prefixo para
as Input Actions, como falo português, resolver utilizar IAc_
para não
confundir com inteligência artificial.
Salve essa recém criada como IAc_Walk
Com um duplo clique podemos configurar suas propriedades:
2.2 Input Mapping Context
Esse arquivo é um mapa de ações que o jogador pode usar. Para criar um InputMappingContext basta procura-lo abaixo da opção de input action.
Ao abrir esse arquivo podemos utilizar as actions que criamos e mapear para os inputs que queremos.
Em Mappings clique no ícone de +:
Agora podemos selecionar a Input Action que acabamos de criar:
E Clicando no símbolo de + da Action, definir todos os inputs que queremos que acionem essa action:
Temos agora que adicionar alguns modificadores para cada uma das teclas, para fazer o mapeamento correto.
Por padrão, o mapeamento de um botão, seja ele continuo ou discreto, será de 0 a
1 em x. Sem nenhum modificador, todas as teclas responderiam para o mesmo lado,
vamos usar os modificadores Swizzle Input Axis Values
e Negate
Assim nosso mapeamento ficará da seguinte forma:
2.3 Player Controller
Com as Input Actions e o IMC configurado, precisamos de um Player Controller, que irá gerenciar os diversos IMCs de nosso jogo e ativa-lo para o jogador.
Da documentação oficial:
Uma coisa a considerar ao configurar seu PlayerController é qual funcionalidade deve estar no PlayerController e qual deve estar em seu Pawn. É possível manipular todas as entradas no Pawn, especialmente para casos menos complexos. No entanto, se você tiver necessidades mais complexas, como vários jogadores em um cliente de jogo ou a capacidade de alterar personagens dinamicamente em tempo de execução, pode ser melhor manipular a entrada no PlayerController. Nesse caso, o PlayerController decide o que fazer e então emite comandos para o Pawn
Para criar um PlayerControler devemos criar uma classe Blueprint:
Depois de criada, vamos fazer o bind do Enhanced Input System com o Player, vá
para o EventGraph da Blueprint e crie o nó Enhanced Input Local Player
Subsystem
Verificamos se ele é valido e caso positivo, adicionamos ao player
Por vezes precisamos desativar a flag de Context Sensitive
para achar o nó que
precisamos
E esse fluxo todo acontecerá no BeginPlay do Player Controller
Não esquece de selecionar seu IMC:
2.4 Character
Por fim, vamos criar nosso personagem que iremos controlar, por hora algo extremamente simples!
Crie uma Blueprint Class a partir de Character:
Ao Abrir a blueprint, na viewport você verá que temos alguns componentes padrões do Character:
Vamos adicionar uma malha para visualizarmos nosso player:
E uma câmera, posicione a camera um pouco atras da malha do seu jogador:
Feito isso, vamos para o EventGraph e vamos utilizar o Evento da Action que criamos:
Vamos mapear da forma mais simples possível as entradas do WASD
para
movimentação no mundo, podemos utilizar os valores da Action Value direto,
expandindo o “struct”, clicando com o botão direito do mouse e selecionando
Split Struct pin
Feito isso podemos utilizar a função Add Movement Input:
2.5 Game Mode
Caminhando para as ultimas configurações precisamos criar um Game Mode, que é um asset que controla as configurações padrões por level.
Ao Abrir sua blueprint em Classes, selecione o Player Controller que Acabou de criar e o Character Que acabou de criar:
Por fim, devemos definir esse Game Mode nas configurações do nosso nível em World Settings:
Se tudo deu certo você deverá ter um personagem andando pela tela: