class Blueprint - Enhanced Input : public Unreal Engine , public Geral

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:

class Blueprint - Enhanced Input : public Unreal Engine , public Geral