Antes de começar
Certifique-se de ter concluído os objetivos da seção anterior, Configure e compile o projeto:
Criou um projeto baseado no modelo Primeira Pessoa com a classe Game Mode em C++.
Verificou se o projeto está usando o Sistema de Entrada Aprimorada.
Configure um novo personagem
Você já configurou um projeto C++ com um modo de jogo personalizado. Agora, vai adicionar uma nova classe Personagem (Character), estendê-la para Blueprints e defini-la como o pawn de jogador padrão no modo de jogo.
Crie uma classe de personagem em C++
Ativos de ator são objetos que podem ser colocados em um nível. Pawns são atores que podem ser controlados por jogadores ou IA, e Personagens são um tipo especial de Pawn usados como personagens jogáveis. Para saber mais sobre essas classes de atores, confira as informações de classe Atores, Pawns e Personagens na documentação sobre o framework de jogabilidade da UE.
Para criar uma classe Personagem e adicionar C++ ao projeto, siga estas etapas:
No menu principal do editor, acesse Ferramentas > Nova Classe C++.
Na janela Escolher a classe pai, encontre e selecione Character e clique em Avançar.
Insira um nome para a nova classe (este tutorial usa
AdventureCharacter) e clique em Criar classe.A Unreal Engine abre automaticamente os novos arquivos de classe no Visual Studio (VS). Volte ao VS para encontrar os novos arquivos.
Se o VS não solicitar automaticamente a atualização do projeto, acesse Ferramentas> Atualizar Visual Studio no Unreal Editor.
Estenda sua classe de personagem C++ para Blueprints
Assim como fez com o modo de jogo, no Navegador de Conteúdo, clique com o botão direito na classe Character e selecione Criar classe de Blueprint baseada em <CharacterName> para criar um Blueprint para o personagem na pasta Blueprints.
Mude o personagem jogável padrão
Para usar seu novo personagem no jogo, defina-o como a Classe de Pawn Padrão (Default Pawn Class) usada no modo de jogo do seu projeto.
Para definir seu personagem como o personagem jogável padrão, siga estas etapas:
Se o seu Blueprint do modo de jogo ainda não estiver aberto, no Navegador de Conteúdo, clique duas vezes no seu novo Blueprint para abri-lo no Editor de Blueprint.
No painel Detalhes do Blueprint, expanda Classes. Aqui é onde você pode definir diferentes classes padrão para este modo de jogo.
Altere Default Pawn Class para seu Blueprint de Personagem (
BP_AdventureCharacter).Clique em Salvar no canto superior esquerdo da janela para salvar o Blueprint de modo de jogo e clique em Compilar.
Vamos explorar ações de entrada
O personagem padrão no modelo de primeira pessoa usa um conjunto de ações de entrada preexistentes que, combinadas com Blueprints, fazem o personagem se mover, pular e olhar ao redor.
Abra e explore essas ações de entrada para aprender como elas alimentam os movimentos desse personagem.
Na árvore de ativos do Navegador de Conteúdo, acesse a pasta Conteúdo > Entrada > Ações. Você verá três ações de entrada chamadas IA_Jump, IA_Look e IA_Move que correspondem a pular, olhar e se mover, respectivamente.
Clique duas vezes em IA_Jump para abrir e ver o painel Detalhes correspondente.
As ações de entrada do personagem usam as seguintes propriedades para definir o tipo de ação e o que ela faz:
Propriedade | Descrição |
Tipo de valor | Determina o tipo de valor que esta ação de entrada contém. Escolha um tipo de valor de acordo com o tipo de movimento que deseja capturar com essa ação de entrada. Por exemplo, Axis1D é um valor float para capturar movimento unidimensional (rolagem para dentro e para fora) ou um ajuste escalar (alteração da velocidade do movimento). Axis2D é um vetor de dois floats que captura o movimento bidimensional, como Controles WSAD. Axis3D é um vetor de três floats que captura o movimento tridimensional, como controles de voo ou nado. |
Gatilhos | Crie gatilhos para representar os possíveis estados da ação. Assim, você pode criar lógica com esses gatilhos em Blueprints ou código. Quando o botão mapeado para |
Modificadores | Modifica o valor de entrada bruto que a UE recebe antes de enviá-lo a qualquer gatilho de entrada. |
Vamos explorar contextos de mapeamento de entrada
As ações de entrada não funcionam sozinhas. Elas precisam de um contexto de mapeamento de entrada para saber qual botão deve acioná-las e em qual contexto. É um conjunto de mapeamentos que descreve as regras para acionar uma ação de entrada. Você pode criar e personalizar vários contextos de mapeamento de entrada e ativá-los e desativá-los dinamicamente de acordo com as necessidades do jogo.
O personagem padrão já tem um contexto de mapeamento de entrada. Você pode encontrá-lo no Navegador de Conteúdo em Conteúdo >Entrada. Clique duas vezes em IMC_Default para abri-lo e visualizar o painel Detalhes.
IMC_Default contém três mapeamentos que mapaeiam cada uma das três ações de entrada a entradas do usuário. Cada mapeamento busca os gatilhos e modificadores da ação de entrada.
Mapeamento de uma ação de pulo
Expanda o mapeamento de IA_Jump. Você verá que ele tem duas vinculações de controle: Barra de Espaço e Botão de Face Inferior do Controle. Se você pressionar um desses botões no jogo, o IA_Jump será acionado.
Mapeamento de movimentos 2D com as teclas do teclado
Em seguida, expanda IA_Move para visualizar as nove vinculações correspondentes às teclas WASD, teclas de seta e o direcional analógico esquerdo do gamepad.
Criar movimentos bidimensionais a partir de várias teclas individuais requer uma configuração um pouco mais do que um simples salto booleano.
Pressionar uma tecla é uma ação unidimensional, retornando um valor de 0 quando não pressionada ou 1 quando pressionada. Isso funciona perfeitamente para as teclas D ou seta para a direita, pois elas devem mover o personagem em uma direção positiva ao longo do eixo X (em outras palavras, para a direita). No entanto, precisamos que o personagem se mova também para frente, para a esquerda e para trás. Ou seja, queremos valores de 0 a 1 e de 0 a -1 no eixo X e no eixo Y.
Portanto, para obter valores que criam movimento em todas as direções, as ações de entrada usam modificadores para transformar o valor de entrada em um eixo diferente ou em um valor negativo.
Por exemplo, expanda a vinculação de controle de A e seus modificadores para ver a configuração. Você verá que há um modificador Negativar. Isso significa que, quando a chave é pressionada, o valor de 1,0 é negativado para -1,0, movendo seu personagem para o lado negativo do eixo X, ou seja, para a esquerda.
Expandir o modificador Negativar permite especificar se deseja negativar os valores dos eixos X, Y ou Z. Todos eles estão habilitados por padrão, mas você pode restringir a negativação a eixos específicos de acordo com suas necessidades.
Agora expanda a vinculação de controle de S. Para criar um movimento para trás no eixo Y, essa vinculação tem dois modificadores: um Trocar Valores do Eixo de Entrada, que altera a entrada do eixo X para o eixo Y, e um Negativar.
Expanda o modificador de Trocar Valores do Eixo de Entrada. A opção Ordenar especifica como os valores do eixo devem ser reordenados. Neste caso, a ação de entrada está usando YXZ, de modo que os eixos X e Y estão trocados da ordenação XYZ padrão.
Mapeamento de movimento 2D em um controle
O direcional analógico do gamepad usa um eixo 2D para entrada em vez de um toque de botão 1D. Portanto, esse mapeamento só precisa de uma vinculação de controle para processar o movimento do analógico.
Se você expandir Modificadores para Eixo 2D do Direcional Analógico Esquerdo do Gamepad, verá os modificadores Zona Morta e Escalar.
Zona Morta especifica os limites superior e inferior com os quais a entrada é ignorada. Use o filtro para eliminar pequenos valores de entrada próximos ao centro do direcional analógico que geralmente não são intencionais devido ao fato de ele não estar centralizado perfeitamente ou devido à leve pressão dos dedos.
Escalar especifica o valor de multiplicação de cada valor dos eixo X, Y e Z. Dessa forma, você pode controlar a velocidade de movimento do personagem em cada direção.
Mapeamento de controles de visão no gamepad e no mouse
Expanda o mapeamento de ações de IA_Look. Esta ação de entrada está vinculada ao controle do eixo 2D do direcional analógico direito do gamepad.
Ele só precisa de um modificador de Zona morta para filtrar erros.
O personagem padrão tem um contexto de mapeamento separado para controles de câmera baseados em mouse. Volte para o Navegador de Conteúdo e abra IMC_MouseLook. Este IMC cria vinculações para a ação de entrada IA_MouseLook que é idêntica a IA_Look.
Ao usar ações de entrada separadas para o direcional analógico e o mouse, você pode ter modificadores diferentes para cada entrada e tratá-los como caminhos de entrada separados. Entretanto, neste tutorial, você combinará tudo em um Contexto de Mapeamento de Entrada.
Expanda o mapeamento de ações IA_MouseLook. Esta ação de entrada está vinculada ao controle do eixo 2D XY do mouse.
A vinculação do controle do mouse já usa um eixo 2D, então o único modificador necessário é uma Negação do eixo Y para fazer o personagem olhar para baixo quando você move o mouse para cima. Isso é tradicional em jogos em primeira pessoa, mas você pode excluir esse modificadores para inverter os controles de visão.
Modificar um Contexto de Mapeamento de Entrada
Como você está apenas começando um novo projeto, combine todos os mapeamentos de entrada em um Contexto de Mapeamento de Entrada.
Para criar seu próprio IMC com base nos contextos de mapeamento do jogador padrão, siga estas etapas:
No Navegador de Conteúdo:, na pasta Conteúdo > Entrada, clique com o botão direito em
IMC_Defaulte selecione Duplicar.Nomeie o contexto de mapeamento
IMC_Adventuree clique duas vezes nele para abri-lo.Expanda o mapeamento IA_Look.
Clique no botão de adição ao lado de IA_Look para adicionar uma nova vinculação de controle.
Clique em Nenhum para abrir a lista de valores-chave, expanda Mouse e selecione Eixo 2D XY do mouse.
Na vinculação do controle do mouse, clique no botão de adição ao lado de Modificadores e altere Nenhum para Negar.
Expanda o modificador Índice [0] e desmarque X e Z. Este modificador deve negar apenas o eixo Y.
Salve e feche o contexto de mapeamento.
Para inverter os controles da câmera, você pode adicionar ou remover modificadores Negar dos direcionais analógicos ou das vinculações de controle do mouse.
Próxima
Na próxima seção, você aprenderá como o Blueprint do personagem padrão conecta a entrada do jogador ao movimento do personagem e começará a recriar isso em código.
Como configurar o movimento do personagem
Saiba como vincular a entrada do jogador ao movimento do personagem em C++.