Buscar

APOSTILA VARIADA UNREAL4 Alexandre Claudio

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 184 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 184 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 184 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-
NãoComercialCompartilhaIgual 4.0 Internacional. Para ver uma cópia desta licença, visite 
http://creativecommons.org/licenses/by-nc-sa/4.0/. 
Capa: Alexandre Ferreira e Sean Albuquerque – Imagem de fundo extraída da Unreal Engine 4, sem 
qualquer efeito de pós-produção aplicada além dos filtros do motor gráfico. 
Brasil – novembro de 2016 
 
 
 
 
 
 
Unreal 4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Nota dos Autores 
O conteúdo aqui abordado possui teor informativo educacional sem fins lucrativos. 
Deixamos expressamente claro que está apostila pode ser utilizada tanto em cursos 
ou salas de aulas como também por qualquer entusiasta individual que queira 
desbravar um conteúdo em português que envolva a Unreal 4, e a programação 
visual Blueprints, de forma a sair um pouco do “Abc básicos” que se encontra 
normalmente nos conteúdos gratuitos em nosso idioma. 
Como mencionado anteriormente, está apostila pode ser impressa e tomada como 
auxilio de qualquer curso voltado a tecnologia abordado aqui, desde que não se 
cobre nada por ela e que seus autores sejam devidamente mencionados e 
creditados. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Sumário .............................. 7 
Configurando Player Character ............................................................................................. 8 
Configurações Iniciais ........................................................................................................ 9 
Axis e Action Mappings .................................................................................................... 16 
Animation Blueprint ......................................................................................................... 31 
Blend Space 1D ................................................................................................................ 36 
Editando Animações ........................................................................................................ 43 
Configurando Animação de Pulo ...................................................................................... 46 
Conclusão ........................................................................................................................ 49 
Configurando Player Character ........................................................................................... 51 
Configurações Iniciais ...................................................................................................... 53 
Axis e Action Mappings .................................................................................................... 60 
Game Mode ..................................................................................................................... 63 
Configurando Movimento................................................................................................. 66 
Animation Blueprint ......................................................................................................... 72 
Blend Space 1D ................................................................................................................ 77 
Editando Animações ........................................................................................................ 83 
Configurando Animação de Pulo ...................................................................................... 87 
Conclusão ........................................................................................................................ 90 
Adicionando Animações ...................................................................................................... 91 
Template do projeto ......................................................................................................... 92 
Adicionando Animações Com Animation Motage ............................................................101 
Inteligência Artificial I ........................................................................................................111 
Template do projeto ........................................................................................................112 
Configurando a IA ...........................................................................................................113 
Programando a IA ...........................................................................................................116 
Questão: ..........................................................................................................................117 
Área de atuação “Nav Mesh”...........................................................................................117 
Conclusão .......................................................................................................................119 
Aguçando a curiosidade ..................................................................................................119 
Inteligência Artificial II .......................................................................................................120 
Template do projeto ........................................................................................................121 
Lista de Passos: ...............................................................................................................121 
Organizando os diretórios ...............................................................................................122 
Sistema Chave&Porta / Pontuação I .................................................................................124 
 
Criando a porta ...............................................................................................................128 
O elevador ......................................................................................................................130 
Controle de estados ........................................................................................................131 
Programação no Player (Jogador) ...................................................................................132 
Sistema Chave Porta / Pontuação II .................................................................................132 
Chaves ............................................................................................................................133 
Portas ..............................................................................................................................133 
Elevador .........................................................................................................................135 
Checkpoint .....................................................................................................................136 
Zona da morte .................................................................................................................137 
O inimigo (IA) .................................................................................................................138 
Subindo níveis! ................................................................................................................142 
Inteligência Artificial III ......................................................................................................145 
Template do projeto ........................................................................................................146Lista de Passos: ...............................................................................................................146 
Configuração inicial do projeto .......................................................................................147 
Game design ...................................................................................................................149 
Qual estado eu início .......................................................................................................150 
Resumo de funções e variáveis ........................................................................................151 
Existe algum player próximo de mim? ............................................................................153 
Onde está o player onde irei me posicionar? ..................................................................156 
A que distância do player devo ficar em guarda? Ou sair da guarda? .............................160 
Quando que eu posso atacar? ..........................................................................................160 
Introdução a interface Gráfica ............................................................................................167 
Configurações Iniciais .....................................................................................................169 
GUI ..................................................................................................................................169 
Sistema de Health ............................................................................................................176 
Criando Regenerador de Health .....................................................................................180 
Conclusão ...........................................................................................................................183 
Referência Bibliográfica ......................................................................................................184 
 
Sumário 
 
 
 
 
 
 
 
 
 
 
Configurando Player Character 
Third Person 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Configurando Player Character 
Third Person 
Neste capítulo veremos como configurar um personagem jogável a partir de um 
projeto Blank da Engine Unreal 4, convertendo o projeto para a jogabilidade Third 
Person. Iremos definir seus controles de interação bem como suas animações de 
resposta. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Configurações Iniciais 
Como dito anteriormente, este projeto terá como base um template Blank, com isso 
selecione este template, certifique-se de estar na aba Blueprint, e não C++. 
 
 
Após o Unreal Editor ter iniciadocrie uma pasta para o personagem que você deseja 
trazer, dentro desta paste crie mais 3 pastas, para Textura, Material e Animação. 
Feito isso clique no botão Import localizado no menu Content Browser. 
 
Traga o modelo 3D do personagem que deseja configurar. É importante certificar-se 
que este modelo possua esqueleto, caso contrário não será possível atrelar as 
animações a ele. 
 
 
 
Este painel possui configurações de importação, ele é dividido em 4 abas: 
Configurações de Mesh; Animação; Transformação e Materal. Não faremos 
alterações neste menu para o nosso personagem, mas caso você queira trazer 
animações junto do mesh marque Import Animations, para alterar a escala do 
personagem caso ele venha muito pequeno ou muito grande para Engine reimporte 
e configure Import Uniform Scale. Caso você prefira configurar o material, do zero, 
dentro da Unreal, desmarque Import Materials ou Import Textures. 
 
Além do mesh mais 2 arquivos são importados Physics Assets e o Skeleton. Caso seu 
modelo tenha vindo com muitos materiais e texturas soltos organize-os nas pastas 
correspondentes. Depois do mesh importado e organizado iremos agora criar uma 
Classe Blueprint do tipo Character. Para isso clique com o botão direito do mouse 
num espaço vazio dentro da pasta do Player, e escolha a opção Blueprint Class. 
 
 
Após informar que queremos criar uma nova classe Blueprint devemos agora 
escolher qual tipo de classe queremos criar. Interagiremos agora com o painel Pick 
Parent Class, para nosso player devemos escolher Character. 
 
Nomeie a nova classe como quiser, uma dica é colocar as siglas BP depois do nome 
escolhido para identificar com facilidade no futuro, que se trata de uma classe 
Blueprint. 
 
Vamos agora configurar nosso Player Blueprint, clique duas vezes no seu ícone para 
abrirmos o editor. 
 
 
 
 
No painel Components clique na opção Mesh. Agora vá 
no painel Details (a direita) e na aba Mesh abara as 
opções clicando na seta ao lado de None. Escolha o 
modelo 3D do player que você acabou de importar. 
 
 
 
Normalmente ele vem rotacionado de forma diferente das configurações do player, 
para posicioná-lo de forma correta basta girar o mesh até o lado da frente dele 
 
respeitar a direção que o ArrowComponent aponta, -90 graus no eixo Z no nosso 
exemplo. 
 
Depois disso é interessante fazer o mesh do personagem respeitar a altura da 
capsula, suba-o até que seus pés fiquem dentro da base da capsula. 
 
Agora vamos adicionar 2 componentes essenciais para nosso Player. Clique no botão 
verde Add Component, fica no topo do painel Component. Procure por “ApringArm” 
e clique nele para adicionar. 
 
 
Agora procure por Camera para adicionar este componente também. 
 
O SpringArm é responsável por regular a distância da câmera para o Player com isso 
a câmera deve estar atrelada a ele. Para atrelarmos a câmera aqui devemos torna-la 
“Child” do SpringArm, arraste a câmera até o SrpingArm e solte nele para isso. Note 
que depois disso a câmera foi sozinha até a outra extremidade do SpringArm. 
 
Feito isso clique em SrpingArm e no painel Details marque a opção “Use Pawn 
Control Rotation”. Essa opção nos garantirá um funcionamento correto da rotação 
do player, depois de empregarmos os devidos códigos de movimento e rotação 
faremos outras configurações por aqui. 
Feito isso definimos a aparência de nosso Player Character, agora precisamos definir 
seus controles e em seguida configurar as animações. 
 
No Level Editor, clique em Edit e depois em Project Settings. 
 
 
Axis e Action Mappings 
Dentro de Project Settings procure do lado esquerdo a opção Input, ela é um dos 
itens pertencentes a aba Engine. 
 
Agora na opção Bindings nós definimos os mecanismos básicos de interação de 
nosso jogo com as teclas e botões de nossos controles. 
 
 
O que são AXIS e ACTION MAPPINGS? 
Toda ação que o nosso player faz, depende de interações com botões, nós podemos 
setar diretamente na Event Graph do Player a Barra de Espaço para pular e o botão 
W para correr, ou X do controle para atacar, mas como forma de dinamizar as 
definições e padrões de nossos controles, é possível criar aqui na aba Bindings os 
comandos gerais, e mais tarde instanciá-los como Nós Blueprints para definirmos os 
códigos. Isso facilita nossa vida de várias formas, uma delas é caso o nosso game 
tenha múltiplos players, as definições básicas de movimento e câmera que serão as 
mesmas para todos podem ser criadas aqui, e nó Event Graph de cada criaríamos 
apenas interações singulares com outros botões. 
O mapeamento de Axis, trabalha interações que dependem de um eixo para ocorrer, 
como o movimento do personagem e da câmera, permitem entradas que têm um 
alcance contínuo. Já as interações Actions são para pressionamentos de teclas e 
lançamentos, ou seja nãosão continuas. 
Clique 1 vez no + ao lado de Axis Mappings, note que surgiu uma seta ao lado 
esquerdo. 
 
 
Clicando nela acessamos um sub menu. 
 
 
 
Agora temos um caixa com o texto “NewAxisMapping”, e abaixo dela temos um menu 
onde é possível escolher teclas para diferentes tipos de interação. Renomeie o texto 
da caixa para um texto correspondente aos movimentos de “ir para frente e ir para 
trás” e escolha a tecla do teclado correspondente ao movimento de “frente”. 
 
A tecla “W” no teclado foi definida como interação de ir para frente, mas o texto do 
comando diz “FrenteTras” então precisamos de outra tecla que fará o comando 
contrário, para atribuirmos outra tecla a este evendo clicamos no símbolo +, dessa 
vez ao lado da caixa de texto que digitamos “FrenteTrasCMD”. 
 
 
Agora poderemos atribuir mais uma tecla a esta função, usaremos o “S” e para 
garantir que ao apertamos ele o personagem vá para trás deveremos colocar o valor 
negativo em Scale. 
 
 
Dessa forma ao apertamos “S” pegaremos os mesmos valores dos futuros códigos 
que atribuiremos a este evento (FrenteTrasCMD) porém esses valores serão 
negativos. Para adicionar mais Axis Mappings clique mais uma vez no símbolo + ao 
lado de Axis Mappings. Precisaremos de mais 3 eventos de interação e um Action 
Mapping. 
 
 
Conclua repetindo este esquema. 
 
 
Nós acabamos de definir Eventos de interação com os controles do jogo (no caso 
teclado e mouse) esses eventos serão validados quando fazermos a devida interação 
deles com os comandos Blueprints responsáveis pelo deslocamento do personagem. 
 
Antes de irmos para esse passo, vamos criar outra Classe Blueprint denominada 
GameMode. 
 
Game Mode 
 
O GameMode é responsável por algumas definições importantes em nosso projeto, 
uma delas é justamente a definição de quem é personagem que iremos controlar. 
Para criar um novo GameMode clique na opção Blueprints na Toolbar e siga o 
caminho mostrado na figura abaixo. 
 
Nomeie o novo GameMode como desejar e coloque-o em uma paste adequada nesta 
etapa da configuração. 
 
 
No GameMode Editor vá ao painel Detail, mais precisamente a opção Depauf Pawn 
Class. 
 
Após encontrar o nome que você colocou no seu Player clique nele definindo-o como 
o “protagonista” do jogo. 
Para que este GameMode funcione em sua fase você deve voltar ao Level Editor e ir 
no Menu World Settings. 
 
Ele fica em outra aba ao lado do painel Details. 
 
 
 
Na opção GameMode Override, clique e escolha o GameMode que você acabou de 
criar. 
 
Caso queira que este mesmo GameMode funcione em todas as fases do seu game de 
uma vez só, sem precisar ficar fazendo essa configuração no World Settings, vá ao 
Project Settings e clique em Maps Modes, ele é uma das opções de Projct. 
 
Certifique-se de que o seu GameMode esteja na Aba Defaut GameMode. 
 
 
Agora retorne ao Editor do nosso PlayerBP. 
Configurando Movimento 
 
 
 
Caso você veja essa expansão de Class Defauts ao abrir a classe Blueprint do Player, 
e queira voltar a visualizar o Editor da forma padrão, basta clicar no texto azul “Open 
“Full Blueprint Editor” localizado no topo da aba. 
Vamos agora para a Aba Event Graph. 
 
 
Selecione e delete esses nós nativos. Depois clique com o botão direito e traga os 
events Axis e Action que criamos, basta digitar o nome que demos a eles. 
 
Vamos configurar primeiro a interação FrenteTrasCMD. Precisaremos de um nó Add 
Moviment Input, para dizermos que este evento agora interagirá com os inputs de 
movimentação. 
 
 
Precisamos de um Vector como retorno de World Direction, o nó Get Forward Vector 
justamente trabalha nas direções correspondente, frente e trás. 
 
 
 
Fazemos dele a condição de World Direction. Lembre-se de compilar e salvar. 
 
 
Podemos testar nosso comando agora se quisermos e ao jogar o player na cena ao 
apertamos as teclas que escolhemos para FrenteTrasCMD, vamos o personagem se 
mover para frente e para trás. 
 
Caso não esteja funcionando corretamente retorne ao passe anterior e confira os 
nomes dos Nós e suas Ligações. 
Agora voltemos para o Event Graph do nosso Player e vamos configurar os 
movimentos de esquerda e direita. 
 
 
Repita o nó Add Moviment Input mas dessa vez o Vector trabalhará os valores de 
esquerda e direita, com isso escolheremos o nó Get Right Vector. Se dermos play na 
nossa fase agora, além de se mover para a frente e para trás o personagem se moverá 
para esquerda e direita também. 
Mas ele não está girando em seu eixo quando o movemos. Para que ele faça isso 
devemos clicar no Self do nosso player, que fica no topo do menu Components. 
 
Depois vamos desmarcar Use Control Rotation YAW, no painel Detail. 
 
 
Voltando ao Painel Components, dessa vez vamos em CharacterMoviment. Depois 
de clicar nesta opção procure no painel Details a opção Orient Rotation To 
Movement e marque. 
 
 
Agora ao dar play no Level nós podemos ver que o personagem gira respeitando o 
caminho que fazemos. 
 
Agora para a câmera... 
 
 
Tudo certo... Porém há alguma coisa errada com a rotação do player, será que você 
consegue identificar? 
Ao posicionarmos a câmera e apertamos para o player seguir, sua orientação 
permanece a mesma de quando o Level foi iniciado, ou seja, ele não respeita a 
orientação da câmera para mudar de direção, isso não deixa a jogabilidade muito 
atrativa. 
Para concertar isso precisamos unir os dois Vector, que são as funções de retorno de 
nossos eventos Axis a um Get Control Rotation. 
 
Utilizaremos os nós Make rotation e Break Rotation como intermediários, ligados 
pela rotação no eixo YAW 
 
 
Vamos agora testar se ao rotacionalrmos a câmera o player segue as novas direções 
que a câmera determinar como frente, costas e esquerda e direita... 
 
Ótimo, agora vamos configurar os comandos do pulo. Basta adicionar o nó Jump e 
Stop jump ao evento que criamos. 
 
 
 
Perfeito! Nosso player se move para todos os lados, pula e sua câmera orienta seu 
eixo de movimentação, e também se move bem nos eixos determinados, agora 
podemos passar pra o próximo passo, configurar as animações. 
Animation Blueprint 
Importe as animações correspondentes ao seu player, elas têm de ter Idle (animação 
onde o personagem encontra-se de pé em repouso), andar, correr saltar e caindo. 
Na hora de importar a animação marque o Skeleton como o do seu player. 
 
 
Com as animações em sua devida pasta, iremos agora criar um Animation Blueprint. 
 
 
Para criarmos um Animation Blueprint clique com o botão direito em um espaço 
vazio do Content Browser e siga o caminho ilustrado abaixo. 
 
Nesta próxima opção definimos o esqueleto do personagem, AnimStance e clicamos 
em OK. 
 
 
 
 
Este é Anim Editor devemos criar um novo Estado de Animação para 
prosseguirmos. Clique com o botão direito do mouse e digite Add New State 
Machine. 
 
Renomeie o novo State Machine como achar melhor e faça a ligação demonstrada 
abaixo. 
 
 
Clique duas vezes no State Machine que você adicionou para entrar em outra camada 
da edição de animações. 
 
O nó Entry define o estado primário da animação, tudo que ligarmos a ele será 
imediatamente executado. Vamos fazer um pequeno teste. Note que na aba abaixo 
denominada Asset Bowser estão listadas todas as animações que importamos para 
este personagem. Clique em uma delas e arraste até ao lado de Entry. 
Agora puxe uma ligação de Entry até o nó que contém a animação que arrastamos. 
 
 
Para testarmos nosso Animation Blueprintprecisamos selecioná-lo no Blueprint de 
nosso player, então vamos compilar e salvar essa animação e abrir o PlayerBP. 
Clique no Mesh do player na aba Components, depois no painel Details procure Anim 
Class. 
 
 
 
Procure na lista que aparece o Animation Blueprint que você criou e clique nele para 
definí-lo para seu personagem. 
Repare que assim que fazemos isso o personagem incorpora automaticamente a 
animação que ligamos ao nó Entry. 
 
 
Caso dermos Player em nosso jogo agora, notamos que, não iporta qual comando 
dermos o personagem responderá a todos com a mesma animação. Isso não é 
interessante para nosso projeto, então vamos prosseguir para o próximo passo. 
Entendemos agora como funciona a interação de animações com o Entry. 
Precisamos agora fazer com que o personagem produza animações mais realistas 
de respostas, como ficar parado quando não o movemos e dobrar os joelhos e 
impulsionar-se para cima quando apertamos o comando de pular. Para o primeiro 
exemplo precisamos criar um Blad Space 1D. 
 
Blend Space 1D 
Clique com o botão direito no Content Browser e siga mais uma vez a imagem abaixo 
para criar um Blend Space 1D 
Blend Spaces são Assets especiais que permitem um arranjo e mistura de 
animações com base nos valores de duas entradas. A mistura simples entre duas 
animações com base em uma única entrada pode ser realizada usando um dos nós 
de mistura padrão disponíveis em Animation Blueprints. Os Blend Spaces fornecem 
um meio de fazer misturas mais complexas 
entre várias animações baseadas em múltiplos valores. 
 
 
 
 
Para configurarmos nossa Mistura de animações precisamos colocar uma animção 
para o estado zero e outra em outro ponto em que o personagem aumente sua 
velocidade. 
 
 
Nomeie o BlendSpace levando em conta que haverão trnasições de 
estados de animação, como Parado, andando e correndo, é sempre 
bom deixar uma pista no texto que nomamos nossas classes, do que 
essas se tratam. 
 
Vamos arrastar a animação de Idle do Asset Browser até o marco 0 na linha de 
transição. 
 
Agora vamos colocar a animação em que personagem corre no marco 100. 
 
Note que transitar o mouse entre os 2 estados vemos a transição suave dos 
mesmos. Agora criamos uma animação de transição, para que o nosso personagem 
saia do estado repouso para o movimento de forma mais agradável aos nossos 
olhos. 
Precisamos agora voltar ao Animation Blueprint para configurarmos corretamente 
nosso Blend Space lá. Salve e abra o Animation. 
 
 
Delete esse nó que ligamos a Entry, como teste. E agora arraste nossa recém-criada 
Blend Space 1D para essa mesma ligação. 
 
Clique 2 vezes para acessar o nó que contém nosso BlendSpace 1D. 
Nós vemos agora um nó que representa uma instancia de nosso BlendSpace 1D, ele 
contém uma condição None, que possui um zero, seguido de uma vírgula e um 
monte de outros zeros. Vamos entender de que forma essa condição influencia na 
nossa BlendSpace 1D? lembra que lá colocamos a animação Idle no marco 0 e 
correr no marco 100? Então veja o que acontece com a figura do seu player quando 
digitamos 100 na condição None e compilamos. 
 
 
O personagem no topo esquerdo agora corre. Isso acontece pois acabamos de 
acessar aquela reta da Blend Space 1D. O processo que vamos iniciar agora nos 
garantirá que essa mesma reta seja acessada por nossos botões de interação. 
Crie uma variável Float com o nome “Velocidade” e a arraste pra cena a conectando 
como condição de nossa BlendSpace1D. 
 
Agora vamos na aba ao lado EventGraph. 
 
 
Arraste a variável, dessa vez como Set, e faça a seguinte ligação. 
 
Para acessarmos os Inputs do personagem precisamos dos nós Get Velocity e 
Vector Lengh, arraste uma ligação de Try Get Pawn Owner e chame um nó depois o 
outro. 
 
 
Vamos agora testar no game nosso progresso. 
 
Perfeito! 
Agora vamos a animação de Pulo. 
Voltemos para Animation BP. 
 
 
 
 
 
Editando Animações 
 
 
Precisamos criar um esquema com 3 animação para o pulo, uma animação de início 
de pulo, outra para quando o personagem estiver em queda e outra com o final do 
pulo, porém temos no exemplo 2 animações de pulo, uma em que o personagem 
inicia um pouco antes do salto e termina um pouco depois de pousar no chão, e 
outra em que o personagem está caindo até que encontra o chão. Nós temos então 
de editar estas duas animações para funcionarem corretamente dentro de nosso 
esquema. Para isso vá até a pasta de animações e duplique a animação de Pulo. 
 
Clique 2 vezes para editar a do início. 
Pause a animação para trabalhar melhor. Posicione a barra vermelha manualmente 
um pouco antes do personagem tirar os pés do chão, pouquíssimos frames antes. 
 
 
Clique com o botão direito sobre a posição escolhida e apague os frames iniciais. 
 
Mova manualmente a barrinha vermelha até um pouco depois que os pés saem do 
chão, e apague os frames depois da marcação atual. 
 
 
Salve e pronto temos o início do nosso pulo. Vamos abrir agora a próxima animação, 
Pulo Final. 
Dessa vez mova os frames até antes dos pés retornarem ao chão, e apague os 
anteriores. 
 
Depois que ele encostar no chão e dobrar um pouquinho os joelhos apague os frames 
seguintes. 
 
 
Salve. Caso a animação de queda precise de edição faça também. 
 
Configurando Animação de Pulo 
Vamos agora voltar ao Animation Blueprint. 
 
Arraste as 3 animações para ficarem nesse esquema mostrado. Agora vamos fazer 
as ligações entre esses estados, começando do Bland Space 1D para Pulo_inicio e 
terminando de Pulo_Final a Bland Space 1D. 
 
 
Note que agora nossas ligações possuem um círculo branco no meio, é ai que 
definiremos a condição de transição do pulo, e parte do processo de interação com 
os controladores. 
Clique 2 vezes no círculo entre a Bland Space 1D e Pulo_inicio. 
 
Devemos aqui criar uma variável Bolean que indique se o pulo é verdadeiro ou falso. 
 
 
Repita os seguintes esquemas respectivamente para os próximos nós. 
 
Antes de irmos para o próximo passo certifique-se de que todas as animações não 
estão em Loop. Clique duas vezes em cada um dos nós das animações da sequência 
de pulo e desmarque Loop Animator. Repita isso nas 3 animações de pulo. 
, 
 
 
 
 
Conclusão 
Agora vamos ao EventGraph e fazemos o seguinte esquema para acessarmos a 
animação de pulo corretamente ao apertar a Barra de Espaço no game. 
 
Vamos ao teste. 
 
 
 
Perfeito! 
 E assim concluímos nossas configurações básicas para um Player de um prjeto 
Third Person. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Configurando Player Character 
Side Scroller 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Configurando Player Character 
Side Scroller 
Neste capítulo veremos como configurar um personagem jogável a partir de um 
projeto Blank da Engine Unreal 4, convertendo o projeto para a jogabilidade Side 
Scroller. Iremos definir seus controles de interação bem como suas animações de 
resposta. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Configurações Iniciais 
Como dito anteriormente, este projeto terá como base um template Blank, com isso 
selecione este template, certifique-se de estar na aba Blueprint, e não C++. 
 
Após o Unreal Editor ter iniciadocrie umapasta para o personagem que você deseja 
trazer, dentro desta paste crie mais 3 pastas, para Textura, Material e Animação. 
Feito isso clique no botão Import localizado no menu Content Browser. 
 
Traga o modelo 3D do personagem que deseja configurar. É importante certificar-se 
que este modelo possua esqueleto, caso contrário não será possível atrelar as 
animações a ele. 
 
 
 
Este painel possui configurações de importação, ele é dividido em 4 abas: 
Configurações de Mesh; Animação; Transformação e Materal. Não faremos 
alterações neste menu para o nosso personagem, mas caso você queira trazer 
animações junto do mesh marque Import Animations, para alterar a escala do 
personagem caso ele venha muito pequeno ou muito grande para Engine reimporte 
e configure Import Uniform Scale. Caso você prefira configurar o material, do zero, 
dentro da Unreal, desmarque Import Materials ou Import Textures. 
 
Além do mesh mais 2 arquivos são importados Physics Assets e o Skeleton. Caso seu 
modelo tenha vindo com muitos materiais e texturas soltos organize-os nas pastas 
correspondentes. Depois do mesh importado e organizado iremos agora criar uma 
Classe Blueprint do tipo Character. Para isso clique com o botão direito do mouse 
num espaço vazio dentro da pasta do Player, e escolha a opção Blueprint Class. 
 
 
Após informar que queremos criar uma nova classe Blueprint devemos agora 
escolher qual tipo de classe queremos criar. Interagiremos agora com o painel Pick 
Parent Class, para nosso player devemos escolher Character. 
 
Nomeie a nova classe como quiser, uma dica é colocar as siglas BP depois do nome 
escolhido para identificar com facilidade no futuro, que se trata de uma classe 
Blueprint. 
 
 
Vamos agora configurar nosso Player Blueprint, clique duas vezes no seu ícone para 
abrirmos o editor. 
 
 
 
No painel Components clique na opção Mesh. Agora vá 
no painel Details (a direita) e na aba Mesh abara as 
opções clicando na seta ao lado de None. Escolha o 
modelo 3D do player que você acabou de importar. 
 
 
 
Normalmente ele vem rotacionado de forma diferente das configurações do player, 
para posicioná-lo de forma correta basta girar o mesh até o lado da frente dele 
respeitar a direção que o ArrowComponent aponta, -90 graus no eixo Z no nosso 
exemplo. 
 
Depois disso é interessante fazer o mesh do personagem respeitar a altura da 
capsula, suba-o até que seus pés fiquem dentro da base da capsula. 
 
 
Agora vamos adicionar 2 componente essenciais para nosso Player. Clique no botão 
verde Add Component, fica no topo do painel Component. Procure por “ApringArm” 
e clique nele para adicionar. 
 
Agora procure por Camera para adicionar este componente também. 
 
O ApringArm é responsável por regular a distância da câmera para o Player com isso 
a câmera deve estar atrelada a ele. Para atralarmos a câmera aqui devemos torna-la 
“Child” do ApringArm, arraste a câmera até o Srping Arm e solte nele para isso. Note 
que depois disso a câmera foi sozinha até a outra extremidade do ApringArm. 
 
 
Feito isso clique em SrpingArm e no painel Details marque a opção “Use Pawn 
Control Rotation”. Vamos fazer mais 2 configurações agora. Ainda no painel Detail, 
vamos inverter a posição da câmera para com o player aumentar a altura do braço, 
ponha - 500 em Target Arm Length e em target Offset marcamos 150 somente no 
eixo Z, isso erguerá um pouco o SpringArm. 
 
Agora vamos clicar na Camera, lá no painel Components, para ajustar sua visão do 
player. No seu painel Detail em Rotation eixo y vamos colocar o valor 334, isso fará 
com que ela se centralize no Player. 
Feito isso definimos a aparência de nosso Player Character, agora precisamos definir 
seus controles e em seguida configurar as animações. 
No Level Editor, clique em Edit e depois em Project Settings. 
 
 
 
Axis e Action Mappings 
Dentro de Project Settings procure do lado esquerdo a opção Input, ela é um dos 
itens pertencentes a aba Engine. 
 
Agora na opção Bindings nós definimos os mecanismos básicos de interação de 
nosso jogo com as teclas e botões de nossos controles. 
 
 
O que são AXIS e ACTION MAPPINGS? 
Toda ação que o nosso player faz, depende de interações com botões, nós podemos 
setar diretamente na Event Graph do Player a Barra de Espaço para pular e o botão 
W para correr, ou X do controle para atacar, mas como forma de dinamizar as 
definições e padrões de nossos controles, é possível criar aqui na aba Bindings os 
comandos gerais, e mais tarde instanciá-los como Nós Blueprints para definirmos os 
códigos. Isso facilita nossa vida de várias formas, uma delas é caso o nosso game 
tenha múltiplos players, as definições básicas de movimento e câmera que serão as 
mesmas para todos podem ser criadas aqui, e nó Event Graph de cada criaríamos 
apenas interações singulares com outros botões. 
O mapeamento de Axis, trabalha interações que dependem de um eixo para ocorrer, 
como o movimento do personagem e da câmera, permitem entradas que têm um 
alcance contínuo. Já as interações Actions são para pressionamentos de teclas e 
lançamentos, ou seja não são continuas. 
Clique 1 vez no + ao lado de Axis Mappings, note que surgiu uma seta ao lado 
esquerdo. 
 
 
Clicando nela acessamos um sub menu. 
 
 
 
Agora temos um caixa com o texto “NewAxisMapping”, e abaixo dela temos um menu 
onde é possível escolher teclas para diferentes tipos de interação. Renomeie o texto 
da caixa para um texto correspondente aos movimentos de “ir para Direita e ir para 
Esquerda” e escolha a tecla do teclado correspondente ao movimento de “Direita”. 
 
A tecla “D” no teclado foi definida como interação de ir para direita, mas o texto do 
comando diz “DirEsqMov” então precisamos de outra tecla que fará o comando 
contrário, para atribuirmos outra tecla a este evendo clicamos no símbolo +, dessa 
vez ao lado da caixa de texto que digitamos “DirEsqMov”. 
 
Agora poderemos atribuir mais uma tecla a esta função, usaremos o “A” e para 
garantir que ao apertamos este botão o personagem vá para esquerda deveremos 
colocar o valor negativo em Scale. 
Dessa forma ao apertamos “A” pegaremos os mesmos valores dos futuros códigos 
que atribuiremos a este evento (DirEsqMov) porém esses valores serão negativos. 
 
 
Conclua repetindo este esquema. 
 
 
Nós acabamos de definir Eventos de interação com os controles do jogo (no caso 
teclado e mouse) esses eventos serão validados quando fazermos a devida interação 
deles com os comandos Blueprints responsáveis pelo deslocamento do personagem. 
Antes de irmos para esse passo, vamos criar outra Classe Blueprint denominada 
GameMode. 
 
 
Game Mode 
O GameMode é responsável por algumas definições importantes em nosso projeto, 
uma delas é justamente a definição de quem é personagem que iremos controlar. 
Para criar um novo GameMode clique na opção Blueprints na Toolbar e siga o 
caminho mostrado na figura abaixo. 
 
 
Nomeie o novo GameMode como desejar e coloque-o em uma paste adequada nesta 
etapa da configuração. 
 
No GameMode Editor vá ao painel Detail, mais precisamente a opção Depauf Pawn 
Class. 
 
Após encontrar o nome que você colocou no seu Player clique nele definindo-o como 
o “protagonista” do jogo. 
Para que este Game Mode funcione em sua fase você deve voltar ao Level Editor e ir 
no Menu World Settings. 
 
 
Ele fica em outra aba ao lado do painel Details. 
 
 
Na opção GameMode Override, clique e escolha o GameMode que você acabou de 
criar. 
 
Caso queira que este mesmo GameMode funcione em todas as fases do seu game de 
uma vez só, sem precisar ficar fazendo essa configuraçãono World Settings, vá ao 
Project Settings e clique em Maps Modes, ele éuma das opções de Projct. 
 
 
Certifique-se de que o seu GameMode esteja na Aba Defaut GameMode. 
 
Agora retorne ao Editor do nosso PlayerBP. 
Configurando Movimento 
 
 
 
Caso você veja essa expansão de Class Defauts ao abrir a classe Blueprint do Player, 
e queira voltar a visualizar o Editor da forma padrão, basta clicar no texto azul “Open 
“Full Blueprint Editor” localizado no topo da aba. 
Vamos agora para a Aba Event Graph. 
 
Selecione e delete esses nós nativos. Depois clique com o botão direito e traga os 
events Axis e Action que criamos, basta digitar o nome que demos a eles. 
 
 
Vamos configurar primeiro a interação DirEsqMov. Precisaremos de um nó Add 
Moviment Input, para dizermos que este evento agora interagirá com os inputs de 
movimentação. Em World Direction adicione o valor de - 1.0 a Y. 
 
 
Podemos testar nosso comando agora se quisermos e ao jogar o player na cena ao 
apertamos as teclas que escolhemos para DirEsqMov, vamos o personagem se 
mover para direita e para esquerda. 
 
 
Caso não esteja funcionando corretamente retorne ao passe anterior e confira os 
nomes dos Nós e suas Ligações. 
Mas ele não está girando em seu eixo quando o movemos. Para que ele faça isso 
devemos clicar no Self do nosso player, que fica no topo do menu Components. 
 
Depois vamos desmarcar Use Control Rotation YAW, no painel Detail. 
 
 
Voltando ao Painel Components, dessa vez vamos em CharacterMoviment. Depois 
de clicar nesta opção procure no painel Details a opção Orient Rotation To 
Movement e marque. 
 
 
Agora ao dar play no Level nós podemos ver que o personagem gira respeitando o 
caminho que fazemos. 
Ótimo, agora vamos configurar os comandos do pulo. Basta adicionar o nó Jump e 
Stop jump ao evento que criamos. 
 
 
 
Perfeito! Nosso player se move para direita e esquerda e pula! Agora podemos 
passar para o próximo passo, configurar as animações. 
Animation Blueprint 
Importe as animações correspondentes ao seu player, elas têm de ter Idle (animação 
onde o personagem encontra-se de pé em repouso), andar, correr saltar e caindo. 
Na hora de importar a animação marque o Skeleton como o do seu player. 
 
 
Com as animações em sua devida pasta, iremos agora criar um Animation Blueprint. 
 
 
 
Para criarmos um Animation Blueprint clique com o botão direito em um espaço 
vazio do Content Browser e siga o caminho ilustrado abaixo. 
 
Nesta próxima opção definimos o esqueleto do personagem, AnimStance e clicamos 
em OK. 
 
 
 
 
Este é Anim Editor devemos criar um novo Estado de Animação para 
prosseguirmos. Clique com o botão direito do mouse e digite Add New State 
Machine. 
 
Renomeie o novo State Machine como achar melhor e faça a ligação demonstrada 
abaixo. 
 
Clique duas vezes no State Machine que você adicionou para entrar em outra camada 
da edição de animações. 
 
 
O nó Entry define o estado primário da animação, tudo que ligarmos a ele será 
imediatamente executado. Vamos fazer um pequeno teste. Note que na aba abaixo 
denominada Asset Bowser estão listadas todas as animações que importamos para 
este personagem. Clique em uma delas e arraste até ao lado de Entry. 
Agora puxe uma ligação de Entry até o nó que contém a animação que arrastamos. 
 
Para testarmos nosso Animation Blueprint precisamos selecioná-lo no Blueprint de 
nosso player, então vamos compilar e salvar essa animação e abrir o PlayerBP. 
Clique no Mesh do player na aba Components, depois no painel Details procure Anim 
Class. 
 
 
 
 
Procure na lista que aparece o Animation Blueprint que você criou e clique nele para 
definí-lo para seu personagem. 
Repare que assim que fazemos isso o personagem incorpora automaticamente a 
animação que ligamos ao nó Entry. 
 
Caso dermos Player em nosso jogo agora, notamos que, não iporta qual comando 
dermos o personagem responderá a todos com a mesma animação. Isso não é 
interessante para nosso projeto, então vamos prosseguir para o próximo passo. 
Entendemos agora como funciona a interação de animações com o Entry. 
Precisamos agora fazer com que o personagem produza animações mais realistas 
de respostas, como ficar parado quando não o movemos e dobrar os joelhos e 
impulsionar-se para cima quando apertamos o comando de pular. Para o primeiro 
exemplo precisamos criar um Blad Space 1D. 
 
 
 
 
 
Blend Space 1D 
Clique com o botão direito no Content Browser e siga mais uma vez a imagem abaixo 
para criar um Blend Space 1D 
Blend Spaces são Assets especiais que permitem um arranjo e mistura de 
animações com base nos valores de duas entradas. A mistura simples entre duas 
animações com base em uma única entrada pode ser realizada usando um dos nós 
de mistura padrão disponíveis em Animation Blueprints. Os Blend Spaces 
fornecem um meio de fazer misturas mais complexas 
entre várias animações baseadas em múltiplos valores. 
 
 
 
Para configurarmos nossa Mistura de animações precisamos colocar uma animção 
para o estado zero e outra em outro ponto em que o personagem aumente sua 
velocidade. 
 
Nomeie o BlendSpace levando em conta que haverão trnasições de 
estados de animação, como Parado, andando e correndo, é sempre 
bom deixar uma pista no texto que nomamos nossas classes, do qu e 
essas se tratam. 
 
 
Vamos arrastar a animação de Idle do Asset Browser até o marco 0 na linha de 
transição. 
 
Agora vamos colocar a animação em que personagem corre no marco 100. 
 
 
Note que transitar o mouse entre os 2 estados vemos a transição suave dos 
mesmos. Agora criamos uma animação de transição, para que o nosso personagem 
saia do estado repouso para o movimento de forma mais agradável aos nossos 
olhos. 
Precisamos agora voltar ao Animation Blueprint para configurarmos corretamente 
nosso Blend Space lá. Salve e abra o Animation. 
 
Delete esse nó que ligamos a Entry, como teste. E agora arraste nossa recém criada 
Blend Space 1D para essa mesma ligação. 
 
 
Clique 2 vezes para acessar o nó que contém nosso BlendSpace 1D. 
Nós vemos agora um nó que representa uma instancia de nosso BlendSpace 1D, ele 
contem uma condição None, que possui um zero, seguido de uma vírgula e um 
monte de outros zeros. Vamos entender de que forma essa condição influencia na 
nossa BlendSpace 1D? lembra que lá colocamos a animação Idle no marco 0 e 
correr no marco 100? Então veja o que acontece com a figura do seu player quando 
digitamos 100 na condição None e compilamos. 
 
O personagem no topo esquerdo agora corre. Isso acontece pois acabamos de 
acessar aquela reta da Blend Space 1D. O processo que vamos iniciar agora nos 
garantirá que essa mesma reta seja acessada por nosso botões de interação. 
Crie uma variável Float com o nome “Velocidade” e a arraste pra cena a conectando 
como condição de nossa BlendSpace1D. 
 
 
Agora vamos na aba ao lado EventGraph. 
 
Arraste a variável, dessa vez como Set, e faça a seguinte ligação. 
 
 
Para acessarmos os Inputs do personagem precisamos dos nós Get Velocity e 
Vector Lengh, arraste uma ligação de Try Get Pawn Owner e chame um nó depois o 
outro. 
 
Vamos agora testar no game nosso progresso. 
 
 
Perfeito! 
Agora vamos a animação de Pulo. 
Voltemos para Animation BP. 
Editando Animações 
 
 
 
Precisamos criar um esquema com 3 animação para o pulo, uma animação de inicio 
de pulo, outra para quando o personagem estiver em queda e outra com o final do 
pulo, porém temos no exemplo 2 animaçõesde pulo, uma em que o personagem 
incia um pouco antes do salto e termina um pouco depois de pousar no chão, e 
outra em que o personagem está caindo até que encontra o chão. Nós temos então 
de editar estas duas animações para funcionarem corretamente dentro de nosso 
esquema. Para isso vá até a pasta de animações e duplique a animação de Pulo. 
 
Clique 2 vezes para editar a do início. 
Pause a animação para trabalhar melhor. Posicione a barra vermelha manualmente 
um pouco antes do personagem tirar os pés do chão, pouquíssimos frames antes. 
 
Clique com o botão direito sobre a posição escolhida e apague os frames iniciais. 
 
 
Mova manualmente a barrinha vermelha até um pouco depois que os pés saem do 
chão, e apague os frames depois da marcação atual. 
 
Salve e pronto temos o início do nosso pulo. Vamos abrir agora a próxima animação, 
Pulo Final. 
Dessa vez mova os frames até antes dos pés retornarem ao chão, e apague os 
anteriores. 
 
 
Depois que ele encostar no chão e dobrar um pouquinho os joelhos apague os frames 
seguintes. 
 
Salve. Caso a animação de queda precise de edição faça também. 
 
 
 
 
 
 
 
 
 
Configurando Animação de Pulo 
Vamos agora voltar ao Animation Blueprint. 
 
Arraste as 3 animações para ficarem nesse esquema mostrado. Agora vamos fazer 
as ligações entre esses estados, começando do Bland Space 1D para Pulo_inicio e 
terminando de Pulo_Final a Bland Space 1D. 
 
Note que agora nossas ligações possuem um círculo branco no meio, é ai que 
definiremos a condição de transição do pulo, e parte do processo de interação com 
os controladores. 
Clique 2 vezes no círculo entre a Bland Space 1D e Pulo_inicio. 
 
 
Devemos aqui criar uma variável Bolean que indique se o pulo é verdadeiro ou falso. 
 
Repita os seguintes esquemas respectivamente para os próximos nós. 
, 
 
 
Antes de irmos para o próximo passo certifique-se de que todas as animações não 
estão em Loop. Clique duas vezes em cada um dos nós das animações da sequência 
de pulo e desmarque Loop Animator. Repita isso nas 3 animações de pulo. 
 
 
 
 
 
 
 
 
 
 
 
 
Conclusão 
Agora vamos ao EventGraph e fazemos o seguinte esquema para acessarmos a 
animação de pulo corretamente ao apertar a Barra de Espaço no game. 
 
Vamos ao teste. 
 
 
Perfeito! 
 E assim concluímos nossas configurações básicas para um Player de um projeto 
SideScroller. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Adicionando Animações 
Animation Blueprint e Animation Montage 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Adicionando Animações no State Machine 
Neste capítulo iremos adicionar animações ao nossos game characters, deixando as 
interações mais dinâmicas e arrojadas. Iremos adicionar direto no State Machine, e 
também aprenderemos a usar o Animation Montage. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Template do Projeto 
Para este projeto precisaremos de um Player já configurado com as animações 
básicas, como mostrado nos capítulos anteriores, e além dessas outras animações 
como combate e movimentação diferente, para adicionarmos ao projeto. 
 
 
Importe as novas animações que adicionaremos ao nosso Player Character, no 
exemplo iremos adicionar outra animação de correr, e 3 de combate. 
Vamos agora criar um BlendSpace 1D de nosso novo estado de movimentação. (para 
informações sobre como criar uma BlendSpace 1D vá a página 38) 
As animações deste exemplo farão o personagem parecer estar segurando uma 
tocha, porém você pode usar animações que façam o personagem parecer ferido ou 
andando sobre um lago, ou coisa parecida. 
 
Coloque no frame 0 o Idle deste novo estado, e no frame correspondente ao 
MaxWalk Speed, aqui é 50, a animação de correspondente ao novo estado correndo. 
 
 
Anim Graph do Animation Blueprint do player, e entre no State Machine. 
 
Ao abrirmos neste exemplo temos apenas o nó advindo do BlandSpace 1D com as 
animações bases do player. Iremos adicionar o novo BlendSpace 1D arrastando-o 
para o Anim Graph. 
 
 
Arraste e solte o novo BlendSpace no Anim Graph. Apartir do primeiro nó 
Blendspace, puxe uma ligação até o novo nó, retorne a partir desse último ao 
primeiro com outra ligação logo em seguida, como mostra a figura abaixo. 
 
Acessando o novo nó, adicione a variável correspondente a “Velocidade” do player 
ao nó interno do BlendSpace. 
 
 
Agora devemos clicar 2 vezes nos símbolos redondos que aparecerão entre as 
ligações para ter acesso a condição. 
 
 
Crie uma variável boleana para a condição de nosso novo estado. 
 
Na condição de ida colocamos a variável direta com o nó nativo Result. Já na 
condição de volta ao estado anterior, devemos colocar um NOT boleano, entre esses. 
 
 
Devemos agora criar uma comunicação entre essa condição e o player. Abra então o 
Event Graph do player character e lá crie uma variável boleana, aqui foi criada 
Tochamodo. 
 
Feito isso, abra novamente o Animation Blueprint do player e na aba EventGraph, 
traga o nó Cast To... aparecerão algumas opções, escolha a que segue com o nome do 
Player Blueprint, no caso do exemplo aqui foi Cast To Third Person Character. Não 
esqueça de conectar Get Player Character a Object em Cast To. 
 
Arraste uma ligação de As (o nome do seu character) e busque a variável que 
acabamos de criar, escolha Get como mostra a figura a cima. Essa variável será a 
condição da variável ModoTocha que criamos aqui no Animation Blueprint. 
 
 
Pronto! Acabamos de determinar que sempre que a variável Tochamodo no Player 
for verdadeira, a variável ModoTocha no Animation Blueprint também será, e 
quando isso ocorre o StateMachine trocará de Blendspace do personagem andando 
de “Normal” para “ComTocha”. 
Essa troca de estados pode ocorrer de várias formas diferentes, podemos definir no 
Event Graph do Player que ao apertar a tecla “F” Tocha modo será verdadeira. 
 
 
 
Ou podemos colocar Trigger Volume no level e ativarmos em Open Level Blueprint, 
a animação de correr com a tocha, somente ao passar nesse Triggler. 
 
 
 
 
 
 
 
 
Adicionando Animações Com Animation Motage 
Vamos adicionar agora ao mesmo projeto algumas animações de combate com o 
auxílio do Animation Montage. 
Primeiro, Importe as animações de combate. Clique com botão direito sobre cada 
uma e siga a imagem abaixo para criar o Animation Montage. 
 
Para organizar melhor nossas animações, coloque todas as criadas em uma pasta 
denominada Animation Montage. 
 
 
Temos aqui 3 animações de combate. Agora abra o Animation Blueprint do Player. 
Adicione um Defaut Slot entre o StateMachine e o Final Animation Pose. 
 
 
 
Clique agora na Lupa, na aba Sethings para nomearmos nosso Slote. 
 
No painel “Anim Slot Manager” clique na pasta com o texto Add Slot, e nomeie de 
acordo com o tipo de animação que você deseja chamar, no caso do exemplo está 
nomeada como Combate. 
 
Agora volte ao Anim Graph e em Slot Name mude o nome do slot para o nome que 
acabou de criar. 
 
 
 
Definimos com isso um Slot dentro de Animation BLueprint que “Puchará” filtrará 
as montagens de animações, desde que elas estejam configuradas adequadamente 
para pertencerem a este Slot, é o que faremos no próximo passo. 
Abra o Editor de cada Animation Montage criada e mude DefautGrup como mostra 
a figura abaixo: 
 
 
 
 
 
Você deve fazer issoem todos os Animations Montage que queira “puxar” do nó 
combate. 
Agora no Event Graph do Player Blueprint, chame o Nó Play Anim Montage, e atribua 
um botão para ativá-lo. 
 
Na opção Anim Montage, escolha uma das animações da lista. Tem de ser uma das 
que você acabou de configurar. 
 
 
Após compilar podemos conferir que ao Apertamos o botão correspondente ao 
evento, o personagem desferirá o golpe. 
 
 
Vamos deixar sua luta mais dinâmica agora. Conforme a imagem abaixo arraste uma 
ligação de Anim Montage e solte em um local vazio, escolha a opção “Promote to a 
Variable”. 
 
Criamos assim uma variável capas de carregar nela uma das montagens de 
animação. 
 
 
Para darmos vários golpes apertando o mesmo botão devemos atribuir entre o 
evento e a função um nó chamado Switch on Int. 
 
Esse nó permite criarmos nele múltiplos Pins de saídas (output) clicando em Add 
Pin. Como temos 3 animações de golpe vamos adicionar mais 2 Pins. 
 
 
Vamos agora arrastar nossa variável “Anim Mont” e escolher Set, depois criar 2 
cópias da mesma. 
 
Como fizemos com Play Anim Montage, vamos adicionar as animações de combate 
direto nas variáveis. 
Atrinua agora a função Randim Integer in Rage ao nó Switch para que possamos 
carregar as animações com um clique de forma randômica. 
 
 
Atenção a configuração da função Random Integer, onde Min e Max setam a 
quantidade de Pins que possuem o Switch a ele ligado. 
Vamos testar nosso código? 
 
Pronto! Agora podemos transitar entre as 3 animações de luta de forma randômica 
com o mesmo comando. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Inteligência Artificial I 
Perseguição 
 
 
Inteligência Artificial I 
Projeto Perseguição 
Neste capitulo estaremos aprendendo conceitos básicos sobre inteligência artificial 
dentro da ferramenta Unreal Engine 4, aprenderemos desde tópicos até a 
implementação de um sistema de perseguição. 
 
Template do projeto 
Precisaremos de um template para iniciarmos nossos estudos. Optei por utilizarmos 
template em terceira pessoa, pois não precisaremos nos preocupar com a 
implementações básica de controle do jogador que já fora visto, bem como a 
construção de um mapa para possíveis testes. 
Lista de Passos: 
• Executar o Laucher 
• Criar um projeto em Blueprint 
• Definir as configurações iniciais 
Primeiramente execute o Launcher da Epic Games e em seguida clique em 
Inicializar. 
 
Em seguida surgira uma nova janela. Nela iremos definir as configurações básicas 
do nosso projeto. 
Escolheremos Novo projeto e escolheremos faze-lo em Blueprint, definiremos que 
o template a ser usado será o de terceira pessoa e então escolheremos o local onde 
será salvo e seu respectivo nome. 
 
 
 
Configurando a IA 
Com o projeto já criado podemos então começar a desenvolver nosso inimigo. 
Deveremos criar um Character que seja nosso inimigo e então atribuir a ele um 
AIController que irá controlar nosso inimigo, em seguida precisaremos definir uma 
área de atuação e então colocar o nosso inimigo na cena para que comece a seguir 
nosso jogador. 
 
Como já vimos, quando criamos um Character, que nada mais é que um Pawn com 
algumas funcionalidades características de player, estamos definindo um 
personagem, porém não é nele que definimos como iremos controla-lo e sim em seu 
PlayerController. 
O mesmo ocorre com a inteligência artificial, precisaremos de um AIController que 
irá definir como nosso inimigo será controlado, será nele que iremos programar as 
decisões e ações a serem tomadas. 
 
• Criar um novo Character “CH_IA1” 
• Fazer Configurações básicas 
• Criar um novo AIController “AIC_AI1” 
• Atribuir AIC_AI1 para CH_IA1 
Agora criaremos uma nova pasta dentro de Content chamada IA1 e nela iremos criar 
um novo Blueprint do tipo Character e definiremos seu nome como CH_IA1, este 
será o nosso inimigo. 
 
 
Abra o Blueprint que acabamos de criar selecione o componente Mesh na aba 
“Components” e defina qual o Skeletal Mesh que será usado, neste caso irei usar o 
padrão. 
 
Defina o “Anim Class” como ThirdPerson_AnimBP, e posicione seu personagem 
como na imagem. 
 
 
Até o momento definimos nosso personagem, mas ainda não definimos quem irá 
controla-lo, como este será um inimigo, não será controlado pelo jogador e então 
não poderemos usar o PlayerController, neste caso iremos definir que ele será 
controlado por uma inteligência artificial, ou seja, iremos criar um AIController e 
atribuiremos ao personagem este controlador. 
Crie um novo Blueprint, mas agora pesquise em All Classes o tipo AIController e 
defina seu nome para AIC_IA1. 
 
Ficaremos então com a seguinte configuração de arquivos. 
 
 
O próximo passo é definir o controlador do nosso CH_IA1 para AIC_IA1. Para isso 
devemos abrir o CH_IA1 selecionar em Components o componente self e então na 
aba details altera o valor de AI Controller Class para IAC_IA1. 
 
Pronto com isso nossa configuração da inteligência artificial está pronta, pois 
criamos um personagem e definimos que ele será controlado pelo controlador de 
inteligência artificial que criamos. 
Programando a IA 
Agora que temos nosso inimigo configurado vamos programar a IA, ou seja, como 
ele irá atuar sobre o local onde está, em nosso caso iremos fazer com que o inimigo 
sempre encontre o player e comece a segui-lo para sempre. 
Como este é um comportamento de controle sobre o inimigo, vamos ter que definir 
a programação no AIController que criamos, abra então o IAC_IA1. 
Na aba Event Grath iremos realizar uma pesquisa procurando o Character do 
jogador, e em seguida iremos nos mover até ele. 
 
 
 
Questão: 
Em algumas situações especificas este código pode gerar um erro. Você sabe qual é? 
Questione com seus colegas como resolve-lo. 
 
Área de atuação “Nav Mesh” 
Nosso inimigo está configurado e sua inteligência definida. Podemos arrasta-lo para 
a cena e dar play, porém ele nada irá fazer pois ele não sabe que ele está em um 
mundo e muito menos sabe que pode andar nele. Para que ele saiba de tudo isso e 
possa encontrar nosso player devemos informa-lo que está em um mundo e fazemos 
isso com o Nav Mesh. 
O Nav Mesh é uma malha de navegação que irá definir por onde nossa a IA irá se 
mover, delimitando assim seu percurso e evitando obstáculos que entejam entre o 
inimigo e o seu objetivo. Quando uma Nav Mesh está em cena ela irá pintar as 
possíveis áreas de locomoção para que no futuro uma IA saiba por onde andar. 
Vamos então criar uma Nav Mesh. Na aba principal do projeto vá para a sub aba 
Modes em Place pesquise Nav Mesh. Arraste ela para a cena como na imagem. A 
área verde em destaque é onde a IA pode andar. 
 
 
Por padrão a área verde não fica amostra. Devemos habilitá-la clicando em Show na 
própria View Port e então clicar em Navigation como na imagem abaixo. 
 
Sabendo que a área verde é onde a IA poderá se locomover, podemos perceber que 
ela nunca irá encontrar ou chegar até nosso player, devemos então redimensionar o 
Nav Mesh para que ocupe toda a nossa cena como na imagem abaixo. 
Pronto! Podemos agora executar o jogo e ver nosso inimigo perseguindo o player 
para onde quer que ela vá. 
 
 
Conclusão 
Trabalhamos apenas com Blueprints, porém, existem ferramentas especificas para 
a programação de IA como BalckBoards, BehaviorTree, mas falaremos disso mais 
adiante. 
Aguçando a curiosidade 
Conseguimos então criar um inimigo com uma inteligência artificial bem simples, 
ele inicia encontrando o player e começa a segui-lo. Seria mais interessanteque ele 
começasse a segui-lo apenas se chegássemos muito próximo dele, como faríamos 
isso? 
Podemos ver ainda que existe uma área verde nas escadas levando até um nível mais 
alto, mas se não existisse essa escada ele não subiria, você consegue corrigir isso? 
Na próxima apostila falaremos sobre esses problemas e suas soluções. Até lá. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Inteligência Artificial II 
 
 
 
 
 
Inteligência Artificial II 
Projeto Perseguição II 
Nesta apostila estaremos aprendendo mais sobre inteligência artificial dentro da 
ferramenta Unreal Engine 4, iremos construir um sistema de chave & porta para 
passarmos de nível bem como checkpoints, iremos ainda nos aprofundar na criação 
de um sistema inteligente. 
O Curso consiste em três apostilas sendo que está conterá os tópicos medianos sobre 
inteligência artificial em jogos digitais. Continuaremos trabalhando com Blueprints 
çã 
 
para que na Inteligência artificial III você consiga perceber o porquê de utilizar o 
sistema de IA da Unreal engine 4 ao invés de Blueprint puro; 
 
 
Template do projeto 
Precisaremos de um template para iniciarmos nossos estudos. Optei por 
utilizarmos template em Side Scroller, pois não precisaremos nos preocupar com a 
implementação básica de controle do jogador que já fora visto, bem como a 
construção de um mapa para possíveis testes. 
Lista de Passos: 
● Executar o Laucher 
● Criar um projeto em Blueprint 
● Definir as configurações iniciais 
Primeiramente execute o Launcher da Epic Games e em seguida clique em 
Inicializar. 
 
Em seguida surgirá uma nova janela. Nela iremos definir as configurações básicas 
do nosso projeto. 
Escolhemos Novo projeto e escolhemos fazê-lo em Blueprint, definiremos que o 
template a ser usado será o de Side Scroller e então escolhemos o local onde será 
salvo e seu respectivo nome, incorpore o StarterContent ao projeto. 
 
 
Organizando os diretórios 
Com o projeto já criado podemos então começar organizando nosso diretório, 
devemos criar uma pasta chamada AI2 na raiz do Content logo em seguida mova o 
mapa padrão do projeto para esta pasta. Faça o mesmo para SideScrollerCharacter 
e retomei-o para Jogador. 
 
Vamos alterar as configurações de mapa, pois como mudamos de local quando 
abrirmos a Unreal Engine novamente ela não irá carregar automaticamente o mapa 
atual. Para isso vá em Edit ->Project Setting -> Maps & Mode de defina o mapa atual 
como padrão. 
 
 
Vamos iniciar o desenvolver nosso cenário para que possamos testar toda a nossa 
programação como sistema Chave&Porta, inteligência artificial, elevadores entre 
outros. 
Na imagem abaixo podemos ver como ficou o layout do mapa, utilizando e 
duplicando apenas os próprios blocos que já estão na cena, recomendamos que não 
crie um layout novo, mas sim replique este para que não haja obstáculos 
inesperados em nosso aprendizado, depois podem ficar à vontade em criar os seus... 
aliás fica atividade extra trazer mapas diferentes com o que aprender nesta apostila. 
 
 
 
 
 
Sistema Chave&Porta / Pontuação I 
Neste sistema o jogador deverá achar e coletar uma chave para uma determinada 
porta, o mecanismo poderia ser usado para outros fins como pegar uma armadura 
aprova de fogo para então poder lutar contra um dragão. 
Podemos perceber que tanto as moedas como as chaves serão coletadas certo? 
Temos então duas opções: 
● Opção 1 o Criar uma Blueprint Actor para cada uma delas e programar se o 
player as tocou e então executar a soma de pontos ou guardar a chave 
consigo. 
● Opção 2 o Criar uma classe Actor base que determine se o player tocou 
aquele objeto, e criar mais duas classes que implementam apenas as 
respectivas ações. 
 
Se formos analisar na opção 2 temos 3 arquivos enquanto na opção 1 teremos 
apenas 2, você pode pensar “Para que criar 3 arquivos se 2 já dão conta do recado? 
” 
Realmente para este exemplo não parece que seria vantajoso, mas se formos 
analisar todo o projeto dessa apostila veremos que existe coisas em comuns entre 
Chave, Porta, Checkpoint, Moedas, Zona de morte, Trigger ... 
Para cada um deles teremos de inserir um BoxCollider e detectar o evento de 
BeginOverlap e EndOverlap que são os eventos que determinam se alguma coisa 
tocou neles ou se deixou de tocar, logo para não termos de reconfigurar todo o 
Blueprint toda vez que criarmos algo, basta utilizar este objeto base, a isso 
chamamos de Herança. 
Vamos então pela opção 2 para treinarmos esse novo conceito já que a opção 1, 
vocês já sabem como fazer. 
Crie um Actor chamado A_ObjetoBase, adicione uma “Box Collision” chame-o de 
Detector e defina como root da cena, este servira para nos avisar se alguém tocou 
neste objeto. 
 
 
Vamos então realizar algumas tarefas, 
1. Acione o BeginOverlap do Detector. 
2. Na aba EventGraph crie um CustomEvent chamado “Jogador Detectado” 
com uma variável de entrada chamada Jogador, este evento será chamado 
quando um player for detectado. 
3. Cri outro CustomEvent da mesma forma e renomeei para “Jogador Perdido” 
4. Na sequência do BeginOverlap na aba EventGraph faça um Cast do variável 
jogador confirmando se realmente é um jogador, caso seja execute o evento 
Jogador Detectado. 
5. Na sequência do EndOverlap na aba EventGraph faça um Cast do variável 
jogador confirmando se realmente é um jogador, caso seja execute o evento 
Jogador Perdido. 
 
 
 
 
 
 
 
 
 
Tudo deverá ficar como na imagem abaixo. 
 
 
 
Agora poderemos criar nossos Blueprints que herdaram este objeto, o que 
precisaremos fazer depois é apenas especificar o que vai ser executado quando 
Jogador Detectado e jogador Perdido forem executados, resumindo não 
precisaremos criar tudo de novo a cada novo ator da cena. 
 Agora crie um ator que irá herdar a classe A_ObjetoBase e chame-o de A_Chave da 
seguinte forma: 
 
No EventGraph deste arquivo crie um novo CustomEvent e coloque o mesmo nome 
e entradas que definimos para o A_ObjetoBase Faça isso para o “Jogador Detectado” 
 
e defina uma nova ação que será executada apenas para a chave, isso irá substituir 
a ação da classe pai. 
Veja como ficou para a Chave: 
 
Perceba quecomo utilizamos Herança, nosso ator A_Chave já tem um Box Collider 
bem como os eventos de detecção, o que precisamos fazer é Recriar o CustomEvent 
com o mesmo nome e parametros, para que este ator tenha uma execuao diferente 
dos outros. 
 
Repita esses passos criando agora o ator A_Moeda: 
 
Antes de colocarmos a chave e moeda em cena para testar vamos adicionar seus 
respectivos ícones. 
Cri uma pasta chamada Ícones dentro de IA2 e importe as imagens do curso, escolha 
a imagem Icone_Chave clique sobre ela com o botão direito do mouse em Create 
Sprite. Faça o mesmo processo para as outras imagens ao final teremos esta 
configuração. 
 
 
Volte para o A_ObjetoBase e adicione o componente Arrow e faça com que ele seja 
o root da hierarquia veja que esse mesmo componente apareceu para a chave e a 
moeda. 
Volte para a A_Chave e adicione um novo componente chamado PaperSprite 
informe o Sprite correspondente e remova a colisão. Faça o mesmo para a moeda. 
 
Criando a porta 
Vamos agora criar a porta para nossa chave, para isso crie um novo Actor com o 
nome A_Porta herdando de A_ObjetoBase e siga os passos: 
Adicione uma StaticMesh para o actor, defina o mesh SM_Door para este 
componente reposicione e escale o Detector para quando o Jogador chegar aquele 
local a porta verifique se ele tem a chave certa. 
 
 
 
 
Sobre escrevao CustomEvent Jogador Detectado criando este evento na aba 
EventGraph da mesma forma que fizemos com a chave e moeda. 
 
Crie uma variável pública com o nome MinhaChave do tipo A_Chave, esta será a 
chave da porta e no fim tudo deverá ficar da seguinte forma. 
 
 
 
Agora posicone varias moedas na cena, uma porta e uma chave, estamoa usando 
apenas uma chave mas voce podera usar quantas portas e chaves desejar. 
 
Posicione uma chave na cena bem como várias moedas espalhadas: 
 
O elevador 
Vendo a imagem acima chegamos a um ponto no cenário que não conseguimos 
chegar ao patamar de cima, para conseguirmos vamos construir um elevador, vamos 
aos passos então. 
1. Crie um novo ator e de o nome de A_Elevador herdando A_ObjetoBase 
2. Adicione um StaticMesh, e defina a mesh como 1M_Cube 
3. Reposicione e redimensione o Detector 
4. Realize a sobre escrita do CustomEvent Jogador Detectado 
 
 
 
 
Controle de estados 
Quando nosso player morrer devemos diferenciar se ele morreu na queda ou se 
morreu pelo inimigo, mas como faríamos isso? 
Poderíamos usar uma variável do tipo integer e dizer que caso o valor seja 0 significa 
que o player morre pelo inimigo, e caso seja 1 ele morreu pela queda, porém essa 
solução não é interessante pois pode gerar dúvidas e muitos problemas conforme o 
projeto comece a ficar maior, imagine 100 estados diferentes sendo definido dessa 
forma entre diversas classes! 
Para isso temos o Enum, nele podemos organizar nossos estados de forma mais 
clara e organizada. 
 
Com o Enum criado defina seu nome para E_Estados e abra este arquivo criando 
três estados. 
● Vivo o Estado em que o player ainda está vivo 
● MortoPeloInimigo o Estado informa que o player 
morre pelo inimigo 
● MortoPorAreaPerigosa o Estado informa que o player 
morreu por entrar em uma área de perigo, podemos 
pensar como sendo Lava, área radioativa ... 
 
 
 
Programação no Player (Jogador) 
Até o momento construímos a cena e os itens que usaremos no jogo, mas nada de 
programação... bem isso acaba por aqui vamos programar! 
Vamos iniciar a programação criando o inventario do Jogador, onde guardaremos 
todas as chaves e o número de moedas que pegamos durante a fase. 
Crie uma variável do tipo A_Chave chamada Chaves e marque-a como lista de 
A_Chave clicando no quadriculado ao lado do tipo de variável. 
Crie também uma variável do tipo integer chamada Moedas, a usaremos para contar 
quantas moedas pegamos na cena. 
Precisaremos ainda do estado do player então crie uma variável do tipo E_Estados e 
chame de EstadoAtual. 
E por fim teremos um sistema de Checkpoint logo devemos guardar a posição em 
que ele se encontra para isso vamos criar uma variável do tipo Vector e chamada 
de CheckPointEncontrado. 
 
 
 
Sistema Chave Porta / Pontuação II 
Vamos voltar nossa atenção agora para o cenário, nele deixamos já configurado uma 
porta e uma chave, assim como várias moedas e o elevador pelo uso de herança agora 
só precisamos definir para cada ator o que seu evento Jogador Detectado deve fazer. 
 
 
Abra o arquivo A_Moeda encontre o CustomEvent Jogador Detectado que criamos e 
altere sua lógica. 
Pegue a variável moedas do nosso jogador e realize o incremento e imprima o novo 
valor na tela depois destrua o objeto. 
 
 
Chaves 
Abra o arquivo A_Chave encontre o CustomEvent Jogador Detectado que criamos e 
altere sua lógica. 
Pegue a variável Chaves que é uma lista e adicione a própria moeda a essa lista 
depois mova ela para fora da vista do jogador. 
 
Portas 
Abra o arquivo A_Porta encontre o BeginOverlap que criamos e altere sua lógica. 
No evento Jogador detectado procure MinhaChave dentro da variável Chaves do 
caso exista iremos abria a porta. 
Adicione uma TimeLine que irá variar de 0 a 90 o nome da variável de saída será 
AnguloAtual, ela deve ter 2 segundos de duração, clique com o shift pressionadora 
criar dois pontos, clique no primeiro ponto de defina o tempo e valor para zero, 
clique no segundo ponto e defina seu tempo para 2 e seu valor para 90. 
 
 
 
 
Defina a rotação da porta para ser igual ao valor de saída da TimeLine um Doonce 
para que seja feita apenas uma vez a ação tudo deverá ficar como na imagem. 
 
 
Temos ainda que definir qual chave pertence a nossa porta, para que ela seja aberta 
caso o jogador tenha a chave. 
Selecione a porta que está na cena, vá para o painel de detalhes e no campo default 
você verá a variável MinhaChave, clique no conta gotas e depois clique na chave que 
está na cena assim a chave será atribuída àquele objeto. 
 
 
Elevador 
Ainda não conseguimos chegar até a porta pois o player na pula tão alto, por isso 
criamos o elevador e iremos programa-lo agora. 
Para o evento Jogador Detectado crie uma nova Timeline chamada Subir, que terá 
duração de dois segundos, crie uma variável com nome Altitude e dois pontos, o 
primeiro em time e valor igual a zero e o segundo time igual a 2 e valor igual a 7, 
para mim esses valores foram suficientes para que o elevador subisse até o topo 
adapte para o seu projeto. 
 
 
Agora para o elevador descer use o evento Jogador Perdido, duplique a TimeLine e 
multiplique a altitude por menos um, assim o elevador começara a descer logo que 
o player sair dele. 
 
 
Checkpoint 
Vamos brincar com o Checkpoint, para isso vamos usar a mesma lógica que usamos 
para a chave, você se lembra como fizemos? 
Crie um novo ator que herde de A_ObjetoBase, defina o ícone 
Icone_CheckPoint_Sprite que criamos a partir do Icone_CheckPoint como fizemos 
coma moeda e chave lembre-se de remover a colisão do ícone, realize a sobre escrita 
do evento Jogador Detectado, quando este evento ocorrer pegue a posição do 
checkpoint e defina para a variável CheckPointEncontrado do jogador. 
 
Além disso devemos definir a posição inicial do jogador para a variável 
CheckPointEncontrado pois caso ele morra sem encontrar um checkpoint esse 
será colocado na posição (0,0,0), para isso vamos para o Jogador e no evento 
Beginplayer definimos o valor da variável como sendo a posição que o player 
iniciou. 
 
 
 
Posicione alguns checkpoints pela cena. 
Zona da morte 
Para usarmos o nosso sistema de checkpoint temos que morrer primeiro né? Então 
crie um novo ator chamado A_AreaPerigosa herdando de A_ObjetoBase assim 
como no checkpoint adicione um PaperSprite e coloque o ícone 
Icone_lancas_Sprite remova a colisão do Sprite. 
 
E vamos repetir o mesmo processo do checkpoint porem agora iremos trocar o 
estado do player para MortoPorAreaPerigosa e após um delay de 2 segundos 
vamos chamar o CustomEvent Jogador Morreu que criaremos no Jogador logo 
abaixo. 
 
 
No Blueprint do Jogador crie este CustomEvent que chamamos a variável de entrada 
é do tipo E_Estados, troque o estado a atual para o estado que foi passado no 
parâmetro e depois de 2 segundos reposicione o player para a posição do checkpoint 
e traga o de volta a vida. 
 
Assim já mudamos o estado do jogador para morto e podemos trocar a animação 
dele por uma animação de morte. 
Adicione este ator a cena para que o player possa começar a morrer, vejamos como 
ficou agora. 
 
 
O inimigo (IA) 
Todo o jogo já está funcionando, pegamos moedas, conseguimos abrir portas 
morrermos em áreas perigosas temos o nosso inventario. 
 
Vamos então começar a trabalhar nossa inteligência artificial, ela irá perseguir o 
nosso jogador e matá-lo caso o toque. 
Primeiramente vamos repetir o passo da apostila anterior inserindo na cena um 
“Nav Mesh Bounds Volume” na tab Modes. 
 
Redimensione o volume para que ocupe toda a área do

Outros materiais