Transcrições
1. Apresentação: O que eu adoro
nos videogames é que você pode criar quebra-cabeças
interessantes
para outras pessoas explorarem e resolverem Oi. Meu nome é Lucas Ridley Sou desenvolvedor de jogos
e animador 3D e trabalho na indústria cinematográfica e de
videogames Você pode ter visto
alguns dos meus trabalhos se já jogou videogames
como The Last of Us, Part II ou Suicide Squad:
Kill the Justice League. É incrível para mim que eu possa
fazer isso como uma carreira. Acho que o sonho da maioria das crianças jogar videogame
para viver Nesta aula, você
aprenderá a criar um videogame
inteiro. Vamos começar
com um filme
que se mistura à jogabilidade, onde podemos criar uma
lógica de jogo que mostra um cronômetro, cria obstáculos para nosso
personagem e, finalmente, podemos exportar tudo isso você
possa compartilhá-lo
com Estou empolgado em
ensinar sobre esse tópico, porque criar videogames é, na verdade, bastante acessível. Você não só tem
software livre como o Unreal Engine, mas também pode fazer isso em
casa, no seu próprio computador Você deve fazer este
curso se tiver conhecimento
intermediário
do Unreal Engine Não vou mentir,
vamos mergulhar nas profundezas do Unreal Engine, criando lógica de jogo
com plantas Para acompanhar, tudo o que você
precisará é do Unreal Engine, um computador e de um mouse
de três botões No final desta
aula, você realmente terá um
videogame finalizado que
poderá compartilhar com seus
amigos e competir
com eles em uma pista de tempo
até os obstáculos Espero que você saia
desta aula realmente aprimorando suas habilidades e sentindo uma sensação
de realização, porque
vamos realmente criar algo impressionante juntos Quer jogar um jogo?
Vamos começar.
2. Primeiros passos: Bem-vindo a esta aula.
Estou tão feliz que esteja aqui. Neste projeto,
vamos criar um videogame cronometrado jogável Será uma que você poderá compartilhar
com seus amigos, para que possa competir com eles nesta pista de
obstáculos cronometrada Então, vamos
criar um cronômetro por meio da lógica
do jogo que pode
aparecer na tela Assim, você pode competir com seus
amigos e comparar pontuações. Vamos criar obstáculos
para dificultar isso. Então, se você se deparar com eles, ele realmente simulará a física do
Ragdoll em seu jogador e reiniciará o nível, para que você
possa começar No final desta aula, vamos exportá-lo como um videogame jogável completo Meu primeiro emprego na indústria de
videogames foi na verdade, em um videogame de
realidade aumentada, onde pegávamos um livro com marcadores de
rastreamento e esse era o
controle real do jogo e você podia manipular
os jogadores Meu trabalho nesse projeto foi, na verdade, dar
vida a
esses personagens por meio
da animação nas páginas daquele livro de realidade
aumentada Eu nem conhecia o Unreal
Engine na época. Então, se você terminar esta aula, você já estará à minha frente. Vou lhe dar
algumas habilidades excelentes que podem promover sua carreira
em design de videogames. Para fazer esse curso, você
deve se sentir confortável usando o
Unreal Engine, navegar pela janela de exibição e até mesmo saber que os
projetos são algo que existe. Será útil, pois
vamos nos aprofundar muito mais e criar nossos próprios Então pegue seu computador,
seu mouse de três botões e me encontre na próxima lição, onde
criaremos um player start para que tenhamos um lugar para
começar nosso videogame
3. Crie o início do jogador: Nesta lição, abordaremos como
criar um Player Start do zero, se você criou
seu próprio nível personalizado, e também faremos um pouco de
depuração
para melhorar nossa taxa De volta ao Unreal Engine, vou começar com
um nível que eu projetei Se você não
acompanhou as outras classes e
criou seu próprio nível, você pode usar o projeto modelo de terceira
pessoa e usar o nível que
vem com esse modelo. Esse nível já tem um
Player Start, mas precisaremos criar um se você tiver seu próprio nível personalizado. Porque se eu clicar em
“Jogar” agora, meu personagem jogável aparecerá
onde quer que a câmera Então,
eu poderia estar fora do jogo real e não conseguir entrar porque
depende da câmera que eu usei. Vou clicar em
“Escape” para sair e quero colocar
o jogador no ponto que
eu quero que o jogo real comece. Vou fazer isso
onde criei o filme introdutório
que será publicado mais tarde,
e quero combinar a posição com a largada do meu jogador Vou adicionar o
player, começar clicando
no botão de adição
aqui e digitando start Você pode ver que temos
um Player Start
e, como
não há mais nada na cena, isso iniciará automaticamente o player onde quisermos. Eu quero igualar a
posição do filme. Vou apertar “W” e tirar isso
do caminho por um momento. Vou clicar no
filme e obter sua posição
clicando com o botão direito do mouse nesse
valor e escolhendo “Copiar”. E então eu quero escolher
o Player Start novamente e colar esse valor clicando com o botão
direito do mouse e colando Podemos ver um pouco pelo
chão. Vou apenas
levantá-lo um pouco
e, em seguida, aperto o
botão “End” no meu teclado, E-N-D, e isso o
colocará no chão Então eu só quero
girá-lo porque vamos
ver a seta azul
apontando para o lado Eu queria apontar
na direção
do labirinto que
criei no meu nível Agora, se eu clicar em “Jogar”, podemos ver que a partida dos
jogadores começará exatamente onde esperávamos
, nessa posição Agora, se você pode dizer uma coisa, é que a reprodução
está muito lenta A taxa de quadros não é ótima, e podemos testar isso
ativando os quadros por segundo. Podemos escolher este ícone de três linhas do
Hamburger aqui e descer para mostrar FPS, que é a abreviação de
quadros por segundo Quando eu clico nisso, você pode
ver no canto superior direito aqui, que
temos 18 quadros por segundo. Também posso pressionar “Reproduzir novamente” e esses quadros por
segundo devem persistir. Podemos ver que é ainda pior
quando estamos brincando. Dez, 11 quadros por segundo. Agora, uma das razões para
isso na minha cena é por causa das árvores de altíssima definição que temos
em nosso ambiente. Se você seguir a classe de
ambiente, saberá onde esse ativo reside
nessa floresta gerada processualmente Vou trocar isso por
um ativo de resolução mais baixa para um ativo de resolução mais baixa que
possamos trabalhar
muito mais rapidamente Isso é chamado de depuração. Queremos depurar nosso jogo enquanto
jogamos e resolver quaisquer problemas
que enfrentamos à medida que avançamos Porque resolvendo isso
agora, tornaremos tudo mais rápido mais tarde enquanto estivermos trabalhando
na cena, que resultará
em muito tempo economizado Vou clicar em
“Barra de espaço de controle” e vou
navegar até onde esse ativo está na minha pasta gerada
processualmente e vou
abrir o gráfico PCG onde esse Agora, novamente, se você estiver usando o nível de modelo,
você não terá isso. Isso é para as
pessoas que talvez tenham acompanhado
a aula anterior. Vou gerar uma malha estática
diferente aqui, então vou substituir as árvores de
alta resolução uma
de baixa resolução Vou mostrar esse
descritor, e é aqui que vive a
malha estática da árvore Vou escolher um ativo que vem com
os ativos do PCG Vou digitar na árvore e posso ver que existem
essas árvores de espaço reservado de PCG, que têm uma resolução muito mais
baixa, e é isso que vou usar em vez da alta Podemos ver que ele
já foi trocado e observar o que acontece com
nossos quadros por segundo Já estamos com cerca de
30 quadros por segundo. Agora, a outra coisa que
eu poderia fazer é reduzir o número
de pontos também, então eu poderia escolher o amostrador de
superfície e em vez de 0,08 pontos
por metro quadrado,
eu poderia escolher algo
pela metade, ou seja, Podemos ver que realmente
não ganhamos muito, então vou deixar
em 0,08, mas esse é o tipo de
teste que você quer fazer para garantir que o jogo que você está
criando seja performativo Agora, quando eu pressiono “Play”, você deve obter uma reprodução muito
mais suave e ganhamos muitos
quadros por segundo Nesta lição, aprendemos como criar um
player do
zero , caso você tenha seu próprio
ambiente personalizado. Caso contrário, basta usar o projeto
modelo de terceira pessoa e usar o Player Start que
já existe nesse nível. A única coisa a
ter em mente é que, se você deseja que um filme comece no
início do seu videogame, basta
garantir que Player Start esteja exatamente alinhado
com essa sequência de níveis Encontre-me na próxima lição,
onde vamos
conectar nosso personagem
jogável personalizado
4. Conecte um personagem personalizado ao jogo: Bem-vindo de volta. Nesta lição, abordaremos
como conectar nosso personagem MetaHuman personalizado
com nosso personagem jogável em terceira pessoa Vamos voltar ao nosso
projeto e começar. Agora eu quero trocar nosso próprio personagem MetaHuman
personalizado
pela terceira pessoa pela Já abordamos isso
em uma aula anterior, mas vou
abordar novamente aqui para que possamos nos familiarizar
rapidamente
com nosso próprio personagem
MetaHuman personalizado
como personagem jogável Eu já mostrei como
migrar personagens de outros projetos em que talvez os
tenhamos criado. Tudo o que você precisa fazer é
“clicar com o botão direito” em um ativo e escolher
Ações do ativo, Migrar Em seguida, escolha o projeto para o
qual você deseja migrar
se você tiver um MetaHuman
de um projeto diferente Nós já fizemos isso, e é por isso
que isso existe aqui. Agora tudo que eu preciso fazer é
configurar esse personagem
para ser jogável Preciso acessar as Configurações da
turma e escolher o plano de terceira pessoa
como turma principal O personagem em terceira pessoa já tem muita lógica configurada, então podemos
usá-la em todas as suas animações apenas com
nosso próprio personagem personalizado Agora eu vou escolher isso. Eu vou até o Viewport, para eu
possa ver o que está acontecendo, e eu posso ver que
meu personagem e a terceira pessoa estão
na mesma cena agora Agora eu posso mover essa raiz, clicar e arrastá-la para
baixo da malha, e agora posso redefinir a raiz, para que ela
corresponda ao personagem em terceira pessoa Estamos todos voltados para a
mesma direção agora. Vou redirecionar
esse personagem personalizado para a animação que
está acontecendo para a terceira pessoa Eu posso fazer isso
ativando o redirecionamento ao vivo. Posso escolher a variável de
retargeting ao vivo e verificar
UseLiveRetargetMode Agora eu posso ver essas linhas, e eu só preciso tornar
o personagem em terceira pessoa invisível Posso clicar em sua malha
e procurar por visível. Posso desativar a visibilidade
e a renderização. Preciso ativar sempre a pose do
carrapato e refrescar os ossos. Atualizaremos o
personagem em tempo real. Agora posso clicar em
“Compilar” e salvar. Quero abrir o
plano em terceira pessoa e copiar e colar toda a lógica e entradas do jogo
que não temos aqui Porque se eu
olhar meu gráfico de eventos, que controla toda
a lógica do jogo, na verdade não
há nenhum. Não há nada que diga, ei, se eu apertar esse
botão, então faça essa coisa. Está totalmente vazio aqui. Temos algumas coisas de AR e face, mas não há entradas reais que
tornem isso jogável Quero abrir
a
planta em terceira pessoa onde ela mora e copiar e colar
essas informações Podemos simplesmente roubar todo trabalho árduo que
eles já fizeram por nós Vou “clicar duas vezes”
nesse esquema, clicar
e arrastar, selecionar todas essas informações e copiá-las e
colá-las pressionando “Ctrl C”, pulando de volta para minha
planta e pressionando “Ctrl
V” em uma área vazia para V Então Ctrl V. Agora
temos toda essa informação de que eles fizeram todo o trabalho
duro por Agora só precisamos dizer
quando isso começa a ser reproduzido, depois lançar e começar a fazer todo o mapeamento de entrada
que queremos fazer. Posso simplesmente excluir este
CustomEvent e usar esse evento,
BeginPlay, e mapeá-lo em
nossa transmissão para nosso personagem jogável nossa transmissão para nosso personagem Agora eu posso
compilar e salvar esse plano, e agora eu só preciso dizer
ao meu jogo para realmente usar esse personagem, porque se eu pressionar “Jogar” agora, ele ainda estará usando o personagem
padrão Para mudar isso, preciso acessar as Configurações do
meu projeto em Editar, Configurações
do projeto, Mapas e modos. No modo de jogo selecionado, preciso mudar a classe de peão
padrão Eu posso escolher o modo de jogo em
terceira pessoa, e então isso me
permitirá mudar o plano pelo qual estamos
gerando Vou fazer BP_ e agora posso encontrar meu
plano para meu MHI_Lucas Agora, quando eu fecho isso
e pressiono “Play”, devemos ver nosso próprio personagem
personalizado, e ele deve ser
jogável pressionando as teclas W, A, S e D. Além da entrada de salto, você pode clicar em “Barra de espaço”.
Agora é a sua vez. Pegue seu próprio
personagem personalizado e mapeie-o para o personagem
jogável em terceira pessoa,
ou simplesmente use o personagem em
terceira pessoa e clique em “Jogar” e brinque Lembre-se de que é
sempre importante tirar proveito de qualquer trabalho
que já tenha sido feito para nós, e é por isso que
vamos encontrar coisas
no conteúdo inicial,
copiá-lo e colá-lo Não há vergonha em usar trabalho que já foi
feito para você Encontre-me na próxima aula. Vamos criar uma nova máquina
estatal para nos agacharmos.
5. Configure uma máquina de estado: Bem-vindo de volta. Nesta lição, abordaremos
esquemas de animação e máquinas de estado As máquinas de estado são uma forma
de fazermos a transição de diferentes estados em nosso
personagem, como ficar ocioso, andar, correr, e
vamos adicionar agachamento
nesta lição É importante saber
que as máquinas de estado, embora sejam coisas próprias, na verdade vivem dentro do esquema de
animação Então, é aí que
vamos trabalhar. Agora vamos voltar
ao nosso projeto. Esta lição
lhe dará uma ideia de como
criar uma animação de agachamento
para nosso personagem Então, vamos imaginar que temos
algum tipo de obstáculo que
realmente precisamos nos agachar
embaixo para poder
empurrar um desses blocos, mas ainda não podemos nos Então, precisamos criar uma entrada de agachamento para que
nosso personagem possa se agachar
e, em seguida, empurrar esse bloco
para ultrapassar essa
barreira Então, vamos começar isso agora. Para começar, precisamos adicionar
uma ação de entrada para
sabermos qual pressionamento de tecla realmente
permitirá o agachamento Então, vou passar para as ações de entrada
do meu personagem em terceira pessoa,
porque isso é realmente o que está controlando nosso personagem personalizado é o plano
dos pais em terceira pessoa Então, aqui vemos que temos
uma pasta chamada input. Dentro daqui, temos
esse padrão principal, que é o contexto de mapeamento de entrada. Esse é o grupo principal que controlará as ações. Precisamos de uma nova ação
chamada Crouch. Você pode ver que
pulamos, olhamos, nos movemos e podemos adicionar
qualquer outro tipo de ação que
queremos começar a ativar. E neste exemplo, vamos habilitar uma nova ação e entrada do
Crouch Então, eu preciso criar
uma ação de entrada. Então, vou para a
entrada e a ação
de entrada clicando com o botão direito do mouse e
escolhendo essa opção. Vou escolher I
A para ação de entrada e vou
chamar isso de Crouch Agora, quando acessamos esse tipo de ativo de dados
mestre
das ações de entrada, podemos ter um novo mapeamento
para o Crouch Assim, posso apertar o botão de adição
e escolher Crouch no
menu Agora, nesta opção,
é aqui que eu posso adicionar quais teclas eu quero que
isso seja adicionado Então, eu posso escolher entre
as opções aqui, ou eu poderia simplesmente clicar
neste botão e, em seguida, apertar o
botão real do teclado no meu teclado. Então, vou escolher o controle
esquerdo porque estamos usando uma configuração W, A, S e D. Então, vamos clicar em Salvar. E agora permitimos que ele
receba essa entrada. Agora só precisamos conectar essa entrada a
todos os eventos e a lógica para reproduzir a animação
correta
e alterar os componentes do personagem para Crouch Então, precisamos seguir o
plano do nosso personagem,
que para mim é o meta-humano,
esse Para você, pode
ser a terceira pessoa personagem, se você
optar por usá-la. Agora, no gráfico de eventos, é
aqui que precisamos
adicionar nossa própria ação de entrada. Você pode ver que
olhamos, movemos, pulamos e precisamos
adicionar a ação de entrada de agachamento Mas antes de fazer
isso, precisamos dizer
ao componente de movimento que
podemos realmente nos agachar Portanto, ele tem as
variáveis e coisas que
procuramos quando estamos agachados Porque se agachar é
uma coisa normal de se fazer. Na verdade, isso
já está disponível para nós no componente de
movimento
do personagem, que é onde todos esses tipos de personagens
jogáveis
valorizam,
como a rapidez com que nos movemos,
o que é a gravidade Então, se começarmos a digitar
e pesquisar por agachamento,
você verá que, na verdade, não
podemos nos agachar até verificarmos Isso disponibilizará algumas
funções integradas para
que ele saiba ativar e desativar o
agachamento Você também pode alterar a velocidade que está se movendo
quando está agachado E também a altura que você
alcançará quando estiver agachado. Então, vou verificar isso. E agora, no meu gráfico de eventos, que mostra toda
a lógica das entradas e o que
elas vão permitir Assim como o salto aqui,
quer estejamos pulando ou não, precisamos criar uma ação de
entrada para o Crouch Então, vou
começar a digitar Crouch, e isso deve
existir porque
já criamos esse evento de ação
de entrada Portanto, queremos o evento
e não o valor, e podemos escolher
iniciado e concluído mesma forma que nosso evento para
a ação de entrada do salto. Então, para começar, nós realmente temos essa função embutida
chamada Crouch E é por isso que
habilitamos o agachamento. Portanto, temos essa
variável disponível para nós antes de começarmos esta etapa. Então, vou clicar e
arrastar para concluir
e digitar Crouch novamente e escolher Un Crouch para E isso é tudo o que
realmente precisamos fazer. Se quisermos comentar isso, assim como esses outros, podemos pressionar C e digitar crouch input Então, agora só precisamos
compilar e salvar,
e devemos ver que esses aspectos do componente de
movimento já afetam nosso personagem exemplo, a velocidade do Crouch
será afetada, mesmo que ainda não tenha
nenhuma animação para ser reproduzida Se eu estiver correndo e apertar Crouch
ou o botão de controle, na verdade
vamos diminuir Mas, na verdade, ainda não temos
uma animação de agachamento, e é isso que
precisaremos ajustar Então, vamos criar a animação que realmente precisamos agachar Nesta lição,
aprendemos como começar a criar uma nova
ação de entrada para nosso personagem, para que
possamos nos agachar Terminamos vendo que
isso pode afetar nossa velocidade e só precisamos inserir
as animações certas agora Vamos fazer isso juntos
na próxima lição.
6. Finalize sua máquina de estado: Bem-vindo de volta. Nesta lição, continuaremos criando
nossa máquina de estados Crouch Vamos pegar
nossa ação de entrada que já
fizemos
e conectá-la a
uma animação para agachar-se ocioso e caminhar agachado Em seguida, afetaremos
a velocidade com que nos
movemos enquanto
caminhamos agachados , para que ela se sincronize com a velocidade com que
nossos pés Vamos voltar
ao projeto. Vamos criar a animação de
que precisamos para realmente nos agachar. Felizmente, para nós, se entrarmos lançador
da Epic Games
no mercado
e pesquisarmos os fundamentos do MCO
Mocap Na verdade, temos
um recurso gratuito aqui que tem uma
animação Crouch para Basta pesquisar o ativo e adicioná-lo
ao seu projeto. Depois de adicionados ao seu projeto, podemos encontrar esses ativos no navegador de conteúdo
acessando
o conteúdo, e você pode ver que uma
nova pasta foi criada chamada MCO Mocap Aqui podemos encontrar uma animação do
Crouch. Eu posso simplesmente procurá-lo
no navegador de conteúdo aqui. Você pode ver que temos algumas caminhadas
diferentes, agachadas e Basicamente, temos
uma versão local e uma versão ambulante. Queremos a versão pronta. Vou selecionar o
Crouch in place e o in place walk, e quero
clicar com o botão direito do mouse
e escolher animações de
redirecionamento porque isso está em um esqueleto antigo do Mannequin,
e queremos redirecionar para o novo esqueleto do Mannequin e queremos Vou digitar Manny. Agora você pode ver que temos o
novo Mannequin Skeleton aqui, e podemos pesquisar esses
ativos apenas Se clicarmos duas vezes nele,
podemos ver que temos aquele que está
saindo do local. Mas queremos aquele que está
andando no local. Vamos escolher esses dois e
exportar essas animações. Neste básico do MCO Mocap, vou criar uma nova
pasta chamada retargeting, clicar com o botão direito do mouse e escolher
Nova pasta e colocá-la na
pasta Agora, a
planta do personagem é onde
informamos onde estava a ação
de entrada Fizemos isso em nosso projeto
para nosso personagem. Mas onde realmente
adicionamos as animações? Isso está no plano da animação
e não nesse plano. Precisamos encontrar o plano da
animação. Se eu clicar duas vezes na nossa, você verá que a classe de
animação aqui é Anim Blueprint queen C, e eu posso navegar até esse ativo e clicar duas vezes nele, e ele é na verdade
filho do Manny Na verdade, queremos a animação
Blueprint de Manny e não a rainha Se eu clicar nesta classe de
pais aqui, também
posso encontrá-la
na pasta, que fica ao lado da
rainha, e clicar duas vezes nela. Você pode ver que temos
o gráfico
de eventos do Animation Blueprint Isso é diferente do esquema
do personagem, qual acabamos de adicionar
a ação de entrada É aqui que indicamos a
variável para agachamento, se estamos agachados
ou não,
para que ela saiba para que ela Para fazer isso, precisamos
conectá-lo
ao componente de movimento,
que já temos. Vou copiar
e colar uma versão aqui e clicar
e arrastar para fora dela. Vou
digitar agachado. Você pode ver que já
temos a variável para isso porque habilitamos
a capacidade de se agachar Ele já tem essa variável
embutida. Se eu clicar com o botão direito do mouse, posso
promovê-la para uma variável. Podemos acessá-lo na máquina de
estado para definir isso como uma regra para reproduzir
as animações de agachamento ou as animações de agachamento Agora, ele não está conectado
a nada, então precisamos adicionar um novo
pino a essa sequência, que é o que
atualiza os valores em cada quadro para que ele possa descobrir se algum
estado mudou,
como cair, agachar-se ou Precisamos adicionar esse
novo pino aqui para que possamos conectá-lo a essa nova variável que temos. Posso clicar duas vezes em
qualquer lugar dessa linha para criar um nó de redirecionamento
e, se eu segurar a tecla Control, posso movê-lo para fora do caminho Podemos ficar um pouco
organizados aqui. Também posso clicar e
arrastá-los e pressionar C para comentar e mover isso para baixo. Agora que finalmente criamos as ações de entrada, temos nossas animações prontas e criamos a
capacidade de ver como uma variável se estamos
ou não agachados Posso renomear isso para Crouching. Agora estamos prontos para
realmente conectar as animações à
locomoção Podemos encontrar isso
no gráfico anim. No momento, estamos
no gráfico de eventos, que você pode ver neste diretório
hierárquico aqui Posso pular para
a guia do gráfico Anim aqui ou clicar
nela aqui No gráfico anim, podemos realmente ver as máquinas de estado, que controlam quais
animações estão sendo O que
mais nos preocupa
é a máquina de estado da locomoção. Se eu clicar duas vezes nele,
posso entrar nele e ver que há um ídolo e uma corrida de caminhada Essas são principalmente as duas coisas que podemos fazer com esse personagem. Você pode ver
agora que está pré-visualizando a animação do ídolo aqui
na janela esquerda Queremos adicionar outro
estado chamado Crouching. Posso clicar com o botão direito aqui
e adicionar um novo estado. Vou chamar isso de
Crouching and it inner. Posso clicar duas vezes
e entrar nisso e agora posso adicionar
minhas animações aqui Temos duas animações, uma para quando não estamos nos movendo
e estamos apenas agachados, e outra para nos agacharmos e outra para Vou clicar em Arrastar
essas duas animações para
a máquina de estado e preciso dizer quando estamos ociosos e quando
estamos É por isso que temos
essas variáveis para
nos dizer se estamos nos movendo ou
não. Isso já foi
configurado em nosso gráfico de eventos. Aqui atrás, você pode ver que havia uma configuração de RD chamada Should move. Podemos usar isso para saber
se estamos agachados, ociosos ou andando agachados Precisamos combinar esses
dois com base nessa variável. Eu posso pegar essa variável
dizendo que get deve se mover, e isso controlará qual
dessas animações
estamos reproduzindo Precisamos de outro nó
para determinar isso, e isso é uma mistura de Boolean, que significa que está ligado ou desligado, então podemos digitar poses de
mistura de Bole, e agora temos uma
pose verdadeira e uma pose falsa Ele será controlado
por um valor ativo. O verdadeiro estado
será caminhar, então podemos conectar isso ao verdadeiro. Podemos conectar o estado ocioso, a animação ociosa em falso O que vai controlar
isso é essa variável aqui. Se devemos nos
mudar ou não esse
será
o valor ativo. Agora, inserimos isso
no resultado. Agora voltamos à
nossa locomoção. Só precisamos criar uma regra
para quando isso estiver acontecendo. Quando estamos agachados? É quando a
variável que
criamos para agachamento é ativada, com base no fato de estarmos
inserindo ou não o pressionamento de tecla correto, que inserimos
como controle
na ação de como Tudo isso já está configurado. Só precisamos definir a
regra para essa variável. Posso clicar e arrastar essa caixa e
apontá-la para agachada Eu posso ir do corredor para o agachamento agora com a regra que vou definir Eu posso passar de agachado
para ocioso com outra regra. Indo do corredor para o agachamento, quero clicar duas vezes Veja se essa variável está agachada. Se estivermos agachados, queremos
entrar na animação agachada Agora, se não estivermos mais
agachados, podemos simplesmente definir essa
regra para voltar ao modo Queremos dizer, obtenha
essa variável novamente, mas acione essa transição
se isso não estiver acontecendo. Podemos digitar não e escolher
a opção booleana in. Agora precisamos fazer a mesma coisa com as transições
de caminhada e corrida A caminhada, a corrida até o agachamento deve acontecer
quando estamos Devemos sair desse estado de
agachamento voltar a correr,
se não estivermos agachados Agora que criamos
as regras para se agachar, criamos as animações e, quando elas começarem,
podemos clicar em Compilar e salvar, e devemos ser capazes de ver nosso
personagem capaz personagem Agora vamos jogar e experimentar. Agora, ao pressionar Control, consigo me agachar
e você pode ver que estou me movendo,
mas o agachamento e você pode ver que estou me movendo, para de se mover porque não ativamos Podemos voltar ao
nosso plano de animação, que podemos acessar
em nossos Manequins, animações e Manny Precisamos ter certeza de que
a caminhada está configurada para ser circular. Podemos digitar em loop para encontrá-lo e só precisamos
ativar a animação em loop. Vamos compilar e salvar. Agora você pode ver que ela realmente
gira enquanto estamos gravando. Mas estamos nos movendo muito
mais rápido do que nossos pés. Se você se lembra, podemos
ajustar a velocidade do agachamento para que ela corresponda mais de perto à animação e
à velocidade com que
os pés estão realmente Vamos abordar o componente de
movimento do personagem em nosso projeto Vou entrar no projeto dos
metahumanos. Vou até o componente de movimento do
personagem onde ativamos o Crouching Se eu pesquisar por Crouch, posso ver que nossa
velocidade máxima de caminhada para Crouch Vamos reduzir isso pela metade, compilar, salvar
e testar essa velocidade Vamos segurar Crouch
e seguir em frente. Agora você pode ver que estamos nos
aproximando muito mais da velocidade com que nossos pés estão realmente se movendo
na animação. Ainda está deslizando um pouco, então vou voltar e continuar ajustando esse valor até gostar de como ele combina com a animação real
que temos que reproduzir Agora criamos a habilidade de
realmente se agachar sob
os obstáculos que criamos Agora, só precisamos ter
certeza de
criá-los em uma altura que faça
sentido para nosso personagem. Agora, se a velocidade for muito abrupta, podemos ajustá-la nas configurações de mesclagem
das transições . Vamos
ver como fazer isso. Basta clicar uma vez aqui e podemos ver que há uma duração de uma combinação
de 0,2 segundos. Podemos aumentar isso
para algo como 0,5, e podemos fazer isso
nas duas direções. Agora dobramos o
tempo necessário para percorrer cada estado de
agachamento entre a caminhada e a corrida Agora eu quero clicar em play. Podemos correr e depois nos agachar. Demora muito mais para que essa
transição ocorra agora, então espero que não
seja tão chocante Uma configuração final que podemos ajustar é a câmera estourar
quando nos agachamos,
sai altura da cabeça do personagem e depois pula até
a
cabeça
do personagem agachado Podemos ativar um atraso que mesclará a
câmera com mais facilidade Vamos abrir a planta dos
personagens e acessar boom da câmera e
a janela da guia de
componentes Você precisa parar de
jogar para que possamos realmente acessar essas funções, e podemos rolar para baixo
para ativar o atraso da câmera Se apenas habilitarmos isso, as configurações padrão
funcionarão muito bem. Podemos ajustar essas
configurações se quisermos, mas podemos clicar em compilar e salvar, e podemos voltar a jogar e testar o novo lag out da câmera Agora, ele se mistura muito
mais perfeitamente e também tem um pouco de atraso quando estamos
fazendo outras coisas, mas funciona muito bem para resolver o problema da câmera Crouch Nesta lição, abordamos
muitos materiais complicados. Parabéns por
acompanhar. Você aprendeu como
realizar uma ação de entrada e realmente implementá-la. Redirecionamos a animação
e agora temos um novo estado
em que nosso personagem está, que é agachado Sinta-se à vontade para substituir essas
animações que usamos outras animações que
você encontra
no mercado ou em no mercado ou Entre e realmente
ajuste esses valores. Você sabe, mudamos
a animação de mesclagem para 0,2-0,5, mas talvez haja um valor
melhor aí Brinque com esses valores e
torne-os o mais simples possível.
Divirta-se com isso. Me conheceu na próxima aula, onde vamos conectar o cinema ao início do
jogo
7. Conecte a cinematografia ao início do jogo: Bem vindo de volta. Uma nota importante desta lição é o fato de que
você vai querer ter assistido uma aula anterior
desta série, na qual
aprendemos a animar nosso
personagem em uma sequência de níveis Onde eu começo aqui, eu já tenho essa
sequência de níveis criada. Se você não sabe como
criar uma sequência de níveis, volte para uma das minhas aulas
anteriores desta série, onde aprendemos como criar uma sequência de níveis. Essa aula tem tudo a ver com animação de
personagens. Agora que isso acabou, vamos pegar
nosso filme e
combiná-lo perfeitamente com a jogabilidade Quando começamos nosso videogame, podemos realmente assistir a
um playout cinematográfico e, em seguida, ele se
mistura perfeitamente para que o jogador
possa realmente retomar controle do mesmo personagem
e começar Vamos mergulhar de volta
. Vamos imaginar quando clicamos em “Jogar” em nosso jogo, queremos realmente ver
uma jogada cinematográfica primeiro Eu criei uma sequência de níveis, que eu discuti como
criar na aula anterior, e nessa sequência de níveis, eu posso abri-la para
ver a animação. Vou clicar em “Abrir sequência de
níveis” e podemos ver
imediatamente alguns problemas. Uma delas é que meu personagem
está no chão
e, quando eu limpo a linha do tempo da sequência de
níveis, não
há nenhuma animação Podemos resolver esses
problemas um por um
e, em seguida, vincular esse filme
para ser reproduzido exatamente como jogamos
nosso jogo e, em seguida, integrá-lo
perfeitamente à animação do Vamos primeiro resolver alguns
desses problemas. A primeira é que
quero que esse personagem que eu trouxe
corresponda ao início do jogador. Posso selecionar o início do player e copiar
esses atributos no painel de detalhes
do local
da transformação. Depois, posso clicar no próprio
personagem e
colá-lo
clicando com o botão direito do mouse e escolhendo colar. Agora eu só preciso obter
a orientação correta. Ao clicar em Início do jogador, posso ver que é um 50 positivo, só preciso selecionar o jogador e obter 50
positivos também. Agora, eles correspondem
à mesma orientação e direção de onde o jogador realmente
vai começar, bem
como ao personagem da
sequência de níveis. Eles devem coincidir quando
misturamos e saímos do
cinema com a jogabilidade O outro problema é que não consigo
ver a reprodução da animação, porque ativamos meta
de pintura
para esse personagem Bem, o personagem
que estamos vendo aqui é, na verdade, a
versão da classe de spawn desse personagem É uma versão criada do nosso personagem jogável
do nosso projeto Nesse plano,
ativamos a segmentação por pintura. Para a sequência, queremos
desativá-la, dessa forma, ela não pretende reproduzir
a pintura como alvo;
em vez disso, estamos tentando deixar a animação
na sequência Em nossa meta de pintura,
posso marcar isso para
usar a meta de biblioteca para a versão do
plano de desova de Eu posso desmarcar isso, e então devemos ser
capazes de esfregar e Ele atualizará e reproduzirá a
animação em
que incentivamos o jogador a realmente
começar a jogar Essa foi a
escolha de desempenho que fiz para o meu filme. O seu
pode ser diferente. Como fazemos com que essa sequência de
níveis seja reproduzida e depois se misture perfeitamente à
nossa animação de jogo Queremos
entrar em um novo tipo de planta chamada planta de
nível Podemos acessar esse
plano de nível acessando o ícone de árvore aqui em cima e alternando para o plano de nível
aberto Normalmente, não há nada
aqui no gráfico de eventos, e é aqui que podemos
realmente usar o início do
jogo do evento nesse nível para reproduzir
a sequência que temos. A primeira coisa que eu quero fazer é selecionar uma sequência
de níveis. Início da sequência de níveis
é o meu nome. Eu posso escolhê-lo no
contorno da janela de exibição. Agora, quando clico com o botão direito do mouse,
posso dizer, criar uma referência
para a sequência de níveis Sem essa seleção,
isso não seria uma opção. Certifique-se de selecionar
primeiro
a sequência de níveis antes de
clicar com o botão direito do mouse aqui Agora que criamos essa referência à
nossa sequência de níveis, precisamos clicar em arrastar para fora dela para encontrar o próximo
nó de que precisamos. Quando você clica e
arrasta os nós, isso é contextual para esse nó Se eu tentar encontrar a mesma
coisa que
procuraremos aqui no início
do evento, não
conseguirei encontrá-la. Você quer
ter certeza de que está clicando e arrastando
os nós corretos para encontrar os que
estamos procurando Quero encontrar o player de
sequência de reprodução
e, quando clico nele,
recebo algumas notas aqui, e
podemos arrastá-las para fora. Agora temos uma maneira de nossa
sequência ser reproduzida, mas ela não sabe
como realmente possuir o personagem mas ela não sabe
como realmente
possuir o personagem com o qual
vamos jogar, e isso está em nossa sequência. Precisamos de alguma forma de
pegar nosso personagem, e podemos clicar com o botão direito do mouse
e dizer: pegue o peão do jogador Isso significa pegar o peão
do personagem que está sendo gerado e com o qual estamos jogando Isso é isso. Em seguida, queremos criar uma tag para
um personagem para que ele saiba qual personagem
possuir. Podemos
controlar de forma muito específica
e manual o que essa
sequência de níveis está controlando. Ao clicar e
arrastar novamente, temos que sair disso.
Posso procurar um conjunto de vinculação por nó de tag Agora, a única coisa que resta a
fazer é conectar algumas
dessas coisas e também
criar essa tag aqui. Vou minimizar esse primeiro segundo e
criar nossa tag. Se eu clicar com o botão direito do mouse no blueprint, posso criar uma tag Agora, a parte complicada sobre o
metahumano é que,
na verdade, existem vários componentes que compõem esse projeto Temos o corpo, temos
o rosto e, especificamente, o que estamos tentando
possuir e filtrar por uma etiqueta é, na verdade, o corpo. É aí que está a animação. Queremos realmente adicionar
a tag ao corpo. Vou clicar com o botão direito do mouse
e adicionar a tag ao corpo. Vou clicar em “Controle A” e “Controle C” para selecionar tudo e copiar para
ter certeza de que vou
digitá-lo incorretamente em
nosso esquema de nível Vou clicar em “Enter”
para criar essa tag, e podemos ver que ela existe
aqui ao lado do nosso corpo. Se eu clicasse em “Jogar agora”, podemos ver que a
animação é reproduzida, mas gera outro personagem Vamos corrigir isso adicionando a tag ao
modelo do personagem também. Também vou adicionar a tag
ao próprio blueprint,
e isso deve resolver esse problema Vou reabrir
o esquema de nível e posso colar
aqui essa tag de vinculação que acabamos Agora ele sabe a que se vincular com base no ator que
vamos dar a ele O ator é o peão do jogador, vou conectar isso. Vamos obter uma
pequena matriz
que será
criada automaticamente. Agora tudo o que precisamos fazer é conectar tudo da esquerda para a direita. Quando o jogo começar a ser jogado, definiremos essa tag e, em seguida jogaremos a sequência
com base nessa tag, e eu clicarei em
“Compilar” e “Salvar”. Também vou encerrar o sequenciador porque
às vezes o Unreal se
confunde se
estamos tentando jogar a sequência
no jogo
ou na linha do Vou encerrar isso apenas
por uma questão de segurança. Podemos ver que funcionou e
nossa animação volta. Agora, o problema é que
precisamos combiná-lo um pouco mais suavemente com
essa animação ociosa Vou entrar
na sequência de níveis e criar uma mistura. Vou clicar
na sequência de níveis
e vou
abrir a sequência de níveis. Quando vejo a animação, há um atributo muito
sorrateiro que podemos ajustar,
que é a mistura Agora, se eu mantiver
o mouse baixo aqui, na verdade
estou alterando a
duração da animação em si. Mas o que eu quero
fazer é pegar o canto superior, onde
podemos ver esse
pequeno triângulo. Isso controlará a
combinação real da animação. Em vez de estourar,
teremos cerca de um segundo
para voltar
à animação ociosa final
do nosso Como eles não
coincidem exatamente posição dos pés de
nossos personagens, por exemplo, teremos uma boa mistura
suave entre qualquer incompatibilidade
com a imposição de nossa sequência de níveis
e o início de nossa
animação inicial Agora, quando eu jogo, devo
conseguir ver minha animação ser reproduzida e devemos ter uma mistura
mais suave com o modo inativo O único problema com isso é que,
se eu começar a tentar inserir informações
, estou combatendo a
animação aqui. Se eu estou tentando me mover enquanto ele está jogando, é meio
que lutando um contra o outro. Preciso desativar a entrada por um determinado período de tempo, vou para
o plano de nível e vou desativar a entrada Então, eu quero atrasá-lo por um certo
período de tempo com base na duração
da animação em si. Digamos que três segundos. Então, eu quero poder inserir novamente quando
terminar. A última peça do
quebra-cabeça é dizer
qual é o alvo e o controlador
do jogador. Precisamos pegar o controle do
jogador
e, em seguida, fora desse controle do
jogador, eu quero encontrar o peão
controlado O alvo
será o peão controlado. Posso clicar duas vezes nele e clicar com a tecla Control para que fique
um pouco mais organizado, e o
controle do player será o que
pegamos aqui Apertar o controle para que
eu possa
segurar e usar outra
versão disso aqui Clique duas vezes e agora isso deve funcionar para desativar
a entrada durante
a reprodução cinematográfica Se eu pressionar o teclado, não conseguirei me mover
até acabar com o atraso Você pode ver que eu mudei um
pouco durante isso. Na verdade, posso simplesmente aumentar
o atraso em nosso cronômetro aqui para algo como
quatro, compilar e salvar, e isso deve impedir que
possamos
mover nosso personagem
durante o filme Estou pressionando W e
nada está acontecendo, e então ele começa a se mover
quando o filme termina Nesta lição, aprendemos como criar uma mistura perfeita entre o modo cinematográfico e o
modo de jogo para nosso personagem Aprendemos como criar uma mistura perfeita
ajustando alguns valores Sinta-se à
vontade para personalizá-lo e torná-lo uma mistura perfeita da cinematografia de sua escolha com a
animação ociosa de Se você estiver
tendo problemas para fazer com que essa
combinação perfeita ocorra, certifique-se de que
o início do jogador e sua sequência de níveis estejam
orientadas da mesma maneira Encontre-me na próxima lição, onde vamos
criar um cronômetro de início
8. Crie um temporizador de início: Bem vindo de volta. Nesta lição, vamos criar um cronômetro de
início para nosso jogador, que ele
saiba o quanto é
bem-sucedido
no nível que
criamos para ele. Vamos mergulhar de volta. Vamos criar rapidamente
uma linha de partida aqui. Para criar a linha de partida, vou usar uma caixa de gatilho. Vou digitar a caixa de gatilho
na parte superior do botão do
anúncio aqui. Eu quero uma caixa de gatilho. Não quero um volume de gatilho ou qualquer outra coisa. Eu
quero uma caixa de gatilho. Vou usar isso e posso simplesmente escalar isso e garantir que cubra
toda a linha de partida aqui. Claro, eu também poderia colocar
alguns outros elementos aqui que indiquem para o jogador que essa é realmente
a linha de partida Mas, por enquanto, eu só quero ter
certeza de que os elementos do jogo estão presentes. Depois, podemos sempre voltar
e adicionar algumas obras de arte ou malhas
estáticas para tornar os elementos funcionais do jogo
mais claros para o Vou me certificar de que o gatilho da caixa cubra totalmente
essa seção e que seja alto
o suficiente para que você
não possa pular por cima
dela como jogador. Quando o player
passar por isso, vamos
acionar esse volume. Vamos começar a
configurar essa lógica para que tenhamos uma
variável em segundos e possamos criar um pequeno cronômetro que será exibido na janela Mas precisamos criar uma
variável para os segundos e acioná-la com base na nossa
passagem por esse volume. Para fazer isso, quero
editar o modo de jogo. O modo de jogo está localizado ao
lado do plano de terceira
pessoa e é chamado de modo de jogo em terceira
pessoa Posso clicar duas vezes aqui
e abriremos a janela de configurações. O que queremos é o editor de plantas
completo real. Precisamos clicar
neste botão aqui para acessar o
editor de plantas do modo de jogo Agora que temos isso, podemos começar a criar nossas variáveis
que precisaremos. O primeiro é em segundos. Precisamos de alguma forma de
medir o tempo
e, claro, segundos são a maneira mais comum e
fácil de fazer isso. Há diferentes
tipos de variáveis. Isso é um material relacionado à
matemática da ciência da computação. Se todos esses nomes realmente não fizerem nenhum sentido, não
se preocupe com isso. Você pode pesquisar isso
ou simplesmente me acompanhar. Só queremos
escolher flutuar por enquanto. Agora podemos criar um evento personalizado que será acionado, para eu
possa adicionar um evento personalizado clicando com o botão
direito do mouse e
dizendo: Adicionar evento personalizado. Eu posso chamar isso de temporizador de início. Quando esse
evento personalizado é acionado, quero definir os segundos zero porque precisamos
começar do zero. Vou clicar e arrastar
a variável para fora e
escolher Definir segundos. O valor padrão já
é zero, então só precisamos
conectar isso. Agora, preciso de outra
variável que eu possa rastrear se o cronômetro
está funcionando ou não Dessa forma, posso usá-lo mais tarde, quer estejamos rastreando se
o cronômetro está ligado ou desligado e se quisermos exibir um
cronômetro da linha de chegada, por exemplo Vou adicionar outra
variável chamada B timer running,
e B é para booleano Queremos mudar isso
para um tipo booleano, que é um valor verdadeiro ou falso Se você passar o mouse sobre elas,
também poderá ver quais são essas
variáveis Para este, eu
só preciso saber se
está funcionando ou não
está funcionando? Quando iniciarmos o cronômetro, ele estará funcionando Posso configurar a variável de
execução do cronômetro para estar ativada, para que eu possa conectá-las
e marcar esta caixa Quando o
evento do cronômetro de início acontece, ele define a
variável segundos como zero e define o tempo
ou a variável de execução como ativada Mas como contamos os segundos? Precisamos de alguma forma de adicionar tempo a essa variável chamada segundos. Bem, podemos usar algo
chamado de marcação de evento. Se eu clicar com o botão direito do mouse
e disser a marcação do evento, há um evento que já está
incorporado ao Unreal Engine Se eu passar o mouse sobre ele, você pode
ver o evento chamado de cada quadro. É uma maneira fácil de
obter um valor baseado no tempo dentro do Unreal Quero pegar o valor
inicial de zero e adicionar, para poder clicar e arrastar
e escolher Adicionar. Quero adicionar os segundos Delta, ou
seja, a
quantidade variável de segundos. Os segundos delta já são rastreados
neste nó de marcação de eventos. Eu posso clicar e arrastar isso, e agora estamos adicionando
a essa variável. Mas agora precisamos configurá-lo
depois de adicioná-lo. Posso clicar e arrastar isso
para fora e escolher Definir segundos. Você pode ver que temos nossa variável
personalizada aqui embaixo e agora podemos definir os
segundos na marcação do Evento. Mas não queremos
fazer isso o tempo todo. Só queremos fazer isso quando o
cronômetro estiver realmente funcionando. Podemos usar esse valor para
diversificar essa tecnologia de eventos. Podemos dizer ramificação,
e podemos dizer, se isso for verdade, se o cronômetro
estiver funcionando, então faça isso Em seguida, defina o número de segundos com base no
Delta na marcação do evento. Se isso for falso, não faça nada. Agora, criamos nosso evento
personalizado do cronômetro de início, que rastreará
o número de segundos e também definirá
uma variável para a qual o
cronômetro está sendo executado Em seguida, ele definirá
os números de segundos que podemos chamar em
nossa interface de usuário
e, na verdade, usará esse valor, para que ele se preencha de
forma dinâmica e Vamos criar o elemento de interface
agora que o jogador pode ver. Vou clicar com o
botão direito do mouse e escolher Interface
do usuário,
Widget Blueprint Só há uma opção,
então vamos escolher essa. Vou chamar
desta vez de Widget. Dentro daqui, temos um Canvas qual podemos adicionar texto, para exibir coisas na
tela
para o nosso jogador como estado de saúde ou, no
nosso caso, esse cronômetro A primeira coisa que preciso
fazer é adicionar um Canvas. Agora posso ver qual é o formato da minha janela à qual estou
adicionando coisas. Eu posso clicar e arrastar isso para dentro, e agora podemos ver qual é a
borda da nossa cena. Agora eu posso começar e
começar a arrastar o texto. Neste bloco de texto,
quero ligar para esse cronômetro, pressionar um espaço e dois pontos Agora temos nosso cronômetro. Vou colocar isso
no canto superior esquerdo. Você pode colocá-lo no
centro, onde quiser. Vou adicionar
outro pedaço de texto que será
nosso segundo. Essa é a variável que
acabamos de criar. Vou vincular esse
texto a essa variável. Neste pequeno menu suspenso, posso escolher Criar encadernação. Vou vincular a
variável a esse texto. Agora temos essa
função que pergunta: a que você deseja se vincular Precisamos obter o modo de jogo, porque é
aí que
mora essa variável , aquela variável de segundos. Eu posso clicar e arrastar isso para fora, e dizer lançar para o modo de jogo em terceira
pessoa. Basicamente, estamos
apenas tentando obter esse modelo do modo de
jogo em terceira pessoa
e, quando o tivermos,
podemos dizer que sim, obter o modo de jogo,
e agora podemos acessar a variável clicando
e arrastando a partir daqui e escolhendo obter segundos Agora você pode ver que temos
nossa variável aqui e podemos clicar e
arrastá-la para o texto. Ele converterá o valor
flutuante em uma string, para que possa ser usado como texto Vou compilar e salvar. Vou voltar aqui, compilar
e salvar,
e apenas me certificar de que
estamos todos prontos Preciso mostrar o
cronômetro que fizemos. Preciso mostrá-lo
na tela real. Posso clicar no
botão Designer aqui em cima e voltar e fazer
os ajustes que preciso fazer, mas precisamos de alguma forma de
realmente mostrá-lo na tela. Podemos fazer isso na planta do
personagem. Vou clicar duas vezes na planta
do personagem. Quando o jogo começa
no Event start play, tudo isso acontece. Eu só quero acrescentar
algo a isso. Quero dizer que, quando isso começar, crie
também o widget
e o exiba Eu posso clicar e arrastar isso para fora e escolher
Widget, Criar widget Posso selecionar o widget
dessa classe e podemos tentar encontrar
nosso widget de cronômetro aqui e podemos tentar encontrar
nosso widget de cronômetro aqui.
Agora nós o criamos. Agora eu quero
exibi-lo na janela de exibição. Posso clicar e arrastar isso para fora e dizer, adicionar à janela de visualização Agora eu preciso saber o que adicionar
à janela de visualização, e podemos simplesmente retornar
esse valor aqui Eu posso compilar e salvar. A etapa final é,
na verdade, conectar a caixa de ativação ao nosso evento personalizado que
criamos no modo de jogo. Precisamos de alguma forma de
acionar tudo isso, para que eu possa entrar
no plano de nível e criar um evento
personalizado com
base na caixa de ativação
que criamos É mais fácil se eu
selecionar essa caixa de gatilho primeiro
e, em seguida, clicar com o botão direito do mouse, obtenho um evento de adição
para a caixa de gatilho 0. Ele sabe qual
caixa de gatilho eu selecionei e eu quero adicionar
um evento de colisão Add on Actor
start overlap é o que queremos, e quando começarmos a
sobrepor essa caixa de gatilho, faça alguma coisa e
diremos a ele o que fazer Se você se lembra,
nosso evento personalizado está em nosso modo de jogo em terceira pessoa. Precisamos chamar esse modo de jogo em
terceira pessoa para acessar esse evento personalizado. Vou clicar e
arrastar para fora, e dizer, modo de jogo em
terceira pessoa, e vamos simplesmente usar isso e obter o modo de jogo. Então, tudo o que eu quero fazer é
chamar esse evento personalizado, para que eu possa começar a digitar o cronômetro de início do evento
personalizado Podemos simplesmente clicar e
arrastar isso como destino, compilar
e salvar Agora, conectamos tudo o
que precisamos conectar. Criamos um evento personalizado
que rastreará o tempo. Criamos um
elemento de interface do usuário e conectamos essa variável personalizada de
segundos a essa caixa de texto. Em seguida, criamos
um
widget alternativo para a janela de visualização no início
do jogo Conectamos tudo
isso a uma caixa de ativação, então ela ativará
nosso evento personalizado que criamos no modo de jogo em
terceira pessoa. Isso não está funcionando
porque, na verdade,
adicionamos tudo ao projeto de
terceira pessoa,
não ao nosso projeto metahumano Vamos copiar e colar o que
fizemos em nosso projeto
metahumano Se você estiver usando um metahumano
personalizado, precisará executar essa etapa
dentro do seu projeto
metahumano personalizado Vou pular
até meus metahumanos
e vou
abrir esse Vou apenas
copiar e colar isso no Begin play, que está aqui em cima. Eu posso ver que o Begin play
está acontecendo aqui, e eu só quero copiar e
colar tudo isso aqui. Agora vou compilar e salvar, e isso deve funcionar para
nosso personagem personalizado Agora você pode ver que na verdade
já temos o cronômetro
no canto superior esquerdo.
Sabemos que está funcionando. Está mostrando a tela. Se eu correr por aqui, ele não está fazendo nada, mas assim que eu cruzar o volume
invisível do gatilho, ele deve começar a
exibir uma hora. Você pode ver que estamos rastreando
a hora agora em nosso jogo. Ótimo trabalho ao concluir esta
lição. Nós cobrimos muita coisa. Estávamos trabalhando em alguns projetos
diferentes e lentamente conectamos cada
um desses componentes Criamos um evento personalizado, criamos uma variável personalizada. Adicionamos essa variável para que pudéssemos rastrear o tempo. Em seguida, criamos nossa própria interface de usuário para que
o jogador pudesse realmente
ver tudo isso acontecendo
e, em seguida, usamos a
caixa de
gatilho como uma forma de realmente fazer com que
tudo isso fique visível para o jogador. Há muitas
informações aqui. Não se apresse e consulte esta
lição se precisar. Encontre-me na próxima lição,
onde vamos
criar um obstáculo para nosso
personagem superar
9. Crie obstáculos com a lógica do jogo: Bem vindo de volta. Nesta lição, vamos criar
um obstáculo para nosso personagem jogável
superar Esse obstáculo será uma caixa giratória, de
modo que, se o personagem
realmente se deparar com
ela, estimulará a física de
Rag Dall
em ela, estimulará a física de
Rag Dall nosso personagem e
depois Na verdade, é apenas um obstáculo ou
desafio
perigoso para nosso jogador tornar nosso nível mais interessante Abrindo nosso projeto
novamente, vamos começar. Primeiro, vamos criar
o obstáculo. Vou criar
um novo obstáculo na minha área de projeto metahumano Se eu estivesse criando
vários obstáculos, eu poderia me organizar para
criar uma pasta para si mesma. Mas, por enquanto,
vou criar uma nova aula de blueprint Vou clicar com o botão direito do mouse
no navegador de conteúdo, classe
Check Blueprint, selecionar o Ator
e vou
chamar isso de BP Underscore Vou clicar duas vezes
nesse Blueprint vazio. No interior, temos
essa tela em branco onde podemos criar
nosso obstáculo Vou adicionar
uma malha estática
clicando em Adicionar e
digitando em Malha estática Vou escolher a malha estática e vou encontrar um
obstáculo para nosso tipo de malha, e quero adicioná-lo
ao nosso Blueprint No conteúdo inicial de VR, há uma malha básica
chamada cubo SM 03 Por ter contornos vermelhos, acho que vai funcionar bem
para nosso objeto giratório Vou usar
essa malha estática. Agora eu quero adicionar um componente de
movimento rotativo. Quando pressiono simular, podemos ver que ele
está realmente girando, mas está girando
na direção errada e está girando
muito rápido Eu posso simplesmente escolher um
eixo diferente para girá-lo. Vou escolher a
malha estática e pressionar E, posso ver que será Y ou X e que quero
girá-la em um desses dois Eu vou para o componente de movimento
rotativo. Em vez de z,
quero transformar isso em zero. Eu não quero que ele gire em Z, e eu quero que ele gire em X ou Y. Eu quero girá-lo Vou escolher um
valor menor que 180. Eu quero escolher 90, e agora, quando pressiono simular, posso ver que ele está realmente girando em outra direção, algo mais desejável
para esse objeto Vou
desligar a simulação. Agora eu quero criar
um volume de gatilho que corresponda ao tamanho
desse obstáculo Vou adicionar
uma colisão de caixas. Com essa colisão de caixas,
vou
aumentá-la e fazer com que corresponda ao tamanho
dessa caixa Vou pressionar
R no meu teclado para abrir o atalho do manipulador
de escala Agora, quero torná-la um pouco maior do que as dimensões
da malha estática para
ter certeza de que o jogador realmente
possa colidir com essa caixa Vou compilar e salvar, e vou clicar
e arrastar
essa planta
diretamente para a nossa cena Vou girá-lo para cima
e vou apertar play Agora eu posso ver que tenho um objeto
giratório na minha cena, e se eu me deparar com
ele, nada acontece Eu posso simplesmente colidir com ele e não me machucar de forma alguma O que eu realmente quero fazer
é desencadear um evento de boneca de pano. Meu personagem
basicamente fica mole e
morre e enrola bonecas de pano
quando entra nessa caixa Precisamos criar essa lógica de jogo e
conectá-la a esse obstáculo Além disso, se eu quiser mover
isso para o lado, posso simplesmente girá-lo para baixo
pressionando E no meu teclado e girando-o em 90
graus Eu também posso ampliar esse objeto. Se eu quiser que essa escala
seja mais longa, posso fazer isso e pressionar
R no teclado e balança e também W para movê-la
para mais perto do chão. Dessa forma, está
bloqueando o caminho. Vamos criar a
lógica do jogo para um personagem de Rag Dall seguindo seu
plano Se você estiver usando um personagem de planta em terceira
pessoa, você entrará nessa planta e fará tudo o que
estamos prestes a fazer Mas eu estou usando um metahumano
personalizado, então vou entrar aqui e criar esse evento personalizado Queremos que nosso personagem
seja Rag Dall, então vou chamar meu evento
personalizado de Rag Vou clicar com o botão direito do mouse no gráfico de eventos
do Blueprint e
começar a digitar o evento personalizado Vou adicionar um evento personalizado
e chamá-lo de evento Rag Dall Para este evento personalizado, quero
simular a física
desse personagem Vou clicar
e arrastar
isso e começar a digitar simular Eu quero configurar a
física simulada na malha. Vou configurar a
física simulada na malha. Podemos ver que já está
mapeado. Se eu escolher o componente errado ou quiser
alterá-lo posteriormente, sempre
posso clicar e arrastar o componente e
mapeá-lo até o destino. Vou ativar a
simulação porque essa é a razão pela qual estamos criando esse nó é para simulá-lo. Então eu quero
reiniciar o nível. Vou criar um
atraso primeiro porque quero ver a simulação
ocorrer por alguns segundos. Vou atrasar isso para que
possamos realmente ver o efeito ocorrer em talvez 2 segundos. Então eu quero subir
de nível novamente. Quero obter o nome do meu nível
atual. Vou digitar get
current level name
e, a partir disso,
quero carregar esse nível pelo nome. Eu vou dizer nível
aberto pelo nome. Então, posso simplesmente inserir
o valor de retorno aqui. Isso criará um pequeno nó
de conversão de conectores para nós. Agora temos um evento personalizado
que aciona a física da nossa malha e atrasa o próximo
evento em alguns segundos, e então ele carrega novamente o mesmo
nível em que estamos Basicamente,
recomeçamos depois de colidirmos com a caixa. Mas precisamos estabelecer
esse relacionamento. Tudo o que fizemos foi criar
o evento personalizado, mas nada o está
acionando no momento Agora, há uma última
coisa que queremos fazer sob a malha é ir até a seção de
colisão
e, na seção de colisão, queremos ter certeza de que
escolhemos o ator de física Por padrão, isso
é malha de caracteres, e queremos mudar
isso para Physics actor. Agora que fizemos isso,
podemos compilar e salvar. Agora podemos conectar
esse evento personalizado ao obstáculo em si. Vou abrir a
planta do obstáculo
pressionando a barra de espaço de controle e, em seguida, abrindo Dentro deste plano,
quero dizer que os atores do
evento começam a se sobrepor Mas eu quero fazer isso especificamente para
a caixa. Vou clicar com o botão direito do mouse e dizer no evento no componente,
começar a sobreposição Quero pegar o
evento personalizado que acabamos criar e que está no
projeto do meu metahumano,
ou do seu personagem em terceira pessoa,
se você estiver usando isso Queremos aproveitar isso para que
possamos realizar esse evento personalizado. Vou falar com
nosso ator, e vou chamar
esse evento personalizado. Lembro que o chamei de Rag Dall, então vou
digitar Rag Dall, e aqui temos O alvo aqui é ele mesmo, para
o qual estamos nos dirigindo. Agora eu posso compilar e salvar, e podemos testar isso. Eu só preciso correr
até essa barreira, e ela deve acionar o pano
Dall, e você pode vê-la Funcionou. Ele criou um efeito rag Dall,
simulou a física
e reiniciou o nível Agora estou de volta ao começo. Mas havia
algumas coisas estranhas. A cápsula que contém
o personagem ainda estava colidindo com esse obstáculo depois que o Rag Dall foi iniciado
e está movendo
minha As coisas ficam um
pouco caóticas lá. O que podemos fazer é voltar ao plano
deste evento Bag Dall e adicionar mais
algumas Depois de começarmos a
simular a física, vamos destruir o componente da
cápsula para que ele não colida mais
com o Vou clicar e
arrastar para fora daqui e começar a digitar destroy component e
escolher o componente da cápsula O que acontece é que, se
olharmos na janela de exibição, o componente da cápsula
é essa gaiola de arame, e é isso que
está colidindo com o obstáculo depois de já
termos Queremos
desligar isso depois de
acionarmos para simular
o Rag Dall na malha do personagem Queremos desligar o componente
da cápsula, para que ele não colida mais com o obstáculo
depois de morrermos Destruímos esse componente depois de simularmos
a física, atrasamos a próxima
etapa em 2 segundos, para que possamos realmente ver
a física acontecer, e então eu quero criar uma transição de morte um
pouco melhor
para transição de morte um
pouco melhor o nível inicial novamente Vamos criar um fade de câmera. Mas para fazer isso, não podemos simplesmente
clicar e arrastar para fora daqui. Primeiro, precisamos pegar
o gerenciador de câmeras e clicar e arrastar para fora dele. Primeiro, precisamos obter
o gerenciador de câmeras. Agora eu posso clicar e
arrastar isso e dizer,
inicie o desvanecimento da câmera Isso só está disponível
para nós se estivermos clicando e arrastando para fora do gerenciador de câmeras do
player A câmera começará a
desaparecer após o atraso e logo antes de
nosso nível carregar novamente. Vou colocar isso
no processo. Queremos, digamos desaparecer de uma cor
vermelha porque morremos Estamos fazendo com que fique um pouco vermelho escuro só para
sabermos que está desaparecendo
porque morremos Quero que a duração
ocorra em mais de 2 segundos. Você pode jogar com esse
valor e aumentá-lo, algo como 5 segundos. Eu quero diminuir 0 -1. Quero ativar
completamente o efeito, o que é um deles. Vou digitar um aqui. Agora, para ver isso acontecer, para ver esse desvanecimento acontecer, precisamos de outro atraso aqui Vou copiar e
colar esse atraso e
colocá-lo aqui para que
possamos realmente ver
o desvanecimento ocorrendo Você deseja que esse
atraso seja tão longo quanto a transição e o
desbotamento da câmera ocorrerem Agora temos um evento personalizado. Ele será chamado quando
colidirmos com a caixa. Isso
estimulará a física, destruirá a cápsula, então não
colidiremos mais com o obstáculo em si depois
de já morrermos, e poderemos
assistir isso por alguns segundos, e então começaremos a ajustar
a câmera e recarregar
o nível em que estamos câmera e recarregar
o nível em que Vou compilar, salvar
e testar essas alterações. Isso funcionou, não estamos mais
colidindo com o obstáculo
depois que a simulação é
acionada e o nível Agora que criamos esse
obstáculo para nosso jogador, podemos pegar esse
perigo sublinhado do
Blueprint ou o que quer que você chame
de seu próprio Blueprint
e, na verdade, basta
clicar e
arrastá-lo para nossa cena quantas
vezes quisermos arrastá-lo para nossa cena quantas
vezes Não precisamos continuar criando esse obstáculo
repetidamente nos Blueprints Nós o fizemos uma vez
e podemos usá-lo repetidamente onde
quisermos em nosso nível. Uma etapa que você deve garantir é
tornar a colisão
da caixa
maior do que o próprio obstáculo Caso contrário, o jogador
nunca poderá realmente colidir com ele porque está
dentro do obstáculo Queremos tornar a
colisão da caixa maior do que o obstáculo para que possamos realmente acionar todos
esses eventos Brinque com isso, crie obstáculos de diferentes
formas e tamanhos, escolha diferentes malhas estáticas e posicione-as
ao redor do seu nível Na próxima lição, mostrarei outra maneira
de usar esse modelo
10. Finalize as áreas de perigo: Bem vindo de volta. Nesta lição, vamos pegar esse modelo de
obstáculo e adicionar
uma explosão a Também vamos adicionar um som e depois reutilizá-lo,
para possamos usá-lo em mais lugares
em nosso nível. Vamos começar. Então, vou abrir
espaço para esse evento de ragdoll,
clicar, arrastar
e começar a digitar
no emissor de spawn Eu vou dizer que o
emissor de spawn está anexado. O anexo será o componente real
da cápsula. Então, vamos anexá-lo
ao componente da cápsula. Mas precisamos fazer isso
antes que seja destruído. Então, vou avançar
um nível. Então, posso dizer anexar
a esse componente. O que queremos emitir é uma explosão de estoque que, na verdade,
vem com um motor irreal Então, vamos emitir uma explosão no local do
componente da cápsula Eu também quero tocar um
som com a explosão. Vou mover isso para
baixo e vou sair e
dizer, toque som 2D. Posso visualizar esses sons
pressionando o botão play. Então, vamos encontrar uma explosão. Todos esses sons vêm
com um motor irreal. Então, vou escolher
o de explosão e vou
compilar e salvar Agora, quando nos
deparamos com esse objeto, devemos ver uma explosão
e ouvir um som. Agora, se quisermos
ter o mesmo efeito nosso obstáculo de fogo
ou em qualquer outro obstáculo, não
precisamos ter
a malha estática Podemos criar um novo plano de
obstáculos. Então, vou clicar com o botão direito do mouse
e duplicar isso, e vou chamar
isso de gatilho de perigo Porque o que podemos realmente fazer é simplesmente remover
a malha estática e podemos ter
esse componente de gatilho. Podemos desativar a rotação porque não
precisamos que ela gire Eu posso simplesmente redefinir a balança,
então, quando trouxermos
esse componente de perigo, podemos redimensioná-lo
para o que precisamos Vou clicar e
arrastá-lo para a fogueira e escalá-lo para
que cubra toda
a fogueira. Mas quero mantê-lo
baixo o suficiente para que não suba
mais do que a própria caixa. Eu só vou diminuir
isso um pouco. Agora vou testar
esse volume do gatilho. É assim que você cria obstáculos e reaparece no início
do jogo Nesta lição, criamos uma explosão para nosso obstáculo, bem
como para o som, e reaproveitamos a planta do
obstáculo de maneiras diferentes para que possamos aumentá-la
em todo o nível. Ou seja, na próxima lição, vamos pegar todo
esse videogame e empacotá-lo para
que possamos compartilhá-lo
com nossos amigos.
11. Compartilhe seu jogo: Bem-vindo de volta. Nesta lição, aprenderemos
como podemos empacotar o videogame que você criou
e compartilhar com amigos. Dessa forma, você pode saber quem é o jogador mais rápido do seu
videogame. Vamos começar. Em primeiro lugar,
queremos garantir que o jogo carregue o nível correto para o jogador
ao abri-lo. Precisamos definir isso nas configurações
do projeto. Vamos editar as configurações do
projeto
e, nos mapas e modos, podemos selecionar o mapa padrão do
jogo. Atualmente, ele está definido como o Mapa Mundial Aberto
padrão, que não é o nível
que criamos. O nível que eu criei se
chama New Landscape 01. O nível que você escolher será o que você escolher para nomeá-lo. Eu só preciso abrir esse
menu e clicar no meu
nível que eu criei. Agora, quando empacotarmos nosso jogo, ele realmente
carregará o mapa correto quando começarmos a jogar. Vou
encerrar isso e, para começar a empacotar nosso
jogo para nossos amigos jogarem, podemos acessar
as plataformas e escolher a plataforma na
qual queremos publicar. Vou escolher o Windows e o projeto de
pacote. Mas
temos um erro aqui. É porque não temos o
STK para Windows instalado, então vou clicar em Cancelar Se eu voltar às
plataformas, às janelas e olhar para a parte
inferior aqui, posso ver quais
versões são permitidas. Então, tudo que eu preciso fazer
é pesquisar no Google Windows, STK, baixar o instalador e instalar o STK para A
instalação demorará um pouco e,
quando terminar, você poderá voltar ao
real e usar as plataformas. Em seguida, clique em Atualizar status
da plataforma primeiro, a menos que você já tenha
fechado e reaberto Agora, ele deve ser atualizado
e ser capaz de usar o pacote STK que
instalamos Agora vamos para plataformas, janelas e projetos de pacotes. Agora, não recebemos um erro
e ele está apenas perguntando onde queremos salvar
esse projeto de pacote. Fomos recebidos com
um erro de falha e posso abrir o
registro de saída e ver por que ele falhou Parece que ainda
falta um componente, que é o Visual Studio 2022. Vou encontrá-lo on-line
, instalá-lo e tentar novamente. Se o instalador
estiver parado em zero, você
poderá cancelar e
certificar-se de executar como administrador clicando com o botão direito do mouse e selecionando executar como administrador. Certifique-se de incluir também o material do C++ na instalação
, então marque esta caixa Agora podemos voltar
para plataformas, janelas e tentar o projeto de
pacote novamente. Se recebermos esse aviso,
queremos ter certeza de
que permitimos o acesso. Esta etapa vai
demorar um pouco, então deixe-a funcionar. Terminamos de
empacotar nosso jogo, então temos uma
pasta do Windows aqui
e, dentro dessa pasta, podemos ver o ícone do
Unreal Engine Tudo o que preciso fazer para jogar
nosso jogo é clicar no ícone do Unreal Engine que é
um aplicativo executável Agora temos nosso jogo
e ele está pronto para começar. Agora, se
quisermos sair do jogo,
basta pressionar a tecla tilda,
que está no canto superior esquerdo da
maioria dos teclados, logo
abaixo da tecla escape, e podemos digitar
sair e pressionar “Enter” Se quiser compartilhar este
jogo com seus amigos, você pode clicar e
arrastar tudo e, no Windows, clicar com o botão
direito do mouse e escolher a pasta zip
compactada S two Isso criará um
arquivo que você pode compartilhar com seus amigos e
que eles podem compactar, e lembre-se de que esse pode ser um arquivo bem grande. Acho que o meu tem
cerca de 4 gigabytes. Você vai querer usar algum serviço de transferência de
arquivos como wetransfer.com ou Google Drive para compartilhá-lo com seus amigos Nesta lição,
abordamos como realmente empacotar o jogo que criamos para que possamos
compartilhá-lo com nossos amigos. Tivemos que instalar duas coisas para o Windows. Tínhamos o Windows STK
e o Visual Studio. Você pode ter algumas dessas
coisas já instaladas se for um grande programador de
computador, mas eu não sou, então
tive que instalá-las Demoram um pouco, minha ficou parada em
0% por um longo tempo, então tente ser paciente
com essas instalações Lembre-se de que o tamanho do arquivo pode
ser muito grande para eles. Você vai querer encontrar um serviço de transferência de
arquivos que permita arquivos
grandes. Eu gosto de usar transfer.com ou Google Drive e
aí está Você tem seu jogo, você
pode baixar e compartilhar.
12. Considerações finais: Parabéns por
terminar esta aula. Se você está acompanhando todas
as aulas da série e até maiores, parabéns porque é muito material. Agora que você
terminou esta aula, você tem um conjunto de habilidades incrível. Aprendemos como adicionar um
estado a uma máquina de estados. Aprendemos como
criar obstáculos para nossos personagens e
cronometrar seus movimentos em um nível para que possamos criar um videogame competitivo e até mesmo
compartilhá-lo com nossos amigos. Eu adoraria ver o que você fez. Faça um vídeo
de
captura de tela do seu jogo e compartilhe-o
na galeria do projeto. Se você estiver interessado em
levar isso ainda mais
longe, jogue seu videogame
favorito. Veja quais tipos de recursos
e componentes existem neles e tente
recriá-los em seu próprio videogame Agora, considere todas
as complexidades de seus videogames favoritos e pense em como você pode levar seu videogame para
o próximo nível Você pode adicionar um jet
pack ao seu personagem. Você pode adicionar um sistema inimigo,
um sistema de combate, um sistema de inventário de
armas. Há muitas maneiras
diferentes de aumentar
o nível do seu jogo. Você pode se inspirar
em seus jogos favoritos. Depois de percorrer cada
um desses caminhos, reconheça que cada um é
sua própria disciplina profissional Se você gosta de criar inimigos e
descobrir o comportamento da IA, essa é sua própria disciplina
em uma empresa de jogos Ou se você gosta de fazer o design de
níveis e
descobrir a lógica do jogo de como o jogador interage
com o ambiente, essa é sua própria disciplina Continue explorando
o máximo que puder, porque cada caminho tem seu próprio
caminho para uma carreira gratificante Muito obrigado por
fazer este curso. Mal posso esperar para jogar seu jogo quando ele for
lançado no mundo.