Transcrições
1. Apresentação: Começar a desperfurar o
motor é muito emocionante. Você pode moldar uma paisagem, arrastar vários modelos
no nível, colocar mais coisas lá, ainda mais, ainda
mais modelos de tratados até acabar com
algo que você criou. Mas é estático.
Não faz nada. A única coisa que
faz é ficar bonita. E logo você
percebe que os projetos,
a base da funcionalidade
dinâmica, são a chave para tornar seus
jogos jogáveis e introduzir a mecânica de jogo para fazer renderizações de
filmes tenham eventos
dinâmicos que as dão vida
ou, no meu caso, até mesmo criar uma simulação de
tiro totalmente dinâmica que será usada Oi. Sou Jordi. Sou criativo
digital e uso o UNRLEngine para
todos os tipos de projetos, desde videogames até renderizações de filmes
e UnlEngine tem centenas de aplicativos
diferentes, mas independentemente da finalidade para a qual
você usa o mecanismo, eventualmente, você quer
aprender a criar projetos Bem, é exatamente com isso que
vou ajudá-lo nesta aula. Meu objetivo é ensinar a lógica por trás
do
projeto para que
você entenda o
que está fazendo e não apenas
recrie sem cérebro o que eu É por isso que
vamos passo a passo, criar pequenas coisas divertidas e realmente explorar algumas das principais notas sobre o que elas
fazem e como funcionam. E também vamos
cometer erros e ficar presos nas coisas porque
isso faz parte da jornada. Mas juntos,
resolveremos esses erros e mostrarei algumas técnicas muito
boas de como você pode resolver
problemas para, eventualmente,
fazer seu plano funcionar Ao final desta
aula, você terá uma sólida compreensão de como os blueprints e o
Unreal Engine Você poderá
transformar suas ideias em um plano de trabalho e,
eventualmente, criar o jogo dos seus sonhos Aquele curta-metragem insano ou
qualquer outro projeto irreal, você tinha em mente Essa aula é para todos
que começaram a explorar UnRel Engine e agora estão presos Blueprints.
Isso soa como você? Bem, então eu estou super animado para ajudá-lo e espero
ver você na minha aula. Vamos abordar a
programação do Unreal Engines juntos e aprender a entender os
fundamentos fundamentais dos projetos
2. A interface do Blueprint: Ei, pessoal, bem-vindos,
e estou super animada por vocês terem
começado esta aula. Vamos
mergulhar no mundo dos
projetos do Unreal Engine, que para alguns será
um monstro assustador de se Mas quando você entende a ideia fundamental de
como um projeto
funciona, é realmente muito
fácil e muito divertido Posso passar horas
descobrindo sistemas interativos, e é muito gratificante
se isso funcionar Então, vamos criar um plano. No navegador de conteúdo, clique com o botão
direito do mouse e
você verá que
podemos criar uma
classe de blueprint a partir daí Isso abrirá uma
janela que solicita que
selecionemos o tipo de
planta que queremos criar E no topo, aqui estão
as mais comuns, que vamos expandir, mas
expandindo todas as classes, podemos encontrar mais de 1.000. Agora, não se
assuste com isso. Existem classes de
plantas muito específicas que
farão mais sentido quando você entender a ideia geral
por trás das plantas Voltaremos a isso quando isso fizer
mais sentido. Então, por enquanto
, basta fechar essa janela e vamos dar uma
olhada na classe comum. A classe de ator é a
mais usada. Como diz a descrição, ele permite que você construa algo e o
coloque no mundo. Então, vamos começar com esse e explorar alguns dos
outros posteriormente neste curso. E eu vou chamá-lo de Cubo Interativo BP
Underscore. BP significa blueprint e é uma forma de se manter
organizado em seu Então, agora podemos prosseguir e
arrastar isso para o nível, e ele mostrará o widget
do tipo de ator blueprint Está vazio, é claro. Então,
a partir do esboço, podemos clicar em Editar ou simplesmente clicar
duas vezes na classe
blueprint em seu Mão, aqui está. A janela que você passará
a maior parte do tempo. Então, vamos explorar o que
vemos e para que é usado. No lado esquerdo,
temos os componentes. E aqui, podemos adicionar componentes com
os quais queremos fazer
algo. Assim, posso clicar em e escolher entre uma
longa lista de itens. E vamos começar
com um cubo simples. A propósito, esse é o mesmo
cubo que você
adicionaria diretamente ao seu
nível Ele tem sua própria porta de visualização e você pode movê-lo, escalá-lo, girar, exatamente como
faria em seu nível E o interessante é que também
podemos ver esse cubo de volta ao nível agora, já que o
adicionamos ao plano O que é muito importante
entender é que, se movermos o
cubo no nível, verdade
estamos movendo
o plano inteiro No painel s detalhado, podemos ver o cubo
que adicionamos Isso reflete a
janela de componentes dentro do blueprint. E poderíamos selecionar um cubo a partir daí para
mover especificamente esse ator, mas isso não é uma boa
prática porque não reflete mais a posição
do cubo na
planta Na verdade, mudar a
posição no blueprint novamente não é
mais atualizado no nível Então, vamos redefinir o que
acabamos de fazer no esboço. Vou trabalhar e construir tudo dentro
do próprio projeto. Tudo bem, vamos fazer
algo com esse cubo. Vamos criar nosso primeiro plano
funcional. E há dois lugares em
que podemos começar a criar scripts, seja no
script de construção ou no gráfico de eventos O script de construção é tudo o que
acontece no editor. Por exemplo, vamos arrastar o cubo para a janela de
construção Aqui está uma
referência ao cubo e, a partir daí, podemos clicar
e arrastar para
conectá-lo a um nó Unreal me mostrará uma lista de todos os nós aos quais posso
conectar o cubo, mostrando
essencialmente todas as características
do Como se todas as
opções de transformação estivessem lá. Poderíamos escalar a posição ou
girar o cubo a partir daqui. Agora, obviamente, queremos definir
a posição ou
escala ou qualquer outra coisa. Escolher obter retorna
à posição atual, o que é útil
para outras coisas. Por enquanto, vamos escolher a posição
definida. Você pode até pesquisar isso. Você verá o parente e o mundo. O relativo é a posição dentro do blueprint,
que está em zero A posição mundial é a
posição e o nível em si. Então, vamos escolher um
parente por enquanto, e você pode ver que esse nó nos
permite inserir
uma nova posição. Por exemplo, 100 unidades
acima no eixo Z. E a última coisa que
precisamos fazer é conectar o nó de construção
ao nó de localização. Se você quiser ver as
mudanças no nível, temos que clicar no
botão de compilação na planta Portanto, com quase todas as
alterações em seu nó, sempre clique nele
para ver o resultado. E isso compensa a posição. Ei, seu primeiro plano
lhe disse que era fácil. Agora, vamos dar uma
olhada melhor no nó. Cada nó tem entradas
à esquerda e saídas à
direita E para ativar um nó, ele sempre precisa de uma conexão de
execução de entrada, que começa com o script de
construção As outras opções, como alvo, nova localização e outros
enfeites, são valores Às vezes, você precisa ter
algo conectado a ele. Outras vezes você não. Por exemplo, posso
desconectar o cubo do alvo
clicando com
a tecla Alt no valor Compilar o blueprint
agora
me gerará um erro nas
notas porque ele está tentando executar o comando para
alterar a localização,
mas do quê Não está sendo informado para qual alvo ele precisa alterar
a localização, e isso me causa um erro Na parte inferior e nos resultados do
compilador, podemos ler mais sobre o
motivo do erro em si. Portanto, é ótimo descobrir onde e exatamente
qual é o erro. Muito fácil de usar
, na minha opinião. Vamos conectar o cubo novamente e compilar para resolver o erro Alguns valores na entrada podem ser preenchidos diretamente,
como o local, por isso não precisa de uma entrada, mas podemos, se
quisermos. Vamos fazer isso. Vou adicionar um novo
componente desta vez, uma esfera. E da janela de exibição, vou arrastá-la para
uma posição diferente Volte para o roteiro
de construção agora. O que eu quero fazer é colocar o cubo na mesma
posição da esfera Então, a primeira coisa que
preciso fazer é obter o valor da localização
da esfera e depois
inseri-lo na nova
localização do cubo Então, arraste a esfera para
o editor de nós e conecte-a a um nó de obtenção de localização
relativa. interessante agora é que
a cor do nó se assemelha à cor do pino de
localização de entrada Isso também é uma indicação de
que estamos conectados a ele. Clique em Compilar e
boom. Está funcionando. E isso me leva à
diferença entre o script de construção
e o gráfico de eventos. Veja, tudo o que criamos
no script de construção é estático. Qualquer funcionalidade de que
precisamos antes de rodar o jogo ou entrar na simulação
pode ser criada aqui. Um ótimo exemplo são os modelos. E eu tenho um exemplo, um monte de ativos que eu criei. Esses também são atores do projeto. Eu posso arrastar um para o meu nível. E quando eu entro
no projeto em si, você pode ver que ele também tem alguns atores na janela de
componentes Temos a
luminária em si. Luzes e algumas outras malhas
que compõem a luz. E quando eu entrar no script de
construção, você verá um
monte de nós aqui. Agora, deixe-me voltar ao
meu nível e selecionar uma planta para
conferir o painel de detalhes E todas essas opções
que você vê aqui são criadas de forma
personalizada a partir
do script de construção. Eu posso mudar a
cor da luz, a intensidade e muito mais. Tudo isso é feito
nessas notas. E eu encorajo você a
examiná-los passo a passo. Você pode ler facilmente o que está acontecendo e
entenderá. Como no primeiro, mudamos
a intensidade da luz, que é a intensidade definida. Nós dizemos qual alvo e depois escolhemos
a intensidade. E isso aqui vem
das opções que temos
no painel de detalhes. Como eu disse antes,
só podemos criar
coisas estáticas aqui, como alterar uma opção. No momento em que queremos
algo dinâmico, temos que criar essas
notas no gráfico de eventos. E você pode ver que eu também tenho várias notas lá
porque uma das
opções que tenho no painel de detalhes é ativar
a cintilação, e você pode ver
que ela não faz nada porque a cintilação Só funciona quando
jogamos o nível. Então clique em play e você verá agora que a
luz está piscando Agora, antes de terminarmos esta lição, quero mostrar como é o gráfico de
eventos. Vamos abrir a
planta do Cube novamente e, desta vez, clicar no gráfico de eventos na parte E em vez de uma nota de roteiro de
construção que temos no início, obtemos vários termos, como início do evento, jogo e marcação do evento. E eu gostaria de
te mostrar o que são. A jogada do evento
será executada assim que rodarmos o jogo, e eu vou
conectá-la a uma nota de texto impressa. Esta é uma nota muito simples
que será muito útil para descobrir coisas e
encontrar possíveis problemas. Também diz aqui, somente
desenvolvimento. Portanto, não é realmente
destinado a um projeto final. Vou mudar o
texto para o início do jogo. E a única maneira de ver isso em ação agora é correndo o nível. E, a propósito, eu não
compilei dessa vez porque Unreal faz
isso automaticamente quando você executa o nível Mas você pode ver agora que
ele gerou o texto. Clique em parar e
volte para a planta. Quero conectar o
texto ao marcador do evento e me desconectar do
evento e começar a jogar Veja o que acontece agora? A cada nova marca ou quadro, esse texto está sendo reproduzido. Portanto, ele permite que você atualize
algo a cada quadro. Mas há mais eventos como a sobreposição de atores
que temos aqui Podemos realizar algum
tipo de ação sempre que nos sobrepomos ou nos
depararmos com esse plano Por exemplo, corremos com nosso
personagem para o cubo
e, em seguida, o cubo
precisa se transformar em uma esfera Parece algo
divertido de fazer. Bem, vamos ver como podemos
fazer isso na próxima lição. Por enquanto, lembre-se de
que podemos adicionar componentes que queremos
usar em um blueprint Na janela de exibição,
podemos então ver essas coisas e também
alterar suas propriedades E então temos dois lugares para realmente criar uma funcionalidade de
projeto, que é o script de
construção para coisas
estáticas, como um menu de
opções para uma luz
e, finalmente, o
gráfico de eventos para recursos dinâmicos E esse também é o lugar em
que trabalharemos na maior parte do tempo.
Obrigado por assistir.
3. Eventos no Unreal Engine: Quando você está criando
um blueprint, entendemos que
há duas maneiras de fazer isso: estática,
que adiciona funcionalidade a um blueprint que só pode
ser usada dentro do
próprio editor , ou funcionalidade dinâmica que é acionada por um evento Então isso significa algo
que precisa acontecer para colocar nossa
sequência de nós em ação. E isso obviamente só pode
funcionar quando corremos o nível. Então, vamos abrir nosso modelo de cubo interativo novamente e navegar
até o gráfico de eventos Por padrão, vemos três eventos
diferentes aqui. Mas não há problema se você, por exemplo, excluir
a marca do evento. Você sempre pode
encontrá-lo clicando com o botão direito mouse e adicionando um evento no qual você encontrará todos os eventos disponíveis,
incluindo
o cartaz do evento. Agora, um evento específico
só pode ocorrer a partir de uma nota. Se eu adicionasse outra
nota de seleção aqui, você verá que ela
apenas destaca a atual.
Isso é um problema? Bem, vamos criar algo
sobre o cartaz do evento. Eu gostaria de girar meu cubo para que ele
continue girando E é assim que você
quer abordar isso. Pense em qual propriedade
precisaríamos para a rotação. Bem, isso vai
ser uma rotação definida. Então, vamos procurar a localização relativa
definida e ela automaticamente
sugerirá o cubo, que já temos
na planta E, portanto, ele
tem como alvo automaticamente o cubo. Se isso não aconteceu ou se você
excluiu esse alvo, você sempre pode arrastar
sua malha
de cubos da
janela de componentes para o destino Ok, então vou conectar o tick do evento
aos nós de rotação. Então, agora, a cada quadro, a rotação do
cubo é atualizada Ótimo. Mas para quê? Só posso
inserir manualmente uma nova rotação, mas isso não
vai girá-la Então, temos que descobrir uma maneira pegar o valor da
rotação atual em um e inseri-lo de
volta na nova rotação. Dessa forma, continuamos adicionando
um a cada carrapato, e o disparo gira Então, vamos criar uma nova nota desta vez escolhendo obter rotação
relativa. Mas espere, descobrimos
que não está lá. Bem, isso é uma porcaria. Existe uma abordagem diferente para obter a
rotação atual, talvez? Bem, se eu selecionar meu cubo, posso ver que a propriedade de
rotação faz parte do grupo de transformação Então, talvez possamos
encontrá-lo lá. Ok, clique com o botão direito
e pesquise por Obter uma transformação relativa.
E sim, está lá. O problema agora é
que essa nota retorna tudo em um valor. Isso se aplica à rotação, à posição e à escala. Em casos como esse,
podemos simplesmente clicar com
o botão direito do mouse no valor e escolher o pino de estrutura
dividido, que revela os valores t. Isso é muito comum quando se
trabalha com plantas. Às vezes você quer vários
valores em um pino, outras vezes você quer
algo específico, e então você pode simplesmente
dividir os valores. Na verdade, vou clicar
com o botão direito
do mouse no valor da rotação e dividi-lo novamente porque
não preciso dos três eixos de
rotação. Eu só preciso do eixo Z. E é assim que se consegue. Agora posso fazer o mesmo na
entrada da rotação definida. Agora eu posso conectar o eixo
Z ao Z. Obviamente, isso não
vai fazer nada Temos que adicionar um a
cada carrapato. Então, vamos desconectar o
pino Alt click e arrastar o valor Z
até um local para adicionar um novo nó, procuraremos adicionar e encontraremos um
em operadores Então, pegamos o
valor atual e o adicionamos por um. O resultado disso vai
para a rotação definida. Tudo bem, vamos continuar e
executar isso. E olha isso. Temos um cubo giratório.
Isso não é incrível? Então, como você pode ver,
não é tão complicado. Não tenho ideia
sobre mais
de 90% de todas essas notas diferentes. Se eu quero conseguir algo, tento pensar logicamente Quais são as etapas necessárias para alcançar o que eu
quero criar? E eu apenas uso a barra de pesquisa para procurar notas
que façam sentido, testá-las e
ver se funcionam. Se eles não tentarem
procurar outro. Meu objetivo é ensinar você a pensar logicamente
e criar planos para
que você possa criar o que
quiser sem precisar
seguir cegamente É muito importante que você entenda
o que está fazendo. Isso é pura programação, mas os blueprints
facilitam isso visualmente, o que é mais fácil para iniciantes
começarem a programar Tudo bem, então quais outros
eventos temos? Se você pensar em algo,
tente procurá-lo. Tipo, eu quero pressionar a tecla, que precisa acionar
algo legal. Bem, procure isso na barra
de pesquisa. Bem, aí está. Ele ainda oferece dois eventos
possíveis quando você pressiona a tecla ou
quando a solta.
Tudo bem, isso é legal Quero pressionar essa tecla e
depois acionar o cubo giratório Então, desconecte a marca do evento
e, em seguida, configure-a para a tecla. Vamos executar isso e apertar a tecla. Mas o que é isso? Nada
está acontecendo. Como é isso? Bem, isso é por causa de
algo chamado possessão. Simplificando, eu não estou
controlando o cubo. Ele fica em algum lugar no
nível e vive sozinho. Alguns eventos, como
pressionar uma tecla, só podem acontecer quando eu controlo o cubo ou,
em outras palavras, o possuo Bem, vamos aprender sobre
isso na próxima lição.
4. Blueprints controláveis — classes de peão e personagem: Quando
existe um modelo em seu nível, ele vive sozinho. Não podemos controlá-lo. Só podemos executar
eventos como o tick ou no início quando o nível
carrega ou quando o encontramos. Mas isso significa que primeiro precisamos
ter uma planta que possamos realmente controlar para
colidir com a malha quadrada Então, toda vez que nos
deparamos com o problema de que precisamos controlar ou
possuir um plano, vamos começar com o mais fácil, e talvez você já tenha
brincado com ele No meu navegador de conteúdo, vou clicar
em AD e escolher Adicionar recurso
ou Pacote de conteúdo. E logo de cara,
podemos escolher entre um conjunto de modelos de
plantas diferentes Você pode escolher qualquer um, mas para uma
melhor demonstração, vou escolher o modelo de
terceira pessoa e dizer Adicionar ao projeto. Em seguida, você pode fechar
essa janela e encontrar uma nova pasta no
seu navegador de conteúdo. E estamos especificamente
interessados em um item do modelo. Abra a
pasta Blueprints e, lá, você encontrará o personagem de terceira
pessoa da BP E podemos arrastar isso
para a cena. Vou abrir o
projeto e explorá-lo um pouco. E se você portar, poderá
ver diferentes componentes necessários para
nos dar um personagem jogável, como o personagem em si, mas também uma câmera que segue o personagem e cria a
visão que o jogador vê Há um boom na câmera, garantindo que
a câmera siga o personagem enquanto ele corre. Mas então, como podemos correr por aí? Olhando para o roteiro de
construção, ele está completamente vazio, e agora
entendemos o porquê? Porque é totalmente dinâmico. Então, quando abrimos
o gráfico de eventos, você pode encontrar todas as
notas que compõem o movimento do personagem.
Bem, isso é ótimo. Vamos fechar o plano
e clicar em executar. Mas espere. Eu ainda não estou controlando
o personagem. Eu ainda não o possuí
. O que está acontecendo? Bem, você só pode possuir
uma planta por vez. E só de
tê-los em seu nível, o projeto não sabe qual deles você realmente
quer controlar. E a forma como
definimos isso é por meio de um modelo de modo de jogo É outro tipo de planta. Agora, como os
modelos de terceira pessoa vieram
com um desses, você provavelmente já o viu. Vou clicar duas vezes nele. Agora, nós realmente não temos todas
essas guias diferentes aqui,
como o gráfico de essas guias diferentes aqui, eventos e outras, porque um
plano de modo de jogo é muito simples É um arquivo que
definirá os esquemas padrão
para seu nível Então, nas classes padrão, você encontrará algo chamado de classe
de peão padrão E esse é o plano
que será carregado para que
você possa
assumir o controle Então, vou fechar isso e procurar minhas configurações de mundo. Essas são as configurações gerais
para todo o seu nível, e você encontrará uma configuração do
modo de jogo aqui. Você pode selecioná-lo em um menu
suspenso ou simplesmente arrastar a planta do modo de jogo
para essa configuração Então o mundo diz: Veja este modelo de modo de jogo
quando você executa o jogo E o modo de jogo Ei, veja o plano do
personagem em terceira pessoa para o jogador
assumir o controle Agora, isso significa que, para um plano sobre o qual
assumimos o controle, não
precisamos dos que estão
no nível Então, vou deletá-lo e rodar
o jogo, e pronto. A planta do personagem é carregada e gerada
no nível E se você quiser que ele seja
gerado em um local específico, você pode adicionar um jogador
inicial ao seu nível Isso não é algo legal? Então, o que podemos fazer agora é
abrir o cubo novamente e criar algo divertido onde nos deparamos com o cubo Vou
clicar com o botão direito do mouse e
procurar algo como o evento Colt, talvez, e eu realmente não consigo
encontrar algo assim Então, vamos até
os eventos e ver se temos algo
como um sucesso de evento. Hm, e existe. E
diz que esse evento será acionado quando esse ator se
deparar com outro ator É exatamente disso que precisamos. E muito legal é que temos um monte de opções aqui. Portanto, mesmo dependendo onde o atingimos
a partir do local de ocorrência, podemos criar diferentes
tipos de funcionalidade. Mas vamos
simplificar as coisas por enquanto. Vou arrastar meu cubo para o gráfico de eventos porque quero
fazer algo com isso E se mudarmos a
malha de um cubo para outra
coisa quando nos
depararmos com ela? Isso seria incrível. Então, vamos procurar a malha
e ver o que temos. E vejo que temos um
nó chamado set static mesh. Bem, isso provavelmente
vai funcionar. E eu posso escolher uma
malha diferente nesse menu suspenso, algo que está no meu projeto Eu posso encontrar muitos que vêm de pacotes
diferentes dentro
do próprio motor, mas vamos procurar uma esfera e pegar qualquer coisa.
Realmente não importa aqui. E, é claro,
queremos executar esse comando quando o blueprint
for atingido. Então conecte isso. Tudo bem, vamos tentar. Clique em play e vamos
correr em direção ao cubo. E bum, nós temos uma esfera. Ótimo. Funciona. Mas vamos voltar ao problema
inicial que tivemos. Vou excluir o
hit do evento e criar um evento de teclado para a tecla e conectá-lo
ao nó de malha estática. Então, para que isso funcione, preciso assumir o
controle desse projeto Ok, parece fácil, certo? Navegamos de volta ao plano do modo de
jogo. Abra-o e, na classe de peões
padrão, vou escolher
meu cubo interativo, mas não consigo encontrá-lo Hmm. Bem, lembre-se de quando
criamos nosso projeto Eu vou fazer isso de novo bem rápido. Escolhemos uma aula de ator. Mas, como você pode ver, também há uma classe de peão ou uma classe de
personagem, que tem propriedades semelhantes Bem, isso significa que temos que
refazer todo o
projeto Bem, não se preocupe. Voltando ao meu
cubo interativo Blueprint, você pode encontrar um botão na parte superior para acessar
as configurações
da aula E aqui, você pode encontrar
a classe principal, que atualmente está definida como ator, mas podemos alterá-la para
peão ao procurá-la Então, a qualquer momento, você pode alterar o tipo de blueprint
que você criou Agora, quando voltarmos
ao modo de jogo Blueprint e,
a partir do peão padrão, escolhemos nosso cubo interativo vamos rodar o jogo
e ver Somos um cubo. Obviamente, não podemos
correr com ele porque não temos
controles de jogador para o cubo Para isso, temos que criar
todos os gráficos de eventos primeiro, mas somos gerados na
cena a partir desse projeto,
e isso significa que eu Se eu pressionar minha tecla, a malha muda para uma esfera. Eu realmente não consigo ver isso porque
estou dentro da esfera agora. Então, vamos fazer algo
bem rápido aqui. Abra a planta do cubo, vá até a janela de exibição
e
adicionarei uma câmera aos adicionarei uma câmera Vamos arrastar a
câmera um pouco mais para trás e agora
rodar o jogo novamente. Agora estamos vendo o
cubo pela câmera, mas ainda estamos na
mesma planta Então, se eu pressionar L, podemos ver a mudança em uma esfera. Então, para concluir, há apenas um plano sobre o qual
podemos assumir o controle No entanto, com esse projeto de peão
ou personagem, podemos interagir com outros
projetos normais ou de atores no nível, e controlar
algo diretamente ou interagir com eles são
tipos diferentes Eles não são
categorizados dessa forma, mas precisamos manter isso
em mente Alguns de vocês já devem
pensar, mas, Jordan, você quer ser capaz de controlar
várias plantas ao mesmo tempo, como ter um monte de luzes na minha cena e pressionar teclas
diferentes, ligá-las ou desligá-las Bem, essa é uma ótima pergunta, e há uma solução para isso, mas isso fica para a próxima lição.
5. Explorando o projeto de nível: Eu criei um novo
nível chamado Luzes, e o que eu tenho aqui é
um avião com alguns pilares, e eu tenho três luzes aqui que eu gosto de
controlar Temos um holofote azul aqui,
uma espécie de luz retangular
verde fluorescente
e, finalmente, uma luz pontual de cor quente Essas não são plantas. Acabei de colocar essas luzes
diretamente no meu nível. Agora, colocá-los em um modelo não é útil,
pois queremos
controlá-los pressionando
uma tecla para ativá-los ou desativá-los Agora, criar uma
planta de classe de lagoa também não é uma opção, pois isso fará com que a
planta apareça na cena Portanto, temos um controle muito ruim sobre onde eles
serão posicionados. Além disso, só podemos assumir
o controle de um projeto. Então, temos que
descobrir uma maneira diferente. Bem, aqui está algo
interessante. O nível em si também tem
um plano. No topo, você encontrará um
botão que listará todas as plantas que estão especificamente vinculadas
ao nível, uma das quais é o modo de jogo,
que já vimos antes Nós meio que o
conectamos a todo o nível. Mas, como você pode ver, também
há uma opção para abrir o plano de nível E o interessante sobre
esse projeto é que ele é executado no
nível mais alto da hierarquia, o que significa que possuímos
automaticamente No entanto, essa não é uma classe
normal de blueprint. Está sempre lá por
padrão, mas, como você pode ver, não
há janela de
componentes, nem janela de visualização, nem janela de
construção Isso porque os
componentes são basicamente tudo o que está no seu nível, como as luzes. Não podemos adicionar
propriedades a um nível, então não há uma guia de construção, apenas um gráfico de eventos para
quando o jogo termina. E agora fica muito fácil. Podemos simplesmente selecionar as
luzes do nível e arrastá-las para a planta
do nível E vou criar
os eventos para as teclas número 12 e três
do meu teclado. O primeiro tem que acender
a luz pontual, e há algumas
maneiras diferentes de fazer isso, e a melhor maneira de descobrir
isso é selecionar as luzes pontuais em seu nível e conferir o painel de detalhes Brinque com suas
propriedades para
descobrir a melhor configuração para
usar no projeto Tipo, sim, podemos
usar a intensidade. Você sabe, basicamente defina-o para zero e depois volte
para outra coisa. Mas então estamos
codificando algo, que é uma má prática, e você quer evitar essa
codificação rígida o máximo possível codificação Hart é onde
você
colocará valores no modelo Imagine que definiríamos o
lúmen quando a luz para 1.000 na planta Mas então eu volto ao
meu nível e começo a ajustar e
decido colocar o brilho dessa
luz de volta em 100 Isso significa que
eu também precisei voltar ao meu plano de nível e definir a intensidade
para 100 Codificando um valor, esse número é fixo Então, em vez de fazer isso, vamos procurar uma propriedade
que possa simplesmente acender ou apagar
a luz em vez de alterar
o valor da intensidade. E na renderização, podemos encontrar uma opção
chamada visível Como você pode ver, uma simples alternância mostrará ou aumentará
a
altura do componente Nesse caso, fazer
a luz brilhar ou não. Incrível. Vamos voltar
ao plano de níveis E a partir da
luz pontual, vamos arrastar o pino para conectá-lo
à visibilidade do nó. E há algo
muito interessante aqui chamado
alternar a E você tem sorte hoje,
porque nem sempre temos uma opção de alternância para
cada propriedade Normalmente, apenas uma opção definida
e, em seguida, precisamos
criar manualmente algumas notas em torno dela
para que ela seja ativada Mas, por enquanto, podemos
usar o botão, então conecte sua chave de uma execução
à visibilidade do botão de alternância E eu vou fazer o mesmo com
a luz retangular. Também aqui, alterne a visibilidade. E, finalmente, o
holofote também alterna a
visibilidade e conecta
a árvore-chave a essa nota Vamos voltar e rodar o jogo. E você notará que
podemos ligar e desligar essas luzes agora com
a chave apropriada. Até mesmo torne alguma discoteca
eficaz. Você faz isso rápido. Agora, tenho uma
pequena tarefa para você antes de passarmos
para a próxima lição Quando começo meu nível, quero que todas as luzes estejam apagadas, mas não quero que elas
se apaguem no meu nível. Então, o projeto tem que fazer isso. Eles precisam começar
quando eu executo o jogo, e então eu posso começar ligando-os ou
desligando-os novamente
pressionando minha tecla. É muito simples. nos eventos
corretos necessários para definir o estado da luz
quando eu executo o jogo e mostrarei a
solução na próxima lição.
6. Mecânica simples de jogo: sistema de plantio de bombas: Ei, bem-vindo de volta. Então, minhas luzes estão atualmente acesas
no Designer de níveis. Vou rodar meu jogo
e, como você pode ver, agora
eles estão desativados. Posso ligá-los ou
desativá-los novamente pressionando minhas teclas
dedicadas E também espero
que funcione para você. Agora, interessante, existem dez maneiras
diferentes de fazer isso. Eu provavelmente fiz isso
diferente do que você fez. Então, vamos dar uma olhada
no esquema de níveis. O que está acontecendo
aqui? Para começar, o pressionamento da tecla e botão de
visibilidade ainda
permanecem os Eu uso os eventos start play para definir a visibilidade
inicial. Eu suponho que você também use isso. Agora, deixe-me desacoplar o nó da
sequência por um momento. E o interessante é que também
podemos conectar os eventos começam a ser reproduzidos à alternância de
visibilidade Isso significa que há
dois eventos diferentes que podem cuidar da
execução dessas notas, o pressionamento da tecla e
os
eventos começam a ser reproduzidos. Agora, o problema é que
um evento só poderia ser executado em um outro
nó, como você pode ver. Então, temos que ser um pouco criativos. Uma coisa que poderíamos ter
feito era selecionar todas as
notas de alternância de visibilidade, copiá-las e colá-las aqui, e podemos conectar a
placa inicial à primeira nota, depois a saída dela
à segunda
e, finalmente,
aquela à Estamos fazendo uma corrente. E quando eu executo
isso, também funciona. Minhas luzes estão apagadas.
Mas, como você pode ver, há muitas notas para
algo simples como isso. Estamos tornando isso complexo. Estamos usando uma cópia de algo
que já está lá, então é uma boa prática sempre
tentar trabalhar com o mínimo de
notas possível. Então, vou deletar
tudo isso e conectar meu start play
ao nó da sequência. Isso executará cada comando
um por um em uma sequência. Funciona exatamente da mesma forma, mas um pouco mais limpo. Tudo bem, vamos fechar tudo. Vou abrir
meu nível de cubo novamente e também vou abrir o plano do modo de
jogo e mudar a panorâmica
padrão para o personagem em terceira
pessoa Porque isso nos permite
contornar os bits e, assim, nos
ajudar com a próxima coisa
que adoraríamos criar. Eu gostaria de colocar uma
bomba em qualquer lugar do mundo. Então se afaste, e quando
eu pressionar uma certa tecla, a bomba explodirá Vamos adotar uma abordagem
muito simples, então não se preocupe muito. Vou clicar com o botão direito do mouse
no meu navegador de conteúdo e escolher adicionar um novo sistema
Niagara Este é um sistema de simulação de partículas e
fluidos muito poderoso e
avassalador, mas não se preocupe Podemos escolher um modelo, e há algo
muito divertido aqui chamado explosão de confete,
perfeito para a explosão perfeito para Então, vamos clicar em Criar e
chamá-la de explosão de confete. Quanto à bomba em si, podemos usar um cubo ou algo que
já esteja no motor Se quiser, você pode importar seu próprio modelo de tratado, isso realmente não
importa. Então, como toda essa ação acontece de dentro
do personagem, vamos abrir e trabalhar dentro do projeto do personagem Basta deixar de lado todas as notas que cuidam do movimento. Você pode simplesmente ignorar isso. Trabalharemos no site. Então, vamos pensar na
lógica passo a passo. Vamos nos deparar com
problemas e depois resolvê-los. Então, a primeira coisa é apertar
uma tecla para plantar a bomba. Então, vou criar um evento de
teclado para a letra B. Quando ela é disparada, uma
malha que representa a bomba deve aparecer na frente do personagem
no chão. Vamos para a janela de exibição
e para um componente de cubo. Podemos escalá-lo e reposicioná-lo um pouco para que fique na
frente do personagem Agora, executando isso, podemos ver que o cubo está na frente
do personagem se movendo porque
todo o projeto
está sendo controlado Mas isso é bom
porque significa que o cubo sempre estará no lugar certo quando
o plantarmos O único problema é
que, no momento em que o cubo entra
ou fica visível, ele não deve mais
seguir o personagem Caso contrário, teremos
confetes na nossa cara. Bem, há uma boa opção para
sobrescrever que um objeto
deve seguir o personagem, que é simplesmente habilitar
a física Podemos simplesmente verificar
essa propriedade
no painel de detalhes quando você
seleciona seu cubo Agora temos um cubo que
cai e fica parado. Podemos até nos deparar com isso, o que é divertido. Nós
habilitamos a física. Então, no início, obviamente, também
queremos desativar a
visibilidade do cubo Nem tudo
precisa ser programado. Às vezes, você pode simplesmente
alternar algumas opções. Mas na poeira seguinte, quando pressionamos a tecla B, o cubo deve ficar visível Já fizemos isso antes,
então isso deve ser fácil. Arraste o cubo para
o gráfico de eventos e conecte-o à nota de visibilidade
definida Não precisamos alternar neste
momento e, é
claro, verificar
a nova visibilidade para que
seja verdadeira Tudo bem, agora temos que
garantir que o cubo apareça na
frente do personagem E mesmo sendo
invisível desde o início, ele ainda aparece bem na frente do
personagem no início Mas então andamos e
pressionamos o Biki para
deixá-lo visível Obviamente, ele simplesmente aparece
de onde já estava. Então, ok, temos que definir
a localização do cubo,
e podemos fazer isso Já fizemos isso antes.
Basta pegar o cubo e conectá-lo a uma localização mundial
definida A propósito, se você tiver dificuldade em
entender a diferença entre um mundo ou um local
relativo, este é um ótimo
momento para experimentá-lo. Você verá que esse parente
não vai funcionar, que é a posição
dentro da planta À medida que corremos,
a posição
do personagem muda
no mundo, mas não na planta A posição relativa
permanece a mesma. Mas então qual é a nova localização
mundial do cubo? Bem, obviamente, onde
o personagem está. Então, vamos pegar o personagem, que é a malha esquelética, e obter sua localização
mundial Conecte isso
ao novo local. Ótimo. Execute o jogo, e
eu vou andar um pouco e depois plantar a
bomba. Oh, o que é isso? Na verdade, aparece exatamente no mesmo lugar
do meu personagem. Sabe, deveria
estar na minha frente. E é aqui que fica complicado. Teremos que
resolver um problema. Como vimos antes,
podemos dividir os pinos
do local Então, em teoria, poderíamos conectar
o X ao X e depois conectar o Y a um
nó de adição e adicionar um valor de, digamos, 200 e colocar esse valor no
próximo local Y. E, finalmente, o Z.
Não, ele permanece o mesmo. Então, ok, em teoria, temos uma compensação agora E vamos rodar o
jogo, dar uma volta e pressionar a tecla B
algumas vezes. E percebemos que esse deslocamento depende de para onde o
personagem está voltado Portanto, essa não é realmente
uma boa opção. Não podemos assumir a
posição da malha. Vou excluir tudo isso e clicar com o botão direito
do mouse meus pinos para
combiná-los novamente. Vamos precisar da posição
de algo que esteja na frente do personagem. Hmm. E se adicionássemos
algo lá, como adicionar uma esfera
aos componentes, e eu arrastasse essa esfera na frente do meu personagem. Agora, enquanto eu
não habilitar a física, essa esfera simplesmente me seguirá e ficará exatamente na
frente do personagem. A única coisa que preciso fazer
é desativar sua visibilidade. Mas há um problema. Mesmo que seja invisível, ainda
posso esbarrar
em outros objetos Então, também temos
que desativar a colisão. Você pode pesquisar por colisão. Não há realmente uma opção aqui para ativar ou desativar isso,
mas vejo que há uma
predefinição que diz bloco A,
e o interessante é que há
uma opção aqui que diz que não há colisão Hm, eu me pergunto o que isso vai fazer. Bem, resolveu meu problema. Então, agora tudo se junta. Vamos pegar essa esfera, obter sua localização mundial e conectá-la à
nova localização do cubo E Bm, temos o mecanismo de
plantação de bombas funcionando. Um problema, porém, é
que temos um bug no jogo. Você sabe, os jogadores podem responder à bomba
sem parar, e isso faz sentido Toda vez que
pressionamos a tecla B, ela define uma nova localização mundial. Há apenas uma bomba, então isso só deve acontecer uma vez. Para resolver esse problema,
vamos fazer isso
passo a passo novamente. Então, se o jogador pressionar B, a bomba aparece, e temos que lembrar que
o jogador fez essa ação, então não podemos
executá-la em outra ocasião Você sabe, é
como os humanos trabalham. Se seu filho rouba um
biscoito, mas você não o vê
, ele pode pegar quantos
biscoitos quiser Mas se você os viu
pegando um biscoito uma vez, salve isso na sua memória e pode dizer aos seus filhos que
não levem outro cozinheiro. E as crianças fazem isso.
Eles ouvem muito bem. Então, também temos que armazenar isso
na memória do jogo,
e é aí que entram
as variáveis. Podemos encontrá-lo aqui no canto inferior esquerdo
do editor de plantas Já temos alguns.
Esses são os componentes que editamos, como a
esfera e o cubo Mas também podemos
criar um novo. Clique no botão Mais e nomeie
a variável plantada. E, por padrão, diz que
a variável é booleana. Esse é o tipo de variável. Podemos armazenar todo tipo
de coisas em uma memória. Um booleano é simplesmente uma afirmação
verdadeira ou falsa. Mas também podemos
alterá-lo para um número inteiro. Isso é um número. Podemos
ter uma variável de texto. Também há uma variável vetorial. Esses são três valores,
em outras palavras, XYZ.
Portanto, para armazenar um local e piorar as coisas, existem cerca de 7.000 tipos de variáveis a
mais Mas não se preocupe, assim como
nas classes de blueprint, você só usará as
mais comuns menos que já esteja
familiarizado com Unreal e esteja trabalhando em um projeto maior que
tenha necessidades muito específicas Agora, um lingote é
bom, verdadeiro ou falso. Arraste essa variável
para o gráfico e temos que escolher
entre obter ou definir. Armazenamos uma nova memória ou examinamos o que
armazenamos antes? Vamos começar com a
configuração da variável. Então, quando eu pressiono a tecla B, primeiro
precisamos nos certificar todas as ações
para plantar a bomba, então arraste o nó definido na extremidade, conecte-o e
configure-o como verdadeiro. Agora, volte ao início. Quando pressiono o Biki antes de realizar toda a
ação de plantar a bomba, primeiro verifico minha mente para ver se
já fizemos isso Então, desta vez, vamos
plantar. E a maneira de verificar isso é com uma ramificação simples, uma nota que você também
usará muito. Se você gosta de programação, é basicamente uma declaração de IL. Se uma condição for
verdadeira, faça isso. Essa é uma declaração da IL. Na verdade, é um pouco diferente. É chamado de filial. Ele analisa a condição
e, se for verdadeira,
segue esse pino de execução. Se for falso,
então segue o outro. Uma ótima maneira de dividir o fluxo de suas anotações
dependendo de uma condição. Já está plantado,
se for verdade, então não fazemos nada. Ou podemos adicionar um texto impresso dizendo que a
bomba já está plantada. Se for falso, isso significa que ainda não
plantamos uma bomba. Então poderíamos fazer todo
o plantio da sequência de notas da bomba. E executando o jogo, podemos ver agora que ele funciona perfeitamente. Tudo bem, a bomba está plantada. Vamos nos distanciar um pouco
agora e fazê-lo explodir. Podemos atribuir a explosão a teclas
diferentes ou
usar a mesma. Você sabe, nós já
temos uma filial aqui, então isso significa que
poderíamos configurar a explosão em si
quando plantada, é verdade. Então, arraste a
explosão de confete para a planta
e, imediatamente nas portas de visualização,
podemos ver que o confete se
apaga podemos Além disso, quando jogamos o
jogo, ele dispara. Então, vamos dar uma olhada
no painel de detalhes. Há algo aqui
que
ativa automaticamente essa simulação Bem, sim, existe. A ativação automática está ativada. Então, vamos desligar isso. No gráfico de eventos, isso significa que teremos que dar uma olhada confetes e vinculá-los
a um determinado nó de ativação Então, tudo o que estou fazendo é ler
as propriedades de um componente que sempre
volta como uma nota. É simples assim. Se você não sabe
como fazer alguma coisa, basta dar uma olhada nas propriedades. Essas são todas as opções que você tem e o que você pode mudar. Agora, também precisamos definir
a posição correta. Então, vou abordar isso um
pouco mais rápido , pois devemos entender
agora como isso funciona. Os confetes definem a
localização mundial, conectados. Em seguida, pegue o cubo ou a bomba, obtenha sua localização mundial e coloque esse valor na
nova localização do confete E, finalmente, se
sua bomba explodir, ela também desaparecerá Então, talvez pegue o cubo e conecte-o novamente a um nó de
visibilidade definido, mas deixe a visibilidade
desmarcada. Tudo bem, vamos tentar Vou colocar minha bomba, fugir um pouco e
depois fazê-la explodir Sim, confetes. Isso funciona. Mas, assim como com a bomba, não
queremos que o jogador a faça aparecer ou, neste caso, exploda novamente, porque isso acontecerá
olhando minhas notas atuais Nada aqui
me diz que o jogador não
deve reativar
o confete Mas tenho certeza de que você já sabe
como fazer isso. Então, essa é uma
tarefa pequena para você novamente. E, como antes, mostrarei a solução na próxima
lição. Obrigado por assistir.
7. Hit a detecção com traçado de linha: Estamos aprendendo que,
com bom senso, você sabe que tipo de notas escolher e
se conectar umas às outras. Às vezes, você precisa experimentar algumas notas diferentes para encontrar aquela que funciona
para seu propósito. E uma ótima dica é
usar algo como o HatchipT para perguntar o que você quer fazer e qual nota
você deve escolher para É uma ferramenta incrível para
ajudá-lo com coisas assim. Mas há algumas
notas em Unreal, que podem não ser
tão óbvias à primeira vista, mas
é muito importante conhecê-las E uma delas é
um pouco mais complexa. Então, eu quero explorar
isso junto com. Mas primeiro, vamos analisar a solução
da lição anterior. Então, quando plantamos uma bomba, ela sempre
ativa o confete E essa era muito simples. Só precisávamos criar
outra variável. Eu chamo isso de explodido, e vou verificar se
explodido é verdade Caso contrário,
ativaremos os confetes. E se for verdade,
não fazemos nada. Então, no final
desta série de notas, nós, é
claro, transformamos em realidade É exatamente o mesmo que
fizemos com o plantio da bomba. E como temos esses
valores e uma variável, poderíamos desenvolver ainda mais isso. Você sabe, o jogador
pode, por exemplo, pegar uma nova bomba e reinicializar as duas variáveis
,
para que o jogador possa
plantar uma bomba novamente. Esse é o poder de
trabalhar com variáveis. Vou ficar dentro
do Blueprint do meu personagem, clicar com o botão
direito do mouse em um espaço
vazio e pesquisar por Trace por canal E temos algumas opções
diferentes aqui,
caixa, cápsula, linha, etc Eles são todos iguais, exceto
pela forma do traço. Por enquanto, vamos pegar a linha. Isso fará mais
sentido daqui a pouco. A primeira coisa que
farei é criar um evento T de pressionamento de tecla e
conectá-lo à nota de rastreamento de linha Dessa forma, podemos
dispará-lo quando eu pressiono O que
isso faz e
por que é tão importante? Bem, podemos filmar uma linha. Agora, precisamos definir a
posição inicial e final dessa linha. Então, se você quiser tirar essa
linha do personagem, precisamos começar
obtendo a localização mundial
do personagem. E já fizemos isso
muitas vezes até agora. Quanto à posição final, poderíamos pegar a
mesma que a inicial, mas conectada a uma nota adicional. Isso nos permite adicionar 100
à posição atual. Você sabe, então
conecte-o até o final. Agora, se
fôssemos executar isso, não veríamos nada. Isso porque a linha não
deve estar visível. Mas enquanto estamos trabalhando nisso, podemos definir o desenho
Dbuk E vamos escolher a duração para que a linha permaneça
visível por tempo suficiente. Ok, eu vou testá-lo. Quando eu pressiono a tecla T, você pode ver uma linha
do personagem aparecer. Toda vez que eu pressiono a tecla. E o
interessante é que
podemos usar essa linha
agora para fazer
com que ela atinja alguma coisa e
, em seguida,
realizar dinamicamente uma
ação específica sobre essa ocorrência E uma das coisas em que
pensamos imediatamente é em um jogo de tiro Você sabe, você dispara uma bala, que será apoiada
por aquela linha invisível, e se ela atingir outro
jogador, ela morre Mas é muito
mais amplo do que isso. Quero te mostrar rapidamente um projeto em que estou trabalhando. Isso é para uma peça de teatro. Unreal Engine será usado como uma projeção em segundo plano E eu tenho esse brinquedo, que eu modifiquei para que, quando você dispara a arma,
ela clique em um botão E a partir daí, eu a deixo
desenhar uma linha de cima, e quando ela
atinge o chão, eu faço uma faísca de fogo disparar Você está fazendo isso, eu posso torná-lo dinâmico porque a
superfície do solo não é reta. Então, eu não sei onde colocar
a faísca. É aí que entra o traçado de
linha. Então, você deve ver esta nota como uma ferramenta incrível para criar
qualquer tipo de evento dinâmico,
seja para jogos, aplicativos
interativos, renderizações de
filmes, nas quais você tem simulações que se tornam
diferentes a cada exportação Mas, ok, chega de tagarelar. Vamos criar algo,
algo simples para começar. Eu quero caminhar até uma
parede e pintar com spray alguns grafites exatamente na minha
frente naquela Então, primeiro de tudo
, vou
criar uma
parede simples a partir de um cubo Vou
esticá-la um pouco para que
possamos obter uma parede alta e comprida. Muito espaço
para o grafite. E então precisamos de graffiti. E presumo que você
já esteja familiarizado com o FAP, que é o mercado de ativos
de motores irreais Se você pesquisar grafites e definir o preço como gratuito,
encontrará alguns
e, idealmente, preferirá
procurar decalques, e o Quickle tem Vou apenas adicionar o primeiro
em meu projeto. Muito simples. Se você arrastar esse
material para o seu nível, ele se projetará
na direção dessa seta em qualquer superfície. Ok, então de volta ao nosso projeto. A primeira coisa
que queremos fazer é garantir que a linha
saia corretamente. Começou na parte inferior
do personagem. Então, vamos
aumentar isso um pouco na altura do peito. Então, vou fazer um acréscimo
na posição inicial e
colocar 150 no eixo Z. Na verdade, tem 150 centímetros, o que faz sentido
para um personagem. A posição final também garantirá isso, pois precisa
atirar com força. Agora, o problema será
o valor de X e Y porque isso depende de para onde
o personagem está voltado. Testando bem rápido, você pode ver que no eixo X, ele sempre
dispara na mesma direção. Então, temos que
descobrir uma maneira de fazê-lo atirar na frente do
personagem o tempo todo. Agora, podemos fazer um cálculo
matemático completo,
mas, felizmente, há uma nota
simples para isso
chamada vetor Get forward Ele produzirá um
pequeno valor de X Y Z com base na direção em que
o personagem está voltado, para que
possamos conectar esse
nó a um nó de multiplicação O valor sempre
será um ou menos. Se você fizer X mais
Y, você receberá um. Então é assim que somos capazes de
descobrir a direção
para frente. Mas temos que multiplicar
em vez de somar dessa vez. E como o
vetor direto é um número pequeno, portanto, uma localização relativa, temos que adicioná-lo à localização
mundial da malha. E, finalmente, queremos adicionar 150 aos dois eixos Z
para aumentá-los um pouco Conecte a posição normal do
mundo
ao início e a posição mundial com o deslocamento adicional
do vetor de avanço até o
final. Vamos tentar. E meio que funciona,
mas também não funciona. De alguma forma, ele
sai do site
e, na verdade, demorei algum tempo para
descobrir. Mas voltando à planta
e selecionando a malha, você descobrirá que
ela foi girada Agora, não podemos simplesmente
girá-lo de volta para zero porque essa é a forma como a planta foi configurada Lembre-se de que também temos
controles de jogadores em andamento, então não podemos brincar
muito com esses ativos. Então, em vez disso, vamos pegar
o componente da cápsula. Ele encapsula tudo,
como o personagem, a câmera, etc. E, na verdade, é o componente que está sendo controlado
pelo jogador. E sim, isso funciona. No entanto, a linha é um pouco alta
demais, porque em vez de o ponto de ancoragem
estar na parte inferior, como acontece com a malha, na
cápsula, está no meio Então, basta diminuí-lo para
70 ou algo assim. Então, eu estou te mostrando essas coisas
que eu também encontro. Dessa forma, você pode
ver o processo pelo qual eu passo para resolver um problema. De qualquer forma, temos o traçado
de linha funcionando. Na saída do nó de rastreamento de
linha, temos uma propriedade out hit, e eu vou clicar com o botão direito
nela e escolher dividir o pino. Você verá o quanto realmente
está dentro. Há muitas maneiras
diferentes de
verificar como isso atinge algo
dentro do nível. um jogo de luta, você pode realmente localizar os ossos na malha esquelética do
oponente Mas o que
nos interessa é o local do ataque. Essa também será a propriedade mais usada
porque queremos
gerar
o decalque de grafite em um local específico, o local em o traçado da
linha
entra em contato com a entra em contato com Então, sim, vamos adicionar
o decalque de grafite. E você pode
pensar que, como antes, adicionamos decalque aos componentes, arrastamos para a planta
e definimos sua posição, assim como fizemos com o
cubo na lição No entanto, isso significa que só
temos um decalque com o qual trabalhar. Na verdade, se você
seguisse esse caminho, teria
notado que estava preso nele. Então, temos que
descobrir uma maneira de fazer com que
um novo decalque
se estenda até o nível toda
vez que eu pressiono minha tecla Dessa forma, posso pintar com spray vários grafites na parede Vamos ver se há
um nó para isso. Clique com o botão direito e procure por spawn. E eu posso ver que
há várias coisas que
podemos realmente incluir no
nível, o que é muito legal Isso pode lhe dar algumas
ideias do que é possível. E para minha surpresa, na verdade
há um que nos permite criar
um decalque em um local específico, e é exatamente disso
que precisamos Tudo bem, então temos que
definir o material do
decalque, que será o que eu
baixei Na verdade, podemos simplesmente arrastar esse material para
a propriedade da nota. Às vezes é mais fácil.
Teremos que definir um tamanho. Caso contrário, não podemos
ver o decalque, e isso é algo que
você deve repetir
para descobrir
os valores corretos. Eu vou te poupar da dor. Eu apenas escolhi 100 e
cada atributo de escala e defini a rotação X para 90
e o resto para zero. Quanto à localização,
essa será a localização atingida
do traçado
da linha. E, finalmente, precisamos ter
certeza de que o nó está sendo executado
após a nota de rastreamento de linha. Tudo bem, vamos ver
o que isso faz. Funciona muito bem. No entanto, noto
alguns problemas. O decalque também é visível
no próprio personagem. Você sabe, só deveria
ser visível na parede. E quando o traçado da linha
não atinge um objeto, ele também pinta
o grafite com spray Está em um local estranho,
pois não há um local de ocorrência, que é normal porque a nota sempre
será executada de
qualquer maneira Então, temos que resolver esses dois
problemas. Vamos começar com o
decalque do personagem. Vou selecionar
minha malha esquelética e pesquisar o decalque
no painel de detalhes E, como eu pensei,
temos uma opção aqui que garante que ele
não receba decalques. Ótimo. Essa foi uma solução fácil. Agora, o segundo problema. Portanto, somente quando o traçado da
linha atinge, queremos decalar para extensão E do nó de rastreamento de linha, temos um
valor de retorno na parte inferior. Isso simplesmente retornará verdadeiro se
a linha for atingida ou cairá se não houver impacto. Portanto, podemos simplesmente adicionar
um nó de ramificação no meio e fazer
uso dessa verificação. Então, somente se o acerto for verdadeiro, geraremos o decalque Caso contrário, não fazemos nada. Então, quando eu não estou
perto o suficiente da parede, ela não
pinta o grafite com spray, somente quando eu estiver perto o suficiente e a linha bater Obviamente, quando tudo
funciona conforme o esperado, você deseja desativar
o Dbug de sorteio para que os jogadores não
vejam realmente esse traçado de linha Portanto, este é apenas um exemplo de 1.000 de como você pode
usar a nota de rastreamento. Eu recomendo fortemente
que você brinque com esta nota e veja
quais outras
coisas dinâmicas você pode criar. Explore também a esfera e
o traço do cubo. Eles são exatamente iguais,
mas, em vez disso, têm
uma forma diferente , o que pode oferecer mais opções para o que você está fazendo. Até agora, foram algumas
longas aulas, então faça uma
pausa nesta aula, pratique um pouco com todas
as coisas que você
já aprendeu e
continuaremos mais tarde com uma simulação muito divertida que
criaremos juntos.
Obrigado por assistir.
8. Eventos de simulação dinâmica: Temos trabalhado muito no projeto
do
personagem em terceira pessoa Então, pensei em fazer algo
diferente para esta lição. Então eu criei um nível simples com algumas paredes e adicionei
alguns pinos a ele Agora, temos
três bolas no topo. Essas são apenas esferas nas quais
eu habilitei a gravidade para, você sabe, física.
Já vimos isso antes. E o interessante é que toda vez que
eu rodar o jogo, obteremos
um resultado diferente. Você sabe, essas bolas
nunca vão quicar da mesma forma. Eles sempre
acabarão em outro lugar. Isso é chamado
de simulação, e você pode ter muitas
simulações dentro de um jogo,
mas também ao fazer renderizações de filmes ou qualquer outra coisa que
use o Unreal Isso significa que, para qualquer
ação que queremos criar, ela precisa ser dinâmica. Ele tem que reagir
à simulação
e, novamente, é aí que entram
as plantas Então, eu tenho a ideia de
mudar a cor
desses pinos se uma das
bolas bater neles, e se eles tiverem vários solavancos, sua cor continuará Por exemplo, uma protuberância os
tornará verdes, um segundo amarelo
e um terceiro vermelho Então, a primeira coisa que queremos
fazer é remover todas
as latas porque vamos substituí-las por uma planta Então, vamos criar uma classe de ator
blueprint, e vou chamá-la de BP pin. E dentro dos componentes, vou adicionar o cilindro e quero redimensioná-lo um pouco para que o pino
fique mais E, na verdade, você já pode
arrastar a planta para
sua cena para entender
melhor quanto você
precisa escalá-la É sempre melhor
dimensionar a malha real
do que a planta em si. Vou girá-lo
e movê-lo no lugar certo. E quando eu terminar, vamos duplicar esse esquema várias vezes, mantendo
pressionada a tecla Alt e
arrastando-a para uma Tudo bem, agora podemos acessar modelo
do Pin e começar a
conectar algumas notas Então, queremos encontrar uma maneira de
acionar um evento sempre que
o cilindro for atingido. Então, a primeira coisa que podemos fazer
é procurar um evento desse tipo. E em caso de colisão, na verdade
existe um que se
chama evento atingido. Já
vimos isso antes. E uma ótima maneira de testar
e ver se funciona é
conectá-lo a um
texto impresso ou a uma nota de sequência de caracteres. Vamos rodar o jogo. E,
infelizmente, isso não funciona. Agora, vou te
poupar do trabalho. Mas, normalmente, quando
um evento desejado não
está sendo acionado
, pode ser uma configuração
dentro das propriedades da malha. Então, selecione o cilindro e
vá para o painel de detalhes. Há uma configuração
aqui em colisão chamada Simulation
Generate Hit events
e, por padrão, ela está desativada Então, basta ativar. motivo pelo qual algumas dessas opções estão desativadas por padrão
é o desempenho. Se você não estiver usando
o hit do evento, ele também não deve
se registrar porque embora você não esteja usando
algumas dessas notas de eventos, nos bastidores, esses eventos
recebem um ping a cada vez. E ao construir
um mundo grande, isso pode levar a problemas de
desempenho. Portanto, sempre verifique os detalhes do componente se houver algo que
precise ser ativado. Antes de prosseguirmos, há
uma coisa importante a saber. Você sabe, anteriormente,
tínhamos que definir a malha como um alvo em uma nota. Desta vez, não
precisamos fazer isso. Isso significa que o evento atingido é acionado sempre que
o blueprint é atingido Se eu tivesse várias
malhas aqui e quisesse acionar especificamente
o hit para uma malha específica, você pode selecionar essa malha
e, se clicar com o botão
direito do mouse aqui, verá que podemos adicionar um evento específico para essa malha E em caso de colisão, podemos encontrar o componente
atingido por cilindro Então esse é exatamente o mesmo evento. Uma é para a malha específica. O outro é para tudo
dentro da planta. Ok, nós o temos funcionando agora. O texto da tela dirá
olá sempre que um alfinete for atingido. Então, queremos mudar
a cor do alfinete. E para fazer
isso, precisamos
fazer mudanças
dinâmicas no material. Portanto, vou criar um
novo material e chamá-lo de pin. A criação de materiais também
é baseada em nós. Funciona de
forma muito semelhante à das plantas, e podemos fazer todo
tipo de coisas e conectar isso a várias propriedades do
material aqui Também podemos colocar
texturas aqui, pois se você quiser que o pino pareça
um poste de madeira ou qualquer outra coisa, vou simplificar
por enquanto e apenas alterar a cor base para branco na própria propriedade
do material E então eu vou voltar
para a planta, selecionar o cilindro e
mudar seu material para pino, aquele que acabamos de criar Tudo bem, vou pegar
o cilindro e arrastá-lo para a planta A partir daí, vamos ver se
podemos encontrar um nó para alterar o
parâmetro de cor base de seu material. Procure material e,
navegando pela lista, preciso de uma nota definida, e aqui está algo
que pode funcionar definir o valor do parâmetro de cor no
material. Vamos pegar isso. Tudo bem, então ele pede que eu
defina o nome do parâmetro. O parâmetro é chamado de cor
base, certo? Então, vamos digitar isso aqui. Em seguida, podemos escolher um novo valor ou cor do
parâmetro. Você sabe, vamos torná-lo verde. E, finalmente, conecte
o evento a essa nota para que ela possa
ser acionada ao ser atingida. Tudo bem, vamos tentar. Hmm. Isso não funcionou. Talvez o
nome do parâmetro não esteja correto. Talvez tenhamos que fazer
outra coisa com essa propriedade. Vamos voltar ao material e examinar a propriedade da
cor base. Vamos clicar com o botão direito do mouse e
ver quais opções temos. Ah, interessante. Podemos
promovê-lo a um parâmetro. Hmm. Isso faz sentido. Essas propriedades do material
são exatamente isso. Propriedades, e só podemos fazer alterações no
que está acontecendo na frente dessas propriedades nas quais definimos uma cor ou textura. Chamamos esses parâmetros e eles entram na propriedade. Isso significa que também podemos
alterar o nome
do parâmetro para
cor do pino, por exemplo Isso torna muito
melhor trabalhar com ele. E isso também nos faz
entender melhor que, com materiais
muito complexos, podemos fazer alterações em
um parâmetro específico, que pode alterar a sujeira e a água ou o reflexo no vidro. Tudo bem, vou mudar isso
para branco, a cor padrão E no meu projeto, esse nome de parâmetro
agora se torna cor de alfinete Você tem 100 notas aqui, também
faz muito
mais sentido ver a cor do
alfinete
do que a cor base. Tudo bem, execute a simulação, e ótimo. Isso funciona. Agora, a ideia agora é
mudar a cor três vezes. E há várias
maneiras de fazer isso. Uma forma é criar
um valor numérico e adicionar um a ele sempre que o
evento for acionado Em seguida, verificamos qual é
esse número
e, com base nisso, alteramos
a cor de acordo. Mas isso é muito código
para algo que podemos simplificar com uma nota D. Na verdade, você pode encontrar
vários nós de controle de
fluxo
ao procurá-los. Já mencionamos alguns. O nó dN, onde N
representa um número definido, executa uma ação pela
quantidade de vezes que você escolher. Então, podemos definir isso
no valor de entrada. O contador na saída nos
dará o número em
que o nó está. Então, se for a segunda
vez que ele é acionado, o número de saída é dois. E em vez
de fazer várias ramificações e verificar
se é o número um, dois ou três, podemos
usar um nó de comutação. E, mais especificamente,
ative It onde representa um número inteiro
ou um valor numérico, e então podemos adicionar quantos pinos
de saída quisermos Então, vou adicionar
um para cada número. Agora, o nó final final
começa com um, então vamos manter
o primeiro zero vazio. Poderíamos duplicar
o nó do material três vezes e fazer com que
ele mudasse de cor Mas, novamente, isso não é uma boa
programação. Muitas notas. Você quer
mantê-lo simples, fazer com que funcione e seja fácil de
se adaptar no futuro. Vou clicar com
o botão direito do mouse na cor do parâmetro e escolher
promovê-lo para variável. Isso o adicionará
à lista de variáveis. Desta vez, não é um lingote
como trabalhamos antes, mas é uma variável de tipo de
cor linear Funciona exatamente da mesma forma. As variáveis podem ser
obtidas da mesma forma que fazemos aqui. Obtemos o valor da cor, mas também podemos definir a cor. Então, basta arrastar a variável para o blueprint e escolher set, e faremos isso três vezes A propósito, você também pode simplesmente copiar e
colar o nó definido. Agora, conecte as
saídas de um, dois e três e, finalmente, altere
a cor de cada um Podemos então trazer as
saídas X de cada nó para
o nó do parâmetro
de cor para que ele
realmente seja acionado
e altere a cor Vamos tentar.
Na Yippie. Funciona. Então, estamos começando a entender que, embora
com algumas notas, podemos fazer muita coisa, mas também
se transforma em uma bagunça bem rápido A propósito, aqui está exatamente
a mesma coisa sem usar a nota de
fazer e trocar, apenas um monte de filiais, cheques e contadores manuais Ele faz exatamente o mesmo. Mas em um projeto mais complexo, se você planejar todos os
seus recursos dessa forma, se
torna uma grande bagunça Portanto, explore um pouco mais
as notas de controle de fluxo para se
familiarizar com elas. É definitivamente
assustador no começo, mas quando você começa a
entender como eles funcionam, eles ficam muito melhores O problema é o seguinte.
Gosto muito do que acabei de criar
e quero usar muito
mais essa
mudança de cor no meu projeto. E quando você
pensa em escalar, até mesmo essa
estrutura de notas curtas é demais. E é aí que entram
as funções. Mas isso é para a próxima lição.
9. Funções do blueprint — Código reutilizável: Acredite que acabamos de criar
um recurso incrível com esses giros mudando de cor à medida que outro objeto
colide com Eu quero usá-lo mais, mas ter que copiar e colar
essas notas se torna uma bagunça. E também quero que essas notas
sejam ajustadas com mais facilidade, especialmente quando se trata propriedades como a cor. Bem, é aí que entram
as funções, e você pode vê-las
como uma nota personalizada. No lado esquerdo, você encontrará uma função
sap a partir da qual podemos clicar no botão Mais
para criar uma nova função, e vamos chamá-la de mudança de cor
ou algo parecido. Foi aberto automaticamente. Ele tem sua própria área de trabalho, e você pode ver aqui que
podemos voltar ao gráfico de eventos. E se você fechar sua função, sempre poderá
abri-la novamente clicando duas vezes em
sua função no painel de
diagramas Então, vou voltar ao meu gráfico de eventos e realmente colocar tudo nessa função,
exceto o nó de eventos, que não é possível. Você precisa conectá-lo a uma execução recebida que
um evento não tem, porque é
aí que as coisas começam Vou controlar o X, que é cortado, e
depois, na função, colarei o nó. Vamos conectar o início
da função ao nó D N. Em seguida, volte para o gráfico de eventos
e, assim como uma variável, posso arrastar essa função
para o meu projeto E, como você pode ver, é
apenas um nó simples. Você pode
vê-lo como um contêiner para todos os outros nós. Conectar os hits do componente a essa função fará com que
tudo funcione exatamente da mesma forma. E o legal é que eu posso reutilizar essa função
quantas vezes eu quiser Por exemplo, vou
até minha porta de visualização e duplicarei esse cilindro para
que tenhamos dois deles E para facilitar, vamos renomear esses cilindros
para pino um e pino Em seguida, vamos voltar ao gráfico de
eventos e criar também
um impacto de componente para o
segundo pino. Com a opção selecionada, clique com o botão direito do mouse no evento de colisão
ao atingir o componente E podemos conectar
a mesma função agora a esse evento também. E meio que funciona,
mas na verdade não. Sabe, minha segunda
lixeira não muda
de cor. Por que isso? Vamos dar uma olhada nos
nós novamente na função. E aqui está algo
que eu noto. Quando fazemos a mudança de cor, temos como alvo o pino um. Então, para o outro pino,
precisamos direcionar esse também. Então, precisamos de um parâmetro na função
que possamos alterar, e isso é feito facilmente. Selecione a função e
vá para o painel de detalhes. Aqui você pode ver
na parte inferior que podemos adicionar um parâmetro de entrada e
saída. Vamos criar uma entrada, e elas são
iguais às variáveis. Isso significa que podemos
dar a ele um nome como target e, em seguida, escolher
o tipo de variável. E se você não conhece
esse tipo de variável, você sempre pode passar o mouse sobre o
parâmetro nesse caso, os nós de cor,
porque isso
mostrará que tipo
de parâmetro é, e é isso que
queremos tornar dinâmico É uma referência de
objeto de componente de malha. Então é exatamente isso que
definiremos como o tipo de variável. Agora, antes de fazer qualquer outra coisa, vamos voltar
ao gráfico de eventos. Veja que a função tem um pino
de entrada agora chamado target, que é o que
acabamos de criar. Assim, podemos vincular a malha do
pino um
ao primeiro alvo da função e pino dois à segunda função. Então, embora estejamos
usando a mesma função, nós a tornamos dinâmica,
permitindo que usemos a função
em alvos diferentes. E essa é a grande
vantagem das funções. Escolhemos quantas opções ou propriedades
queremos expor como entrada ou saída e isso é exatamente o
mesmo que qualquer outra nota Na verdade, você pode vê-la como
uma nota reutilizável personalizada. Mas ainda não terminamos. Vamos voltar para a função. Então, no início, o alvo foi definido
no gráfico de eventos. Agora só precisamos ter
certeza de que ele vai para o alvo real
do nó de cores. Portanto, exclua o pino um e conecte nossa entrada de
destino ao alvo dos nós de cor. Tudo bem, vamos tentar. Isso definitivamente
resolveu esse problema. Agora, os dois pinos
mudam de cor individualmente, mas só
mudam de cor uma vez Deve ficar amarelo e depois vermelho. O que está
acontecendo aqui? Bem, vamos fazer algumas depurações. Essa é uma técnica para
descobrir onde está o problema. Quero ver se meu
nó final final realmente conta, porque
eventualmente é isso que
a cor define. Então, eu preciso da saída do valor
do contador da função. Para isso, criaremos
uma variável de saída. E vamos chamá-lo de contador, e o tipo de
variável será um número inteiro Eu posso ver isso instantaneamente
observando a cor do pino
do contador. Depois, às vezes, você também
saberá essas coisas. Agora, isso
nos dá uma nota de retorno. Temos que conectar o último pino
exato ao retorno e enviar o contador para a variável contadora da
função para passá-lo. Quando voltarmos
ao gráfico de eventos, você notará que a
função tem um pino de saída e podemos usá-lo em combinação com uma nota impressa em
texto. Mas em vez do
texto dizendo olá, eu queria mostrar o
valor do contador. Automaticamente, ele adicionará uma conversão variável
de numérica para texto Vamos fazer a simulação. E, como eu pensei, sim, ele só produz um Não conta mais. Então, localizamos o problema
fazendo algumas depurações. Eu uso o texto impresso
o tempo todo para descobrir o que está acontecendo no
meu projeto e localizar problemas que encontro. Então, qual é o problema? Se você compartilhar suas
descobertas com o She GPT, ele dirá que uma
função sempre será reiniciada toda vez
que for acionada Portanto, o fluxo controla onde ele precisa se lembrar de
algo como a quantidade de dívidas que pagou
será redefinida para uma, e isso faz sentido Portanto, embora essa nota final sido ótima para manter minhas
anotações mais organizadas, com nenhuma função, não podemos
usá-la. E está tudo bem. Já estamos
usando uma função
que é uma única nota reutilizável Dentro dessa função, não
é um problema ter mais nós e
torná-la um pouco mais confusa Então, exclua esses nós e vamos criar manualmente
a mesma funcionalidade. Crie uma nova variável chamada counter e verifique se ela é
do tipo inteiro Em seguida, arraste-o até o
blueprint e escolha definir. Conecte os pinos exatos
e, em vez de conectar uma variável get do contador à
seleção do switch, podemos simplesmente usar a
saída do nó definido É exatamente o mesmo. Como esses nós estão
muito próximos, podemos fazer isso sem
fazer bagunça. Agora, só precisamos adicionar um
cada vez que ele for acionado. Então, obtenha o valor
do contador e
passe-o por um nó de adição. Vamos adicionar um e depois
conectá-lo ao nó definido. Então, estamos pegando o número
atual do contador, adicionando um a ele, o
que dá dois, e vamos
salvá-lo na variável
com o nó definido. Na próxima execução, obtemos
o valor do contador novamente, que agora é dois. Vamos adicionar um a ele, o que
dá três e assim por diante. Então, basicamente recriamos a nota
do. Vamos dar uma olhada e é
incrível. Funciona perfeitamente. Agora, eu gostaria de adicionar mais
uma extensão
à função, mas isso
será uma tarefa para você. Eu vou te dar a solução
na próxima lição novamente. Então, eu quero que os dois pinos mudem
suas cores de forma diferente. pino um vai do verde
ao amarelo ao vermelho, mas o pino dois deve ir para azul, roxo e laranja
ou qualquer outra coisa. Vou deixar essa escolha criativa de
cores para você. Mas certifique-se de que ele execute
a mesma função. Boa sorte com isso, e nos
vemos na próxima lição.
10. Práticas recomendadas da organização blueprint: Vamos dar uma
olhada na solução. O que tivemos que fazer foi criar mais
três parâmetros de entrada, variáveis do
tipo cor linear. Eu chamei essas cores de
um, dois e três. E em vez de definir essas cores em suas
respectivas variáveis, conectaremos essas entradas Depois, voltando
ao gráfico de eventos, agora
podemos definir as cores para cada instância
da função. Portanto, o primeiro
será o padrão verde, amarelo e vermelho e,
para o segundo pino, será azul,
roxo e laranja. E quando executamos a
simulação, ela funciona. Então é assim que as funções
funcionam e como você ainda
pode ter
parâmetros específicos dinâmicos. E esta lição
não criará muita coisa, mas talvez seja uma boa ideia
para dar
um pouco de descanso ao cérebro depois de
todas essas novas informações. Então, em vez disso, vamos
limpar um pouco nosso projeto. Agora, se entrarmos em nossa função, começaremos a ver uma grande bagunça. Não é nada agradável
trabalhar nisso. Então, aqui estão algumas coisas
que podemos fazer para começar você pode clicar duas vezes
em uma linha dois em um ponto e arrastar
esse ponto, nos
dando uma visão geral melhor de onde as conexões vão E o que é bom em uma
função é que
também podemos escolher onde as variáveis
de entrada devem estar. Então, a partir do painel de detalhes, eu vou realmente arrastar o
alvo até a parte inferior, o
que me permite
posicionar melhor
o nó de cor e a linha conectada a ele adicionando também um ponto
a ele. Obviamente, podemos
selecionar vários nós e pontos para
movê-los juntos. Você também pode selecionar
um ponto ou um nó e usar as teclas de seta
para empurrá-los. E é assim que você quer
tentar garantir que nenhuma linha se sobreponha ou fique
atrás de
outras Se você precisar
voltar para fazer ajustes, terá uma
visão geral muito melhor do que a lógica do
seu plano faz, em vez de precisar descobrir
a onde
tudo está conectado Também gosto de ver o maior número possível de linhas
retas, e há uma
maneira simples de fazer isso. Basta selecionar as
notas que você deseja alinhar e pressionar
a tecla curta P: Tente fazer
disso um hábito ao projetar
sua estrutura de nós Outra coisa que
também é um pouco confusa é quando várias
linhas de conexão entram
no mesmo nó da cor da variável
definida aqui Se você fizesse uma
observação sobre um deles, você pode conectar o
outro a esse ponto. Então, em vez de ter três
linhas indo para esta nota, agora
temos apenas uma. Então, essas são algumas das
técnicas que podemos aplicar para limpar a estrutura do
projeto, e é
diferente para cada pessoa até onde
querem ir com isso Ao trabalhar em um projeto
real, meu TOC sempre entra em e quero que tudo esteja perfeitamente
alinhado Tudo bem, uma última coisa que
podemos fazer é adicionar comentários, e para projetos maiores, isso será muito importante Imagine ter centenas, senão milhares, de notas em
um único plano e você deseja fazer uma
alteração em um sistema específico Onde eu fiz isso de novo? Bem, você seleciona várias
notas e
pressiona a tecla Ci para adicionar uma caixa de
comentários ao redor delas. E aqui, por exemplo,
seria o contador de visitas. Você pode redimensionar essa caixa de comentários
e, se movê-la, tudo
dentro dela também se moverá Quando selecionado, também temos algumas opções em um painel de detalhes. A partir daqui, você pode
realmente escolher se
deseja que as notas internas
se movam com elas ou não. Você pode alterar o tamanho
do texto comum e podemos até mesmo
mudar a cor. E eu uso muito essa
etiqueta colorida. Se você está fazendo um videogame, você pode ter toda
a lógica de habilidade, ter comentários verdes, criar toda a lógica de combate, comentários em
vermelho, movimento, preparações
azuis, etc Pode ver instantaneamente que tipo de lógica esse grupo
de nós tem. Eu recomendo fortemente
que você faça uso disso. E, finalmente, podemos adicionar comentários a notas individuais ou linhas de
conexão. Se você selecionar uma nota, verá esse pequeno
botão aparecer na parte superior Clicar nele permite que você
adicione um comentário a essa nota. Por exemplo, altere a cor base do
material. Para notas não convencionais, ter esse comentário personalizado pode
realmente ajudar E você sempre pode ocultá-lo
alternando a caixa de comentários
ou mostrando-o novamente Ele sempre lembra
o que você digitou aqui. Então, se você não quer a
bagunça de todos esses comentários, mas quer
algumas informações para
referência futura, isso é possível Também gosto muito de usá-lo em pontos de ancoragem e linhas de
conexão, especialmente quando eles percorrem uma longa distância ou eu acabo
com tantas linhas diferentes Isso me ajuda a
acompanhar o que eles estão conectados e com qual
finalidade. Então, esses são alguns
dos princípios básicos para manter seu projeto limpo
e organizado Alinhe os nós usando o atalho, crie pontos de ancoragem para
guiar melhor suas
linhas de conexão
e, finalmente, adicione caixas
comuns em torno de
grupos de notas
ou de um E com isso, chegamos
ao final desta aula. Agora, ainda tenho uma lição de
conclusão final com um ótimo exercício para praticar todas as coisas
que você aprendeu.
11. Projetos finais e conclusão: Antes de tudo, parabéns
por terminar esta aula. Agora você está oficialmente
pronto para começar a criar projetos dentro do
Unreal Engine E mesmo que eu tenha apenas
arranhado a superfície, você tem um forte conhecimento
fundamental agora
você tem um forte conhecimento
fundamental de como as plantas funcionam A partir daqui, você pode
experimentar, explorar e aprender
novas técnicas. Seguir os tutoriais do YouTube será muito mais fácil agora, pois você entenderá melhor
por que notas específicas são usadas e como
elas estão conectadas A maneira como
aprendi a entender a
programação e os projetos
foi pensar
em algo que programação e os projetos
foi pensar eu
queria criar e depois
experimentar várias notas e depurar
até que funcionasse E usar o HeChipt às vezes
me ajuda a
acertar . Não, se
for para aprender, tente evitar os
tutoriais que apenas conectam notas sem
explicar o que elas fazem Você realmente não
aprende muito com isso. Então, aqui está uma tarefa final, um exercício para treinar tudo o
que você aprendeu. E eu tenho duas tarefas. Você pode escolher aquele que se encaixa no
que você usa o UnrelEngine ou pode fazer O primeiro é para desenvolvimento de
jogos e o outro é
para renderização de filme. Então, para o plano de
desenvolvimento do jogo, eu gostaria de ver você criar um jogo de plataforma
como no Squid Game, onde seu personagem
tem que chegar
ao outro lado
pulando Agora, uma de cada fileira de
peças cairá. Portanto, é um jogo
baseado em pura sorte pular três vezes
seguidas na peça correta
e, para tornar as coisas mais difíceis
para o jogador, cada vez que rodamos o jogo, as peças que
caem são aleatórias Portanto, cada nova instância
do jogo será diferente. Lembre-se de que um
de cada ladrilho em uma fileira precisa ficar parado e o
outro precisa cair. Quando o jogador cai,
a tela fica com essa cor vermelha dessaturada Mas quando chegarmos ao
fim, confetes vão estourar. Aqui está, novamente, uma visão geral
da tarefa e tente criá-la com o
mínimo de notas possível O arquivo do projeto pode ser
baixado se você ficar preso. Mas lembre-se de que existem
várias maneiras de fazer isso e não há realmente
uma maneira certa ou errada. Então, se você teve sucesso e
o compara com o meu, tome-o com cautela. Boa sorte. A segunda tarefa
é renderizar um filme Tive que manter as coisas muito
simples porque
não consigo compartilhar um projeto
com vários ativos, então criei uma floresta a
partir de formas simples. Também criei uma sequência de níveis
com um movimento de câmera. Quando entramos na simulação em
intervalos aleatórios, esses troncos de árvores
se iluminam e caem lentamente Isso é totalmente dinâmico,
criado com um plano. Então, toda vez que eu executar a simulação,
vai ser diferente. Isso levaria dias para
realmente ser animado
no sequenciador, mas com a ajuda
de um projeto, consegui criar
isso em Não fique muito animado ainda. Criar isso é muito mais difícil do que
o jogo de plataforma. Você
precisará fazer uso de algumas notas que
não vimos nesta aula. Então, tente pensar de forma lógica. Consulte a lista de notas para ver se você consegue encontrar o que
está procurando. Aqui está, novamente, uma visão geral
do que é necessário :
uma árvore simples que consiste em
um cilindro e um cone. E, claro, você também
pode usar um modelo de uma árvore real,
se quiser, e em um momento aleatório, a árvore ou parte da
árvore precisa se iluminar. Isso é feito no material
e, lentamente, a
árvore deve cair. É um verdadeiro desafio, então
não há problema se você usar HipPT para isso ou dar uma olhada
no arquivo do projeto Esta é definitivamente
uma tarefa de próximo nível. Nos dois arquivos do projeto, adicionei comentários para explicar as notas que uso
e o que elas fazem. Então, todas as respostas estão lá. Mas tente
criá-lo primeiro sem dar uma olhada no projeto Eu gostaria de agradecer
muito por assistir, e eu realmente espero que você tenha
gostado desta aula. Desejo a você tudo de bom em
sua jornada com o Unreal Engine e boa sorte com as
tarefas. Seja criativo.