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:
