Transcrições
1. Vídeo de promoção do curso (sobre o curso): Bem-vindo. Neste curso de desenvolvimento de
jogos para iniciantes,
você aprenderá a criar um script sua própria jogabilidade
funcional usando os esquemas do
Unreal Engine five. Não é necessário nenhum revestimento ou Unreal Engine
experiente. Olá, meu nome é Greg wanderer, um veterano da indústria de 12 anos
que ensina desenvolvimento de
jogos usando o
Unreal Engine desde 2016. Ao final deste curso, você terá uma compreensão
profunda de todos os principais conceitos que orientam essa abordagem de
programação baseada em nós , abrangendo
classes e componentes do Blueprint, eventos, funções, macros,
variáveis e muito mais. Este curso é para todos, desde o designer de
jogos mais jovem da Byron até o
profissional da indústria da temporada. Começamos desde o início supondo que você não saiba nada. Mas até o final
deste curso
servirá como um recurso valioso. Você pode
referenciar uma e outra vez. Então, junte-se
aos milhares de estudantes
satisfeitos que iniciaram sua
jornada de desenvolvimento de jogos comigo. Mal posso esperar para ver
o que você cria.
2. O primeiro curso: Bem-vindo, apenas uma breve introdução aqui antes de
começarmos as coisas boas, para que você saiba como
navegar neste curso e extrair o máximo valor dele. Antes de tudo, obrigado
por escolher este curso. Eu sei que você
tem muitas opções. Eu levo fazer esses
cursos muito a sério. Passei mais de
um ano fazendo isso. Este é o curso
dos meus sonhos montar, porque
acho que esse é o conceito mais
importante a ser adquirido ao trabalhar
com o Unreal Engine, você aprenderá
alguns scripts de diagramas. O que é o mundo dos
scripts Blueprint é essencialmente uma forma visual baseada em nós de codificar a
jogabilidade sem
olhar para uma parede de texto,
sintaxe e todo esse jazz. Então, se você nunca viu como
é o script
do Blueprints, tenho um exemplo rápido
para mostrar aqui. Aliás, este é o Unreal Engine
Five. Para criar uma jogabilidade
funcional no Unreal com scripts de
projeto, você pode simplesmente conectar
alguns nós como esse. E o que eu tenho
aqui é apenas uma coleta rápida. Eu também tenho essa parede
processual onde
podemos estender quantas
peças temos. Tudo isso é feito com o Unreal Engine é o script
Blueprint. Então, para quem é esse curso? Eu recebo
muito essa pergunta. É para mim? Bem, eu criei
este curso para todos. Tive alunos de
até seis 65 anos fazendo este curso. Alguns não sabem nada sobre codificação
ou script em algum lugar, novatos
completos e outros
são o triplo de desenvolvedores. Já tive alunos da
Naughty Dog e da Insomniac. Mas eu faço isso no Teach, como se fosse sua primeira vez. Então, nenhuma ameaça em um Ei, eu não entendo
nada sobre programação, nada parecido. Eu
começo do nível do solo. Então, como esse
curso é estruturado? Bem, não
vamos construir nada em particular neste curso. Pelo contrário, este curso é baseado em
conceitos, mostrando muitos exemplos práticos e muito
úteis. Agora, eu tentei tornar este curso o mais
aberto possível, o que significa que ele serve
como um recurso para você, um repositório de
conhecimento de scripts que você pode
voltar ao passado este curso o mais
aberto possível,
o que significa que ele serve
como um recurso para você,
um repositório de
conhecimento de scripts que você pode
voltar ao passado
novamente, como um
balcão único de todos esses conceitos centrais
de script que você poderia querer e precisar. Quero dizer, essas foram
todas as perguntas que eu me fiz em minha jornada de aprendizado
nos últimos dez anos. Agora, devido à forma como esse
curso está estruturado, você pode pular
de aula em aula. Você não precisa ir de
forma linear. Embora eu recomende
ir em ordem. Agora, pode haver algumas
lições aqui e ali que fazem referência a lições anteriores, mas vou tentar destacá-las quando elas ocorrerem e
reduzir isso ao mínimo. Agora, quero observar que
é extremamente difícil
ministrar um curso baseado
em conceitos
como este, aspas sem aspas, porque, para entender
completamente os
conceitos apresentados aqui, sem dúvida
encontraremos algumas dependências do
que isso significa é que,
para entender isso, você precisará
saber sobre isso. E para saber sobre isso, você precisa saber sobre isso. Há um conceito
ou habilidade que é apresentado e parece
totalmente estranho à primeira vista. Saiba disso, eu vou falar sobre
isso e vou abordar esse tópico adequadamente
mais tarde. Há muito,
muito a cobrir aqui. E só para
dar uma breve introdução sobre
como estou
preparado para ministrar este curso. Eu tenho meu esboço
aqui. Esse é o esboço que eu
uso para criar este curso. Cada um desses links azuis, links para uma aula. Então, eu passei literalmente, na verdade, estou perto de dois anos montando este curso. Novamente, eu recomendo
ir em ordem, embora você possa pular. Por fim, se você achar que este
curso é valioso, deixe um comentário e o
recomende a outros, não
há outra coisa melhor você possa fazer do que
recomendá-lo a outras pessoas. Adoro ensinar os alunos a
ver ou eles podem construir. Nada é mais empolgante para
mim do que ver os alunos levarem o que eu ensinei e
levarem isso para o próximo nível. Coisas muito interessantes, de fato. Tudo bem, pessoal, chega disso. Vamos começar com as coisas boas. Vejo todos vocês no próximo vídeo.
3. Baixar e instalar: Tudo bem, as primeiras coisas primeiro, antes de continuarmos com
qualquer uma das coisas boas, precisamos ter
certeza de que você tenha Unreal Engine baixado
e instalado. Se você já fizer isso, sinta-se à vontade para
pular este vídeo. Este é para os novatos
completos que não faço ideia para onde ir, como começar, etc. Então, usando um
navegador de Internet de sua escolha, basta digitar
Unreal Engine.com. Agora eles têm uma página com algumas
instruções de download. Ele mostrará alguns requisitos
do sistema se você estiver se perguntando sobre eles, isso é bom para Windows ou Mac, não
importa o que você tenha. E a primeira coisa que
você precisa fazer para obter o Unreal Engine é
realmente baixar o lançador
Epic Games. Sim, é um processo um pouco
difuso. Temos que baixar o lançador
Epic Games, através do qual obtemos
acesso ao Unreal Engine. Estranho, eu sei. Mas vá em frente e clique
neste download e inicie sua opção. Ele pedirá que você
salve esse pacote
do instalador um destino
de arquivo de sua escolha. Já fiz isso antes,
mas uma vez feito isso, você pode clicar duas vezes
sobre isso para iniciar o processo de
instalação do iniciador da Epic Games, é bem simples. Tudo o que você precisa fazer
é clicar
nas caixas apresentadas. Novamente, já fiz isso, então não posso
replicar isso aqui. Processo bastante simples. Agora, depois de fazer isso, você poderá encontrar o iniciador da
Epic Games aparecendo depois disso ou você pode
pesquisá-lo aqui. Se eu clicar na minha pequena
lupa aqui e apenas digitar épico, você pode ver que meus Epic
Games iniciam seu aplicativo. Novamente, já
pré-instalei isso daqui. Posso clicar com o botão direito do mouse sobre isso e fixar na minha barra de tarefas,
o que já fiz. Assim que o iniciador
da Epic Games terminar de instalar, você terá acesso ao lançador
Epic Games, que você tem
guias de loja, biblioteca e Unreal Engine ao longo do lado esquerdo. Porque obviamente estamos
trabalhando com a Unreal Engine. Você vai querer ter
certeza de que esta guia está selecionada e, na parte superior, você vai querer
selecionar a guia da biblioteca. Agora é aqui que
você vai instalar diferentes versões do irreal. Agora, a cada dois
meses, Epic Games está apresentando uma versão atualizada
do mecanismo. Mas para adicionar qualquer nova versão
do mecanismo, você pode simplesmente clicar neste
botão amarelo mais aqui. Ele adicionará
este pequeno cartão e, em seguida, neste menu suspenso, você pode clicar para escolher
especificamente uma versão do mecanismo
que você gostaria de instalar. Agora, a partir da data de hoje
que estou gravando este Unreal Engine
cinco ainda é muito novo e esta é a
versão mais recente do motor. Qual versão do mecanismo você
deve instalar? Eu recomendaria a
versão mais recente, seja lá o que for. Agora, se eu clicar nisso novamente, quando você estiver escolhendo uma
versão diferente do mecanismo, ele pedirá
que você o instale. Já fiz isso
fora da câmera antes do tempo, então estou pronto para iniciá-lo, mas clicando em Instalar aqui, você instalará essa
versão do mecanismo. E isso pode ser um processo
bastante demorado. Então, depois de clicar em Instalar, você verá esse épico ou esse ícone do Unreal Engine se
encher como uma barra de medidores. E também se você clicar nesta opção de
download aqui, poderá ver o progresso
da instalação
do Unreal também. Então vá em frente e faça isso agora. Vá em frente e depois
tome uma bebida, jante, etc. Porque vai
demorar um pouco.
4. Criar projeto: Tudo bem, com a instalação
do Unreal Engine, era hora de criarmos
um projeto. E para fazer isso, precisamos lançar o motor. Agora, na verdade, existem várias
maneiras de iniciar o motor. Então, vou mostrar
esses métodos agora aqui no iniciador Epic Games
com
o Unreal Engine
selecionado ao longo da esquerda, a guia da biblioteca selecionada
na parte superior. Poderíamos lançar a versão
do mecanismo que
acabamos de instalar
clicando aqui. No canto superior direito, há
um botão Launch que me
permitirá iniciar a
mesma versão do mecanismo. Agora, se eu tivesse várias versões do mecanismo instaladas aqui, posso clicar neste menu suspenso. Todos eles seriam
apresentados aqui. Eu poderia escolher um. Seja qual for a
versão do mecanismo que eu selecionei. Esse número apareceria
à direita aqui. E, novamente, clicar neste botão de inicialização
amarelo
iniciaria essa
versão específica do mecanismo. Agora, se tudo isso
for inconveniente, você pode criar um atalho clicando neste
pequeno menu suspenso. E você pode criar um atalho na área de
trabalho aqui, o que eu já fiz
antes deste vídeo. Há meu atalho na área de trabalho. Vou clicar em
Iniciar aqui. Ok, eventualmente você
vai chegar a um pop-up que se parece com isso. Estamos criando projetos de
jogos, então certifique-se de ter essa
caixa selecionada ao longo da esquerda. Também
usaremos o modelo de terceira pessoa para nos
ajudar aqui. Portanto, certifique-se de
ter isso selecionado. Do lado direito, temos algumas opções. Este será
um projeto
de blueprint selecionado por padrão. Está tudo bem e bom. Nossa plataforma de destino aqui
será predefinida de
qualidade de desktop , máximo, desculpe ,
conteúdo, claro, ray tracing sua escolha,
quer você queira ou não ter isso selecionado, vou dizer Claro. Local do projeto, você
vai em frente e escolhe um local de arquivo
no seu computador. No entanto, o nome do projeto
para o amor de Deus,
por favor, não deixe
isso
como padrão como vejo
muitos alunos fazendo. Altere isso para script
Blueprint. Em seguida, vá em frente e clique em Criar. Tudo bem, e depois de
quais cenas na eternidade depois de
criar esse projeto, estamos dando nossa primeira
olhada no Unreal Engine cinco, o editor de níveis aqui. Agora, se você viu
alguma coisa
na janela inferior direita que disse arquivos de projeto desatualizados. Basta ir em frente e clicar em corrigir. Agora, para consertar isso. No lado superior direito, podemos ver o nome
do nosso projeto. E quero
salientar que depois fechar este projeto, você pode
voltar a isso
passando pelo iniciador da
Epic Games,
a guia Unreal Engine Library
tem é a seção de meus projetos. Em qualquer projeto que
você tenha criado
será listado aqui. Então, clicar duas vezes
sobre isso abrirá esse projeto específico para nós, o que é muito útil. Missão cumprida aqui, pessoal, fomos em frente e
criamos nosso primeiro projeto. Vamos aprender sobre o script
Blueprint na próxima seção.
Vejo você lá.
5. Exemplo de Blueprint: Bem-vindo de volta a todos. Bem, com nosso
projeto agora criado, vamos pular direto para dentro. Vamos para as coisas boas. Neste vídeo, nosso objetivo será definir
quais projetos estão no Unreal e, em seguida, mostrar um exemplo de um em um jogo. E isso demonstrará conceitualmente o que é um projeto e como podemos utilizá-los
na criação de projetos de jogos. Então, antes de gravar este vídeo, fui em frente e
criei um projeto. Eu criei um projeto de coleta
só para deixar você
animado com o que vamos
fazer aqui
na primeira parte deste curso. Isso é algo que você
vê o tempo todo no jogo. Então eu pensei que esse seria
um exemplo muito relevante. Vou clicar
neste botão verde de reprodução no topo aqui. E ao fazer isso,
no canto superior esquerdo, vai dizer clique
para controle do mouse. Se eu fosse suprimido WAS e ASD desde o início
e nada acontece. Tenho que clicar nesta janela primeiro para obter o controle
do meu personagem. Agora tudo o que você vê
aqui foi pré-construído. A única coisa que
eu construí antes deste vídeo foi aquela cruz
giratória. Se eu colocar meu personagem para ele, eu colecionei, toco
um pouco de som. Você vê esse tipo de coisa
em jogos o tempo todo. Vou bater em Escape
para pular daqui. Agora, se eu entrar na
minha gaveta de conteúdo e se eu olhar para a dica da ferramenta, controle
deles e a barra de espaço, é também onde posso
trazer a gaveta de conteúdo. É aqui que posso acessar
as pastas e pastas em pastas dentro do
meu Unreal Engine, criei essa classe de
blueprint é exemplo
BP Blueprint class. Antes deste vídeo, vamos criar um dos
nossos por vídeos anteriores. Mas eu queria apontar
aqui com a gaveta de conteúdo, este é um novo recurso
e Unreal Engine cinco, você pode clicar nisso para
aumentá-lo ou abaixá-lo, ou fazer esse controle
mais barra de espaço. No entanto, para aqueles
que são um
pouco mais de experiência ou veteranos do Unreal, você pode adicionar algo nem o navegador de conteúdo que é uma visão persistente disso gaveta para baixo na
parte inferior da tela. Então, vou entrar navegador de conteúdo do Windows e escolher o
navegador de conteúdo deseja
ter apenas uma cópia
do navegador de conteúdo persistentemente disponível aqui
no editor. Você não precisa fazer isso. Essa é minha preferência
pessoal. Isso é exatamente o
mesmo que a gaveta de conteúdo tem exatamente as mesmas pastas,
conteúdo, etc. Tudo bem, a razão pela qual
estou fazendo isso é porque quero criar uma nova pasta aqui dentro
da minha pasta de conteúdo. Então, vou clicar com o botão direito do mouse na minha pasta de conteúdo aqui. Vou criar uma nova
pasta e vou
chamar isso de script. Em seguida, vou clicar com o botão direito nesta nova pasta de scripts. E vou dar
uma cor imediatamente. E eu só vou
clicar com o botão esquerdo, mover isso. Vou defini-lo
para azul porque ei, este é um curso de
script de blueprint. Tudo bem, a razão pela qual estou
criando essa pasta é porque muitos
dos ativos que vamos criar ao longo deste curso. Eu quero que eles sejam
especificamente nesta pasta para
facilitar o acesso para mim, para que eu saiba
exatamente onde eles moram. Agora, ao longo do
lado direito aqui, posso criar diferentes
tipos de ativos. E posso fazer isso clicando com o botão direito do mouse
e algum espaço vazio. No menu do botão direito do mouse do MI, posso criar uma nova classe de
blueprint. Agora, este seria um bom
momento para eu falar sobre quais nossas plantas em Unreal. Então esse termo, plantas, significa duas coisas aqui. Blueprints é o sistema de script
visual dentro do irreal, às vezes chamado de script de
blueprints. Mas os blueprints
também são ativos como ativos Classe
Blueprint que podem conter componentes,
dados ou script específicos que ajudaram seu jogo de alguma
forma, forma ou forma. Existem muitos tipos de
blueprint diferentes em irreal. Agora todo esse sistema de
impressão azul, é uma maneira de não
programadores como eu criarem
jogabilidade funcional dentro do Unreal, o que é muito doce. Então, de certa forma, você
vai estar revestindo, mas de uma maneira muito artística. Então, o que isso significa? Vamos unir
alguns nós e
será muito mais
atraente visualmente do que uns, zeros
e colchetes encaracolados e
todo esse tipo de coisa. Então aqui vou
escolher uma aula de blueprint. Quando eu clico nisso,
teremos que
escolher uma classe pai. Novamente, muitos
tipos diferentes de blueprints,
mas, em geral, o mais comum é o plano de
classe de ator. Esse é um objeto então que pode ser colocado para
responder no mundo. Então, vamos em frente
e selecione isso. Vamos criar esse
ativo aqui em nossa pasta de scripts de conteúdo. Vamos dar um nome a ele. Vou chamar o meu exemplo de script
sublinhado da BP. Acredito que esse é o nome que
eu quero que ele dê. Exemplo,
não pegue um exemplo de coleta. Esse é o nome
que eu queria dar. Exemplo de coleta. É por isso que eu mantenho anotações. Pressione Enter. By the way, se você quiser
alterar o nome disso,
você pode clicar com o botão direito do mouse
e renomeá-lo F2 enquanto estiver selecionado também
solicitará que você o renomeie. Se eu fosse
colocar isso no meu nível agora, você pode simplesmente arrastá-lo e soltá-lo
do seu navegador de conteúdo. Você pode ver que
há um ícone aqui. Mas se eu fosse
entrar no meu jogo, não veria essa coisa. Esse ícone só está disponível em
exibição aqui no editor. Não vejo quando estou
jogando o jogo em si. Agora, atualmente, tenho o modo
rotacional sobre isso atinge algumas coisas
básicas de navegação. modo de rotação está ativado. Você pode voltar ao
modo de movimento para mover isso. Como alternativa,
sua barra de espaço
alternará entre movimentos, girando ou dimensionando
seus objetos. Todos eles têm teclas de atalho
associadas a eles também. Tudo bem, então está
tudo bem e bom. O asterisco aqui mostra
que ainda não foi salvo. Portanto, Control plus S dirá isso, ou você pode clicar com o botão direito do mouse sobre
ele e clicar em Salvar também. Mais uma coisa que
quero fazer antes de
encerrarmos este vídeo é que
quero criar um
novo nível de testes. Na verdade, não vamos
trabalhar dentro desse nível. Isso tudo é para fins de
demonstração. Então, vou ficar sob
arquivo no canto superior esquerdo. Vou criar
um novo nível. Quando você fizer isso, ele
solicitará que você selecione um desses modelos
diferentes. Vou com o nível
básico aqui. Clique em Criar. Isso vai me
tirar desse nível e entrar em um novo nível sem título. Agora algumas coisas que
temos que fazer aqui. Uma é que eu preciso
salvar esse nível. Então, se eu clicar neste pequeno ícone de
salvar disco aqui, ele vai me avisar, ei, onde você
quer salvar esse nível? Vou colocar isso
no meu nível de script. Vou nos dar um novo nome e vou chamar este mapa de testes de sublinhado do
LV. Esse mapa inteiro
vai ser um teste gigante. Agora, para todos esses
diferentes
conceitos de blueprints , vamos
explorar durante todo o curso. Vamos clicar em Salvar aqui. O nome desta guia
agora será alterado para o mapa de teste. Você pode ver que esse ativo agora
está dentro da minha pasta de
conteúdo. Ele
criará automaticamente esses dados de compilação do Mab de teste. Você não precisa fazer
nada dentro deste, mas ele também criará
isso automaticamente na sua pasta. Há mais uma
coisa que eu quero fazer aqui dentro das configurações do nosso projeto. Você pode achar isso nas configurações do
canto superior direito, nas configurações do
projeto. Vai trazer
uma nova guia. No lado esquerdo,
temos mapas e modos. Vá em frente e escolha isso. Queremos alterar o padrão do editor, iniciar o mapa do mapa em terceira pessoa para o mapa que acabamos de criar, um mapa de teste de nível. Podemos simplesmente sair daqui. E o que isso fará é fazer
com que, assim que
fecharmos o editor aqui
e o
abrimos de volta, venha automaticamente
dentro desse nível. Não precisamos encontrar esse nível aqui em nosso navegador de conteúdo. Então isso está tudo bem e bom. Vou
terminar esse nível
muito rapidamente, saltando para o exemplo de blueprint que eu criei na
minha pasta de conteúdo, posso simplesmente
colocar um desses no meu nível e salte para o
meu exemplo de blueprint. Aqui, eu tenho
esta guia viewport que mostra os diferentes componentes
que compõem meu blueprint. E então eu tenho
esse gráfico de eventos que mostra o script, os nós e
os fios que criaram a funcionalidade para esses blueprints
específicos. Eu me sobreponho e ele toca um som
e destrói o ator. Então é essencialmente isso que
vamos construir ao longo desses
próximos vídeos aqui. Mas pessoal, isso vai nos levar o mais longe que eu queria
entrar neste vídeo. Então, veremos você
no próximo.
6. Painel de componentes: Bem vindos de volta a todos Neste vídeo, nosso
objetivo é adicionar alguns componentes ao nosso plano
recém-criado para que você entenda o que é
o painel Componentes dentro de um plano e como aproveitar ao máximo
de trabalhar com isso, porque há
muitas nuances, muitas coisas boas
para você saber que
economizarão muito tempo. Tudo bem, antes de chegarmos a isso, quero eliminar
esse exemplo da BP que li antes do
início do último vídeo. Então, vamos dizer
adeus a isso clicando Excluir ali mesmo
no Navegador de Conteúdo. Como alternativa, sua gaveta de
conteúdo. Vou
entrar na minha
pasta de scripts e colocar meu exemplo de coleta de BP
no meu nível. Novamente, ainda não há nada
dentro dessa planta, então eu vejo esse ícone, mas se eu fosse jogar, não veria nada. Agora, há algumas maneiras
de
modificarmos esse modelo. Uma é que podemos
clicar duas vezes em seu
próprio ativo na gaveta de barras
do Navegador de Conteúdo. Ou com esse objeto
colocado no nível, você pode clicar em seu
delineador, onde você
selecionou o exemplo de coleta de
BP e ali está o exemplo de edição de captadores de BP. Então, vou clicar nisso. E se você perceber que
esse é um esquema
somente de dados .
Às vezes, os Blueprints acontecem quando
você abre um plano, basta clicar
aqui para abrir o editor de diagramas completo. Tudo bem. Este é nosso editor de diagramas. Vou clicar na guia da
janela de visualização aqui em cima. Vamos detalhar cada aspecto disso
em detalhes aqui. Mas vou para a guia
viewport primeiro, porque adicionaremos alguns componentes
na guia Componentes que poderemos
visualizar na guia Viewport. Devo ressaltar aqui que
fizemos um
plano de aula de ator no último vídeo. E eis que, no canto superior direito, diz que a classe dos pais
é a classe do ator. Tudo bem, então vamos
falar sobre o que são componentes. Os componentes são essencialmente
os blocos
de construção de um projeto. Se você pensar em um carro, na construção de um carro, uma planta de carro
teria uma carroceria de malha. Você teria algumas rodas, alguns faróis,
buzina, talvez um pouco de fumaça de escape. Todos esses componentes
podem ser adicionados aqui no painel Componentes. Agora, por padrão, o painel
Componentes está localizado no canto superior esquerdo
do editor de blueprint. Agora, você pode redimensionar essa janela
clicando com o botão esquerdo e arrastando aqui. Você pode rasgar
essa aba
aqui e colocá-la em algum lugar
completamente diferente. Diga lá embaixo. Eu escolho tê-lo de
volta onde estava. Você pode ocultar e mostrar
a guia de componentes. Se eu simplesmente
clicasse com o botão direito do mouse sobre isso, eu poderia esconder essa guia. Se eu clicar nessa
pequena bandeira azul, posso mostrar a guia. Posso clicar com o botão direito do mouse
sobre isso e encaixar na barra lateral e movê-lo
para cá, se eu quiser. E eu estou simplesmente
clicando nele para poder clicar com o botão direito nele novamente e
desencaixado na barra lateral. Muitas opções aqui. Também posso me livrar
desse painel
de componentes clicando no X. Os alunos fazem isso
de tempos em tempos,
depois surtam e se perguntam:
como faço para depois surtam e se perguntam recuperar essa janela? Bem, se você encontrar a opção
Windows aqui em cima, eis que você tem
uma opção de componentes. Aí está você. Tudo bem, vamos adicionar alguns
componentes aos nossos projetos. Então, demos uma olhada
bonita aqui. Temos esse
botão Adicionar aqui. Mas fiel à
natureza do irreal, se houver várias
maneiras de fazer as coisas. Então, vou
tentar demonstrar várias maneiras de adicionar componentes. Vamos clicar no botão Adicionar aqui primeiro e adicionar um novo. O que queremos é uma
colisão de esferas e componentes. Como você pode ver, muitos componentes
diferentes aqui no Unreal não
se deixe intimidar. Alguns
deles são usados muito mais frequência do que outros. Um dos mais usados
é o componente de
colisão de esferas. Isso essencialmente
fornece uma esfera invisível que
podemos verificar para ver se seu personagem se
sobrepõe para fazer coisas. Então, vou chamar essa
esfera de colisão sublinhada. Você pode dar um nome a ele lá em cima. E com esses componentes selecionados
no painel Detalhes, vou mudar
algo sobre isso. Vou mudar os detalhes, o raio
da esfera para ser 50. Lidaremos mais com o
painel Detalhes em um vídeo futuro. Eu também vou adicionar um cubo. E eu vou chamar esse
cubo de sublinhado horizontal. Posso usar a roda do mouse
para ampliar e diminuir o zoom. Vou apenas
nos dar uma escala aproximada. Posso ajustar isso em algum momento, mas com isso desbloqueado, vou mudar isso
para 0,25 no x, 0,25 e o y meio que afina. E eu vou
mudar a escala Z para 0,8, algo assim. Agora eu posso clicar com o botão direito sobre isso. Eu posso duplicar essa
porque vou
criar aquela forma de cruz que
eu tinha no último vídeo. E isso está me levando
a nos dar um nome. Vou chamar isso de
um cubo vertical. E este eu vou manter realmente vertical
porque o último, embora eu o chame
de horizontal, está na vertical com o cubo
horizontal selecionado. Vou escolher o modo de
rotação aqui em cima. Você também pode pressionar a
barra de espaço. E eu vou
simplesmente girar isso para
baixo até ficar 90 graus, assim. Ok, vamos adicionar outro
componente. Vamos? Que tal adicionarmos um
pouco de fogo a isso? Claro, vamos adicionar um efeito de
partícula. Vou desanexar
essa aba aqui. E eu vou desencaixá-lo, colocá-lo em algum lugar aqui. E a razão pela qual estou fazendo isso está no meu navegador de conteúdo, vou acessar
meu conteúdo inicial. Vou entrar na minha pasta de
partículas. Aqui eu vejo uma partícula de fogo P. Agora, esse é um sistema de
partículas mais antigo. Em alguns anos futuros
provavelmente se
livrarão deles. O novo sistema de partículas
é conhecido como Niagara up. Portanto, você não precisa usar
esses efeitos de partículas mais antigos. Você pode usar um novo efeito de
partícula do Niágara quando eles, tenho certeza de que os
disponibilizaremos em uma pasta de
conteúdo inicial. Mas o que eu queria
demonstrar aqui é que posso clicar com o botão esquerdo aqui
no Navegador de Conteúdo, arrastá-lo para a direita para o meu painel de
componentes desta forma. E você vê aquela caixa
ao redor do meu taco na horizontal, vou apenas
arrastá-la para cima dela. E eu posso ver que adicionei
isso ao meu projeto. Agora, outra coisa que eu gostaria
de observar é que, à medida que
adicionamos isso ao nosso modelo dentro do nosso painel de componentes, ele o adicionou à instância desse esquema
que está em nosso nível. Então, como você pode ver, à medida
que modificamos as coisas aqui dentro
do nosso plano, ele modificará e
atualizará
qualquer instância, qualquer cópia desse
plano que
tenhamos colocado em nosso nível, que é o que torna os
projetos tão incríveis. Outra coisa que eu
queria destacar aqui é, é uma espécie de
relacionamento acontecendo. Você pode ver que
as coisas estão recuadas
arrastando meu fogo P em cima
do meu cubo na horizontal. Na verdade
, ele fez com que fosse preso a esse cubo
horizontal. Então, se eu fosse selecionar meu cubo
horizontal aqui, deixe-me voltar
ao tamanho total. Eu tenho meus
componentes de cubo horizontal selecionados aqui. Se eu mover isso, o fogo
começa para o passeio. Eu só vou fazer o Control
Z para apoiar isso. No entanto, se eu selecionasse
o fogo em si e o movesse, nada mais
estaria ligado ao fogo. O fogo estava preso
ao cubo horizontal. Então eu vou fazer o Control
Z para desfazer isso. Se eu não gostei que
ela estivesse presa a ela, posso simplesmente arrastar e
soltar essa bolsa por cima. E agora está mostrando
que não está preso essencialmente quando algo
é recuado assim, mostra
que uma coisa
está ligada a outra. Então, agora, meus dois componentes de malha
cúbica estão conectados ao meu componente de colisão de
esfera. Agora, só porque eu
quero mostrar mais
desse tipo de coisa
sendo anexada. Vou arrastar
isso de volta para
cima do meu cubo na horizontal. Não há razão para eu fazer
isso a não
ser só porque vou
desencaixar isso de novo, lugares assim. O que mais eu quero adicionar aqui? Eu quero adicionar um pouco, vamos adicionar um pouco de fumaça, vistoso. Então eu vou pegar um
cigarro aqui em cima. Na verdade, deixe-me fazer isso. Vou colocar
essa blusa de backup, vou voltar ao meu nível de teste. Aqui está outra maneira de
adicionar esse componente, pegando minha fumaça, clicando com o botão
esquerdo, arrastando-a até minha guia. Agora, essa guia se abre
automaticamente e agora vou
arrastar e soltar isso em cima do fogo. Então, acabei de adicionar
outro efeito de partícula. Agora, novamente, a fumaça está
presa ao fogo, que por sua vez está preso
ao cubo horizontal. Então, se eu movesse o componente horizontal do
cubo, o fogo e a
fumaça vêm com ele. Controle Z para apoiar isso. E como você pode ver
no meu editor de níveis aqui, está fumegando com essa
instância do projeto. Muito legal. Tudo bem, eu quero acrescentar, vamos adicionar outra coisa aqui. Quero acrescentar, voltando interior do meu modelo,
exemplo de captação, vamos adicionar um pouco de
movimento rotacional para mostrar a ele. Então, clico abaixo adicionar componentes em uma área de
pesquisa de componentes, posso pesquisar um
chamado movimentos rotativos. Então, sim, você pode
pesquisar componentes. Eu sabia que esse existia, então eu sabia que, ao procurá-lo, eu o reduziria. Agora, ao selecionar
isso, ele vai
encaixá-lo meio que aqui. Esse é um tipo de componente
especial que não está
ligado a nada. Você não pode anexar um componente
de movimento rotativo a nenhum outro componente. Isso afeta essencialmente
todos os outros componentes aqui em nosso projeto. Agora, com isso selecionado
no painel Detalhes, você pode ajustar sua taxa de
rotação. Agora, atualmente, ele vai
girar ao longo do eixo z. Você tem os
eixos x, y e z girá-lo em uma determinada taxa. Agora não vemos nada
girando no momento. No entanto, se eu fosse suprimido como botão de
simulação
na parte superior do editor, você o veria girar. Agora está simulando, vou clicar
novamente para pará-la. Eu poderia mudar isso para,
digamos, 2 mil. Em seguida, clique em Simular para
vê-lo girando muito mais rápido. Vou
redefinir esse valor padrão clicando neste
pequeno botão Voltar. Ok, ótimo. Então, se eu fosse para o meu
nível aqui e jogasse, bem, se eu fosse jogar, eu não
estaria correndo por aí. Eu não veria isso
realmente girando porque eu não tenho um ator ou ator colocado no meu
nível para aparecer. Então, no meu botão
Adicionar aqui na
parte superior do editor, vou entrar
em atores básicos. E eu quero adicionar um ator
iniciante ao meu nível. Eu posso simplesmente clicar com o botão esquerdo
e arrastar e soltar. E com esse ator,
isso define um ponto no meu mundo
onde eu vou aparecer nesta seta azul apontando para a direção que meu
personagem estará voltado. Então, agora, se eu clicasse em play, eu estaria jogando. E eu posso ver tudo isso girando. Sim, tudo gira,
incluindo o fogo e a fumaça
, porque está tudo preso. Eu sei que não parece ótimo, apenas mostrando conceitos
diferentes. Tudo bem, vamos adicionar mais um
componente ao nosso projeto. E isso também
será feito de uma maneira única. Eu quero encontrar uma determinada peça de áudio também anexada
a este projeto. Então, o que vou fazer aqui é selecionar nosso plano aqui
no próprio editor de níveis. E dê uma olhada
no painel Detalhes. Vou descascar
isso aqui. Eu posso ver todos os
diferentes componentes que foram adicionados
a esse modelo. E a partir daqui, eu posso
adicionar um componente. Então, vamos tentar adicioná-lo
a partir daqui, em vez de em nosso próprio
editor de diagramas. Então, vou clicar em Adicionar e quero adicionar
um componente de áudio. E ao fazer isso,
ele o adiciona aqui. No entanto, se eu fosse entrar no meu exemplo de coleta de BP que eu criei aqui
na minha pasta de scripts. Vamos entrar lá agora mesmo. Ainda não vejo esse componente em
nenhum lugar aqui. Então, como faço para garantir
que essa alteração aqui nessa instância do blueprint se propague para o meu plano básico. Bem, se eu clicar neste
botão aqui, editar o projeto desse ator, deixe-me clicar ali mesmo. O que posso fazer é escolher
essa opção aqui, aplicar alterações de instância
ao Blueprint. Então, ao fazer isso,
recebo uma pequena notificação
ali mesmo. E então, se eu voltar para minha coleta de exemplo de
blueprint, agora
posso ver
que esse componente de áudio também
foi adicionado. Agora, mais uma vez,
existem muitos tipos de componentes que podem ser
adicionados a um projeto. Há muitos deles que
eu nunca usei, mas há alguns que
são muito usados. E uma coisa que eu
quero mostrar desde cedo aqui é
trabalhar com a Unreal. Há muito o que saber, mas você não precisa saber
tudo conhecendo alguns
dos principais conceitos fundamentais que você
pode chegar muito, muito longe. Portanto, não se deixe intimidar
logo no início. Os tipos comuns de componentes
incluem malhas estáticas. Você tem algumas luzes
que podem ser adicionadas. Onde estão minhas luzes,
lá estão minhas luzes. Você tem suas formas de
colisão. E então você tem
alguns desses movimentos. Depois de resolver o movimento de
rotação, existe um chamado movimento
interpretativo. Isso também é muito
usado. Tudo bem, mais algumas
coisas que eu gostaria de
destacar neste vídeo
antes de encerrarmos isso, uma delas tem a ver com
essa relação ligação
que temos dentro
do painel de componentes. Uma coisa a se observar é que,
com um determinado componente selecionado e anexado
a outra coisa, o local listado no
painel Detalhes é relativo ao item ao
qual ele está conectado. Então, agora eu tenho meus
componentes horizontais do cubo selecionados. E isso está ligado ao meu componente de colisão de
esferas. Se eu definisse a
localização z como 100, isso
aumentaria 100 unidades irreais. Cada unidade irreal
representa um centímetro, 100 unidades irreais acima do ponto central do meu componente de
colisão. Portanto, saiba que todas essas configurações
de localização são relativas a tudo o
que está anexado. Vou devolver isso. Também queria ressaltar que
você pode mudar a raiz. Observe que, quando criamos
esse esquema por padrão, ele tinha essa
rota padrão vista neste editor aqui. Esse era aquele ícone que
existia lá antes. Todo o resto está anexado e sua localização é
relativa a essa rota. Você pode alterar o
componente raiz simplesmente selecionando, neste caso,
vou selecionar colisão esférica
severa ,
não colisão severa. Vou arrastá-lo e
soltá-lo em cima aqui. E está me informando que
se eu deixar isso aqui, vou fazer
disso as novas raízes e que a
rota padrão será excluída. Sweets, essa é
agora a nova raiz. Todo o resto está posicionado em relação à colisão da minha esfera. A última coisa que eu
queria destacar aqui, e o que torna os
projetos tão incríveis é que, ao ter um ator de
projeto criado aqui, se eu fizer uma mudança dentro
desse projeto, isso mudará cada cópia
esse é cada exemplo disso colocado no mundo e apenas demonstre
isso muito rapidamente aqui. Você pode voltar ao
meu nível de teste aqui dentro da minha pasta de scripts. Vou colocar
alguns deles
em todo o nível. A propósito, você não precisa
ficar arrastando e soltando. Você pode segurar a tecla Alt e clicar com o botão esquerdo para continuar
arrastando cópias delas. Tudo bem, então eu
tenho cinco deles. Agora vamos apenas dizer, eu
acho, você sabe o
que, isso está girando, fogo e
fumaça parecem meio idiotas. Posso voltar ao meu
exemplo de coleta aqui. Eu posso selecionar minha fumaça. Eu posso dizer deletar. Eu só vou fazer o
Control Z lá e dizer, você sabe o que, eu
quero me livrar
do fogo e da fumaça. Então, vou selecionar
meu fogo e clicar em Excluir. Isso vai deletar isso. Vou então
apagar a fumaça. E agora, se eu
voltar ao meu nível, isso acabou para
cada cópia deles, eu quero me livrar
deles, sim, de fato. Então, vou voltar ao meu
modelo de coleta de exemplo. Vamos salvar isso. E isso seria tudo o
que queríamos realizar
neste. O cara do painel de componentes é uma parte muito importante a ser
conhecida sobre os projetos. Vai fazer
tudo para este vídeo, nos vemos no próximo.
7. Tab Viewport: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é entender o que a guia viewport está
dentro de um blueprint. Agora esta é a nossa janela para aparência do
nosso plano
de classe de ator. Através desta guia, podemos
ajustar o posicionamento dos referidos componentes em
relação um ao outro. Agora, a guia viewport pode
ser encontrada aqui em cima. Temos três
guias diferentes, uma guia viewport, a guia Script de construção
e, em seguida, guia Gráfico de eventos. Cada um deles vai
justificar seu próprio vídeo. Então não se preocupe, vamos
chegar aos outros. Vamos começar falando sobre as diferentes opções de
viewport. Ou seja, o que se
encontra embaixo deste pequeno ícone de hambúrguer
no canto superior esquerdo. Então, se eu clicar nisso, recebo
quatro opções diferentes das quais tenho duas delas. Por padrão, essa opção
em tempo real e esta opção Mostrar grade. Chegaremos a todos
esses em um pouco. Então, vamos redefinir a câmera um. Se eu fosse
clicar nisso agora, não parece realmente
fazer tanto. Ele meio que salta
minha câmera de volta para mostrar tudo na minha planta. Bem aqui, na frente e no
centro da minha janela de exibição. Agora, onde isso realmente
é útil é às vezes você tem muitos componentes
diferentes aqui
dentro de suas portas de visualização. Ou, às vezes, por qualquer
motivo, você voou longe, como eu
estou fazendo agora. E você é como, Onde
estão todas as minhas coisas? Onde estão meus componentes? Se você simplesmente vir sob
este ícone de hambúrguer, clique em Redefinir câmera. Ele vai te pular de
volta para onde você quer estar e você suspirará. Suspiro de alívio. Em seguida, vamos falar
sobre a opção em tempo real. Ele é verificado por padrão, mas não temos
nada animador aqui, então é difícil realmente
ver o que isso faz. Vou pular para
outro plano para mostrar o que ele faz aqui. Então, vou voltar
ao meu mapa de teste de nível dentro do meu
navegador de conteúdo ou gaveta de conteúdo. Vou entrar na minha pasta Blueprints em
terceira pessoa. Há meu B P
ThirdPersonCharacter que é um personagem que
estamos jogando atualmente pois quando apertamos este botão Reproduzir, vou
clicar duas vezes aqui para abrir este blueprint. E, novamente, se eu
clicar na guia viewport, posso ver todos os
diferentes componentes que compõem o nosso
ThirdPersonCharacter, incluindo uma câmera, e
essa é a câmera que estamos olhando quando nós
estão jogando nosso jogo. Agora, se você aumentar um pouco esse
personagem e eu estou apenas rodando o mouse aqui você pode ver nosso personagem
animando um pouco. Eles estão reproduzindo uma animação
ociosa. Bem, se por algum motivo eu quiser que
o personagem fique parado, posso clicar nessa opção. Desligue em tempo real. Também tem uma tecla de atalho
associada a ela. Então, se eu fizer o Controle e o
nosso
que ativará e desativará isso. Muito legal. Tudo bem, saltar de
volta para o meu exemplo de BP, pegar, vir sob meu ícone de
hambúrguer quer mais. Eu tenho a opção show floor. Agora isso está desativado por padrão, mas não está mostrando o piso aqui, o que é bastante estranho. Vou desligar isso. Deixe-me voltar ao meu
terceiroPersonagem e show floor. Lá vamos nós. Existe nosso programa para opção. Eu não uso isso com muita frequência, mas de vez em quando, você tem um monte de
componentes e diz que estamos construindo um carro ou
algo assim. Isso pode lhe dar uma melhor
sensação de escala e como as coisas são apresentadas em
relação umas às outras, oposição a apenas
um personagem ou um plano de classe de ator que
está flutuando no espaço. Saltando de volta para o meu
exemplo de coleta de BP mais uma vez, abaixo das
diferentes opções, temos o show grid. Agora ele está ativado por padrão e
você pode ver que está aqui em baixo. Eu posso desligar isso. E por que isso é útil
para mostrar ou não mostrar. Vou demonstrar
aqui em um pouco. Vou mostrar minha grade e
agora vou liderar
a discussão de
nossas diferentes visões aqui, pulando uma. Atualmente, esta é a janela de visualização em
perspectiva. Essa é uma espécie de sua
bela vista. No entanto, se eu fosse
clicar nisso, tenho diferentes visualizações
ortográficas posso pular
nossa janela de exibição, como uma vista superior. Isso é meio que uma visão
panorâmica das coisas. Eu tenho uma vista à esquerda olhando para ele de um ângulo esquerdo e você pode entrar e sair do
mouse. Uma vista frontal. Estamos vendo a cruz, não no lado cruzado, mas mais o lado, lado. E cada um deles tem uma
tecla de atalho associada a ela. Agora, onde a grade
realmente entra em jogo aqui é que você pode ver essas
diferentes marcas de grade. Então você pode estar se perguntando, bem, qual tamanho cada um desses quadrados de
grade representa? Bem, é aí que
levamos à discussão sobre nossos diferentes
tamanhos
de grade aqui em cima. Então, se eu fosse clicar
aqui onde esse número cinco é, posso mostrar diferentes
tamanhos de snaps, 1510, etc. Atualmente, está definido como cinco, o que significa que cada um desses
pequenos quadrados representa uma área de unidade irreal de cinco por cinco. Agora isso é super útil
e vou
pular para ir para a vista superior. Se você quer mover
componentes e
quiser que eles pulem
certos incrementos. Então, eu tenho esse
movimento encaixe definido atualmente. Isso é o que esse azul
representa aqui Vou definir minhas configurações de
snap para 100. Agora observe que, uma vez que eu faço isso, o tamanho da grade é
alterado para corresponder. Então isso agora é 100 por 100 como um tamanho de grade em oposição
ao que era antes, que era cinco por cinco. Então vou mudar
isso de volta para 100. Agora vamos apenas dizer que
eu quero que ele mova minha
malha horizontal cubo aqui, mais de 100 unidades
clicando com o botão esquerdo e arrastando-o, eu simplesmente pulo sobre 100 unidades. Agora você pode ver se eu movo
isso na vista superior, ele está pulando em
incrementos de 100. E você pode ver isso refletido aqui nas configurações de localização. Novamente, essas configurações de localização são relativas à raiz. Agora, se eu quisesse movê-lo de uma
forma mais suave, eu poderia
desligar as configurações de snap
quando não estiver azul assim. Isso significa que posso
movê-lo sem problemas. Mas às vezes você quer movê-lo em incrementos muito
discretos. E é aí que isso
realmente vem a calhar. Vou definir minha
localização aqui de volta para 0. E vou ligar minhas configurações de snap
novamente e configurá-lo de volta para cinco enquanto estamos aqui e
falamos sobre tudo isso. Este é provavelmente um bom
momento para falar sobre nossas diferentes configurações
aqui em nossa janela de exibição. Atualmente, estou no modo de
tradução de objetos. Posso clicar aqui para
mudar isso para o modo de rotação. Assim. Você pode ver agora, deixe-me pular aqui de
volta para a visão em perspectiva. Você pode ver como eu estou
girando isso, ele está movendo-o em
incrementos de dez. E está se movendo em incrementos
de dez porque eu tenho minhas configurações de encaixe rotacional ativadas, o que significa que ele irá
movê-lo em incrementos de dez. E se eu fosse
clicar aqui, eu poderia alterar quais incrementos. Ele vai girá-lo. Gosto de dez graus, mas há casos
para esses outros. Também tenho o modo de escala em
que posso transformar isso. Para que eu possa ir para a minha opção de escala. E agora, se eu fosse simplesmente
pegar uma dessas alças, vou pegar aquela
alça azul ali mesmo, que representa o eixo z,
o eixo zrelativo. Nesse caso, você
pode ver como estou ajustando a escala disso. Vou definir isso de volta
para o que eu tinha antes, que era 0 pontos. Acho que eu tinha nos pontos 8.8, de fato, é o que eu tinha. Então W, E e R, como você pode ver
nessas dicas de ferramentas, elas podem pular você para
os diferentes modos lá, que é o modo de movimento, o modo rotação e o modo de escala. Clicar nesses botões também
fará isso, mas w ENR pode pular você para
esses diferentes modos de movimento, rotação e escala. No entanto, a barra de espaço
alternará entre todos os três também. Em seguida, vamos falar sobre nossos
diferentes modos de iluminação. Atualmente, por padrão,
isso está no modo Lit, mas se eu clicar nisso, posso mudar isso
para o modo sem iluminação. Novamente, todas elas têm
teclas de atalho associadas a elas. Ou modo wireframe. Não muitas vezes eu uso
wireframe ou modo sem iluminação, mas eles estão lá no
caso de você precisar deles. O que acontece se você
fechar essa guia acidentalmente? Isso acontece com bastante frequência, mais frequentemente do que você
pensa. E então os alunos estão se perguntando Onde foi, como faço para recuperá-lo? Então, vou fazer isso
agora fechando-o. Bem, a maneira de
recuperá-lo é simplesmente ficar sob esta opção de janela. E, em seguida, abaixo
você pode clicar em sua janela de exibição novamente. Existem outras
opções de porta de visualização aqui que você pode acessar
clicando com o botão direito do mouse sobre ela. Você pode encaixá-lo em uma barra lateral. O que isso faz é que ele
vai pular aqui. E então, se eu fosse clicar nele, eu expandiria isso aberto. Se eu o fixar, isso significa que não
consigo sair dele. Então, se eu soltá-lo, posso clicar com o botão direito do mouse e ele o moverá de volta
para a barra lateral. Se eu clicar com o botão direito do mouse novamente, posso desencaixá-lo. Então eu também posso
fechá-lo daqui, que fiz antes de
fechá-lo é o mesmo que
clicar neste x. Posso fechar
a guia à direita
desse significado desse script de
construção ou o gráfico de eventos. Se eu me livrar desses
caras, oh, eles se foram. Esses não são encontrados
na opção janela aqui. Então, para colocar esses caras de volta
ao painel Meu plano, você pode clicar duas vezes
no Event Graph para
trazer esse cara de volta. Você também pode clicar duas vezes
no script
de construção para trazer
essa guia específica. Em seguida, vamos falar sobre
mover-se pela viewport. Se eu mantenha pressionado o botão esquerdo do mouse e
simplesmente mova meu mouse. Isso. Dirigindo na janela de exibição. A propósito, esses
são o mesmo controle de volta em seu editor de níveis. Se você estivesse na janela do editor de
níveis, botão
esquerdo do mouse e movendo
o mouse em torno de unidades. botão direito do mouse simplesmente olha aqui para
o seu editor de níveis, bem
como dentro da sua janela de exibição para o botão do meio do mouse do
blueprint. E mover o mouse
simplesmente o manterá
no mesmo plano 2D
e o moverá. Botão do meio do mouse mais, ou devo dizer um botão
do meio do mouse ou mouse esquerdo e direito, botões
direito do mouse juntos. Faremos a mesma coisa
novamente no editor de níveis, botão do
meio do mouse, movendo-o ao redor, botões
esquerdo e direito do mouse juntos. Movendo-o, faz a mesma coisa. E então, por último, mas não menos importante, é minha maneira favorita de
navegar pela viewport, mantendo pressionado o botão
direito do mouse
e, em seguida, usando W, a, S e D para voar. Agora, a velocidade com
que você voa, deixe-me pular de volta para
a guia da
minha janela de visualização que é determinada por esse
cara aqui em cima. controles deslizantes de velocidade das suas câmeras. Se você clicar nisso, você
pode configurar isso para cima ou para baixo. Então agora vou voar
por aí super rápido. Ou se eu enviar para baixo, estou voando por aí super devagar. Agora, uma coisa a observar aqui, o padrão é que,
se você quiser
voar e usar a roda do
mouse para dentro e para fora, rolando para cima ou para baixo, você pode realmente modificar a
rapidez com que você está voando. Então, esse é um bom
truque útil para conhecer também. Você quer que as coisas anotem
antes de fecharmos este vídeo, os componentes raiz. Nesse caso, eu tenho que
a esfera poderia ter colisões definidas como meus dois componentes
raiz. Não consigo mover os componentes
raiz. Você pode ver que eu realmente não
consigo selecioná-lo aqui no meu editor fora de simplesmente selecioná-lo
no painel Componentes, você pode selecioná-lo,
mas, como você pode ver, não consigo mudá-lo para modo de tradução ou
modo de rotação ou modo de escala. Ele me mantém apenas no modo de
seleção de objeto, que é a tecla de atalho Q. E você pode ver
no painel Detalhes para, eu só posso escalar isso. Não tenho a opção de
movê-lo ou girá-lo. Além disso, eu queria lembrá-lo
de todo o aspecto relacional do painel Componentes e
como isso afeta
a movimentação
das coisas ao redor da janela de exibição. Se você se lembra do último vídeo, adicionei este
componente de áudio que está enterrado dentro
da minha cruz aqui. Deixe-me mover esse cara um
pouco para cima , porque
realmente não importa onde eu colocá-lo, apenas esse ícone aqui. Vou adicionar isso ao meu componente vertical de
cubo. Então, novamente, se eu mova meu componente
de áudio sozinho, ele se moverá de forma independente. Mas agora ele está
anexado ao meu Q vertical. É suposto mover
esse cara por aí. O componente de áudio virá junto para o passeio. Portanto, esse relacionamento
é bastante poderoso. Use isso e lembre-se
dessas configurações de localização, elas são relativas à
coisa à qual ela está anexada. Se você não gostar desse relacionamento
anexado, você pode simplesmente ir assim, arrastar na parte superior novamente
e ele não recuará mostrando
que não está mais anexado a ele. O último, mas não menos importante, não se esqueça de
suas configurações de snap aqui na janela de exibição quando você estiver movendo
algo, girando algo ao redor
ou escalando algo. E, por
favor, não se esqueça de que você pode modificar suas configurações de encaixe de
escala, suas configurações de
encaixe rotacional e suas configurações de
encaixe de movimentos que podem economizar muito tempo também. Tudo bem pessoal, isso
é a guia viewport. Em poucas palavras, espero muitas dessas dicas
e truques lhe economizem muito tempo. Isso serve para oferecer este. Veremos você
no próximo vídeo.
8. Painel de detalhes: Bem-vindo de volta a todos neste
vídeo ou objetivos para aprender tudo sobre o painel de detalhes
dentro de um projeto. Agora, os planos são compostos
de todos os tipos de coisas. Temos componentes. Temos variáveis sobre as quais ainda não
falamos,
mas sim, e até mesmo informações sobre o projeto em si. Agora, todos esses dados, todas essas
informações são definidas por você dentro do painel de detalhes. Agora, por padrão, o painel
Detalhes está localizado à direita aqui dentro do
seu editor de Blueprint. Assim como qualquer outra janela de visualização, você pode simplesmente arrancá-la, clicar com o botão esquerdo, arrastá-lo para alguma outra parte da janela do
editor aqui. Algumas pessoas gostam de
colocá-lo logo abaixo painel de componentes porque há seleção de vários componentes
e, em seguida, eles gostam alterar os detalhes
logo abaixo. No entanto, a perna fica
bem onde está. Então, vou
encaixá-lo lá atrás. Walla. Por que não alteramos alguns detalhes diferentes sobre
alguns de nossos componentes. E agora estou olhando para os olhos são
dois componentes de malha estática diferentes ou cubo um vertical horizontal
e cubo. Agora temos esse tipo de cruz
branca para uma coleta de saúde. Acho que seria melhor se
mudássemos para verde. Então, vou escolher meu
cubo, horizontal aqui e mais no painel Detalhes, posso alterar
o material aplicado a ele. Agora eu tenho esse material de forma
básica. Posso clicar com o botão esquerdo sobre
isso e posso escolher um desses diferentes
tipos de materiais. Gostei desse ativo básico, O3, que é muito legal. Agora, se você não está vendo isso, ou talvez queira acesso
a mais materiais. Se você clicar neste pequeno ícone de
engrenagem aqui, você pode ativar e
mostrar o conteúdo do motor. E é assim que estou
vendo
mais materiais do que você à
primeira vista aqui. Então, se você também tiver
algum conteúdo de plug-in, é
assim que você pode
ativá-lo também. Portanto, mostrar o conteúdo do motor
analisará mais materiais para você. Vou usar esse
ativo básico O3 para mudar o verde dele. E farei o
mesmo pelo meu cubo vertical com o selecionado, alterando o material
aqui clicando
neste menu suspenso e nós o
mudamos para verde. Isso está tudo bem e bom. Agora também, talvez eu queira que
minha colisão de esfera aqui torno da minha cruz verde aqui seja um pouco maior, um pouco mais de uma
generosa área de coleta, se você quiser, bem
aqui com uma esfera porque os componentes de colisão selecionados no painel Detalhes, posso alterar o
raio da minha esfera clicando nele e perfurando um novo número
como 100 e clicando em Enter. Ou nesses campos numéricos, você pode simplesmente
clicar com o botão esquerdo e arrastar. Vamos ver, clicando com
e clicando de volta sobre ele. E então você pode
movê-lo para a esquerda e
para a direita para ajustá-lo dessa maneira também. Vou com o
número 100 por enquanto. Isso parece muito generoso. Agora, mais uma vez,
se você
fechar erroneamente este painel Detalhes
clicando no x, você pode entrar na
opção janela e ligá-lo novamente. Agora, existem diferentes opções de
visualização que você deve estar ciente. No painel Detalhes, você tem esse ícone de engrenagem. Se eu clicar nisso, há várias
opções diferentes disponíveis para você. Só vou
falar sobre alguns
dos mais usados. Um deles está sendo colapsado
e expandindo todas as categorias. Então, neste momento, vou entrar em
colapso todas as categorias. Então, sim, agora, se você
quiser entrar neles, você tem que
clicar neles um por um. Isso pode ser útil se houver apenas algumas categorias diferentes com as quais
você deseja mexer. Vou continuar com isso
novamente, e vou
expandir todas as categorias. Outro que eu gosto muito é
mostrar
apenas propriedades modificadas ou mostrar apenas propriedades
modificadas. Então, clicando
nisso, é uma maneira muito fácil de ver rapidamente quais são as
coisas que você realmente mudou sobre
esse componente específico? Vou virar
esse recuo. Em seguida, mostre todas as propriedades
avançadas. Agora, o que são Propriedades Avançadas em cada uma dessas categorias
dadas? Não devo dizer que cada um, mas
muitos deles, existem propriedades
avançadas que, por
padrão, não são expandidas. Então, por exemplo,
tenho minha forma e posso mudar a
cor da minha forma, se você quiser. Deixe-me apenas clicar sobre isso. Por padrão, é vermelho. Mas se eu fosse clicar de volta na minha colisão de esfera sob
a categoria avançada, eu poderia mudar isso para
rosa quente se eu realmente quisesse. Claro, por quê. Nozes. Agora também há esse pequeno, eu não sei como você chama isso. Um pouco de um ícone do tipo de
bloco de notas. Isso abrirá uma seleção
na matriz de propriedades. O que é isso agora,
esta é uma opção que
eu não uso com muita frequência. No entanto,
se eu clicar
nisso, ele
abrirá uma nova guia aqui. Essa é outra maneira de mudar propriedades
diferentes. Novamente, tudo
está em colapso aqui, mas se houver
algo que você queria mudar sobre isso, você pode simplesmente fixá-lo. Vou fixar essa
opção agora. Gera eventos de sobreposição. Você pode ver que isso
está verificado se eu fosse
desmarcá-lo aqui e depois voltar para desmarcá-lo aqui e depois voltar o meu exemplo b p pickup
sob colisão de esfera. Sob as
propriedades de colisão geração de eventos de sobreposição não
é mais verificada. Vou mudar isso de volta para onde eu tinha e
vou fechar daqui. Eu só queria
mostrar o que é isso. Eu não uso isso com muita frequência. Você pode encontrar algum
bom uso para isso. E então você pode ver aqui com colisão de esfera de
vácuo
I, posso ver que gerar evento de
sobreposição
foi verificado novamente. Agora,
na parte superior da nossa barra de ferramentas, temos essa opção
padrão de classe que eu queria
informá-lo. Vou clicar
nisso e quando eu fizer isso, vou trazer
um conjunto completo detalhes diferentes sobre
esse
plano
de classe de ator que são específicos para esse plano de
classe de ator. Agora não há muita coisa que
você precise mudar aqui, embora eu o
consciente de um que seja divertido de
brincar. E isso é com o padrão de classe vida inicial
selecionada está atualmente definida como 0,
o que significa infinito. Mas se eu fosse definir isso
para algo como três, isso significa que esse
cara vai embora depois de três segundos. E posso provar isso simplesmente
clicando no botão de reprodução aqui. E isso vai
entrar no meu editor de níveis aqui jogando
depois de três segundos. Todos eles passam, por meio de
diversão se eu mesmo digo isso. Então, vou mudar
essa classe como padrão minha vida útil inicial de volta para 0. Então, novamente, isso afeta
certas coisas sobre essa classe específica de
blueprint, os padrões da classe. Em seguida, eu só
queria
informá-lo sobre o botão aqui, essa opção de configurações de classe. Mais tarde, no curso, vamos lidar
com algo chamado Interface de Blueprint. E isso vai ser
tudo configurado nesta área. Nada mais que eu
queira mudar aqui. Na verdade, você não lida muito com as configurações de
classe fora da implementação de coisas chamadas Interface de Blueprint. Mas eu só queria
falar sobre isso agora. Então, mais tarde, no
curso, você vai ser como, eu sei exatamente para onde
ir e o que é isso. Tudo bem pessoal, esse é
o painel Detalhes. Saiba, adoro,
faça bom uso disso. Isso fará tudo
por este vídeo. Vejo você no próximo.
9. Meu painel de blueprint: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é
aprender qual
é o propósito
do painel My Blueprint dentro de um blueprint do Unreal
Engine. Agora, esta é uma área de
um blueprint onde você pode criar coisas
como variáveis, como funções ou macros para ajudar a moldar o que um determinado
blueprint pode fazer. Agora, se você não estiver familiarizado
com termos como variáveis, funções ou
macros, não se preocupe. Vamos quebrar
isso muito mais tarde no curso. Por enquanto, é bom
arquivar conhecimento de que o painel meus blueprints aqui é onde essas coisas
podem ser criadas. Então, como você vê aqui
no meu exemplo de BP, pegue o painel de blueprints, por padrão está localizado
no canto inferior esquerdo da interface, assim como qualquer outra guia aqui, você pode clicar com o botão esquerdo do mouse sobre
isso e você pode arrastá-lo para onde quiser. Gosto dele onde
ele está por padrão. Então, vou
deixá-lo bem ali. Assim como outras guias aqui, você pode clicar com o botão direito do mouse sobre ele. Você pode fechá-lo. Você pode trazê-lo de volta
através da opção janela aqui, marca de seleção mostra que ele
está em nosso blueprint aqui. Nenhuma marca de seleção significa
que ela não está presente. Então, vou
trazer isso de volta. Clique com o botão direito do mouse Eu poderia esconder a guia. Isso vai apenas uma barreira
que guia lhe dá um pouco mais de imóveis de
tela que estranhamente são úteis
de tempos em tempos. Clicar com o botão esquerdo nele
trará essa guia de volta. Clique com o botão Posso encaixar na barra lateral como podia antes. Clique com o botão direito no escuro também. Você me viu fazer
isso várias vezes. Tudo bem, outra opção
que quero apontar aqui
nos painéis My Blueprint, este ícone de engrenagem. Agora, se eu clicar nisso, ele me mostra várias opções mostrando seções vazias que
tenho aqui. O que isso faz é mostrar qualquer seção vazia,
qualquer categoria vazia. Neste momento, não tenho macros
no meu plano aqui. Se você não sabe o que é isso, novamente, não se preocupe com isso, mas saiba que se eu
fosse desligar isso, eu nem
veria essa categoria. Então, mostrando isso e eu gosto de
mostrá-lo por padrão, verei todas as diferentes seções
vazias que podemos ter na categoria
blueprints. Outro importante
a apontar aqui sob esse ícone de engrenagem é esse
show herdado variáveis. Agora isso mostrará variáveis
herdadas das classes pai. Agora, no nosso caso, nossa classe de pais aqui é
um plano de classe de ator. Então, vou
mostrar isso rapidamente. E quando eu fizer isso,
você verá algumas categorias aparecerem
aqui. Então aqui vamos nós. Vamos
mostrar variáveis herdadas. E vou
detalhar minha categoria de ator aqui. E o que você sabe? Vejo uma variável chamada vida útil
inicial. Bem, isso parece
bastante familiar. Então, quais são todas essas variáveis nessas
várias categorias? Bem, se você se lembra
do último vídeo, quando clicamos em nosso botão de padrões de
classe, temos muitos parâmetros
diferentes, muitas
propriedades diferentes que são
específicas para essa
classe de ator planta. E um deles localizado sob a
categoria de plano de classe de ator era a vida útil inicial. Eis que isso pode
ser acessado aqui, o painel meus planos também. Mostramos variáveis herdadas. Portanto, essa é outra
maneira de exibir todas essas
variáveis padrão de classe, não apenas quando você clica
em padrões de classe, mas aqui no painel
Meu Blueprint. E eu só
quero salientar aqui que se eu fosse clicar
na variável de vida inicial e ir até o painel
Detalhes. Posso mudar minha
vida útil inicial para S3. Agora, se eu fosse entrar nos padrões
da classe e encontrar a vida útil
inicial da categoria de ator. Está definido para
três aqui também. Então você está mudando
a mesma propriedade, apenas duas
maneiras diferentes de fazer isso. Vou redefinir isso de
volta para onde eu o tive. E note agora que, enquanto eu o
alterei aqui na seção padrão da
classe, se eu fosse clicar na minha propriedade de vida útil
inicial, ela a alterará de volta aqui também. Tudo bem, vamos
escondê-los novamente para que
possamos limpar um pouco nosso
painel My Blueprint aqui. Então, mostre
variáveis herdadas. Não. Vamos falar sobre como criar novas variáveis,
funções ou macros. Também podemos criar novos gráficos
e despachantes de eventos, mas eles terão
suas próprias seções mais tarde no curso. Se clicarmos neste botão Adicionar, ele diz que você deseja
criar uma variável, uma função, uma macro, um gráfico e Evento Dispatcher. Você pode fazer isso
dessa maneira ou com cada uma
dessas categorias diferentes
aqui você tem esse pequeno botão de mais
para criar um novo gráfico, uma nova função, uma nova macro ou uma nova variável, ou um despachante de eventos. Vamos seguir em frente e
criar uma variável aqui. Mesmo que não seja
disso que esse vídeo se trata, as variáveis terão
algumas seções aqui. Vamos
criar um só para dar uma noção do que toda
essa área de
blueprint faz, vou criar
uma nova variável
clicando neste botão de adição. Vou dar um
nome a isso e chamá-lo de soluço. Parece assim. Agora, em seguida, preciso
decidir que tipo de azul ou que tipo de
variável eu quero que isso seja. Por padrão, ele
geralmente mostra booleano quando você está criando uma variável
pela primeira vez. Ou definirá o tipo de variável
padrão como o que você criou pela última vez. Agora, antes de criar este vídeo, fiz uma corrida seca e, portanto,
ele está atualmente definido para o tipo de variável que estou procurando. Então, como
você muda isso? Podemos clicar
aqui para alterá-lo. Ou com a variável selecionada
no painel Detalhes, você também pode alterá-la
aqui. Então, em tipo de variável, clique neste menu suspenso e faça
uma pesquisa por base de som. No pequeno
menu suspenso aqui você deseja escolher a referência do
objeto. Agora, ao fazer isso, ele solicitará que você
compile seu blueprint. Novamente, ele está mostrando meu valor
padrão aqui porque eu já fiz uma corrida seca
antes do vídeo. Mas se você compilar aqui, ele permitirá que você encaixe em um som de sua escolha, clicando neste menu suspenso. Gosto do som interplay. Então, se você fizer uma busca
por entrar, reproduzir e passar o mouse sobre esse arquivo de onda sonora em
particular, ele mostra naquele pequeno
pop-up
que parece que isso vem
do caminho do mecanismo. E mais uma vez, se você
não vir esse som, se você clicar
sobre este ícone de engrenagem, poderá mostrar o conteúdo do motor e você deve ter
acesso a esse som. Agora você pode realmente
encaixar em qualquer som aqui. Este é apenas o
que eu escolhi. Portanto, sinta-se à vontade para encaixar
no som que você deseja. Agora não vamos fazer uso dessa variável ainda. Isso virá
no próximo vídeo quando falarmos
sobre nosso Gráfico de Eventos. Mas só para resumir aqui, o painel My Blueprint, é aqui que você
abriga, onde você cria
coisas como funções, coisas como macros,
coisas como variáveis e onde acessar
essas coisas. A última coisa antes de
encerrarmos este vídeo, você já deve ter
notado que todos os nossos diferentes componentes
aqui no painel Componentes, eles também estão sendo exibidos
aqui na seção variável. E essa é uma maneira
rápida e fácil adicionar uma referência a cada um desses
componentes diferentes em nosso gráfico de eventos. Mas, novamente, vamos
fazer uso disso em vídeos futuros. Por enquanto, eu só queria
apontar a relação entre os componentes adicionados
ao seu blueprint, também aparecendo
na seção de variáveis
do painel Meu Blueprint. Isso fará tudo isso
por este vídeo, pessoal, vamos ver vocês no próximo.
10. Gráfico de eventos: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é
aprender e demonstrar o que o Event Graph está dentro
de um projeto irreal. Agora, esta é uma área
de um projeto em que toda a nossa
magia de script acontece sempre que queremos
adicionar algum tipo de comportamento, funcionalidade
ou jogabilidade. O lugar para fazer essas
interações ganharem vida é dentro do gráfico de eventos. Então, aqui dentro do meu exemplo de coleta de
BP, já
exploramos
a guia viewport, guia Construction Script que
falaremos em breve. A guia Gráfico de eventos é a que
faremos a estrela
do show neste. Então deixe-me clicar com o botão esquerdo sobre isso. E o que você vê é um gráfico
que tem alguns nós aqui. Por padrão, esses são nós de
eventos dos quais podemos
criar algum script fora. Falaremos sobre
nós de eventos em sua própria seção. Mas, por enquanto, o que eu
quero fazer é apenas clicar com o botão esquerdo e vou arrastar para
fora esta caixa conhecida como seleção de letreiro. E eu vou apertar
a tecla delete assim que todos estiverem destacados
e o Newcomb sair. Adeus. Vamos
criar nosso próprio roteiro aqui. Tudo bem, então a primeira
coisa que queremos fazer é adicionar alguns nós ao nosso gráfico. Então, como fazemos isso? Bem, na verdade, existem
vários métodos diferentes e como fazer isso. A primeira é
clicando com o botão direito do mouse em um gráfico. Se você clicar com o botão direito do mouse, você tem um monte de categorias
diferentes. E em cada uma dessas categorias
diferentes, existem
funções diferentes que você pode adicionar. Existem diferentes eventos
que você pode adicionar, etc. Só vou escolher
Evento Começar Jogar aqui. Isso é um que você
viu aqui antes. E voila, você
tem um nó. Vou expulsar isso. Na verdade, vou
adicionar um agora que queremos em nosso gráfico, vou escolher nosso componente
de colisão de
esferas aqui no painel Componentes. Agora vou pular para a guia da janela de exibição rapidamente. A colisão da esfera é essa esfera invisível em
torno de nossa cruz aqui. Então eu quero fazer algo
com nossa colisão de esfera. Quero ter algum nó
associado a isso. Então, voltando ao meu Event Graph com essa colisão de
esfera selecionada, vou clicar com o botão direito do mouse no meu gráfico e anotar essa
caixa de seleção aqui em cima. É sensível ao contexto. Então, ele vai
me mostrar alguns nós que são específicos da minha colisão de esfera e eles estão listados
no topo aqui. Um deles que vou
adicionar agora está sob este evento Adicionar para a categoria de
colisão de esferas. Então, vou clicar
nesta caixa suspensa e, na seção de colisão, quero adicionar
componentes começar a sobreposição. Agora, esse nó
vai disparar um sinal quando algo
começar a sobrepê-lo. E ele pode produzir alguns
dados aqui,
dependendo do que se sobrepôs a esse componente
específico. Agora, uma informação
que eu quero encontrar quando algo se sobrepõe é colisão de esfera foi quem era o outro ator? Então, vou arrastar
um fio para fora daqui, e vou digitar o elenco
para o personagem de terceira pessoa. Agora, ainda não aprendemos
sobre elenco, mas resumindo a história, nós iremos, esse nó nos
permitirá verificar, ei, foi o outro ator que
se sobrepõe a essa colisão de esfera, foi que o
ThirdPersonacter? Se for,
continuaremos nosso fluxo de execução aqui. Fora desses eventos
por meio desse nó, continue por aqui. Este é um monte de
fios e nós que estamos ligando
para que as coisas aconteçam. Se não fosse o
ThirdPersonCharacter que se sobrepõe a essa colisão de
medo, esse elenco
falharia e o fluxo de execução
continuaria fora daqui. Então, essa é outra maneira de
adicionar um nó é simplesmente puxar um fio de um
desses pinos coloridos aqui. E falaremos sobre esses
diferentes pinos coloridos em vídeos
futuros e depois
procuraremos por um determinado nó. A terceira maneira de adicionar um nó ao nosso gráfico aqui é
arrastar e soltar. Podemos arrastar e
soltar componentes. E eu poderia fazer isso aqui no
painel Componentes ou
na seção de variáveis
do painel Meu Blueprint. Agora, vou fazer as duas coisas só porque é divertido
demonstrar os dois sentidos. Mas a primeira coisa que vou fazer é arrastar e soltar, clicar com o botão esquerdo e arrastar esse som de
captação para o nosso gráfico. Vai me perguntar,
eu quero pegar isso ou quero definir isso? Bem, eu quero obter o
conteúdo dessa variável. O conteúdo dessa variável
ou esta começa a ser reproduzido lá, desculpe,
esse som interplay associado a ela. Vou buscá-lo. E então vou arrastar para
fora desse nó e
vou digitar o som de reprodução. Veja, eu sabia que essa variável continha
um som dentro. Ele contém esse som
interplay. Então tudo o que estou fazendo
aqui é que estou dizendo, Ei variável, quero tocar o som que você
tem dentro de você. Isso é o que esse
nó de função faz aqui. Agora isso não acontecerá
a menos que eu vincule esse fio de execução a este nó de função de som de
reprodução. Tudo bem, então essa é
uma maneira de arrastar e soltar é diretamente
do painel Meu Blueprint. Agora, outra coisa que eu quero fazer, e isso vai ser apenas
para fins de demonstração, é que vou arrastar um
componente para fora daqui. Deixe-me arrastar
algo visual como o cubo horizontal,
clique com o botão esquerdo e arraste. E então eu vou
arrastar para fora do meu cubo horizontal e simplesmente
digitar destruir. Vou destruir
esses componentes quando nossas
sobreposições ThirdPersonCharacter forem esfera. Então é assim que ler esse roteiro em
particular agora, ao sobrepor nossa esfera, vamos descobrir
quem era o outro ator. Vamos lançar para o
nosso ThirdPersonacter, basicamente descobrir, ei, foi o ThirdPersonCharacter
que nos sobrepôs? Se fosse, vamos
continuar com nosso fluxo de execução aqui
tocando o som. E então vamos
destruir apenas componente
horizontal do cubo. Vamos prosseguir e
jogar teste isso. Vou clicar neste botão
Play aqui em cima. E vou
mover isso para o lado aqui porque
quero que você possa não só
me ver jogar o jogo, mas também ver a execução
desse script também. Agora, atualmente, tenho
acesso à minha janela aqui, mas quero fazer é clicar em Shift na F1 para trazer o cursor do mouse de
volta para o meu editor. Agora, aqui em cima,
tenho meu exemplo de coleta de BP. Posso clicar nisso
e você pode ver que
tenho o que equivale a 12345 instâncias diferentes
dessa coleta no meu gráfico. Então, isso só mostrará
isso para qualquer instância específica que
eu selecionei aqui. Então eu vou com o
exemplo da BP pickup, o primeiro. E agora, se eu voltar a ligar
essa janela, você verá esse fluxo de execução pulsar fora
desse nó de evento
através do resto desses nós sempre que eu sobrepor essa instância específica
do esta pickup. Então, vamos ver este
primeiro aqui. Então isso foi um para mostrar o fluxo de execução
logo acima. E como você pode ver,
ele acabou de destruir que um componente não
destruiu tudo. Tudo bem. Eu me sobreponho a esse. Novamente, ele destruiu
o componente, mas você não está vendo o
fluxo de execução acima. Doce, então está funcionando
atualmente. Agora, eu quero levar isso um
pouco mais longe aqui, e podemos ignorar esse
erro aqui porque o que acabamos de construir aqui
foi apenas temporário. Então, vou
clicar neste botão X. Então queria levar isso um pouco
mais longe aqui destruindo esse componente destruir e o calor e o
cubo horizontal. Porque isso não é realmente
o que eu queria fazer aqui. Em vez disso, o que eu quero fazer
é que eu queria destruir o ator inteiro quando
coletamos isso. Então, vou arrastar para fora
do meu som de reprodução 2D, e vou simplesmente
digitar Destroy Actor. Agora, o alvo desse nó
específico é ele próprio, o que significa todo esse blueprint. Então, ao sobrepor
essa colisão de esfera, vamos descobrir se era um
personagem em terceira pessoa que
foi o outro ator que se
sobrepõe a essa colisão de esfera. Vamos tocar esse som e depois vamos
destruir nosso ator. Fator divertido deste lugar
até D. Você pode clicar sobre isso para modificar algumas
propriedades sobre isso, como o multiplicador de volume
pode defini-lo como dois. Por exemplo, vamos prosseguir
e jogar isso mais uma vez. Agora isso deve destruir todo
o ator quando se sobrepõem a ele. E vamos fazer isso um
pouco maior aqui, assim. E aqui vamos nós. Doce. Tudo bem, com um
pouco de roteiro construído aqui, vamos falar sobre navegar
no gráfico de eventos. Aqui, a roda de rolagem
no Gráfico de eventos aumentará e diminuirá o
zoom. botão esquerdo do mouse e botão
direito do mouse
também aumentarão e diminuem o zoom. Então eu tenho os dois para baixo e estou apenas movendo meu
mouse para cima e para baixo. Você pode ver o
nível de zoom no canto superior direito. A propósito. Se eu clicar com o botão direito do mouse e
arrastar isso vai se deslocar. Ele meio que me dá esse ícone de mão para movê-lo assim, esquerdo do mouse e arraste,
clique com o botão esquerdo do mouse e arraste como. Então. Isso trará essa seleção de
letreiro, o que é ótimo para destacar toda
uma seleção
de nós como esse. Fato divertido aqui, algo que você pode fazer com
todo o script como este adicionado é tocar na tecla C para adicionar uma caixa de
comentários em torno disso. E vou chamar
isso de meu roteiro de coleta. Isso ajuda a manter as coisas
agradáveis e organizadas. Então, se você estiver ampliando
assim, você pode ver todos os
seus scripts diferentes que você escreveu aqui. Botão esquerdo do mouse em um Não, que
permite selecioná-lo para
que você possa movê-lo assim. botão direito do mouse
em um nó
exibirá um menu sensível ao conteúdo. Algumas opções aqui que eu
realmente gostei de explorar. Essas opções de alinhamento,
elas são ótimas e funcionam como qualquer coisa que você possa encontrar no PowerPoint ou no Google
Slides para alinhar nós, deixá-los leves,
justificados para a esquerda, justificados à direita. Eu adoro isso, especialmente essas conexões
endireitadas. Um é um dos meus favoritos. O que mais temos aqui? Temos alt plus botão
esquerdo do mouse é como você pode cortar fios. Então, como você pode ver, temos esse
fluxo ininterrupto de execução. Quando esse evento acontece, um pulso flui através desses pinos de
execução aqui em cima, mantendo pressionada a tecla Alt e clicar com o botão esquerdo em
um fio irá quebrá-lo. Então, agora, se eu fosse
jogar o jogo, eu realmente tocaria o som, mas não destruiria
o ator porque o fluxo de execução através dessas panelas de execução não
chegou aqui. Tudo bem, Control plus botão esquerdo
do mouse moverá os fios. Então vamos apenas dizer que eu tive, vou clicar com o botão direito do
mouse e duplicar meu nó Destroy Actor. Vamos apenas dizer
que essa foi alguma outra função aqui em baixo. E eu queria mover esse fio. Você não precisa quebrá-lo
assim e depois
reconectá-lo assim. Se você pressionar Control, você pode clicar com o botão esquerdo e pegar esse fio e
movê-lo para outro nó. Esse é um
truque muito útil também. Use isso muito. É algo para apontar
aqui ao quebrar fios, você não precisa apenas,
você sabe, Alt e
clicar com o botão esquerdo no meio. Você também pode Alt
e clicar com o botão esquerdo em qualquer um desses pinos de
execução também. Então lá você tem isso. Isso é algumas coisas de
navegação rápida para o gráfico de eventos. Mais uma coisa que quero
apontar aqui com os gráficos de eventos porque
sempre acontece com os alunos. Eventualmente, se você fechar sua guia Gráfico de eventos,
boom, ela desaparece. Você não pode encontrá-lo na opção de
janela aqui em cima. Como você obtém isso de volta então? Bem, isso está contido
no painel My Blueprint aqui
temos este gráfico de eventos. E se eu fosse clicar duas vezes neste gráfico de eventos na
nossa seção de gráfico, isso o trará novamente. Além disso, isso também é bom
notar. Ele listará todos os eventos que estão dentro do gráfico de eventos. Então deixe-me clicar com o botão direito do mouse e
adicionar e eventos Begin Play. Você pode ver como eu adiciono
isso ao meu gráfico, ele o mostra aqui abaixo do
meu Gráfico de Eventos também. Então, se eu estivesse no verão lá fora e eu clicasse duas vezes
no evento começar a jogar, isso me saltaria para ele. Também tenho a capacidade de
criar um novo gráfico. Agora deixe-me fazer isso rapidamente
clicando em novo gráfico e chamarei esse novo gráfico. Agora tenho dois gráficos
diferentes. Ambos são gráficos de eventos. Um é chamado de gráfico de eventos, o outro é chamado de novo gráfico. Por que você faria isso? Bem, eu faço isso às vezes simplesmente para organizar melhor meus roteiros. Dependendo de quanto script você deseja
adicionar a um blueprint, pode fazer sentido ter um gráfico muito
específico para dizer, eventos de
entrada versus coisas
muito passivas que podem acontece com
esse projeto. Então, algumas
coisas organizacionais a ter
em mente enquanto você está
construindo seus vários projetos. Tudo bem pessoal, isso é um
resumo rápido no Event Graph. Qualquer planta.
11. Script de construção: Bem-vindo a todos. Neste vídeo, nosso objetivo é
obter uma compreensão de alto nível do que o Script de Construção
está dentro de um projeto. Ou seja, esta guia aqui em cima é preenchida entre nossas guias
viewport e Event Graph. Agora, à primeira vista, parecerá quase
idêntico ao Event Graph. Então, neste momento, estou
na guia Event Graph da nossa coleta de exemplo bp. Você pode ver que
existem nós conectados juntos. Em nosso Script de Construção. Atualmente, temos um nó,
mas, assim como um gráfico de eventos, podemos conectar outros
nós a ele. Agora, enquanto o Event Graph é o local destinado a
criar um script que será executado enquanto o
jogo estiver em execução. O
script de construção é um lugar para criar um script
que você deseja executar antes que o jogo
comece enquanto você está construindo
seu blueprint. Agora olhe, o
roteiro de
construção é ótimo para construir a
variedade de construção em seus roteiros, além de criar atores
processuais para você trabalhar. O que você vê antes de
você é uma espreitadela do que está por vir
ao longo do resto deste vídeo. Esta parede aqui é uma planta de classe de ator
que só está utilizando, aproveitando o roteiro de
construção. Agora, o que torna os scripts de
construção tão legais é que você pode expor alguns parâmetros
em seu painel de detalhes. E apenas alterando alguns
desses parâmetros
que você expôs, você pode modificar a aparência
dessa instância específica
do blueprint. Agora, como você pode ver, como eu
altero algumas propriedades aqui, o script
abaixo está disparando. Mais uma vez, o que o
torna Construction Script diferente do
Event Graph é o script de construção é
acionado sempre que eu faço qualquer alteração nesse projeto, ele pode até estar simplesmente
movendo-o
relógios Eu movo isso. Você vai ver
um pulso em todo o roteiro de construção
abaixo aqui. Agora também torna isso legal, é se eu criar uma cópia
desse blueprint, vou para Alt,
clique com o botão esquerdo e arraste. Posso alterar os parâmetros
dessa instância específica. Então deixe-me mudar o número de seções aqui para
algo como dez. E eu posso mudar
o material para ser, vamos digitar
a palavra tijolo. E assim isso pode ter um material
único sozinho. Então, o
roteiro de construção é onde ele pode fazer algo assim acontecer. Agora pense nas
possibilidades com a forma como
eu tenho esse
script de construção configurado. Esta é apenas uma parede simples. Isso pode ser uma fileira de cadeiras, pode ser uma cerca. Poderia ser um monte
de postes elétricos com fios amarrados entre eles, esse tipo de coisa. Tudo bem, vamos
começar aqui dentro do nosso navegador de conteúdo, especificamente
na pasta de scripts do nosso navegador de conteúdo. Vou clicar com o botão direito do mouse em
algum espaço vazio aqui. Estou com o botão direito do mouse? Quero criar
um novo blueprint. Queremos que isso seja da variedade de classe de
atores, porque este será
um projeto que colocamos no mundo. Vai
me levar a dar um nome. Vou chamar esse exemplo de
sublinhado da BP. Que tal apenas ovos? Script de construção, esse é
um nome muito abreviado, mas eu meio que queria que ele se
encaixasse tudo em uma linha aqui, não envolva o script de
construção x. Incrível. Vai clicar duas vezes sobre isso
para abri-lo imediatamente. Em seguida, encaixe no topo, como eu gosto de fazer. Agora, vamos adicionar um componente a
esses blueprints. Vou ficar sob o botão
adicionar e vou
digitar a malha estática. Apenas estática irá
reduzi-lo para baixo. Agora, ao contrário de antes de onde adicionamos um componente
de malha estática, neste caso, queremos
adicionar um componente de
malha estática de instância. E a razão para isso é
porque vamos
construir qualquer número
de seções de parede. E para fazer
isso de forma eficiente para o tipo de script que
estamos prestes a criar, queremos uma malha
estática de instância como uma dica de ferramenta informa que é como renderizá-lo de forma eficiente. Então, vamos adicionar uma
instância Static Mesh. Vou pressionar Enter aqui com esse componente selecionado no painel Detalhes que
podemos encaixar em uma malha estática. Vou clicar
neste menu suspenso aqui. Digite o número 400 porque esta seção de parede
que eu quero
associar a este componente
é de parede 400 por 400. Vá em frente e escolha isso. Agora, como você pode ver, ainda não vemos nada em nossa janela de exibição. Vamos fazer uso disso de uma
maneira diferente aqui dentro de nossos roteiros de
construção. Então, vamos pular para lá. Agora. O principal takeaway
que eu quero que você entenda, pelo
menos por isso, é o que
o roteiro de construção pode fazer. Para construir projetos muito
dinâmicos. Você pode personalizar
seus planos de uma maneira incrível enquanto você está
construindo seu nível. Agora, o roteiro
que
vamos montar agora, tudo bem se você não entender
o que está acontecendo, vamos dividir esses conceitos de script como
vamos ao longo do curso. Meu objetivo neste
vídeo é simplesmente
construir a coisa para que você possa ter uma ideia do que o roteiro
de construção pode fazer. Então, tenha cuidado comigo nisso. Vamos começar
criando uma variável aqui. Clique neste botão de adição. Vamos chamar
essa variável de número de. Seções, vamos usar essa variável, da qual
mudaremos isso para um tipo inteiro para conter quantas seções
de parede
gostaríamos para esse
blueprint degenerado. Podemos dar a isso um valor
padrão no painel Detalhes, mas ele está nos pedindo para
compilar o Blueprint primeiro. Vou seguir em frente e fazer isso. Vamos começar com
um valor padrão de uma seção da parede. Isso é bom. Agora eu quero apontar outra
coisa aqui. Podemos expor essas variáveis ao nosso editor se marcarmos esta
caixa de seleção editável da instância aqui. Mas antes de fazermos isso, preciso realmente colocar esse projeto
dentro do nosso nível. Então, deixe-me voltar para minha guia de mapa de teste de nível que me traz de volta
ao editor principal. Deixe-me arrastar e soltar este
script de construção de exemplo para o nosso nível. Tudo o que vemos é o ícone do componente
raiz. Agora, no painel Detalhes, se eu fizer uma pesquisa por apenas entorpecimento, lembre-se de que nossa variável dada aqui foi chamada de
número de seções. Não vejo nada. Vou deixar essa busca
aqui em cima por enquanto. Vou voltar para o
meu exemplo de
script de construção aqui. Vamos seguir em frente e marcar esta caixa
editável da instância aqui. Observe que quando eu faço
isso, isso é a
mesma coisa que clicar aqui. Fechar este globo ocular significa que
não é editável por instância. Clicando para abri-lo
, marque essa caixa. Assim, você pode marcar essa
caixa clicando aqui ou clicando ali mesmo. Agora, se eu compilar,
salve esse blueprint e volto ao meu editor de
níveis com meu exemplo Construction Script selecionado aqui no nível
acima do painel Detalhes. Agora exponho essa variável
ao editor de níveis. Isso vai ser incrível
porque poderemos
dar um soco
em um número aqui. E então o Construction
Script determinará quantas seções de
parede queremos que apareçam. Muito doce. Tudo bem, vamos prosseguir e construir esse script. De volta aqui. No roteiro
de construção. Vou arrastar um fio. Vou fazer uma busca
por um loop for. E novamente,
vou passar por isso um pouco rapidamente. Então, se você não entende
o
que está acontecendo, está tudo bem e
apenas querendo
mostrar o poder do roteiro de
construção aqui. Agora, com isso,
vou alimentar essas são várias seções arrastando e soltando
isso no gráfico. Eu quero obtê-lo. Então vou
arrancar isso e vou
digitar a chave de menos. Quero subtrair o nó e vou
subtrair o número um. E vou explicar por que
assim que terminarmos
com tudo isso. E vou conectar isso em nosso último índice do for-loop. Então, sim, por favor, permita-me
construir isso primeiro e depois voltar e descrever
exatamente o que está acontecendo. Agora fora disso, o corpo do loop que vou arrastar para fora disso. Bem, na verdade, primeiro
preciso trazer para nossa instância Static
Mesh referência. Vamos seguir em frente e arrastar
e soltar isso do nosso painel de componentes
diretamente em nosso gráfico. Alternativamente,
eu poderia trazê-lo aqui também. Vou arrastar
isso e vou
digitar a instância do AD. Então, esse será o
saber que vai realmente
adicionar uma seção de parede aqui. Ele está
contido nesta malha
estática de instância para o nosso mundo. Vamos pegar nosso
corpo de laço e conectá-lo aqui. Em seguida, vou retirar
nosso índice do nosso loop for-loop. Vou trazer um botão multiplicar ou
multiplicar nó em vez disso, quero multiplicar isso por 400. Há uma razão muito
específica para
eu estar escolhendo o
número 400 aqui. Esse é o comprimento exato
da
nossa malha estática aqui. Na verdade, se eu clicar
neste mouse sobre ele, lá você pode ver na ponta da
ferramenta o tamanho disso,
no meio
dessa caixa lá, o tamanho aproximado
é de 400 por 20 por 400. Portanto, são 400 unidades irreais de largura, 20 unidades de espessura, 400 unidades de altura. Então esse é um
motivo muito específico pelo qual estou escolhendo
esse número aqui, porque vou
adicionar um determinado número de seções a cada
400 unidades irreais. Em seguida, vou
puxar para trás desse pino
de transformação de instância. E uma vez que eu solto
e vou digitar a palavra make transform, nos
dá um
pouco mais de espaço aqui. Mova isso para
a posição assim. E depois, fora do pino de
localização aqui, vou clicar com o botão esquerdo
e arrastar e digitar, fazer Vector
aqui embaixo, fazer vetor. E eu vou conectar
isso ao nosso x. e ele trará
um nó de conversão, convertendo um
número inteiro de tipo de dados em um flutuador. Então isso vai ficar bem. Então agora vamos falar sobre
o que temos acontecendo aqui. O que vai acontecer
é que vamos alimentar um determinado
número de seções. E lembre-se que essa variável
está exposta no editor, então poderemos determinar
quantas seções queremos. Então, vamos supor
que queremos dez seções. Vamos percorrer muitas
seções
que temos aqui, começando com nosso primeiro índice. Começa com
o número de 0. Se eu tiver dez e menos um, isso será igual a nove. Portanto, nosso primeiro índice
será 0. Nosso último é nove. Então, essencialmente, isso
nos dará dez iterações desse loop. Novamente, começando com
0, terminando com nove. É por isso que estamos fazendo
essa subtração aqui, colocando em dez, subtraindo um igual
a nove. Mas estamos começando a
contar em 0. Então, ele vai
correr isso dez vezes. Ele vai ser executado fora
desse corpo de loop dez vezes. Ele adicionará dez
instâncias dessa malha estática. Agora tudo isso
aqui em baixo está determinando onde colocar as malhas
estáticas. Essencialmente, o que estamos
fazendo é para cada índice, vamos movê-lo em mais de 400 unidades irreais
na direção x. Isso é essencialmente
o que esse pouco de script está fazendo aqui. Agora, sempre que você criar
algum script, seja no
script de construção ou no Event Graph, você deseja compilar. Ao fazer isso,
verificaremos seu script para garantir que você
não tenha cometido nenhum erro. Não vai
detectar todos os erros, mas vai
detectar muitos erros. E então você
quer salvar isso. Agora vamos voltar para
o nosso nível aqui. E o que vemos agora é que
temos uma seção de parede. Está tudo bem e bom. Deixe-me levantar isso. Aperte a tecla End, e isso vai bater
no chão. E isso é muito legal. O que acontece agora se eu alterar o número de seções para duas? O que você sabe o que
adiciona outra seção? 3410. Agora temos dez
seções de parede agora que são um pouco sem
graça, mas você pode ver o que
o Script de Construção nos
permitiu fazer. muitos nós fazer um
projeto que seja muito personalizável, apenas
mudando um valor aqui, estamos mudando o que acontece
com esse projeto, um lugar dentro do seu nível. Agora vamos dar um passo
à frente porque esta é uma parede bastante branda, se eu mesmo disser isso. Então, vamos estender nosso script
um pouco mais. Então, entre em nosso roteiro
de construção. E eu só vou
diminuir um pouco. E vou arrastar outra cópia da nossa malha estática de
instância aqui. Arraste uma cópia. Vou
colocá-lo aqui. E então eu vou
arrastar um aqui e digitar um material definido. Conjunto de material. Nossa malha estática de instância
será o alvo. E vamos manter nossa
execução em andamento aqui. E fora do nosso material aqui, posso clicar com o botão direito do mouse e posso
promover isso para uma variável. Quando eu fizer essa variável aparecerá em
nossa seção de variáveis. Isso vai ser um material
e vou alimentar este o nome de novo material. E eu vou
clicar nessa caixa para tornar essa instância editável. Também vou precisar tornar
isso editável para que possamos mudar
isso no editor. Vamos nos dar um novo
material aqui. Podemos alimentá-lo com um novo
material que vou escolher. Vamos tentar. Só
vou digitar tijolo. Você pode mudar isso
para o que quiser. Vou escolher argila de tijolos. Claro. Compile, salve esse
é o nosso script atual. E agora, se eu voltar para o
nosso editor de níveis aqui, você pode ver que o material de argila é colocado em cada
seção da parede. No entanto, no entanto, não o
vejo no editor porque atualmente estou
filtrando pela palavra entorpecido. Então, deixe-me desfazer esse filtro
ali mesmo no topo, posso ver as duas variáveis exponho agora ao editor. Deixe-me mudar meu novo
material para outra coisa. Vamos para o Chrome e wallah. Temos
uma parede cromada. É assim que você faz blueprints
que são muito extensíveis, se quiser, durante o tempo de design. Então, mais uma vez, o roteiro de
construção está lá para dar aos
seus designers, seus designers de nível,
se você quiser, grande poder e
flexibilidade sobre os projetos que
eles colocaram seus níveis e como eles
podem personalizá-los. Imagine se você
quiser, se você tivesse um projeto
que fosse simplesmente uma luz, uma lâmpada, se quiser, em uma sala. E talvez você
exponha a cor
da luz como fizemos
aqui em nosso exemplo, bem aqui no editor. Podemos fazê-lo para que, para cada modelo de lâmpada que
colocamos no nível, pudéssemos mudar a cor
disso através do script
de construção. Então você tem isso, pessoal, esse é o poder do roteiro
de construção. Dentro de um projeto. Eles farão para oferecer este. Veremos você no próximo.
12. Blueprints de curso: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo
é aprender sobre alguns
dos diferentes
tipos de blueprint no Unreal, começando com algo
conhecido como Plano de Classe. Agora, a razão pela qual
queremos aprender sobre diferentes tipos de blueprint é porque tipos diferentes
servem a propósitos diferentes. Além disso, a
interface e a maneira como você trabalha
com esse blueprint podem diferir ligeiramente
dependendo do que você está trabalhando. Agora, vamos usar nosso
exemplo de coleta bp aqui. Dê uma olhada nisso
muito rapidamente. No canto superior direito. Mais uma vez,
mostra que este é um blueprint de classe de ator conhecido como classe pai. Está sob o guarda-chuva Class
Blueprint. Mais uma vez, existem muitos
tipos de plantas de classe. Então, o que torna um
plano de classe um plano de classe? Bem, você pode pensar em um plano
de classe ou blueprint resumidamente, como um tipo de modelo de ativo. Como um modelo que
você pode adicionar facilmente funcionalidades ou componentes
para torná-lo seu. Agora, bem ao lado
desta guia aqui
tenho meu BPA ThirdPersonacter. E dentro desta classe de
caracteres Blueprint, tenho alguns componentes
diferentes que vieram automaticamente da criação deste blueprint de classe de
caracteres,
ou seja, o Componente Capsule, a seta, a malha e o componente de
movimento de caracteres. No entanto, se eu quisesse, eu poderia personalizar isso
e torná-lo meu. Posso adicionar mais componentes. Eu poderia trocar, digamos, a aparência dessa malha
no Event Graph. Eu poderia mudar todo esse roteiro nas boas pessoas
da Epic Games fornecido. E eu poderia criar algo
completamente diferente para que meu personagem se mova da maneira que eu
queria que ele se movesse. Isso é o que torna os
planos de classe tão poderosos. Eles fornecem o
modelo e, a partir daí, você pode fazer o que deseja fazer. Agora, como podemos criar
esses planos de classe? Bem, há
alguns métodos. Um que você já me viu fazer. No Navegador de conteúdo,
você pode clicar com o botão direito do mouse e algum espaço vazio
vem em Classe Blueprint. E lá ele permite que
você escolha uma classe pai. Esses são todos
tipos diferentes de blueprints de classe. Os mais
comuns listados no topo, os menos comuns abaixo. Existem muitos. Vamos
explorar vários dos tipos mais comuns
ao longo deste curso. Mas saiba que existem
muitos, muitos, muitos tipos. Portanto, essa é uma maneira que você pode obter neste seletor de planos de classe. A outra maneira é logo
ao longo do topo aqui com este pequeno ícone de nó, o ícone de blueprint,
se você quiser, você pode escolher isso, vir sob a nova classe de
blueprint vazia. E clicar nisso
exibirá a mesma opção escolhendo sua classe
pai. Agora, mais uma vez, o pai nos
fornece os modelos
iniciais. Então, vou seguir em frente e
criar um personagem aqui. E vou chamar isso de
meu personagem temporário, assim. E vou clicar duas vezes
sobre isso para abri-lo. Vamos comparar
e contrastar isso com nosso BP
ThirdPersonCharacter existente. Como você pode ver na
parte superior, no canto superior direito, ele diz que a
classe pai é caractere. E algumas das semelhanças que você verá entre este e
o
caractere em terceira pessoa é que eu tenho um componente de cápsula
no componente de erro, uma malha, qualquer componente de
movimento de caracteres. Esses quatro também podem ser encontrados em nosso
componente ThirdPersonCharacter, cápsula, seta, malha
e movimento de caracteres. Agora, uma das principais diferenças entre o
ThirdPersonCharacter e nosso caractere temporário é que a malha aqui é preenchida
com uma malha esquelética. No entanto, no meu personagem temporário, eu poderia definir isso e
torná-lo o que eu quiser. Eu poderia escolher qualquer malha
esquelética que eu quisesse. Ele está em branco por padrão. Você também notará
que aqui com nosso
modelo de caractere em branco aqui, não
recebi nada
no Event Graph que define o movimento do meu
personagem temporário. No entanto, no
ThirdPersonacter, as boas pessoas da
Epic Games
já deram isso para trabalhar. Então, mais uma vez, nosso pooper de classe de
personagens, eles fornecem o
plano de como criar um personagem,
fornecendo esses componentes, no entanto, o resto depende
de nós. Podemos personalizá-lo
adicionando novos componentes, personalizando o script para
fazê-lo se mover de uma determinada maneira, você obtém o ponto. Em seguida, eu queria dar algumas maneiras de você
se identificar facilmente. Você está trabalhando dentro
de um plano de aula ou um plano de nível de
Blueprint de nível
serão falados no próximo vídeo. Número um, no canto superior
direito de um Blueprint de classe, ele listará um nível de classe
pai. Plantas não vão. Número dois. blueprints de classe têm um painel Componentes
Blueprints de nível não. O número três nos blueprints da classe Event
Graph Tab no canto inferior direito era simplesmente
dizer blueprint em
oposição aos Blueprints de nível,
dizendo Blueprint de nível. Então, algumas dicas rápidas lá. Tenho muitos alunos
iniciantes que às vezes ficam confusos
onde estão trabalhando. Por que eles não veem
o painel Componentes, esse tipo de coisa. Então essas coisas espero que ajudem alguns de vocês por aí. Por fim, quero
falar sobre alguns
dos planos de classe comuns aqui. Então, clique com o botão direito do mouse e algum espaço
vazio Blueprint Class. Projeto depois da aula. Este é o que você quer escolher quando é
algo que
você vai colocar ou
gerar em seu nível. Por isso, devo dizer, algo que não é um
personagem ou um peão. Um modelo de personagem é um peão. Ele se estende da Classe Peão, na verdade, você pode
movê-lo. E uma das
grandes coisas sobre um plano de classe de personagens
é que ele vem pré-construído com um
Componente de Movimento de Personagens que lhe dá controle sobre coisas como a
rapidez com que seu personagem se move, como alto eles saltam, esse
tipo de coisa que você pode possuir e controlar uma classe de
personagem, blueprint, Modo de
jogo, blueprints Base do
Modo de Jogo, se você quiser. Este é o local principal para armazenar regras
com script do seu jogo. Ele pode determinar
coisas como pontuação, limites de
tempo desse
tipo de coisa
funcionarão em um desses
mais tarde no curso. Tudo bem pessoal,
isso vai fazer isso. Esse é o blueprint da classe vem
a seguir, o Blueprint de
nível. Vejo você lá.
13. Blueprints de nível: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é
aprender o que é um plano de nível, como acessá-lo,
coisas para as quais ele é usado e como ele difere de
um Blueprint de classe. Então, o que é um plano de nível? Bem, é o
projeto associado especificamente a um determinado nível. No nosso caso,
seria o blueprint associado ao nosso nível de mapa de
teste. Agora, como acessamos
isso? Bem, bem ao longo do topo aqui com este pequeno ícone do tipo E do
blueprint, clique neste menu suspenso
e à direita
no meio aqui temos esta opção de Blueprint de nível
aberta. Basta clicar
nisso
abrirá nossa guia Blueprint de níveis. No entanto, antes de fazer isso, quero mostrar
uma dica rápida aqui porque se eu
clicasse
nisso agora, ela abriria
nesta janela separada. Gosto de ter minhas janelas abertas ao longo do topo aqui
ao longo da janela principal. Então, vou te mostrar
rapidamente como fazer isso. Agora mesmo.
Vou entrar Editar preferências do editor em nossa janela de preferências do
editor. Aqui temos a opção
na categoria de aparências gerais aqui. Editor de ativos, o local aberto
está atualmente definido como padrão. Vou definir isso
para ser a janela principal, e depois vou
fechar isso. Então, agora, quando tentei acessar meu blueprint de nível aqui, abra o Level Blueprint, bam, ele o coloca do
outro lado do topo aqui, em vez de eu ter que
arrastar e soltar esta guia ao longo do top, tipo, eu gosto disso. Agora também vou
arrastar e mover isso
ao lado da minha própria guia do mapa de nível. Então observe algo
aqui rapidamente, o ícone laranja da montanha que representa
o nível em si, o nível de si mesmo em
que você está trabalhando. Isso tem exatamente o
mesmo nome,
mas tem esse ícone de
montanha azul que é o modelo
associado a ele. É o plano de nível. Então, rapidamente antes de
falarmos sobre o que esse plano de nível
é usado, como podemos dizer que isso é diferente de um plano de
classe? Bem, para começar aqui, no
fundo,
obviamente diz, Ei, Level Blueprint. Outra maneira que podemos dizer
que isso é diferente de um
Blueprint de classe é que
não há painel Componentes exemplo de coleta de
BP aqui
tinha um painel Componentes. Nosso plano de nível não. Observe também que nosso Blueprint de
nível
não tem uma guia
Construction Script ou viewport são outros
blueprints aqui para o ThirdPersonCharacter
e nosso exemplo de coleta de BP. Ambos também o têm. Também em nosso Plano de Nível, se olharmos para
o canto superior direito, não
há classe pai listada. E, portanto, como ele não
herda de uma classe pai, não
há
componentes ou variáveis herdados. Então, neste plano de nível, para
que é usado? Bem, o Level Blueprint é
onde você colocaria um script para coisas específicas de nível
, como música de nível. Talvez neste nível você só queira que uma seleção de música seja reproduzida apenas
neste
nível, em nenhum outro lugar. É aqui que você
poderia roteiro para
que a música de nível seja reproduzida. Talvez você tenha eventos
específicos específicos para esse nível, como jogador passando por um
corredor. Nesse nível, eles se sobrepõem a
um volume de gatilho e
faz com que o zumbi rompa uma janela e assuste o jogador. São
coisas muito específicas de nível que o script deve entrar em
um plano de nível. Compare isso com, digamos,
nosso exemplo de coleta de bp. Agora, saltar de volta
para o nosso editor de níveis aqui estão a coleta de exemplo da BP. Este é um plano de
classe de ator. Você pode arrastar e soltar isso
ao longo desse nível. E se eu fosse jogar meu jogo, posso ir em frente e atropelar esses captadores de saúde falsa
e coletá-los. Agora, não
importa se eu arrastar e soltá-los dentro do
meu nível de mapa de teste, ou posso criar um segundo nível, um terceiro
nível do quarto nível, etc. Essa coleta vai se
comportar da mesma maneira. Assim, criei esse
script dentro do
nosso captador de exemplo bp que verifica se nosso ThirdPersonCharacter se
sobrepõe à esfera, toca um som e
destrói como ator, esse roteiro é específico
para este ator, e esse ator pode ser
colocado em qualquer nível. Portanto, o Blueprint de nível
é onde você coloca um script
específico de vários níveis. Agora, um dos
benefícios de trabalhar no Level Blueprint
é que é muito fácil obter uma referência ou
adicionar um evento para um ator que já
existe em seu nível. Isso é algo que
não é tão fácil de fazer dentro de outro plano de classe como
um plano de classe de ator. E só para demonstrar
isso rapidamente, vou voltar
para o meu editor de níveis aqui. E vou entrar na
minha guia Conteúdo do anúncio aqui. E vou adicionar uma forma. Vamos apenas adicionar um cubo. Então, vou
clicar com o botão esquerdo e
arrastar um cubo para o meu nível, só vou
elevá-lo para o ar um pouco. Observe que eu o selecionei. Este contorno amarelo mostra
que eu não selecionei. E se eu olhar para o meu outliner, este é atualmente conhecido como o ator cubo,
esse é o nome. Agora vou voltar para o meu plano de nível
com este selecionado. E com isso selecionado, tudo o que preciso fazer é manter pressionada
a tecla R e clicar com o botão esquerdo. Ou, alternativamente,
posso clicar com o botão
direito do mouse e aqui posso criar uma
referência a esse cubo. Portanto, esse é o método do
botão direito do mouse. Se eu segurar Alt pressionado
e clicar com o botão esquerdo. É a mesma coisa, obter
uma referência a esse cubo. Agora note que se eu
tentasse algo assim dentro do meu
exemplo de coleta de BP aqui, vamos pular para dentro
deste gráfico de eventos. Se eu manter pressionada a
tecla Alt e clicar com o botão esquerdo, ela não tem ideia do que você está
tentando fazer referência aqui. Na verdade, se eu clicar com o botão direito do mouse, é como se eu não tivesse ideia que você está
tentando fazer referência agora, isso não quer dizer que não
podemos obter uma referência a esse cubo específico dentro
do nosso exemplo de coleta de bp, mas há outros métodos
para fazer isso e podemos explorar essas coisas
mais tarde no curso. Mas este é apenas um exemplo
rápido de um
dos benefícios de trabalhar
no Level Blueprint é que é muito fácil dentro de um plano de nível
obter uma referência a qualquer coisa que já exista
dentro do seu nível. Tudo bem, vamos criar
um script rápido aqui dentro do nosso plano de
nível. Temos nosso cubo já
selecionado no nível. Então, vou clicar com o botão direito do mouse
e algum espaço vazio aqui. E em vez de criar
uma referência à nossa fila porque já
temos uma, vamos adicionar um evento. Agora, ele diz que você está no evento para ator de malha
estática para, em vez de cubo atualmente y
Static Mesh ator
para bem, para deixar isso claro de volta em
nosso nível, em nosso outliner, no chão, no piso padrão, que é um tipo
de ator de malha estática. Este foi um segundo ator de malha
estática que adicionamos ao nosso nível. Assim, ele está considerando
o ator Static Mesh também. Então só queria
deixar isso claro. Tudo bem, com esse
cubo selecionado, clique com o botão direito do mouse no evento para o ator de malha
estática dois, vamos adicionar um evento
para quando atingirmos esse ator. Então vá em frente e adicione isso. Este será um roteiro
simples e simples. Não vamos
verificar quem o acertou. Vamos ter essa
coisa flutuando no ar. Então eu vou arrancar isso e apenas digitar
o som
de reprodução para D. Você pode encaixar em qualquer
som que você goste. No entanto, gostaria de ouvir
as coisas explodirem. Então, vou verificar
se há uma explosão aqui. Lá está explosão. Sinta-se à vontade para colocá-lo
sempre que quiser. E depois disso, vou arrastar para fora do meu cubo porque quero falar
especificamente com esse cubo. E eu quero dizer Destroy Actor. Portanto, esse é um script específico dentro
desse blueprint de nível. Se eu colocasse apenas esse
cubo em outro nível, ele não o destruiria
como estamos prestes a ver, porque esse script existe apenas dentro deste Plano de
Nível. Então, vamos em frente e jogar aqui. E bam, pequena
explosão atrasada lá. Mas uma maneira, uma maneira que vai
que realmente funciona. Vamos analisar
outro exemplo aqui mostrando para que o
Blueprint de nível pode ser usado. Ele pode ser usado para
algo como começar a tocar música. Então, pulando de volta para
este plano de nível, vamos em frente e a construção deste evento
começou a ser jogada aqui. Vou simplesmente
arrastar o tipo no som de reprodução 2D. Um som 2D é aquele que não
está localizado nenhum ponto em um espaço 3D. É simplesmente ótimo para música de
menu, música de fundo, esse tipo de coisa no nosso suspenso aqui eu vou
digitar a palavra música, e vou fazer
nossa música inicial aqui que está no
Pacote de conteúdo inicial. Sinta-se à vontade para
colocá-lo onde quiser. E se eu for em frente e tocar
wallah, você tem música. Então, mais uma vez, esses
scripts funcionam
nesse nível e nesse nível somente se eu criar um segundo nível, eu tenho
que decidir qual, neste caso, música de
menu eu quero reproduzir e qual
outra... fora das interações que
eu também queira roteiro. Então, até este
ponto neste vídeo,
mostrei mostrei um blueprint de um nível
associado a um único nível. Então a pergunta pode vir, posso ter vários planos
baixos? A resposta para isso é sim, essencialmente você
pode ver o quão bem, se eu estiver sob
minha opção do Windows no editor de nível principal aqui, posso encontrar essa
opção quatro níveis. E quando eu abrir isso, vou abrir uma guia de níveis. Agora, eu gosto de encaixar isso ao
lado do meu outliner. E o que posso fazer aqui é que eu
poderia adicionar um novo nível, essencialmente um
subnível, uma camada, se você quiser, a esse nível
existente. Atualmente, mostra que tenho um nível aqui conhecido como
meu nível persistente. E essa coloração azul
mostra que esse é o nível que estou
trabalhando com ele. Vem abaixo desta guia níveis
e seus níveis
caíram aqui, posso criar um novo nível. Então, vou ir em frente
e fazer isso agora. Isso vai me levar a
escolher um novo nível
e dar um nome a ele. Vou escolher
um nível vazio aqui. Vamos criar isso. E isso vai dizer, onde você quer salvá-lo. Então vou dar a
isso o nome de sub sublinhado nível,
sublinhado 01. Estou indo para como está
nessa pasta agora, mas vou começar a
alojar essas coisas em subpastas
separadas em apenas um pouco aqui, deixe-me me livrar
daquele U maiúsculo lá. Subnível um,
vamos salvar isso. Agora você vê que isso adicionou um nível à guia meus níveis aqui. Pense em um subnível como
uma camada no Photoshop. É apenas uma
camada adicional de coisas, atores, objetos, o
que você pode adicionar ao seu nível? As equipes de desenvolvimento costumam dedicar um subnível inteiro à
iluminação, por exemplo. Para que um
especialista em iluminação possa se
concentrar apenas no
aspecto de iluminação do nível. E é muito fácil
para essa pessoa ter acesso
exclusivo a esse é
um subnível e fazer edições nele sem
interromper o resto da equipe de desenvolvimento
trabalhando nesse nível. Então, se estamos fazendo um mundo aberto
massivo, podemos ter vários
subníveis aqui. Talvez alguém seja responsável por esculpir esse
enorme mundo aberto. Talvez haja um sub-nível
para toda a folhagem e outro subnível para iluminação e outro subnível para efeitos, esse tipo de coisa. Como você pode ver aqui, quando criamos
isso como sub-nível, ele fez com que nosso sub-nível azul emitisse o nível atual em
que estamos trabalhando. O que isso significa
torná-lo atual? Bem, isso significa que qualquer ator que
deveríamos adicionar a esse nível agora o que realmente
adicioná-lo ao nosso sub-nível, nosso sub-nível aqui
embaixo e criou um novo ativo para esse nível para baixo e
nosso conteúdo navegador, oposição ao nosso principal nível
persistente ou mapa de teste do VE. Vamos prosseguir e tentar isso
em apenas um momento. Mas, no entanto, eu queria
salientar que cada subnível tem seu próprio plano de nível. E isso pode ser acessado
clicando
aqui , onde há aquele
pequeno ícone de blueprint. Então, se eu abrir isso, podemos ver que ele tem o nome do meu subnível e novamente esse ícone de blueprint de
nível. Agora vamos voltar ao nosso editor de nível
principal aqui, e vou
adicionar uma luz pontual. Então, vou
entrar na minha guia Adicionar aqui. Vamos encontrar nossas luzes. Vamos adicionar uma luz pontual. Tudo bem, agora, nós o
adicionamos ao nosso subnível. E se eu clicar nessa pequena visibilidade de
alternância aqui, você pode ver que ela a
mostra e esconde. E está em nosso subnível. Se eu escondesse nossas coisas de nível
persistente, ainda
veríamos nossa luz porque isso pertence
ao nosso sub-nível. Também para ajudar a levar
esse ponto para casa, vou selecionar
nossa luz aqui. Se eu fosse entrar no meu Blueprint de nível
subnível e eu
tivesse que clicar com o botão direito do mouse
e algum espaço vazio, posso criar uma referência
à minha luz pontual. Eu tenho essas
luzes pontuais selecionadas no meu nível aqui, meu
subnível especificamente. No entanto, se eu tentasse adicionar uma referência
àquela dentro do meu
blueprint de nível principal aqui, clique com o botão direito do mouse. Não há referência que eu possa criar para essa luz pontual. Então, o que
quer que você tenha, quaisquer objetos,
efeitos, etc., que você tenha existente
em seu subnível dado. Você pode referenciá-los diretamente dentro do seu Blueprint de nível. Mas tem que ser
qualquer nível ou
subnível em que você realmente
colocou essa coisa dentro. Se você é novo no Unreal, toda
a ideia por trás
dos subníveis provavelmente está muito
além do que você realmente precisa saber agora. Mas como estamos no
tópico de Blueprints de nível, achei que era um momento
inapropriado para pelo menos trazê-lo à tona. Mais algumas coisas que quero fazer antes de fecharmos este vídeo. Vamos em frente e salvar
nosso nível e subnível. Ambos têm os
asteriscos neles. Eles podem ser salvos
clicando com o botão direito do mouse nesses ativos e em nosso navegador de conteúdo ou em nossa guia de
níveis bem aqui, posso clicar em cada
disco para salvá-lo. Além disso, quero criar pastas
separadas aqui
para alguns de nossos ativos. Caso contrário, teremos um lugar demais dentro da nossa pasta de scripts. Vou clicar com o botão direito do mouse. Vou adicionar uma nova pasta. Vou adicionar 14 níveis. E também vou clicar com
o botão direito do mouse em nossa pasta de scripts. Mais uma vez, vou
adicionar outra nova pasta, e vou adicionar uma para
chamaremos de visão geral para alguns dos nossos primeiros
blueprints que criamos. E depois vou voltar
para minha pasta de scripts. E vou arrastar
e soltar alguns
desses ativos dentro
da pasta apropriada. Então, vou
clicar com o botão esquerdo e arrastar e realçar como desculpe não
clicar com o botão esquerdo e arrastar. Controle. Clique em meu exemplo de coleta no
meu script de construção. E vou arrastá-los e
soltá-los dentro da nossa pasta de visão geral. E o outro 3123, eu só estou controlando clicando. Vou arrastar
e soltar dentro da nossa pasta de níveis,
movê-los para cá. Os ácidos em queda são
referenciados por um ou mais, dirão que sim. E por último, mas não menos importante, vamos arquivar e salvar todos os
bons pontos para salvar tudo como. Tudo bem pessoal, isso vai
fazer tudo por este. Veremos você no próximo.
14. Tipos de nó: Tudo bem, bem-vindos de volta a todos. Ao longo
dos próximos vídeos
aqui, estaremos
detalhando blueprints, scripts de nós em detalhes
muito mais finos. Em particular, vamos falar sobre
diferentes tipos de nós. Vamos falar
sobre diferentes tipos de pinos. Esses são esses pinos de forma
circular coloridos
versus esses pinos de
forma triangular. Vamos falar
sobre a diferença entre pinos de entrada
no lado esquerdo de um nó versus pinos de
saída no lado
direito de um nó. Vamos falar
sobre a conexão de nós e também como
organizar melhor os nós. Agora, neste vídeo, nosso objetivo é discutir
alguns dos tipos de nós de
script de blueprint encontrados em irreal. Agora, vamos
falar sobre cada um
desses diferentes tipos de nós mais detalhes mais adiante
no curso. Mas, por enquanto, eu só
queria familiarizá-lo com esses diferentes tipos de nós
para que você possa
identificá-los melhor e
entender o uso deles. Tudo bem, vamos
ter nossa discussão sobre
diferentes tipos de nós iniciados aqui com os nós de cor vermelha. Nós de cor vermelha no Unreal
são conhecidos como nós de eventos. E eles são críticos
porque são necessários para iniciar qualquer script lá. A faísca que envia um pulso por este fio aqui para fazer qualquer outro nó
ligado a ele, dispara também. Agora, alguns exemplos, eventos
ou eventos começam a jogar, o que é super comum. Isso dispara sempre que
iniciamos nosso jogo. Você também tem eventos de entrada , como quando você pressiona um no teclado ou o botão da
face inferior em um gamepad. Avançando, temos esses nós de cor azul e
estes são conhecidos como funções. Em particular, eles são
conhecidos como funções impuras. Em funções puras, faça
algo acontecer, mas são livres para que
as coisas sejam modificadas. Alguns exemplos de
diferentes nós de função incluem a geração de um ator, desova e emissor. Esse é o
sistema VFX mais antigo em irreal, também
geramos
o sistema que é o sistema VFX mais novo em irreal, temos essa função de criação de
widget. Isso é usado para mostrar tipos de menus ou HUD que
você criou. Também temos funções
para reproduzir um som ou configuração e
localização ou configuração dos atores, o material, esse
tipo de coisa. Eu queria adicionar
este aqui também. Você tem algumas funções
que podem ter esse desenvolvimento
apenas listrado nele. E isso ocorre porque
essa nota de função é realmente apenas para fins de
desenvolvimento. Então, se você vê
algo assim, é por isso
que
avançamos, temos esses nós de cor mais
verde. E eles também são conhecidos como
funções. Mas eles são conhecidos como funções
puras que são
simplesmente usadas para obter alguns dados. E um
diferencial chave entre essas funções verdes e
esses nós de função azul. Ambos têm
esse F extravagante, é que esses
nós de função azul impuros têm algo conhecido como pinos exatos neles. execução,
pinos exatos para curto. Enquanto o verde sabe que
as funções puras não sabem. Esses
pinos exatos ou de execução são simplesmente usados para manter o fluxo
de execução em andamento. Em. fio de execução pode
entrar e sair. No entanto, eles não têm isso. Então, qual
é exatamente o propósito deles? O propósito deles é usado
para obter apenas alguns dados. Nesse caso, esse
nó vai
conseguir o que é nosso
personagem de jogador. Neste nó, estamos obtendo em
que nível esse ator está. E essa função pura simplesmente obtém o nome de exibição
do objeto conectado a ele. Nesse caso, nosso nível. Esses dois nós aqui não
são funções puras. Em seguida, temos uma categoria de nós conhecida como nós de
controle de fluxo. Você pode identificá-los por esse
banner de cor acinzentada ao longo da parte superior. A única exceção a isso é a família de nós comutadores
dos quais existem muitos. E eles tinham esse tipo de faixa
de cor dourada
ao longo do topo. Eles também são considerados nós
de controle de fluxo. Então, o que
os nós de controle de fluxo fazem com o uso deles para determinar para onde
ir em seguida em um script. Então imagine se você quiser, tivemos um evento, comece a
reproduzi-lo logo antes
desse nó de ramificação. E ele estava conectado
aqui. Então, dependendo da
condição, verdadeira ou falsa, poderíamos um incêndio
dessa maneira ou dessa maneira. E posso ter todos os tipos de scripts
diferentes anexados
ao meu branch true ou meus nós de
controle de hello branch falsos são super comuns no Unreal
e scripts de blueprints. E
você saberá que está realmente aumentando nível do seu jogo de
script de blueprint quando
começar a dominá-los, como você encontra esses nós? Se você simplesmente clicar com o botão direito do mouse
em algum espaço vazio, poderá digitar o controle de fluxo. E há uma
categoria inteira na verdade listada como controle de fluxo. E você pode ver
onde há toneladas de nós de switch, controle de fluxo, deixe-me recolher a categoria do
switch e há um monte de seus nós de controle de
fluxo. E, em seguida, temos variáveis. Agora criei várias variáveis diferentes
ao longo
da esquerda em
preparação para este vídeo. As variáveis contêm dados
de um tipo específico. Estes são contêineres,
se você quiser. Eles podem ter seus
valores alterados ou definidos como gostamos de dizer, algo diferente do
que era originalmente, desde que seja do mesmo tipo. Agora, esses contêineres
são usados para conter coisas como valores de saúde. Ou é o status de possuir
algo ou local de geração. Se fosse um
valor de saúde, pode ser um tipo int ou float. Isso é algum tipo de número. Se fosse o status
de possuir uma chave, poderia ser um tipo
booleano verdadeiro ou falso. E se fosse a localização
de uma geração de inimigos, seria um tipo de vetor, que seria um local X,
Y e Z. Finalmente, eu queria
mencionar um nó muito especial e exclusivo
encontrado no script de
blueprint, que é um nó de linha do tempo. Os nós da linha do tempo são usados
para alterar o valor de uma variável ou
variáveis ao longo do tempo. E eles são usados para coisas
como mudar um valor flutuante para mudar um cronômetro de jogo
para diminuir ao longo do tempo, como fundou um jogo de esportes, você sabe, um relógio contando regressiva. Ou talvez para alterar
uma variável vetorial ao longo do tempo para mover um objeto. No caso de uma plataforma
móvel, esse é um nó tão legal e
exclusivo que tenho um vídeo inteiro dedicado a
isso mais tarde no curso. Então, em resumo,
temos nós vermelhos. Eles são conhecidos como nós de eventos
que são necessários para iniciar qualquer bit de scripts. São azuis. Os nós são conhecidos como funções
impuras. Eles simplesmente fazem
algo acontecer. Eles podem gerar um ator, eles podem gerar um
efeito de partícula, tocar um som. Eles podem mostrar uma tela de
menu ou HUD. O que torna as funções impuras diferentes das nossas funções
puras é que elas têm pinos de execução entrando e saindo delas. Falando em funções puras, aqui estão alguns exemplos
de nossas funções puras. Estes são de cor verde. Eles não têm pinos de
execução neles e são simplesmente
usados para obter alguns dados. Os nós de controle de fluxo
são coloridos em cinza, com exceção
dos nós do switch. E eles são super
úteis para controlar o fluxo de execução
dentro do gráfico. Em seguida, temos variáveis. Existem muitos tipos de
variáveis diferentes. As variáveis contêm uma
informação. O conteúdo de uma
variável pode ser definido, alterado se você quiser, em algum lugar ao longo do script. E por último, mas não menos importante,
temos um nó de linha do tempo. Este é um nó muito especial
dentro do irreal que pode alterar o valor de uma
variável ao longo do tempo. Tudo bem pessoal, isso vai
fazer tudo por este. Veremos você no próximo.
15. Pins de execução e dados: Bem-vindo de volta a todos. Neste vídeo, nosso
objetivo é aprender mais sobre e entender que
as diferenças entre execução
e panelas de dados são várias sem marés dentro dos projetos do
Unreal Engine. Agora, até este
ponto do curso, você me viu trabalhar com alguns
desses diferentes tipos de pinos
nos vários nós, mas não tivemos uma discussão
oficial sobre tipos de pinos. Então é disso que se trata esse
vídeo, usando algumas de nossas funções
impuras. Aqui está um exemplo rápido. Confira isso. Eu tenho alguns desses pinos de
forma triangular em um nó, e também tenho esses pinos
de
forma circular codificados por cores em um nariz. Essas coisas são
chamadas de pinos. Quais são as diferenças
entre eles? Bem, esses pinos
triangulares são conhecidos como pinos de execução. Esses pinos são onde
os sinais são enviados para dentro e fora de um dado conhecimento. Eles instruem o nó a
executar para fazer alguma coisa. Nesse caso, esse nó
geraria um efeito visual. Agora, todos os nós de eventos têm pelo
menos um pino de execução. E é muito importante
que os nós de eventos façam porque são
eles que iniciam o script
inteiro a acontecer. Então começamos a jogar. Vai iniciar um fluxo de execução para fora deste
pino e descer este fio. Agora é importante
observar aqui que nem todos os nós têm pinos de
execução. Se você se lembrar
do último vídeo, esses nós de função pura
não têm pinos de execução. Estes são simplesmente
destinados a produzir alguns dados. Isso leva muito bem
à discussão sobre o que é um pino
de dados. Bem, voltando para nossas funções
impuras aqui, porque esse nó
tem muitas delas. Os pinos de dados são pinos
onde os dados podem
fluir para dentro ou para fora de um determinado nó. Exemplos de dados que podem ser conectados a um nó
podem ser números, coordenadas, objetos,
esse tipo de coisa. Agora observe que esses pinos de dados, esses pinos de dados de forma circular
vêm em cores diferentes. E isso é para ajudar a identificar
os diferentes tipos de dados. Se eu passar o mouse sobre qualquer um
desses pinos codificados por cores diferentes na ponta da ferramenta exibida. Ele lista os
diferentes tipos de dados que podem ser inseridos nele. Portanto, o local está
procurando um tipo de dados vetorial, assim como a escala. No entanto, essa destruição automática está procurando um tipo de dados booleano. Agora você deve ter se lembrado
do último vídeo que falamos brevemente sobre variáveis
aqui em cima, e que as variáveis podem vir
em diferentes tipos de dados. As variáveis podem ser conectadas esses vários pinos de dados para instruir o nó sobre o que fazer. Por exemplo, se quiséssemos gerar um emissor em
um determinado local, eu poderia conectar uma variável
vetorial
nesse pino de dados para instruir esse
emissor onde ser gerado. Como você pode ver como eu estou arrastando e soltando isso sobre o pino, ele está dizendo: Sim, Isso
é uma variável vetorial. Não há problema em conectar isso
em nossa localização aqui. Agora, se eu
excluir isso e tentei
conectar a mesma coisa a
este pino de destruição automática. Ele dirá, não, não pode
fazê-lo porque isso não
é um
tipo de dados compatível, não pode fazê-lo. No entanto, essa variável booleana
pode ser conectada a essa destruição automática porque
esse é um tipo de dados correspondente. Agora é importante
entender que os nós podem receber dados,
bem como produzi-los. Portanto, este
emissor de geração no local como nosso sistema de geração no local, eles podem absorver todos os tipos de dados e também
retorna dados. Mas vamos conferir
outro exemplo de um nó que produz
muitos dados. Vou pular para o meu exemplo de
BP, pegar rapidamente aqui. E podemos ver em nosso
próprio componente começar sobreposição nota de evento aqui que
ele pode produzir muitos dados, incluindo o outro
ator que é a outra coisa que sobrepôs
esse colisor de esfera. Agora eu quero ajudar a solidificar
todos esses conceitos aqui,
temos pinos de execução versus
pinos de dados. Temos pinos de entrada
no lado esquerdo de um nó versus pinos de saída. Então eu adicionei um script temporário aqui dentro do meu exemplo de coleta de
BP. Esse é esse aperto aqui. Vou excluir isso
no final deste vídeo apenas para ajudar a demonstrar
esse conceito. Eu também no meu nível
tenho uma instância, uma cópia do meu
exemplo de coleta de BP. Atualmente, no meu
nível, é conhecido como exemplo de coleta de BP para. A razão pela qual estou
falando disso é porque
dentro desse blueprint
aqui em cima, eu selecionei isso, meu exemplo de empréstimo BP, instância de
retirada como
a opção de depuração. A coisa que eu quero ver o script para ele realmente
disparando no trabalho. Agora, esse script temporário
que eu adicionei aqui, isso vai
disparar todos os quadros. Isso é o que o carrapato do evento faz. Ele instruirá nosso nó de
função de string de impressão aqui para imprimir algo em nossa
tela em textos rosa. E isso vai
imprimir o nome do nosso personagem
de jogador. Isso é o que esses
nós também fazem aqui. Então, essa string de impressão, se eu desengatasse esse
fio aqui, simplesmente
imprimiria o texto Olá. No entanto, com isso
conectado a ele, estou dizendo a esta
função de string impressão
o que imprimir na tela. Estamos fornecendo dados de TI sobre
o que imprimir. Então aqui vamos nós. Vou clicar em
jogar aqui rapidamente. E se eu mover isso um
pouco para baixo, lá vamos nós. Você pode ver esse sinal de evento
disparando continuamente, um fluxo contínuo dizendo nossa string de impressão para imprimir
continuamente esse nome de exibição na
nossa tela aqui, ele é spam ao longo da esquerda
lado em textos rosa. E aí você tem isso. Temos um nó de execução disparando nesse nó de entrada de
execução, dizendo a isso para
imprimir na tela. Temos alguns dados fluindo para esse nó informando o
que imprimir. Isso vai fazer tudo
por esses caras de vídeo, temos pinos de execução,
esses pinos de forma triangular. Temos pinos de dados,
esses pinos de forma
circular codificados por cores. Temos pinos de entrada
no lado esquerdo de um nó. Temos pinos de saída
no lado direito do nó. Isso fará tudo por
este vídeo, pessoal, vamos ver vocês no próximo.
16. Fiação de nó: Bem-vindo de volta a todos. Neste vídeo, nosso
objetivo é aprender os métodos de fiação de
notas juntas em irreal. Agora, na superfície, pode
parecer que não há muito nisso, mas há algumas dicas e truques
sutis aqui que valem
muito a pena aprender, porque
eles podem economizar um carregamento de barco de tempo ao longo de
muitos dias de desenvolvimento. Então, em primeiro lugar, vamos falar sobre
diferentes tipos de fios. Fios brancos. Estes são
fios de execução e fluem entre os pinos de execução. Eles mantêm o fluxo de execução indo de um nó para outro. E uma dica divertida aqui, se você passar o mouse sobre
qualquer um desses fios, se você passar o mouse sobre
qualquer um desses fios,
você pode destacá-lo
assim para ajudar a destacar. Você pode ver como eu faço isso, meio que distribui todos os
outros fios abaixo. Muito legal, faz com que
isso ajude a se destacar. Em seguida, temos fios de dados. Estes são codificados por cores de
acordo com o tipo de dados deles, que novamente, vamos
aprender muito mais sobre tipos de dados mais tarde
no curso. Eles passam dados de
um nó para outro. Portanto, esse fio rosa representa
um tipo de dados de string. E novamente, diz que na ponta
da ferramenta enquanto eu o mouse sobre ela, se eu pular para o nosso bp
ThirdPersonCharacter, podemos encontrar alguns outros fios
codificados por cores. Esses fios verdes representam um tipo de dados flutuante que é um
número com um ponto decimal. Há também um
fio amarelo aqui embaixo. Este é um tipo de dados vetorial. Então, mais uma vez, os fios de dados são codificados por cores de
acordo com seu tipo de dados. Em seguida, vamos falar sobre diferentes maneiras de
conectar nós juntos. Provavelmente, a maneira mais
comum é simplesmente clicar com o botão esquerdo e arrastar de um tipo de pino para outro tipo de pino
semelhante, assim. No entanto, você não
precisa trabalhar nessa frente,
desta forma da esquerda para a direita, você pode trabalhar para trás. Se eu desconectar esse pino, eu poderia fazer algo assim. Essa é uma
maneira completamente válida de fazer isso também. Você também pode arrastar e soltar
alguns nós em outros nós. Olhe para baixo aqui no
meu nó 2D de som de lugar, eu desconectei temporariamente
meu som
de captação da minha entrada de som aqui. Eu poderia fazer algo assim, onde eu clique com o botão esquerdo e
arrasto isso para o enxerto, eu pego
, e depois ligo assim. No entanto, esse é um processo em
duas etapas. Vamos tornar nossas vidas mais fáceis. Então, como esse é
do mesmo tipo de dados que
isso está procurando, posso simplesmente
arrastá-lo e soltá-lo em cima, e ele irá conectá-lo
automaticamente. Esse é um truque muito útil. Agora, isso funciona não apenas
para inserir dados, mas também para a saída de dados. Portanto, antes deste vídeo, criei uma variável
aqui chamada Delta segundos
do tipo de dados flutuante porque esse tick de
evento pode gerar
alguns dados flutuantes. Se eu clicar com o botão esquerdo e
arrastar isso para cima daqui, ele poderá automaticamente. Por que esses dois nós também estão
juntos? Agora não
falamos sobre a obtenção alguns dados em vez de
definir os dados. Falaremos mais sobre isso
em nossa seção de variáveis. Outra maneira de onde
os nós juntos é obter algo
sensível ao contexto. O que quero dizer com isso?
Bem, deixe-me mostrar-lhe. Vou selecionar
nossa
malha cubo horizontal aqui em nosso painel
de componentes. E com isso selecionado, vou clicar com o botão direito do mouse
em nosso gráfico aqui. E vou fazer uma pesquisa por
nó chamado material Sets. Então eu posso definir material para o
meu cubo horizontal aqui. Se eu selecionei esse nó de
função, ele
conectará automaticamente nosso componente de cubo horizontal
aqui a este nó de função. Isso funciona não apenas em um plano de classe de ator ou outros projetos
para esse assunto. Mas aqui em nosso
Plano de Nível também posso
demonstrar isso. Então deixe-me voltar
para o meu mapa de teste aqui. Eu tenho meu cubo selecionado, pule de volta para o meu plano de
nível. Isso é um lembrete
sobre como fazer isso. Com esse nó selecionado ou
com a atriz selecionada. Devo dizer que o cubo selecionado. Posso clicar com o botão direito do mouse e
algum espaço vazio. Posso chamar alguma função
naquele ator Static Mesh. Deixe-me entrar na seção de
renderização e posso colocar o ator
escondido nos jogos. Então, estou automaticamente
conectando uma referência ao meu cubo, a esse ator definido escondido
na função do jogo. Agora, como demonstrei brevemente
no último vídeo, se você tentar conectar um pino a outro e eles
não forem compatíveis, irreal
informará sobre isso. Então, se eu fosse quebrar
meu garoto aqui, e eu tentei
conectá-lo aqui. Vai dizer,
OK, não posso fazer isso. Evento começou a ser reproduzido
no pino de execução tentando
conectá-lo a uma string int, tipo de dados de
string, Não é possível fazê-lo. Longa história, curta, o
Unreal informará se você pode conectar
esses pinos ou não. Agora, vamos falar sobre algumas
maneiras pelas quais os fios podem ser cortados. O método mais fácil
é manter pressionada a tecla Alt e clicar com o botão esquerdo
no próprio fio. No entanto, se você não precisar
fazer isso no próprio fio, poderá encontrar qualquer
pino que o fio está conectando e simplesmente mantenha pressionado Alt e clique com o botão esquerdo do mouse
no próprio pino. Não importa se
é desse lado ou
do outro lado
do fio de conexão. Outra maneira de
fazer isso é simplesmente clicando com o botão direito do mouse no nó. Então, vamos clicar com o botão direito em nosso nó de cadeia de
impressão aqui. E estou clique com o botão direito do mouse? Tenho a opção de
quebrar links de nó. Isso vai fazer isso. Outra maneira de fazer
isso é
clicando com o botão direito do mouse
no próprio pino. Então, vamos usar esse
exemplo aqui. Tenho essa referência de cubo dentro do meu plano de nível. E eu tenho isso ligado
a duas funções. Portanto, posso clicar com o botão direito do mouse
neste pino e eu poderia
quebrar todos os links do Pin. Portanto, observe que eu
tenho ele conectado
a dois nós de
função diferentes aqui. Se eu quisesse trazer os dois
fios ao mesmo tempo,
basta clicar com o botão direito do mouse nesse pino, quebrar todos os links do Pin e
boom, todos desconectados. Por fim, mover fios de um pino para outro é um
dos meus truques favoritos. Em vez de fazer
algo assim, onde temos nossa referência de
cubo e
queremos conectá-lo a isso. Oh, agora queremos
conectá-lo a isso. Então temos que quebrar o
alfinete e ir assim. Sim, está perfeitamente bom. Você pode fazer isso. No entanto, se você segurar
a tecla Control pressionada e
clicar com o botão esquerdo no pino em si, você terá esse
pequeno ícone de mão. Você pode arrastar e soltar isso
de um pino de dados para outro, assim, adorar esse truque. Isso é uma enorme
economia de tempo, caras certos, que são alguns métodos diferentes
para conectar nós juntos. Isso fará tudo por este. Vejo você no próximo.
17. Organização de nós: Bem-vindo de volta a todos. Neste vídeo, nosso
objetivo é aprender algumas dicas e
truques de organização de notas que
nos ajudarão a ser mais eficientes, bem
como escrever scripts mais
limpos que possam ser lidos com mais facilidade. Agora, até este
ponto do curso, escrevemos alguns scripts
bastante básicos. Eles não contêm
muitos nós ou fios. E, assim, a organização de nossos nós não é tão grande coisa,
mas à medida
que você se torna mais avançado, seus scripts
tendem a incluir mais nós, incluir mais fios
e, portanto, esses organizacionais
as opções tornam-se o, tão importante para o bem da
legibilidade. Então, em um plano
de sua escolha, estarei dentro do
meu exemplo de coleta de BP. Vamos explorar alguns
desses e agora eu
intencionalmente estraguei parte
da organização de nós que eu tinha acontecendo aqui antes do tempo. Se você clicar com o botão esquerdo e arrastar, poderá destacar uma
seleção de nós. Como alternativa, você pode manter pressionado o controle e clicar com o botão esquerdo para
selecionar vários nós. Depois de clicar com o botão direito do mouse em
qualquer uma de suas seleções, você pode colocar um menu com o botão direito do mouse em uma
das categorias é organização. Vamos
falar especificamente sobre essas opções de alinhamento. E no pequeno
menu suspenso aqui você pode ver que
podemos alinhar nossos nós ao longo
da parte superior do nó. O fundo, o meio
é menos os centros, os direitos, etc. Todos eles têm teclas de atalho
associadas a elas. Como você pode ver aqui. Se você olhar com cuidado, é Shift mais W, a, S e D. Esse é o movimento
do seu personagem no teclado que
corresponde facilmente à parte superior, inferior, esquerda e
direita. Muito útil. Então, vou me alinhar
ao longo do topo aqui, mas há um pouco de nuance com o alinhamento que
você deve saber. Então deixe-me ir
em frente e fazer isso. Você pode ver como ele alinha todos esses nós
ao longo da parte superior. Mas então a questão
se torna, bem, qual desses nós
que ele decide alinhar dois? Vamos fazer isso de novo. Movendo isso um
pouco fora do kilter. Você fará a
seleção de controle desses nós. Então, eu tenho 1234. Portanto, observe que Destroy
Actor aqui foi o último nó que
eu selecionei. Agora,
se eu clicar com o botão direito vou me
alinhar na parte superior novamente. E note que ele alinha
tudo de
acordo com o último nó
selecionado. Agora acabamos de nos
alinhar no topo, mas você pode imaginar
o que o alinhamento à direita, à esquerda ou à parte inferior faz. Em seguida, quero falar sobre conexões de
alisamento. Muitas vezes, à medida que seus scripts
ficam cada vez mais complexos, você pode ter nós meio que se
enrolando em uma área, talvez enrolando de volta assim. Não, é meio assim. Fiação de todos os tipos de maneiras estranhas. Endireitar as conexões é uma maneira de fazê-las
parecer muito limpas. Se eu destacar esses
dois nós, certo? Assim e clique com o botão direito do mouse, você pode ver que a
tecla de atalho para endireitar conexões é a tecla Q. E se eu fizer isso, você pode ver como ele endireita
essa conexão com fio. Agora aqui também, há
um pouco de nuance. A primeira seleção
que fizemos, e deixe-me
tirar isso fora do kilter. Mais uma vez. A primeira seleção
que fizemos é o nó que você deseja endireitar. A segunda seleção
que fazemos. Nesse caso, ele
será nosso nó de cadeia de impressão. Esse será o pino
do nó que queremos
endireitar dois. Portanto, observe isso clicando com o botão direito. Alinhe Q. Nós nos endireitamos
para esse pino, este nó,
endireitamos para esse pino. Em seguida, saltei para meu Blueprint de Nível, onde
estraguei intencionalmente a organização de
alguns dos meus nós variáveis para que eu pudesse demonstrar a
distribuição vertical. A primeira coisa que vou
fazer é clicar com o botão esquerdo e destacar todos
esses nós variáveis. E eu quero
alinhá-los ao longo da esquerda primeiro. Então, mantendo pressionada Shift, vou pressionar a
tecla a porque Shift mais a
é a tecla de atalho para
alinhar ao longo da esquerda. Como você pode ver verticalmente, eles não parecem muito
uniformemente espaçados. Portanto, há uma opção
para isso também. Vou clicar com o botão direito do
mouse em qualquer uma das minhas notas
destacadas restantes aqui. Todos eles são alinhamentos
destacados e podemos distribuir
verticalmente. E o que isso vai
fazer é espaçá-los uniformemente entre
o nó mais alto
que selecionei e o nó mais baixo
que selecionei. Então confira. Ele os
espaçava uniformemente entre meu nó mais selecionado e
meu nó mais selecionado na parte inferior. Organizar notas horizontalmente não
é o que é diferente. Então aqui temos alguns nós de controle de
fluxo que estão um pouco fora do kilter. Vou clicar com o botão esquerdo e
arrastar para destacar esses quatro. A primeira coisa que
vou fazer é manter
pressionada a tecla Shift e pressionar a tecla W para alinhá-los
ao longo da parte superior aqui. E então, com todos
esses destacados, posso clicar com o botão direito do mouse em qualquer um desses quatro
que estão destacados. Podemos ir para o alinhamento. Podemos distribuir horizontalmente
para uniformemente, espaçá-los. Agora, com esses nós selecionados, há algumas maneiras
diferentes de movê-los. Você pode ver que eu tenho todos os
quatro selecionados. Posso selecionar qualquer um deles e mover todas as quatro rodadas assim. No entanto, também posso
usar as teclas de seta. Então, agora estou pressionando as teclas de seta
para baixo, esquerda, para a direita e para cima, que também moverão os nós. Outra coisa que você
pode notar que eu tenho em alguns dos nós. Aqui está um comentário, um comentário sobre algumas
das teclas de atalho
associadas a trazer alguns desses
nós para o seu gráfico. Como você obtém um comentário de nó? Bem, é apenas uma questão de clicar com o botão direito do mouse
na própria nota. E lá você pode
deixar um comentário de nó. Eu gostaria de fazer isso
às vezes com teclas de atalho, especialmente quando estou
criando vídeos como esse. Sempre que você quiser
deixar um lembrete para si mesmo sobre o que um nó faz, ou talvez algum caso especial com o qual o nó
esteja lidando. Clicar com o botão direito do mouse sobre ele e adicionar um cometa de nó é bastante útil. Falando em comentários,
você pode ver, observe se quiser, que eu tenho essa caixa de comentários em torno de toda essa
seleção de nós. Bem, como eu consegui isso? Bem, isso é
simplesmente uma questão de, deixe-me mover esses
nós todos para fora daqui. Vou excluir isso. Você pode clicar com o botão esquerdo e arrastar para criar essa seleção de letreiro
em todos os seus nós. Com todos eles selecionados, você pode tocar na tecla C
para criar uma caixa comum. No momento em que você fizer isso, você pode ver no painel Detalhes, você pode dar um nome
à sua caixa de comentários. Você também pode
nomeá-lo aqui em cima também. Deixe-me mover
esses nós para baixo porque está se sobrepondo
um pouco. Você também pode clicar duas vezes nesse nome para
renomeá-lo e também ter acesso
ao seu comentário. Detalhes aqui, vou
chamar esse controle de fluxo. Você também dá uma cor
à caixa aqui. Algo verde. Talvez. Você também pode alterar
o tamanho da fonte. Isso é realmente útil para quando você está
ampliado assim. Talvez você queira
algo assim. Agora, outra opção realmente
útil com este balão de nó de comentário é que você tem esse
movimento no modo. Atualmente, se eu fosse
selecionar minha caixa de comentários, posso mover todos os nós porque meu modo de movimento está
definido como movimento de grupo. No entanto, também posso
alterar isso para
apenas a caixa de comentários em si. E posso mover apenas a caixa de
comentários pessoalmente, gosto do movimento em grupo. Então, outra maneira de
criar uma caixa de comentários seria destacar
alguns nós assim. E, como você pode imaginar, o
menu do botão direito do mouse também lhe dará uma opção para criar uma caixa comum. Vou seguir em frente e
fazer isso e chamarei esses meus nós de loop. E isso também demonstra
que você pode ter uma caixa de comentários ao lado
de outra caixa de comentários. Então, eu poderia me mover por
esses nós assim, além
de mover todos esses nós ao redor. Deixe-me mudar isso de
volta para movimentos GRU, incluindo a
seleção de comentários dentro dele. E, por fim, nenhum
vídeo da organização do nó pode ser concluído sem falar
sobre nós de redirecionamento e sua importância
dentro dos blueprints. Para demonstrar o nó de redirecionamento, estou no meu
mural de blueprint, Scott, que você pode encontrar a partir
da data de hoje de qualquer maneira, na pasta
Blueprints de conteúdo inicial, novamente, você pode demonstrar isso em qualquer projeto, mas dentro aqui, você vê isso muitas vezes
em scripts onde ele tem alguns fios
cruzando outros fios,
fios passando por nós,
esse tipo de coisa. Existe alguma maneira de
você redirecionar esse fio? Sim, você pode. E isso é através de
algo chamado nó de redirecionamento. O que
faz o nó de redirecionamento? É essencialmente
um ponto definido, uma banda, se você quiser, que você cria em um fio. Para trazê-los,
você pode simplesmente clicar duas vezes em
qualquer fio assim. Clique duas vezes neste
aqui é um nó de redirecionamento. Simplesmente continua
o fluxo de dados. Nesse caso, você
também pode adicionar nós de redirecionamento para os
fios de execução, assim. É ótimo para fazer esse
tipo de coisa em que você está meio que dobrando isso para deixar mais claro para onde isso está indo, em vez de
atravessar as coisas. Você também pode trazer um nó de
redirecionamento arrastando para fora de algo e digitando rotas re, você pode adicionar um
nó de redirecionamento como esse. E você pode ver que esse
ponto acende aqui, esse componente, se quiser, está conectado a
múltiplos desses. Desde que esteja se
alimentando de uma nota de redirecionamento, eu também poderia fazer algo
assim. Essa é uma maneira completamente
válida de fazer isso. Não importa,
neste caso, se estou arrastando a luz
pontual
daqui ou do ponto
onde ela está redirecionando. Ambos são maneiras
válidas de fazer isso. Então, o nó de redirecionamento super
útil amou tanto. E a maneira mais simples de
obtê-los é
simplesmente clicar duas vezes em um fio. Pessoal que vai fazer isso por este vídeo na organização de nós,
por favor, domine essas
dicas e truques. Você vai se agradecer mais tarde.
18. Level BP - Design Time Object Referências: Bem-vindo de volta a todos. Ao longo dos
próximos vídeos aqui, falaremos sobre um
dos conceitos mais importantes e
essenciais em todos os scripts de blueprint. E é assim que criar
uma referência de objeto. Agora, esse é um conceito tão
importante e estamos chegando a ele antes mesmo de
falarmos sobre eventos,
funções ou variáveis. Porque muitos dos
scripts de blueprints estão centrados manipulação de objetos
de alguma forma. Por exemplo, se você fosse
caminhar por cima de um novo captador de armas, Bem, você não pode
coletar essa arma sem ter uma
referência a esse objeto. Talvez você atire em um tanque
com um lançador de foguetes. Bem, você não pode destruir
esse tanque sem uma referência a esse
objeto para aquele tanque. Ou talvez você queira coletar
algum item colhido para
criar uma Espada Mestra, por assim dizer. Bem, você não pode
coletar esse item sem ter uma
referência a esse objeto. Agora vamos falar
sobre como criar
essas referências de objetos não
apenas em Blueprints de nível,
mas em planos de classe,
e não apenas durante o tempo de design,
ou seja, antes do
jogo estar essas referências de objetos não
apenas em Blueprints de nível, mas em planos de classe, e não apenas durante o tempo de design,
ou seja, em execução, também durante o tempo de execução, ou seja, enquanto o jogo está em execução. Tudo bem, então criando referências ao lado do nosso Plano de Nível. Primeiro de tudo, só quero
salientar que, na minha guia de
níveis aqui, estou trabalhando no meu Nível
Persistente. E eu tenho três objetos que foram adicionados a
esse nível persistente, um cubo, minha captação de BP e meu blueprint do Construction
Script também. E só para martelar para casa
o ponto em que estes foram adicionados ao meu nível persistente, meu mapa de testes de nível, se você quiser. Eu só vou
clicar neste globo ocular para e
desativar isso para que você
possa ver que sim, de fato, eles existem dentro
deste mapa de teste de nível, que também é conhecido
como meu Nível Persistente. Vou voltar para o
meu outliner aqui e
vou selecionar
todos os três objetos. Agora, você pode selecionar todos os três aqui na sua porta
de
visualização mantendo
pressionada a tecla control
e clicando com o botão esquerdo 123. Alternativamente, se eu clicar
nele por um momento, posso selecionar todos os
três aqui no meu outliner também, 123. E você pode ver que todos esses
três objetos estão descritos aqui
na Viewport. Tudo bem, agora vamos
entrar em nosso Plano de Nível chegando abaixo do nosso botão de
blueprint aqui. Vamos abrir
nosso Plano de Nível, mesmo que eu já o
tenha aberto no topo. E algo que eu quero observar aqui que atualmente
meu Blueprint baixo, eu tenho dois gráficos de eventos. Um chamado Event Graph, que um estava lá por padrão, e outro
chamado de tipos de nó. Eu criei este quando estava falando sobre os
diferentes tipos de nós. Agora, o motivo pelo qual estou
mencionando isso é porque dentro do meu gráfico de eventos de
tipos de nó, eu tenho esse evento começar a jogar. Você só pode ter um evento começar a jogar por Blueprint de nível. Então, se eu fosse trabalhar
nesta guia Gráfico de eventos
e clique com o botão direito do mouse e faça uma pesquisa por Iniciar reprodução. E clique nisso. Ele vai me levar
desta guia Gráfico de eventos de volta
para a guia de tipos de meus nós. Aí está. Agora também tenho que
funcionar nós aqui. Tenho um nó de atraso
que vai atrasar por três segundos e, em seguida,
um nó Destroy Actor. Então, essencialmente, o que
estou
olhando para fazer aqui é
ao começar a jogar, vamos atrasar
três segundos e depois vamos destruir
um ator alvo. Bem, quais atores
queremos destruir? Bem, eu tenho esses três selecionados aqui
nas minhas portas de visualização. Então, vamos criar uma referência a isso dentro do nosso Plano de
Nível. Agora, se eu clicar com o botão direito do mouse e
algum espaço vazio aqui, não parece
vê-los aqui, no entanto, há um
atalho para isso. Posso manter pressionada a
tecla R ou, como em Robert, clique com o botão esquerdo e o
boom, todas
essas três referências são adicionadas
mesmo que estejam se
sobrepondo. Então você pode separá-los. Assim. Agora, essa é a minha maneira preferida de adicionar uma referência a algo que existe
dentro do seu nível, dentro do Blueprint de nível. No entanto, se eu voltar aqui
e selecionar apenas um objeto, vou selecionar
meu exemplo de coleta. Vou voltar ao
meu plano de nível. Posso clicar com o botão direito do mouse aqui. E quando você tiver
apenas um deles selecionado no menu do
botão direito do mouse, sua terceira opção abaixo, você também pode criar uma referência
a isso. Qualquer método
fará pessoalmente, gostei do atalho
de manter pressionado o R,
R como na tecla Robert
e clicar com o botão esquerdo. Agora eu tenho duas referências
aqui ao meu exemplo de coleta de BP. Não há problema em ter mais de uma referência
ao mesmo ator, o mesmo objeto? Sim, está perfeitamente bom. Há simplesmente duplicatas com as quais
você está falando. mesma coisa. Só vou
excluir um deles
aqui por enquanto. Então, como você pode ver, todos esses atores são
do nível persistente, meu mapa de teste de LV. E eu posso ligar todos esses três
ao meu Ator Destruir. E você pode ver que posso
conectá-los para frente e para trás. Então, novamente, obter
uma referência de objeto é super importante
porque tanto um script de blueprint envolve manipular atores de alguma forma. Nesse caso, estamos apenas seguindo o método da força bruta
de destruir o ator. Então, se eu jogar meu jogo agora, deixe-me
compilar primeiro meu blueprint aqui para ver se há algum
erro com meu script. Salve isso imediatamente. Vá em frente
e clique em Jogar aqui. E você pode ver
depois de três segundos, todos esses três
atores são destruídos. Agora, criar
referências de objetos é legal, não só porque você pode
afetar o objeto em si, mas também pode afetar coisas sobre esse objeto em um nível
mais granular. Deixe-me mostrar o que quero dizer. Vou me livrar
dessa função Destroy Actor aqui. E com meu exemplo de coleta de BP, se eu voltar para onde isso
está nas minhas pastas aqui, tenho alguns
componentes aqui com os posso falar diretamente. Estes existem dentro do
meu exemplo de coleta de BP. E eu quero afetar
essa colisão de esfera. Atualmente, esse é
meu componente raiz. Então, vou alterar a
escala desse componente raiz. Todos esses outros componentes
estão conectados à raiz. Então, se eu escalar
isso, eles também
serão dimensionados. Então, como esse áudio, mas
esse está
vazio no momento e, francamente,
não preciso mais dele. Então deixe-me ir em frente e
excluir isso de lá, compilar e salvar isso. Tudo bem, deixe-me voltar
para o meu plano de nível. E vou arrancar
meu exemplo e pegar aqui. E vou fazer uma busca
por colisão de esferas. E eu quero ir para
o fundo. Muitas vezes, quando você está
procurando por algo que existe dentro
desse blueprint, está na parte inferior. E eu quero ter minha colisão de esfera porque
quero fazer algo com ela. E depois disso, vou arrastar
daqui e digitar em escala mundial
definida 3D. Portanto, essa função faz o que você acha que faz vai
escalar esse componente de cena,
esse é o alvo. Vou definir a escala para ser três vezes maior nas coordenadas x, y e z. Então, faremos isso
depois de três segundos. E novamente, todos os outros
componentes da cruz verde, se você quiser, o que está ligado a esse componente de
colisão de raiz da esfera. Então, ao escalar isso, tudo deve ser escalado
três vezes maior também, incluindo aquela cruz verde. Então, deixe-me compilar isso para
garantir que meu script esteja bem. Vamos em frente e clique em Jogar. Então, depois de três segundos, devemos ver essa mudança. Opa, e eu acidentalmente
cliquei da janela. Deixe-me tentar isso mais uma vez. Concentrando-se naquela cruz verde, boom, três vezes maior. Vamos tentar outra coisa aqui. Novamente usando nosso captador de
exemplo bp, deixe-me excluir alguns
desses nós desnecessários aqui. Vou excluir esses caras. Dentro do nosso exemplo de coleta bp. Temos essa variável de
som pick-up e atualmente ela está configurada para
esse tipo de som interplay. Agora vou mudar isso
para um som do tipo explosão. E posso fazer isso dentro do meu Plano de
Nível, desde que eu tenha uma referência a esse ator
que existe no nível. Assim que eu tiver uma
referência a isso, vou arrastar um
fio para fora disso e
digitar o som de captação. Posso obter esse som ou
posso definir esse som. Deixe-me ir em frente e defini-lo. E agora posso mudar o conteúdo dessa
variável para outra coisa. Vamos em frente e mudar
isso para explosão. E eu farei isso para que
fora do Event Begin Play. Estou simplesmente mudando o
valor dessa variável, essa variável de som
de captação, desse som interplay
para um som de explosão. Tudo bem, então quando eu jogar, você vai
ouvir uma explosão. Agora, quando eu coleciono
essa coleta de saúde, algumas outras informações
interessantes que pensei em mencionar enquanto
eu estava aqui com este exemplo referência de
coleta em
nosso Plano de Nível, se eu fosse clicar com o botão direito sobre isso, posso encontrar esse
ator em um nível. Então, se você está se
perguntando, Ei, onde essa coisa
existe no meu nível,
você pode ir em frente
e clicar com o botão direito do mouse,
clicar nisso e
voltar para o seu nível Tab, e ele irá pular direto para ele. Outra coisa dentro do seu Plano de Nível que
você poderia fazer é
me deixar passar de
onde esta referência está. Digamos que estou na terra de nenhum homem. Posso entrar em Window. Eu posso entrar,
encontrar resultados em, nesta janela de resultados finos, posso simplesmente digitar, vamos digitar a coleta. E posso encontrar meu
exemplo de coleta de BP ali mesmo. Eu não percebi que
iria encontrar meu som de pick-up também, mas na verdade isso tem
a palavra captação nele. Basta clicar duas vezes sobre
isso vai me pular direto para onde está a
referência do objeto. Muito doce. Tudo bem pessoal, então
há como você pode adicionar algumas referências de objetos dentro
do seu Plano de Nível, certifique-se de ter os objetos selecionados aqui e seu nível. E então você
pode clicar com o botão direito do mouse e algum espaço vazio e
criar uma referência a ele, ou manter pressionada a
tecla Alt e clicar com o botão esquerdo, que também o levará lá. Isso fará tudo por
esse vídeo, pessoal. Vejo você no próximo.
19. Nível BP - referência de objetos de tempo de execução: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é aprender como criar
referências a objetos dentro do seu Blueprint de
nível em tempo de execução. Isso difere das referências de objetos de
tempo de design em que estarão capturando e contendo
referências a vários objetos enquanto
jogamos o jogo. Lembre-se que o tempo de design é
antes do jogo estar em execução. O tempo de execução é enquanto o
jogo está em execução. Agora, um caso de uso comum
para isso são itens ou inimigos sendo gerados
no jogo enquanto jogamos. Talvez depois que um item ou
inimigos surgirem em seu nível, você queira
afetá-lo de alguma forma. Para fazer isso, você deve criar uma
referência para esse objeto. Você deve conter essa referência
dentro de uma variável. Tudo bem, vamos
começar aqui dentro do nosso mapa de teste de nível. E só para deixar
as coisas super claras, ao longo da guia Meus níveis de abertura, tenho meu
nível persistente como o nível azul, o nível atualmente ativo. Vou adicionar
objetos
daqui em diante ao meu Nível Persistente, não vou
fazer mais nenhum trabalho dentro do meu subnível. Então só queria
deixar isso claro. Se você quiser tornar
este o nível ativo, você pode clicar duas vezes nele ou alternativamente,
clicar com o botão direito do mouse sobre ele e tornar atual que a fonte azul mostra que esse é
o seu nível atual. Vamos adicionar
um ator a esse nível. E para fazer isso, vou ficar abaixo do
meu rapidamente adicionando
ao botão Projeto no menu
suspenso todas as classes. E estou
procurando um ator de anotações. Então, vou clicar com o botão esquerdo
e arrastar isso para meu nível e
colocá-lo aqui. Agora, no ator conhecido, se
você estiver jogando o jogo, você não vê
esse ícone aqui fora. Estou simplesmente usando esse
ator como uma forma de definir um ponto no espaço onde eu
quero gerar algo. Agora note que atualmente tenho
meu ator de anotações selecionado, e posso ver que o
selecionei aqui no meu outliner. Certifique-se de ter isso
selecionado porque
vamos criar uma referência de objeto de tempo de design para isso aqui em apenas um segundo. Então, chegando abaixo do meu botão
Blueprints aqui, vou pular
para o Plano de Nível, mesmo que eu
tenha aberto aqui, é assim
que você pode voltar
para o seu Plano de Nível. E o que vou fazer é
saltar para a minha guia Gráfico de Eventos E
bem aqui. Em algum espaço vazio, vou criar uma referência de tempo de design
para esse ator. Vou manter pressionada
a tecla R e clicar com o botão esquerdo. Então você me viu fazer isso
no último vídeo. Essa é uma referência de tempo de design. Agora, vou voltar
a isso em apenas um momento, mas preciso de uma chave de evento. Vou clicar com o botão direito do mouse e
algum espaço vazio e digitar um botão. Vou adicionar um evento de
teclado para quando pressionar a tecla
única do meu teclado. E muitas vezes isso, uma vez
que eu pressiono esse botão, vou arrastar isso e digitar o ator
de spawn da aula. Esta é uma função super
útil, não, que vai
surgir em algo que dizemos a ela
neste menu suspenso. O que
queremos gerar aqui? Vou aparecer em
algo visual. Vamos surgir neste efeito de
projeto fogo. Isso vem do
Starter Content Pack. Novamente, se você não
tiver esse pacote constante quando estiver montando
esse curso, qualquer coisa fará
algo visual. Então, não
importa o que você colocou. Mas vou escolher
o fogo. No entanto, eu preciso dizer
a isso onde eu quero que isso apareça
e é aí que entra
essa transformação de desova. E eu tenho que conectar
algo a
essa entrada de transformação para que ela saiba o que gerar
e depois onde. Então é para isso que esses atores
de nota serão usados. Vou
arrancar isso e digitar obter transformação de ator. A transformação é a localização,
a rotacional e, na verdade, as informações de escala
para esse ator de nó. Mas nós só nos preocupamos com
as informações locacionais. Por isso, é bom usarmos toda
a transformação aqui. Conecte isso na minha
transformada de spawn. E é aqui que
vamos
criar uma referência de
objeto de tempo de execução. Vamos armazenar
algo dentro de uma variável enquanto o
jogo estiver em execução. Então, fora desse valor de
retorno aqui, enquanto eu passar o mouse sobre o pino, ele diz que retornará uma instância desse
blueprint, o objeto de incêndio. Agora eu quero armazenar isso em uma variável para que eu possa
afetá-lo de alguma forma enquanto
o jogo estiver jogando. Então, vou
clicar com o botão direito do mouse neste pin e digitar Promover para variável. Então, ao fazer isso,
na minha seção de variáveis, criei um novo efeito de
blueprint fire. Mas preciso dar um nome a isso. Vou chamar isso de fogo
promovido promovido. É um bom nome. Então, mesmo que essa
seja uma variável, eu posso compilar isso também. Atualmente, quando eu compilo isso, eu olho para o
valor padrão em e diz: Ok, este será
deste site de blueprint é efeito de
fogo Blueprint, tipo de fogo. Mas agora
não temos nada dentro daqui. No entanto, uma vez que eu
pressionar a tecla única, isso gerará esse ator
nesse local e depois
o definirá dentro dessa variável. Ele será essencialmente
contido dentro
deste contêiner enquanto
estamos jogando o jogo. Agora
vamos simplesmente fazer isso em tempo de execução para que
possamos destruí-lo. Então, abaixo aqui, vou clicar com o botão direito do mouse
na tecla duas, duas entradas. Eles vão descer para
o evento teclado para a tecla. E fora disso, vou arrastar para fora
tipo, Destroy Actor. É uma função muito visual. É por isso que eu gosto
tanto quando estou montando esses
cursos juntos. E então vai dizer, que objeto você gostaria de
destruir qual ator? Bem, eu posso arrastar
e soltar isso diretamente
no alvo para instruí-lo
a destruí-lo. Agora note que se eu fosse pular e jogar e
pressionar a tecla duas, na verdade, farei isso agora apenas para
demonstrar alguma coisa. Jogando o jogo. Deixe-me ver se consigo colocar isso em uma janela
lateral aqui. Você pode ver meus scripts. Vou pressionar
apenas as duas teclas para, para, para, para, para, para, para, whoops, eu tenho que selecionar
uma opção de depuração aqui. Vamos escolher meus mapas de
teste para que possamos ver o fluxo de execução aqui. E então eu estou pressionando essa tecla
duas e você pode ver esse pulso para a esquerda
lá enquanto eu pressiono a tecla duas. Mas veja isso. Quando eu apertar Escape, estarei
com alguns erros. E a razão pela qual estou recebendo um erro é porque ele está dizendo:
Ei, não conseguimos encontrar nada
dentro dessa variável. Estamos tentando
destruir essa coisa, mas não há
nada lá dentro. Então, a razão para isso é porque nada está armazenado aqui no
momento. No entanto, quando
pressionamos o wonky, vamos gerar um ator que efeito de fogo
blueprint, e então vamos armazená-lo
dentro dessa variável. Criamos uma referência de
objeto armazenada dentro dessa variável. Então, vamos tentar isso novamente. Clicando em jogar. Então meu ator de anotações estava uma rodada acima do local onde a cabeça do meu
personagem está aqui. Então, vou pressionar uma tecla. Existe esse efeito de fogo
que acabou de surgir. E vou pressionar
a tecla duas desaparecidas. E eu posso pressionar
a tecla única novamente. Outra instância
desse firewall, preencha essa variável,
pressione a tecla F2, desapareceu. Agora, outra coisa que
vale a pena notar aqui, vou voltar
para o meu mapa de teste de nível. E vou mudar
minha opção de jogo aqui, clicando nesses três pontos. Ele muda para ser reproduzido
não em uma nova janela do editor, mas nesta viewport selecionada. Estou fazendo isso porque se você
olhar para o outliner, o lado direito, quando eu pressionar a tecla única, você vai realmente
ver que o ator é gerado na minha lista de
objetos no outliner. Então confira. Você pode oprimir a única tecla. Você vê o
efeito de blueprint
aparecer logo acima do
meu exemplo de BP. Pickup dois vai
destruí-lo um para um. E só para
apontar lá fora, está no Outliner bem ali. Vamos tentar um segundo exemplo aqui. Aqui em cima, vou
colocar em volumes, volume de
gatilho, um volume de gatilho bem na frente de onde meu personagem
vai aparecer. E eu só vou
dimensioná-lo um pouco para garantir que meu personagem tenha um tempo fácil
sobrepondo isso. Vou pegá-lo do
chão um pouco. Então, com isso selecionado, vou entrar no
meu Blueprint de Nível aqui, e vou clicar com o botão direito do mouse em
adicionar um evento para quando sobrepuvermos esse
começo, sobrepondo-o. E novamente ele acionar evento de
volume como este no ator
começar a sobreposição pode nos
dizer quem é o outro ator que se sobrepõe faz o que eu vou fazer aqueles que vou
clicar com o botão direito do mouse neste pino e vou promover
isso para uma variável. E ao fazer isso, você
pode nos dar um nome. Está inadimplente o nome
aqui para mim para outro ator. Porque antes desse
vídeo gravado, eu tinha inserido isso como um nome. Você pode pressionar F2 sobre isso
para renomeá-lo. Então, uma vez que nos sobreponhamos a
isso, ele pode armazenar uma referência a
esse ator que o
sobrepôs durante o tempo de execução sobre
quem era o outro ator. Só para garantir que
saibamos que, de fato, a
sobreposição é ocorrida. Só vou tocar um som, ouvir que qualquer som serve. Vou levantar
o som aqui também. Vamos jogar com certeza. Um obturador da câmera,
isso é apenas dois. Notifique-nos, é algo
de fato aconteceu. Então isso é ótimo. Mas vamos supor que quando nosso personagem se sobrepõe a
esse volume de gatilho, isso é, oh, isso é
negativo de alguma forma. Talvez seja algum tipo
de nuvem de gás venenosa
que vai nos encolher. Assim que tivermos uma
referência ao nosso ator aqui, podemos afetá-los de alguma forma. Então, vou me arrastar
daqui e trazer uma referência ao meu outro ator. E fora disso vou
digitar a escala de palavras. Vamos definir a escala de ator 3D. E pressionarei
valores 0.5.5.5 em cada um desses. Então, vamos entrar, jogar aqui. Depois de compilar, compilar, verificar se
meu script está bem. Vamos jogar. Tenho
meu mapa de teste definido como meu objeto padrão que
estou depurando aqui. Assim, podemos ver esses
scripts disparando. Aqui está a janela do meu jogador. Então, bem na minha frente, esse volume de gatilho invisível. Você me ouviu sobrepor isso. Agora. O outro ator foi
preenchido durante o tempo de execução aqui. Assim que eu pressionar a
tecla, o outro ator, também conhecido como eu neste ponto, eles agem ou a escala será definida para metade do tamanho. Aqui vamos nós. Estou pressionando a
única tecla agora. Boom, para baixo. Eu vou. Mais um exemplo aqui. Antes de
fecharmos isso, vamos
mostrar como criar várias referências a
atores durante o tempo de execução. Atualmente, dupliquei
meu exemplo de coleta aqui. Você pode fazer isso simplesmente
arrastando e soltando instâncias
individuais ou por alt, clicando com o botão
esquerdo e
arrastando em uma delas para criar outra instância. Então, de volta ao meu plano de nível
fora do meu evento de 16k, o que vou fazer é
arrastar um fio e digitar, pegar todos os atores da classe. E na classe de ator, posso encaixar na minha pickup
de exemplo da BP. E isso pode gerar todas as
instâncias desse ator. Então, vou clicar com o
botão direito do mouse neste pino de atores. Vou promover isso para
uma variável e chamarei isso de meus atores de
pickup. É uma matriz. Novamente, sei que não
falamos sobre tipos de array, mas uma matriz é essencialmente uma
lista de um tipo de variável, neste caso, são um exemplo de coleta de
BP. Ele vai armazenar todos aqueles dentro daqui para que
possamos afetá-los de alguma forma. E o que vamos
fazer com eles é arrastar esse pino e digitar
para cada loop. E novamente, tenho um vídeo dedicado ao loop
for-each chegando. Então, se você não sabe
o que é isso
agora , não é grande coisa. Então, para cada item desta
lista que
armazenamos aqui, faremos
algo com ele. E o que queremos fazer é para
cada item desta lista, o elemento de matriz, vamos
obter o nome de exibição. E então vamos imprimir
isso na janela do nosso jogador
, ligando isso assim.
Clique neste menu suspenso. Vou mudar isso
para textos de cor rosa porque isso faz com que ele se
destaque um pouco mais. Então, essencialmente, o que
está
acontecendo aqui é assim que eu
pressionar a tecla única, faremos uma
busca por todos os atores de uma determinada classe que
existe no meu nível. E vamos
armazená-los enquanto
jogamos o jogo no Runtime dentro
dessa variável de matriz, todos
eles serão desse tipo
de variável,
meu tipo de coleta de exemplo de BP. E, em seguida, para cada
item desta lista, vamos imprimir o nome
de exibição na tela. Vamos em frente e nos
dar uma jogada. E mais uma vez, tenho meu mapa de testes de
nível listado aqui. Ele acra, ele incrementa esse número cada vez que
eu jogo. Então é isso que esse número é. Você não precisa se preocupar com
o que esse número significa. Bem aqui vamos nós. Clique e jogue. Agora observe no canto superior esquerdo aqui, enquanto eu pressiono a tecla única, você verá que o fluxo de execução passar por aqui. E lista todas as cinco
instâncias da minha coleta de exemplo. Eu posso fazer isso de novo
e de novo e de novo. Estou apenas fazendo spam para
o seu agora. Agora, se você souber aqui
no meu plano de nível, se eu clicar na minha lista de
atores de coleta aqui no editor. Bem,
não há nada aqui dentro. Mais uma vez, estamos preenchendo o conteúdo dessa
variável durante o tempo de execução, estamos capturando-a
dentro dessa variável. Então, vamos fazer algo fora
dos dois eventos aqui. Vamos definir a vida útil
do shopping Shelley. Assim que tivermos uma referência
a essa lista de atores, posso pegar essa lista de
atores, arrastá-la e soltá-la. Vamos tirá-lo disso. Vou
digitar para cada loop, faremos algo
para cada item dessa lista. E o que faremos é fora
dos elementos da matriz. Portanto, isso é para cada
item dessa lista, vou definir a vida útil deles. Mais uma vez. Cada um deles tem
uma propriedade de vida útil dentro deles que eu poderia afetar. Vou mudar essa
vida útil para ser de dois segundos. Tudo bem, e deixe-me
encolher isso um pouco. Tenho meus mapas de teste definidos como minha opção de depuração.
Vou clicar em Jogar. Deixe-me mover esta
janela de jogo e para baixo um pouco
aqui, pressionando a tecla única para preencher
essa lista de variáveis. Agora foi povoado. Então, quando eu pressiono a tecla
duas, uma se foi. Então, lá todos vocês têm isso. Algumas das muitas maneiras pelas quais você
pode criar referências de objetos de
tempo de execução
dentro do seu Blueprint de nível. Falamos sobre como
fazer isso de
um ator de geração do nó de função de
classe. Além disso, ao
sobrepor um volume de gatilho, também
poderíamos acertar outro objeto também
que o faria. Além disso, falamos sobre
como fazer isso de um, obter todos os atores da função de
classe. É assim que você pode
obter vários atores. Há outras maneiras de ter certeza, mas espero que isso
lhe dê uma grade, desculpe, pessoal,
isso fará tudo por este vídeo. Vejo você no próximo.
20. Classe BP - Design Time Object Referências: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é aprender como
criar referências
a objetos de nível dentro
de um Blueprint de classe. Agora, ao fazer isso,
poderemos escrever um script dentro de um blueprint de classe que
pode afetar objetos de nível, coisas colocadas aqui em nosso nível. Este é um truque muito útil
para saber e irreal para criar um sistema de configuração simples por
nível. Então, vamos
fazer isso, embora apenas um pouco de
isenção de responsabilidade aqui, este será um sistema de configuração super
simplificado e eu estou usando aspas aéreas aqui. Tudo bem, vamos
começar em nossa pasta de
visão geral de scripts de conteúdo. E em algum espaço vazio, vou clicar com o botão direito do mouse
e vou
criar uma nova classe de blueprint. Isso será baseado em uma classe de ator porque
vamos
colocar isso dentro
do nosso nível. Então, vou nomear
esse sublinhado da BP L V, que vai representar configurações de sublinhado de
nível. Então vou clicar duas vezes
sobre isso para abri-lo. E vou adicionar
um componente aqui, e vou adicionar componentes de
outdoor. Neste outdoor, os componentes
por padrão nos dão esse
tipo de cabeça de dragão de ícone Sprite. Este é o que eu
vou rolar com. Você pode mudar isso
para ser outra coisa, mas isso vai designar
no meu nível que ei, este é o seu ator de
configurações de nível BP. Também vou
fazer disso a raiz disso porque quero me
livrar
desse ícone de raiz de
cena padrão. Então deixe-me arrastar e soltar
isso bem em cima de lá. Isso vai
torná-lo a raiz e , portanto, o único ícone IC. Então agora, se eu colocar
isso no meu nível, posso ver esse pequeno ícone de cabeça de
dragão. Sim, as
cabeças de dragão vão
representar minhas configurações de nível
para o painel Detalhes. Se você fizer uma pesquisa pelo quadro de
contas e novamente, você precisa ter
esses
blueprints de configurações de nível selecionados. Você pode reduzi-lo para a escala de outdoors do
editor. Vou mudar isso
para ser algo como dez vezes o tamanho normal. Só para fazer isso
realmente se destacar. Este ator não será visto
quando você jogar o jogo, mas para algo como
um ator de configurações de nível, eu gosto de tornar isso
muito proeminente, muito fácil de ver. E novamente, você não
vê isso no jogo, então não se preocupe lá. Tudo bem, a próxima
coisa que vamos fazer é criar uma variável dentro do nosso blueprint de
configurações de nível aqui. Então, na seção variáveis encontrada no painel Meu
Blueprint, variáveis. Além disso, vamos adicionar
uma variável chamada Música. E vamos mudar
o tipo de variável aqui de um booleano para ambiente. Som, som ambiente
na referência de objetos. Agora, no
painel Detalhes, ele diz ei, compile isso para definir
um valor padrão. Então, farei isso. No entanto, vou
deixar isso em branco. Vamos definir isso
dentro do nosso editor de níveis para
poder definir essa variável específica a
partir do editor de níveis, eu tenho que clicar neste pequeno ícone de olho ou verificar esta caixa onde
diz instância editável. Você vê agora se
eu voltasse ao meu editor de nível com
esse ator selecionado, deixe-me sair. Não vejo essa variável de música, exponho tudo dentro do meu editor. No entanto, se eu
clicar neste ícone de globo ocular, que faz o
mesmo que marcar esta caixa editável da
instância. E eu compilo isso
e salvo. Agora, de volta ao meu
editor de níveis que foi exposto aqui no
painel Detalhes dentro do meu editor de níveis. Então, o que isso está
me permitindo fazer é definir o valor dessa variável aqui no editor
para algum ator. No editor, eu poderia
clicar nesta caixa suspensa. E eu posso ver que
não há nada aqui, no entanto. Mas há esse ator de seleção do conta-gotas de
cena
que
me permitiria escolher um arquivo de som
que existe no meu nível. Então, vamos em frente e
procure um som para tocar. Vou selecionar minha pasta de
conteúdo aqui. E vou usar
a opção de filtros. E vou
procurar sob som. E faremos uma pesquisa por arquivos de onda
sonora
que buscarão
qualquer arquivo de onda de som
em qualquer lugar dentro minha pasta de conteúdo ou de
qualquer uma de suas subpastas. Quero encontrar essa música
inicial. Então, vou simplesmente
arrastar e soltar isso no meu nível, assim. Agora, se eu fosse
entrar e jogar nosso jogo, ouça a
música escapou. E a razão para
isso é porque nossa música inicial, deixe-me apenas, com isso selecionado, ative minha janela de exibição aqui e pressione
a tecla F para focar nela. Minha música estrela
no painel Detalhes tem uma propriedade para
ativação automática marcada. Vou verificar isso
por enquanto. E agora, se eu tocar, não
ouço esse nível de música tocando, pressionando Escape mais uma vez. Então, o que eu quero fazer agora está
no lado das minhas configurações de
nível de BP aqui, eu quero definir o valor da minha variável de música para
essa peça de música. Então aqui vamos nós. Vou escolher o
ator da cena. Vou selecionar esse ator de som
ambiente. E agora ele vai
encaixar essa música estrela dentro da minha configuração de nível BP. Então isso está tudo bem e bom. No entanto, dentro da
minha configuração de nível de BP, não
tenho nenhuma escritura para realmente dizer isso para reproduzi-la. Posso mudar isso
indo para
o Event Graph e fazendo
algo fora do evento. Comece a jogar aqui. Deixe-me excluir
esses dois outros atores. Então agora posso arrastar
uma referência à minha variável de música aqui,
clicar com o botão esquerdo, arrastar. Vamos obtê-lo. E se eu arrastar para fora daqui
e digitar a reprodução de palavras, posso reproduzir os componentes de áudio. Tão longa história, curta, se você arrastar para fora da música, essa variável, a variável de
som ambiente ali mesmo, ela trará esse
componente de áudio automaticamente. Podemos definir um atraso. Vou clicar com o botão direito do mouse
e algum
espaço vazio e digitar atraso. Então, não ouvimos
isso imediatamente se passarmos por aqui também. Então,
digamos que depois de dois segundos, começaremos
no início
desta faixa musical. Vamos compilar e salvar para
garantir que nosso
script esteja bom. E se eu jogar depois de dois
segundos, você não joga isso. Vamos tentar outro
exemplo aqui rapidamente. Aqui, na nossa seção de
variáveis, vou clicar
neste botão Plus. E vou digitar a luz
direcional como o nome. Vai me dar som
ambiente como o tipo de variável porque essa foi a última
coisa que criei. Quero mudar isso. E vou mudar isso
para luzes direcionais, referência de objeto de luz
direcional, não a referência do
objeto de
luz direcional do componente. Agora, mais uma vez, se
eu compilar aqui, esta é uma variável vazia. Não há nada dentro daqui. Mas também mais uma vez, se eu marcar esta caixa editável de
instância, isso fará com
que esse
ícone de globo ocular ganhe vida novamente, eles fazem a mesma coisa. E eu compilo isso e
volto ao meu editor de níveis. Agora exponho essa variável
ao editor de níveis depois de selecionar
minhas configurações de nível de BP
aqui. Agora, a razão pela qual defini isso para ser exposto é porque quando
criamos nosso nível de mapa de teste, sei que por padrão ele tinha um ator de luz direcional
já nesse nível. Ou seja, esse cara aqui, esse tipo de ícone de luz solar com essa seta branca
pendurada naquele cara. Então, o que posso fazer é com meus
blueprints de configurações de nível selecionados. Posso definir minha
luz direcional dentro das minhas configurações de nível BP para falar com esse ator
em particular. Então deixe-me clicar no conta-gotas
aqui e olhar. Ele sabe que esses
objetos não são válidos. No entanto, isso é válido. Nenhum desses outros é não, mas isso é um ator de luz
direcional. Para que possamos definir esse. Boom, agora está definido também. Vamos voltar para
nossas configurações de nível BP. E se eu arrastar e soltar isso
em nossos graflets de eventos, tirar isso disso, vou arrastar
e digitar conjuntos. intensidade definirá a intensidade do nosso componente de luz aqui, porque a luz direcional
consiste em um componente de perna. E vamos definir nossa
intensidade aqui para, vamos tentar um valor, digamos, 500. Apenas continuando o fluxo
de execução logo após início do jogo e depois o atraso
de dois segundos. Então, depois de dois segundos, vamos ouvir
nossa música kickin. Há pressionando a tecla Q
onde isso é útil. Então, também vamos definir que
a intensidade do
nosso ator de luz direcional ou script
compilado está parecendo boa. Vamos em frente e jogar. Você pode ver que não
só ouvimos a música. Então, esses são alguns exemplos bastante
extremos aqui, mas criamos um ator de definição de nível muito
básico. E observe o poder aqui. Eu poderia arrastar e soltar esse ator de
configuração de nível em outros níveis também e definir uma
música
única e uma única luz
direcional. Desde que eu esteja apontando
para uma luz direcional para essa variável e um
som ambiente para essa variável de música. Então você tem que ter
isso em seus níveis. Bem, whoops, ator
principal direcional no ator musical. Mas é assim que estamos definindo objetos de
nível de atores de nível dentro de nossas configurações de nível BP. Um plano de classe, caras que vão fazer
tudo por este vídeo, vamos vê-lo no próximo.
21. Classe BP - referências de objetos de tempo de execução: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é aprender como criar
referências a objetos de
nível dentro de um Blueprint de
classe em tempo de execução, ou seja, enquanto estamos
jogando o jogo. Agora isso é realmente útil quando, por exemplo, você quer que seu personagem interaja
com algo em seu mundo. E então ele queria
fazer algo aquela coisa com a qual você
interagiu. Tudo bem, para mostrar este exemplo que tenho
para vocês aqui hoje, vou colocar
algumas coisas dentro do nosso projeto
ThirdPersonCharacter, isso funcionará dentro de uma primeira pessoa
personagem também. Mas, mais uma vez, esse
é o personagem que
estamos usando para este projeto. Então vá em frente e clique duas vezes
sobre isso para abri-lo. Vamos até a guia
viewport porque vamos ver um componente
aqui em um pouco. Vamos adicionar um novo componente em
nossa lista de componentes. Vamos adicionar componentes
de seta. Vá em frente e clique nisso. E vou chamar isso de
meu ponto final de rastreamento de linha. E com esses
componentes selecionados, o local x para isso, vou definir para ser 300. Unidades irreais pressionam Enter. E se eu meio que varrer, mantendo pressionado o
botão direito do mouse aqui, minha janela de exibição, defini meu
componente de seta para estar fora à frente do meu personagem
aqui por 300 unidades irreais. Agora, o que pretendemos fazer aqui é que enviaremos uma linha invisível para o
espaço usando esse componente
para nos ajudar aqui, vamos verificar se essa linha invisível
colide com qualquer coisa. E se isso acontecer, vamos descobrir
o que foi aquela coisa que nos atingiu para que possamos
afetá-la de alguma forma. Ao fazer isso, podemos criar uma referência de objeto em tempo de execução
enquanto o jogo está em execução. Então, vamos pular
para o nosso Gráfico de Eventos. Vou entrar
em algum espaço vazio. E, por padrão, blueprints
de classe de
caracteres reconhecem eventos de entrada. Então, vou manter pressionada,
ou melhor, clique com o botão direito do mouse
e digite a tecla 0. A propósito, nem todos os blueprints de
classe reconhecem
eventos de entrada por padrão, mas a classe de caractere o faz. Desligado de pressionar a tecla 0. Vamos trazer
um nó de função chamado rastreamento
de linha por canal. Há muitos nós de função de
rastreamento diferentes. O que estamos procurando
é o rastreamento de linha por canal. Agora, mais tarde, no curso, falaremos sobre alguns
desses traços. E isso vai ser muito
mais avançado do que onde você está se você estiver
começando com plantas. Mas a natureza circular de aprender os projetos
do Unreal Engine é que, para saber disso, você precisa saber sobre isso. E para saber sobre isso, você precisa saber sobre isso. Então, se você não entender essa parte aqui,
tudo bem. Estaremos chegando a
alguns desses conceitos. Apenas tenha cuidado comigo. Isso está apenas
mostrando uma técnica para obter uma referência de
objeto de tempo de execução. Tudo bem, então este nó
enviará um traço de linha invisível
para o nosso mundo aqui. Então, onde queremos
começar esse traço? Bem, que tal começarmos
na nossa localização de atores? Então, vou
clicar com o botão direito do mouse e algum espaço vazio Digitar obter a localização do ator. E isso
retornará a localização de nós mesmos ou de nossos
terceiroprojetos de personagens. É aí que
vamos começar isso. Onde vamos acabar com isso? Bem, é por isso que eu incluí esse componente de
endpoint de rastreamento de linha. Vou arrastar e soltar uma referência a isso
em nosso gráfico. E então vou
arrancar isso e quero obter
a localização mundial
desses componentes. Então, essencialmente,
vou começar esse traço de linha invisível em nosso mundo na localização do
nosso ThirdPersonCharacter. E isso vai
se estender até a nossa linha em pontos de extremidade de rastreamento. Então, daqui para cá, tudo bem, movendo-se para cá, o que vamos
fazer é essa roupa. Essencialmente, isso nos dará muitos resultados
diferentes sobre
o que isso atingiu. E eu posso quebrar os resultados de
acertos aqui
digitando um resultado de sucesso de fuga. Clicando nesta seta para baixo aqui. Portanto, esse traço invisível, essa linha invisível
gritando para o mundo pode nos dar todo tipo
de informação, incluindo o que foi
o ator que foi um sucesso. Ele pode produzir todas
essas informações. O que estamos procurando ter
saída é o ator de sucesso. Agora, o que podemos fazer com
isso é clicar com o botão direito do mouse sobre isso. Podemos promover isso
para uma variável. Vamos fazer isso. E vamos manter o nome
Hit Actor aqui. E você pode ver que
o tipo de variável é apenas um ator genérico. Agora em cima aqui, vou arrastar um fio para fora
disso e digitar a ramificação. E vou conectar nosso valor de retorno aqui
à condição. Essencialmente, o que vamos
dizer aqui é que
só queremos continuar
além desse ramo. Se de fato fosse verdade
que atingimos alguma coisa, só vamos executar o que está além desse ramo aqui. Se é verdade que
nosso traço de linha atingiu alguma coisa,
essa é a nossa condição. Então, vamos arrastar um fio
desse tipo no som de reprodução para D. Vamos ter um
pouco de feedback sonoro para se nós, de
fato, atingimos algo. Vamos definir nosso som
aqui para ser qualquer coisa, mas vou definir isso
para ser clicado em um botão. Claro. Vamos com
isso. Isso soa bem. Fora disso, vou
conectar esse fluxo de execução para definir
nosso ator de sucesso. Então, na verdade, se
fizermos algo, se e somente se atingirmos alguma coisa, vamos definir o conteúdo dessa
variável se eu compilar, observe aqui que
o valor padrão é nenhum só se nosso
traçado de linha atingir alguma coisa. Bem, definimos o conteúdo
dessa variável e
vamos
fazer isso enquanto jogamos o jogo. Fora disso, vamos
estender um fio para fora e digitar impressão, string. E fora do nosso Ator de sucesso. Vamos apenas arrastar para fora daqui
e digitar o nome de exibição get. Então, vamos imprimir o nome
da coisa que escondemos. Então deixe-me enquadrar
este script aqui. Então, se você quiser
pausar o vídeo aqui e dar uma boa
olhada nisso, você pode ver o que construímos. Não consigo manter, não consigo obter
o nível de zoom certo aqui. Lá vamos nós. Mais uma configuração que
seria útil aqui para definir nosso Tipo de depuração de desenho aqui
para ser por duração. fazer isso, quando
pressionarmos a tecla 0, vamos ver um
pouco de uma linha lá,
uma linha de depuração, se preferir, sendo atirada para o mundo. Assim, podemos ver que
esse canal de rastreamento o
deixa em visibilidade. Por enquanto, esse é
o nosso canal de rastreamento padrão. Este é essencialmente um
canal de nomes que iremos filmar essa
linha do além. Tudo bem, e com isso, podemos realmente
compilar isso, salvá-lo. Vamos entrar e jogar para ver se podemos ver uma
linha sendo excluída. Mais uma vez, pressionamos uma tecla 0. Lá, você vê aquela
linha vermelha sendo disparada. Aquela linha vermelha sendo disparada. Agora, a razão pela qual você está
vendo a linha vermelha sendo lançada no mundo, mas você não está
vendo esse fluxo de execução no meu script
no topo é mais uma vez, porque eu não defini
minha opção de depuração. Então eu preciso jogar primeiro. E quando eu estiver jogando, isso vai desencadear meu
personagem para o mundo, então eu posso definir meu BP
ThirdPersonCharacter. Deixe-me trazer essa janela de
jogo mais uma vez. Então, quando pressiono essa tecla 0, posso ver esse fluxo de
execução indo agora. Não estou batendo em nada. Então você vê que o fluxo de execução está parando
na ramificação. No entanto, se eu for a
uma cadeira de objetos, você ouviu o som no
canto superior esquerdo e minha janela de jogo, ele imprime o nome da cadeira
S M, cubo, exemplo captador. E não está passando por isso. É que bater
neste banco. E a razão pela qual ele não está
atingindo este banco é porque esta malha estática de bancada
não tem nenhuma colisão sobre ele. Então é por isso que ele
está pulando isso. Então, algo para ter em
mente lá. parede My Construction
Script também. Ok, então isso está
tudo bem e bom. Estamos definindo essa
referência de objeto em tempo de execução, mas vamos afetar essa referência de
objeto alguma outra forma depois de
capturarmos uma referência a ela. Então, vamos colocar um pouco de script adicional
abaixo aqui. Vou clicar com o botão direito do mouse
e algum espaço vazio. Vamos trazer o botão de
nove entradas. Lá vamos nós. E fora disso, vou trazer
nosso Ator de sucesso. Vamos pegar isso. E então vamos arrastar um fio
para fora desse tipo em é válido, esta versão de ponto de interrogação. E se este for um objeto válido, o que significa que ele existe? Se for válido, vamos arrastar
fora disso dentro
do Destroy Actor. O alvo. Queremos
ser nosso Ator de sucesso. Isso é o que
queremos destruir. Clique duas vezes sobre isso para
criar um nó de redirecionamento. Pouca limpeza lá. Então, vamos tentar enquadrar
esse script aqui, ambos os scripts, para que você possa vê-los funcionando. Deixe-me ir em frente e jogar. Tente encolher esta
janela de jogo aqui um pouco. Tudo bem, se eu fosse
ir em frente e pressionar a tecla nove agora,
o que você vai notar, você pode ver que está pulsando para
fora da tecla
nove no
lado esquerdo enquanto eu spam sobre isso. Mas não está avançando além do
nó válido porque não
há um ator de ato de sucesso válido
que seja uma variável vazia. No entanto, vamos pressionar
a tecla de seta. Agora verifiquei
se essa é uma cadeira definindo
essa variável. Agora, quando pressiono a Nike, o ator de sucesso
foi povoado. E boom, vai adeus. Caminhando até este cubo, pressionando a tecla 0 que agora foi definida
como meu novo Ator de Hit. Pressionando a Nike, boom,
que dá adeus. Agora é importante
notar aqui que o Hit Actor é apenas um ator genérico. Não temos certeza em qual objeto
atingimos e, portanto, não podemos modificar variáveis são chamadas de funções específicas para essa referência de
objeto. Se quiséssemos fazer isso, poderíamos lançá-lo esse objeto para garantir que ele fosse
de um determinado tipo. Agora, mais uma vez, isso
vai ser um pouco mais avançado para onde
você está agora, estaremos falando sobre o lançamento mais adiante no curso. Mas só para mostrar brevemente como você poderia fazer
algo assim, vou
modificar esse script aqui um pouco mais. Vamos tentar algo
assim do meu Ator Hit. Vou lançar também. Faremos um exemplo de coleta. Vamos lançar
e verificar se isso foi um exemplo de coleta. E se for, vamos escalar
esse tipo em escala mundial. Definiremos a escala mundial
da nossa colisão de esferas, qual todos os outros
componentes estão ligados. E vamos definir nossa
escala mundial aqui para ser, bem digamos, três vezes
maior e o x, y e z.
Então, mais uma vez, nosso traço de
linha é o que
vai ser preenchido,
criando uma referência ao
nosso Ator Hit variável. Se isso for válido,
vamos verificar se era um exemplo de esquema de
coleta. E se fosse, vamos
escalá-lo três vezes maior. Então deixe-me minimizar
esse caminho aqui. Saltando e jogando, lutando com a tecla 0. Não quero chegar
muito perto disso. Pressionando a tecla 0 agora. Meu ator de sucesso agora foi definido. No entanto. Houve definido. Deixe-me recuar para que eu não sobreponha
acidentalmente
quando eu escalar isso. Agora vou pressionar a tecla F9. E wallah, é definida a escala mundial disso
para ser muito maior. Tudo bem, aí você
tem isso, pessoal. Há um caso de uso muito
prático de uma referência de objeto de tempo de execução. Novamente, existem outras
maneiras de fazer isso, mas um traço de linha é
uma maneira super útil, especialmente dentro de um modelo de
personagem. Isso servirá para
oferecer a esse pessoal, nos
vemos no próximo.
22. Referências de objetos em destaque: Bem-vindo de volta a todos. Neste vídeo, nosso objetivo é
aprender a lançar para um objeto para criar
uma referência a algo. Então, antes de tudo,
o que é o elenco? Casting é uma forma de
verificar se um determinado tipo de objeto é de uma classe
especificada. Agora você me viu fazer isso no
meu exemplo de coleta de BP aqui. Estávamos verificando para ver o que está sobrepondo nossa esfera de
colisão aqui, que é essa esfera aqui. Nesse caso, estávamos verificando se
aquele outro ator, se coisa que
se sobrepôs a ele era um ThirdPersonCharacter que estávamos lançando para ver se esse era
o ThirdPersonCharacter. Agora, se for de um tipo de classe
especificado, neste caso, o
ThirdPersonCharacter. Podemos capturar imediatamente esse objeto como referência. E o mais importante, faça coisas
específicas para esse objeto. Pode haver
funções, variáveis ou componentes dentro de nossa classe específica
que são exclusivos para ela. Então, com isso, quero dizer, se capturarmos uma referência ao nosso
ThirdPersonCharacter aqui, se isso for verdade, podemos capturar referência ao
nosso ThirdPersonCharacter. Isso significa ThirdPersonCharacter. Podemos falar com os
componentes aqui. Temos quaisquer variáveis
dentro daqui. Podemos modificá-los de alguma forma. Podemos modificar algumas
das variáveis padrão da classe dentro daqui. Coisas como
saltar a contagem máxima, que é divertida
para brincar. Dica, dica, você pode dobrar, triplicar salto com esse parâmetro, todos os tipos de coisas. Portanto, observe que esse tópico de elenco é um tópico sobre o qual
falaremos muito mais na seção de
comunicação Blueprint mais adiante neste curso. Mas para este vídeo, vamos simplesmente
falar sobre como criar referências de
objetos
lançando para uma determinada coisa. Tudo bem, vamos
mostrar alguns exemplos aqui no meu mapa de teste de nível. Em primeiro lugar, quero
verificar se você tem um ator de início de jogador
aqui em seu nível. E se você não fizer isso,
você pode vir abaixo seu pequeno botão aqui para adicionar
rapidamente ao seu projeto. E na
categoria de todas as classes aqui, você pode encontrar um
ator iniciante, aquele cara ali mesmo, arraste e solte um desses. Certifique-se de ter um
desses em seu nível. E então, se você
vier aqui, você tem esses
três pequenos pontos para alterar seu modo
de reprodução nas configurações do local. É aqui que você pode
alterar para reproduzir a porta de exibição
selecionada ou
uma nova janela do editor. A propósito, no entanto, eu quero chamar sua atenção para este jogador de geração no momento, temos isso marcado, significa
que verificado para gerar
um personagem de jogador no nosso jogador padrão começar está neste
local de ator aqui. Eu poderia mudar isso, mudar isso para a localização
atual da câmera. Então, onde quer que eu esteja no
nível, se
eu clicar em Jogar, eu poderia surgir
desse local que estou
olhando agora. No entanto, queremos que este
conjunto para fins deste vídeo seja iniciado
padrão do player. Tudo bem, com isso,
vamos criar algum
script para capturar uma referência de caracteres dentro
do nosso Blueprint de níveis. Então, mais uma vez, você pode acessar
seu Blueprint de níveis chegando aqui e abrindo seus Blueprints de
nível. Boom. Agora eu quero fazer algo
fora do Event Begin Play. Agora, anteriormente neste curso, criei um segundo gráfico de eventos
e o nomeei tipos de nó. E eu mencionei que só podemos ter um evento começar a jogar de acordo com
nossos planos de nível. Então, vou
excluí-lo daqui e fazer
todo esse trabalho dentro do nosso gráfico de eventos base aqui,
nosso gráfico de eventos padrão, que está vazio no momento. Então aqui vou clicar com o botão direito do
mouse e digitar começar, jogar. Evento B em plaquetas. Vá em frente e adicione isso. E então vou clicar com
o botão direito do mouse. E em algum espaço vazio, vou digitar o personagem
git player. Esta é uma função muito útil aqui que simplesmente retornará o
personagem que você, um jogador único está jogando, como neste caso, o índice
do jogador é 0. Nós só temos um jogador único, então vamos ser nós. Fora disso. Podemos arrastar e digitar
Cast to ThirdPersonCharacter. Se você estiver jogando com um
modelo de personagem em primeira pessoa aqui, você pode lançar para um personagem
em primeira pessoa. Vamos lançar para o nosso
bp um ThirdPersonacter. Então o que estamos fazendo aqui
é que vamos conseguir nosso personagem de jogador e
vamos então verificar, ei, isso
é um ThirdPersonacter que você está
controlando ou é esse outro personagem
que você atribuiu nas configurações
do projeto? E, novamente, nossas configurações de projeto podem ser acessadas aqui, configurações do
projeto e
sobre mapas e modos. No modo de jogo selecionado, podemos ver nossa Classe de Peão
Padrão. Atualmente, estamos padrão para
uma classe de personagens em terceira pessoa quando estamos jogando este jogo. Mas essa é uma forma
de apenas verificar, ei, estamos realmente jogando como
um personagem em terceira pessoa? Agora, aqui é onde a
coisa realmente entra, onde estamos usando
um elenco para criar uma referência de objeto
aqui mesmo de como personagem em terceira pessoa. Vamos
clicar com o botão direito sobre isso. Vamos promover
isso para uma variável. Assim que fizermos
isso, ele vai ligar dois fios a essa
variável central aqui. Então, em nossa seção de variáveis, ele criou uma nova variável de caractere de terceira
pessoa que é um tipo que lhe
foi dado. O nome. Podemos mudar isso. Vou mudar
isso para ser um personagem áspero. E então eu vou clicar com o
botão direito do mouse neste
nó e deixar o nó um comentário e apenas
chamarei isso promovido. Foi assim que criamos
essa variável. Nós promovemos isso fora do nosso
início de jogo aqui. Vamos capturar uma referência ao nosso
ThirdPersonCharacter. Ótimo doce. Isso significa que podemos então
fazer algo com ele. E é ótimo fazer
esses tipos de coisas. Muitas vezes, fora de um
evento começam a jogar, porque uma vez que você
tenha referência a um dado ator tipo
um determinado objeto, então você está pronto para ir. Você pode afetar da maneira
que quiser. Então, vou criar
algum script aqui para afetar nossa referência de
personagens. Vamos clicar com o botão direito do mouse em
algum espaço vazio. E vou
digitar uma série de chaves. Vamos digitar o
único evento Shelley. E fora disso, vou arrastar nossa referência de
personagens. Vai dizer, você
quer obtê-lo ou configurá-lo? Quero obter uma referência ao nosso personagem de jogador
e oferecer isso. Vou digitar meu
antigo mundo de set, escala 3D. Agora, o que
queremos definir em 3D aqui? Vamos definir nossa malha. E se entrarmos no nosso
ThirdPersonCharacter Blueprint, estávamos conversando com esse cara
aqui com
os componentes selecionados. Nossa malha de personagens ou pessoa, nosso manequim, se você quiser. Mulher manequim, se você quiser. Tudo bem. Então, quando pressionamos o
instável, vamos definir
nossa escala mundial e não deixá-la em 0
, porque então você vai desaparecer. Vamos 0.5.5.5. E vamos compilar isso para garantir que nossos
scripts fiquem bem. Vamos salvá-lo. Vamos então definir nossa opção de
depuração aqui para nossos mapas de teste para
que, esses sejam os scripts que
veremos disparando. Vamos em frente e jogar. Na verdade, deixe-me ter certeza de
que eu tenho esse conjunto para a nova janela do editor. Volte para o meu plano de nível. Agora, nós já criamos essa referência de personagem que
começamos a tocar isso disparou. Mas se eu pressionar a
única tecla agora, você verá que esse
script realmente disparou. Capturei essa referência de
personagem fora do Event Begin Play e pressiono a única tecla que
definiu minha escala como 0,5. Agora você pode ver que estou
martelando na única chave. Agora não vai continuar
definindo a metade do tamanho, metade do tamanho, metade do tamanho. Acabei de dizer, defini-lo para metade do tamanho habitual ali mesmo. Então esse é um exemplo de transmissão para nosso
ThirdPersonCharacter, criando uma referência de objeto. Tudo bem, vamos tentar
outro exemplo aqui. Desta vez, não usar
um personagem de jogador, um
personagem em terceira ou primeira pessoa. Vou ficar abaixo meu botão aqui para
obter algum conteúdo. Vou adicionar uma esfera. Vamos em frente e adicionar
uma esfera ao nosso nível. Vou levantar
para o ar. E então eu vou definir
alguns parâmetros, um na minha esfera aqui e
depois um nesta malha de chão. Primeiro de tudo, vou
renomear minha esfera aqui simplesmente clicando
nela e pressionando F2. E vou chamar
isso de minha bola física. Isso ajudará a
compensá-lo um pouco. Este é um ator de malha estática. E, em seguida,
no painel Detalhes, quero marcar uma caixa
chamada simular física. E sob esta seção de física aqui está, simular física. Agora o que isso vai fazer
assim que eu jogar o jogo, esta bola vai
cair no chão. Vamos em frente e
clique em jogar aqui. E você pode ver, gritos, eu quero ir, na verdade, eu não preciso
jogar o jogo. Vou
definir isso brevemente para simular. E no momento que eu fizer, você vai
ver que a protuberância caiu até o chão. Então a simulação está
executando o jogo, não jogando o jogo, mas lá você viu os resultados. O que acontece quando você
executa o jogo sem jogar? Esse era o modo de simulação. Agora está preso no
modo de simulação agora vou voltar para a nova janela do editor. Perto de você viu aquela bola
caindo mais uma vez, Shift e F1
me dará o cursor do mouse de volta. Deixe-me sair de lá. Ok, então temos nossa bola definida para simular física
que é importante. Em seguida, vá em frente e selecione
sua malha de chão aqui. E o que eu quero fazer
aqui é que eu quero procurar algo chamado simular gera eventos de sucesso. E se eu estiver sob minha seção de
colisão aqui,
aqui está uma caixa de seleção
que estou procurando simulação, gera, eventos de
sucesso. Esta será
uma bola simulada, o que significa que ela vai
ter física nela. Simulação gerar eventos de sucesso para este andar significa que ele gerará um evento de sucesso
para um objeto simulado, também conhecido como esta bola física. Portanto, é importante
ter essa caixa marcada para o que
vamos fazer. Em seguida, vamos
acessar nosso Plano de Nível. No entanto, quero ter
certeza de que
temos nosso andar selecionado
aqui primeiro. Portanto, certifique-se de ter
seu piso selecionado e em seu plano de nível. Vamos passar para a
direita aqui, vou direito do mouse e
algum espaço vazio. Vamos adicionar um evento
para colisão no chão e vamos fazer isso
em eventos de sucesso de ator. Então, fora disso,
vamos verificar para ver o que era o outro
ator. Eles me bateram. Então, se arrancarmos disso, podemos lançar também. Vamos lançar para um ator de malha
estática. Por que estamos lançando para
um ator de malha estática? Bem, estamos lançando para
um ator de malha estática porque nossa bola de física aqui, se eu selecionar isso, o tipo de atores que este é,
é um ator de malha estática. Ok, vamos voltar para o
nosso Plano de Nível aqui. E mais uma vez,
vamos promover isso para uma variável
clicando com o botão direito do mouse nesse
pino, promove uma variável. E eu vou renomear esta é bola
física assim. O tipo é um ator de malha estática. E vamos apenas imprimir alguns
textos depois disso também. Vou me arrastar para fora disso. Podemos imprimir textos de string
ou imprimir. Vou apenas usar
textos impressos no campo de texto. Vou mudar isso
para bater no chão. Vou clicar com o botão direito do mouse
sobre isso e também deixar um comentário de nó e
chamar isso de promovido. Tudo bem, vamos fazer
algo aqui com uma chave também.
Vou clicar com o botão direito do mouse. Vamos trazer duas chaves para chave. Whoops, isso foi F2. Quero dizer, nós realmente poderíamos
fazer isso com qualquer coisa. Vou apenas fazer as duas chaves
porque isso é óbvio. E depois disso, queremos obter uma referência
à nossa bola de física aqui. Então, vamos arrastar e soltar
isso no gráfico. Vamos obtê-lo.
E então, fora deste tipo
menos simplesmente
no material definido. Queremos definir um material
nos componentes de malha estática, assim. E diremos
que assim que pressionarmos o tubo e mudarmos nosso material para, vou digitar ouro. Você pode mudar isso
para o que quiser. Então, mais uma vez,
vou me certificar de que minha opção de depuração aqui está
definida para o mapa de teste de nível. Vá em frente e
clique no jogo aqui. Você resolve esse fogo
logo acima como eu
tenho a janela agarrada aqui, você pode ver que eu o agarrei
perfeitamente para que você possa ver esse pulso fluindo pelo chão atingido
do ator. Estamos lançando para nosso ator
estático Mitch. Estamos capturando nossa bola
física lá, qualquer variável que estamos
criando uma referência a ela e estamos
imprimindo na tela, batemos no chão. E está imprimindo
várias vezes lá. Quando eu pressionar a tecla duas, isso deve virar ouro maciço. E lá vai você. Você tem uma bola física
que se tornou ouro maciço. Você pode ver que ele está registrando
esses eventos de sucesso
novamente, novamente enquanto eu o rolo
pelo chão. Por causa, claro,
por que não? Tudo bem, então você tem isso. Você tem algumas
instâncias lá de nós lançando para criar uma referência de
objeto. Muito mais coisas que
poderíamos ter lançado em figura. Você poderia encontrar algum
uso deles. Isso vai fazer tudo
por esse pessoal, nós vamos vê-lo no próximo.
23. Referências de Widget: Bem-vindo de volta a todos. Estamos começando esta
lição aqui
na Internet exibindo
alguns exemplos de, neste caso, na
tela de inventário de uma Legend of Zelda, amplitude da natureza. E também quero
mostrar este exemplo
do HUD de
Legend of Zelda no jogo, amplitude da natureza. Então, em irreal, se você
quiser criar algo como medidores de
saúde, mini-mapas
ou mensagens no jogo, ou na tela de inventário, qualquer um desses tipos de coisas, você precisa criar um esquema de
widget. Portanto, nosso objetivo neste
vídeo é
aprender a criar uma referência
a um plano de widget. Portanto, não vamos
nos aperfeiçoar sobre como criar blueprints de
widgets. Embora estejamos fazendo isso, esse é um outro
curso para si mesmo. Mas depois de criar um ativo do
Widget Blueprint, como você cria
uma referência a ele? Nós vamos
fazer neste vídeo é criar um desses ativos. Vamos apenas colocar
um medidor de saúde simples. Não vai ser funcional.
Nós só vamos aturar o Simples
me ajudou a ganhar o capuz dela. Agora vamos
criar uma referência a ele para que possamos
ativá-lo e desativá-lo de
bactérias no Unreal, vamos
começar criando uma nova pasta dentro
de nossa pasta de scripts, Vou clicar com o botão direito do
mouse em Nova pasta. Vou chamar isso de Widgets. Então, dentro daqui, vou clicar com o botão direito do
mouse na direita. Vamos
entrar na interface do usuário. E queremos criar um ativo de Blueprint de widget
na caixa pop-up exibida, ele nos pedirá para
escolher um widget de rota. Tudo o que queremos fazer é selecionar
este mais comum, o widget do usuário. Novamente, esta não será
uma lição sobre como
criar todos os aspectos de
um Plano de Widget. Vou simplesmente nomear esse HUD sublinhado do
WPP. E, em seguida, vamos
clicar duas vezes sobre isso para abrir este ativo de
blueprint de widget. Resumindo, o que você pode fazer aqui é arrastar e soltar elementos
diferentes, esses widgets diferentes
deste painel de paleta
aqui mesmo nesta janela de exibição para
colocar uma tela de tipos, um capuz, uma tela de menu, uma notificação de texto,
todo esse tipo de coisa. Vamos criar
um HUD muito básico, tendo uma barra de saúde. E vamos
começar adicionando um widget de painel de tela. Então, sob o painel paladar, vou fazer uma busca
por um painel de tela. O painel Canvas é essencialmente
uma placa de aderência será o widget no qual podemos
colocar outros widgets. Então, vou arrastar e
soltar isso aqui. Boom, vemos esse
contorno verde na hierarquia. Ele mostra uma listagem de
todos os widgets
que você adicionou ao seu Plano de
Widget aqui. Então, atualmente, temos este painel de
tela e
nos dando um quadro tecnológico gigante, se você quiser, para
manter as coisas. Ótimo. Em seguida, vamos adicionar componentes de caixa
horizontal. Horizontal Box é simplesmente uma caixa vazia que pode
conter outros widgets. Vou arrastar e soltar isso no canto superior esquerdo aqui
porque quero que meu HUD tenha um metro de tipos
no canto superior esquerdo da minha tela. Agora, atualmente é esse
tamanho, esse tamanho predeterminado. No entanto, vou ajustar
isso em apenas um segundo aqui, mas apenas por uma questão de
estender isso, vou mudar meu tamanho x aqui com este selecionado
para ser algo sobre, eu não sei, 400, vamos 500, provavelmente um pouco longo,
algo assim. Novamente, esta é apenas uma caixa vazia que pode abrigar outros widgets. Em seguida, vou encontrar um widget de texto aqui na
seção comum. E eu poderia arrastar e
soltar isso em cima da minha caixa horizontal para ter isso contido dentro dela dessa maneira. Ou posso simplesmente arrastá-lo
e soltá-lo
aqui dentro da minha caixa
horizontal assim, você pode ver esse
pequeno recuo aqui mostrando esse relacionamento. Então, atualmente, esse
widget de texto está
contido em nossa caixa horizontal. Vou mudar o texto aqui. Então, com isso selecionado
no painel Detalhes, vou alterar
esse texto que diz textblock para simplesmente saúde. Vou dar alguns espaços lá porque vou adicionar um medidor de saúde, se você quiser,
à direita disso. Então, apertando Enter, Boom mudará
isso para Saúde. Em seguida, quero que um medidor vá
direto para a direita aqui. Você pode adicionar isso adicionando
um widget de barra de progresso. Então, vou arrastar e soltar
novamente isso dentro da minha caixa horizontal. Agora, no momento em que eu fizer
isso, ela aparecerá como
esta pequena laje acinzentada, se você quiser, que não
parece nada como um metro. Portanto, a maneira como podemos alterar
isso é com este selecionado, este widget da barra de progresso selecionado
no painel Detalhes, podemos alterar o
tamanho para ser um preenchimento. Boom, lá vai você. Agora, para realmente preencher isso, temos essa cor de preenchimento e opacidade que
atualmente está definida como azul. Você pode clicar sobre isso
para alterar a cor. Vou ficar verde, algum tom de verde.
Claro, isso é bom. Mas esse percentual
aqui
determinará como o Preencher
isso está atualmente. Está 0% preenchido. Então, vou clicar com o botão esquerdo
e arrastar e você pode ver como isso
pode ir entre 01. Então, essencialmente, isso vai
de uma escala de 0 a 1, 0 a 100%. E você pode escolher
o tipo de preenchimento da barra, esquerda para a direita, para cima e
para baixo, da direita para a esquerda. Por mais que você queira fazer isso, vou deixar
o padrão lá. Isso vai funcionar muito
bem para mim. Então, o que isso criou,
vou simplesmente compilar isso.
Vamos salvá-lo. Incrível. Nós temos esse
Blueprint de Widget criado. A próxima coisa que vamos
fazer aqui é criar algum script que criará
esse widget. E então vamos
criar uma referência a ele. Vamos
adicioná-lo à nossa janela de exibição, o que significa que ela
aparecerá dentro do nosso jogo. E então vamos adicionar
um pouco de script para que, assim que tivermos essa
referência ao nosso HUD, possamos ativar e desativar a visibilidade
desse HUD. Vou usar o ThirdPersonCharacter
Blueprint para isso. Agora, se você estiver criando
algo como HUD, normalmente você não usaria o blueprint de caracteres
para mostrar ou ocultar o HUD. Mas como esse é um blueprint que
usamos até este ponto, vou usá-lo apenas
para fins de mostrar como criar uma referência
a um Blueprint de Widget. Então abra seu Blueprint
ThirdPersonCharacter. Se você esqueceu onde isso está
dentro do seu navegador de conteúdo, você pode encontrá-lo aqui sob projetos de
terceira pessoa. Dentro daqui, pule para o Event Graph. E queremos fazer algo
fora do evento começar a jogar. Então, vou clicar com o botão direito do
mouse em Digitar, começar a jogar, até começar a planejar. Boom. E muitas vezes isso,
vamos arrastar um fio e digitar o widget de criação. Isso vai
dizer que não construiu nenhum porque não
temos nenhum widget definido
aqui para criar. No entanto, se você
selecionar essa classe, pequena lista suspensa lá, podemos encontrar nosso Plano de Widget
que acabamos de criar. Agora, uma vez que selecionamos
isso, definimos isso. Vai dizer, ok, esse é o Blueprint do Widget
que você deseja criar. Ótimo. Mas ainda não salvamos
isso em uma referência. Então, vamos clicar com o botão direito do mouse
neste valor de retorno aqui. Para promover isso para uma variável. Fazemos isso. Ele criará
essa variável na minha seção de blueprints. Vai ser
do tipo WB P HUD. E vou nomear
isso apropriadamente. Nós BP HUD. Como já fiz antes,
vou clicar com o botão direito do mouse sobre isso. E na área de comentários do nó, vou deixar
isso como promovido. Foi assim que criamos essa
referência ao nosso widget HUD. E então o que vamos
fazer é arrastar
daqui e digitar
Adicionar ao Viewport. Então, essencialmente, o que
estamos fazendo aqui é ao começar a jogar, uma vez que nosso personagem é
gerado no jogo este evento começa a jogar. Vamos criar
este Blueprint de Widget. Vamos criar
uma referência a este Blueprint de Widget
dentro dessa variável. Então, ele vai
capturá-lo dentro daqui. Em seguida, vamos
adicioná-lo à viewport, o que
significa que ele deve
aparecer em nosso jogo. Vamos prosseguir e
compilar isso para garantir que nosso script esteja
tudo bom e está. E então vou
jogar apenas para verificar se
vemos esse HUD no jogo. E lá vai você. No
canto superior esquerdo da tela, você pode ver que temos nossa Barra de Saúde que não funciona. Tudo bem, agora como
temos uma referência a isso, vamos criar um pequeno roteiro
para mostrar ou ocultar isso. Dentro daqui. Vou clicar com o botão direito do mouse
e algum espaço vazio. Vou trazer, vamos fazer as cinco chaves em nada. E vamos trazer uma referência
ao nosso Plano de Widget, arrastar e soltar isso. Vamos
tirá-lo disso. Vou arrastar e
procurarei por uma função chamada visibilidade de
conjunto. E vou
pressionar Control C e
Control V para criar uma duplicata, uma cópia disso e,
em seguida, uma pasta dela. Este será o nosso alvo. Quando pressionamos isso, queremos que isso fique escondido. Então defina a visibilidade
aqui para ser oculta. E então, quando o
liberarmos, vamos dizer a esse widget
para ficar visível mais uma vez. Agora, como eu sabia que essa função
estava disponível para mim? Bem, muitas vezes, de volta aqui
em nosso Widget Blueprint, se você olhar os vários widgets que
você adicionou à sua hierarquia, você pode ver todas as
suas propriedades
no lado direito painel
aqui, o painel Detalhes. E um deles para
esse widget específico é a capacidade de
mostrar ou ocultá-lo. Como você pode ver agora,
eu tenho essa barra de progresso, visível ou não visível. Essa coisa toda pode
ser mostrada ou não mostrada. A visibilidade disso pode
ser visível ou não visível. Por aqui, estou dizendo, Ei WPP, quando estou pressionando a tecla cinco,
quero esconder você. Quando eu o liberar, quero que ele seja exibido mais uma vez e
podemos fazer isso porque capturamos uma referência à nossa compilação do Widget Blueprint. Isso verificará para garantir
que seu script fique bom. Vamos dizer isso. Vou ir em frente e jogar. Lá. Você pode vê-lo. Vou pressionar a tecla
cinco e segurá-la. Agora está oculto. E quando eu o libero, ele aparece mais uma vez. Então, os caras têm isso. Este não foi um vídeo sobre como criar um
Blueprint de Widget
que, novamente, isso é um outro curso. Mas como criar uma referência a notas do blueprint de widget. Você pode criar referências
a blueprints de widgets a partir de blueprints de
classe ou de um blueprint de nível
ou subnível. As referências a
blueprints de widgets são normalmente criadas em tempo de execução, talvez fora de um
jogo ou talvez fora de um volume de gatilho
quando você se sobrepõe coisas como uma arma para
algum tipo de retirada notificação ou notificação de
coleta AML, esse tipo de coisa. Isso fará tudo por
esse vídeo, pessoal. Veremos você no próximo.
24. Referências de tags: Bem-vindo de volta a todos.
Neste vídeo vamos aprender como as
tags adicionadas aos atores podem
ser usadas para encontrar objetos, criar referências a objetos
e, em seguida, afetar esses objetos
referenciados. Então, uma tag, do que estamos
falando aqui? Bem, uma tag é essencialmente
um rótulo ou uma palavra-chave que atribuímos a um
associado a um determinado ator. E então, se um ator
tiver uma determinada tag, podemos afetá-la de
tal forma que podemos criar uma
referência a esse objeto. Podemos chamar uma função nela, fazer todos os tipos de coisas legais. Então, vamos
demonstrar isso aqui. Antes de fazermos, se você quiser
jogar em casa, eu tenho três
atores diferentes em meu nível. A luz de teto blueprints
está localizada neste local. Se você tem o conteúdo
inicial, eu tenho um desses aqui. Este emissor de incêndio está
neste local na pasta de conteúdo
inicial. E então esse cilindro eu só
peguei daqui de cima. Boom, um cilindro se você
quiser jogar em casa. Tudo bem, então vamos
adicionar uma tag comum que é um tipo de palavra-chave para todos esses
três atores. E vou
encontrar essa etiqueta
no painel Detalhes
com meu cilindro selecionado pesquisando por tag. E vou colocá-lo
em tags componentes ou tags de ator. Queremos adicionar uma tag de ator, uma associada a todo
esse ator. Novamente, diferentes atores podem ter diferentes componentes
configurados com eles. Só queremos
ter um associado com o ator em geral. Então, em tags avançadas do ator, clique neste pequeno
botão de mais e vamos nomear a tag e eu vou chamar minha coisa. E só para garantir que eu não tenha nenhum erro ortográfico aqui,
vou destacá-lo, pressionar o controle C para copiá-lo, porque vou adicionar exatamente
essa mesma tag também. Meu emissor de incêndio aqui. Então eu tenho essa
etiqueta colocada
aqui para encontrar minha tag de ator. Vamos adicionar isso. Vamos adicionar isso aqui. E também para a minha luz de teto de
blueprint, estamos filtrando pela palavra tag. Vamos adicionar isso à
nossa tag avançada de ator. E vamos colocar esse
nome aqui também. Ótimo, em seguida, enquanto
estamos aqui, por que não incluímos isso em
nosso BPS aqui também, nosso exemplo Construction Script, bem
como nossos pickups. Então, vou navegar
até onde eles estão
nas minhas pastas aqui. Exemplo de coleta de Bp. Vamos entrar aqui. Se você quiser adicionar uma
tag a este blueprint, você quer seguir os padrões da
sua classe faça uma pesquisa por uma tag. Aí está, tags de ator. Vamos adicionar coisas
aqui também. Vá em frente e compile, salve isso. Podemos fechar isso e depois nos livrarmos disso
do último vídeo. Vamos também obter nossa parede
de script de construção aqui em
padrões de baixa classe, certifique-se de ter
a tag selecionada. Vamos adicionar uma etiqueta para esse cara. E lá vamos nós. Então, só queria mostrar
onde você adicionaria isso dentro de um
projeto em si. É importante notar que aqui estou adicionando-o
ao blueprint em si. Para esse projeto de
teto específico, estou adicionando-o apenas a essa instância do
objeto dentro do nível. Na verdade, não
adicionei isso dentro
do plano do teto aqui dentro do meu teto
Blueprint Class padrão. Se eu pesquisar por tag, não
vou vê-la aqui porque não a adicionei
ao blueprint em si. Apenas essa instância específica do blueprint no meu nível. Então, vamos começar criando
uma referência a todos esses atores marcados
que vou fazer isso dentro
do Plano de Nível. Então, vindo aqui,
abra Blueprints de nível, temos um monte de scripts para
os quais eu
desabilitei todos os eventos. Provavelmente vou limpar
isso entre vídeos e me livrar de algumas
dessas coisas antigas aqui. Vamos ficar sob algum
espaço vazio em nosso gráfico de eventos. E vou
clicar com o botão direito do mouse para fazer uma pesquisa pela tecla T, entradas T, entradas. Vamos passar por baixo de um teclado. Eventos de teclado. Realmente, qualquer
evento de teclado serve. Eu só quero ir com T
porque T significa tag. Há um tiki. E muitas vezes isso vamos
arrastar um quadrado e vamos
trazer em um get
todos os atores com tag node. Então, sem surpresa,
essa função
fará exatamente o que
diz que fará. Ele receberá todos os atores
com uma determinada etiqueta. Aqui está o nome da
tag que queremos encontrar. Qualquer coisa com o pensamento de tag e com esse pino de atores, ele tem esse tipo de ícone de
tipo waffle que nos
dará uma variedade de atores
que têm essa tag. Isso significa uma lista de
atores que têm essa tag. Vamos clicar com o botão direito do mouse sobre isso,
Promover para variável. E vamos simplesmente chamar
isso de nossa matriz de coisas. Você pode ver que ele criou
essa variável aqui. Então, quando pressiono a tecla T. Vamos armazenar
todas as referências a atores que têm essa coisa que
você marca dentro dessa matriz. E essa matriz será uma lista de todos os atores que
têm essa tag. Tudo bem, isso acontecerá
quando pressionarmos a tecla T. Vamos fazer algo com todos
esses atores então. Agora que temos uma referência
a todos esses atores, o que queremos fazer com isso? Bem, vou clicar com o botão direito do mouse
e algum espaço vazio. Mais uma vez,
vou trazer o
evento de teclado para cima para cima. E eu pensei
que isso era apropriado porque vamos
subir esses atores
na coordenada z. Vou arrastar minha matriz de coisas,
vamos conseguir isso. E depois disso, vou
arrastar um fio e trazer um para cada loop. Mais uma vez, vamos falar sobre isso para cada loop, esses nós de controle de fluxo
mais tarde no curso. O que todos vocês precisam
saber por enquanto é que para cada item desta lista, cada item nesta matriz, vamos fazer
algo com ele. E o que queremos fazer é para cada item aqui, cada elemento, queremos adicionar compensações
locais de ator. E terminamos,
vamos movê-lo em uma determinada direção
em um deslocamento para ele. E vamos mudar
a localização delta. Ou seja, quanto
queremos alterá-lo de sua localização inicial versus onde é a próxima vez que
pressionarmos a tecla para cima, até 50 unidades irreais
na direção z. Então, a Tiki receberá uma referência a todos os
atores com essa tag. A chave para cima
examinará todos os itens dentro dessa matriz, todos os itens nesta
lista armazenados aqui. E para cada item aqui, vamos adicionar um deslocamento aqui que é movê-lo para
cima no local z. Agora, vou
compilar esse script. Tudo vai
ficar bem. No entanto, eu sei,
deixe-me salvar isso também. Quando eu jogar isso, por
engano, ocorrerá. Vou deixar isso acontecer,
mas vamos seguir em frente
e dar uma jogada a isso. Tudo bem, então eu adicionei
essa tag nisso. São cilindros, as chamas,
as luzes do teto que se cruzam e a parede no fundo. Deixe-me mudar na F1. Então eu posso minimizar isso. Eu quero que você veja esse roteiro
disparando aqui também. Então, vou encolher
isso um pouco. E vou
pressionar a tecla T. Então eu tenho uma referência
agora a todos aqueles atores com
aquela coisa que você marca. Agora vou
pressionar a tecla para cima,
essa é a tecla de seta para cima. E bem, algumas coisas sobem. Mas esse cilindro não. E essa é a era que
estava falando. Deixe-me ir em frente e escapar. E o ar demonstrará o que
está acontecendo aqui. Vai mencionar que este
componente de malha estática tem que ser configurado para móvel se
quisermos poder movê-lo. Portanto, as malhas estáticas não
se moverão apenas sem que mudemos uma de
suas configurações para móvel. Isso é facilmente
corrigido
voltando ao nosso nível de testes aqui,
selecionando nosso cilindro. Bem aqui. Está falando sobre a
configuração de mobilidade do cilindro, mudando isso para móvel. Então, mais uma vez, se
fôssemos em frente e tocar isso, deixe-me encolher esse roteiro
aqui um pouco. Então, aqui em cima,
pressionando a tecla t, temos uma série de todos os atores com
uma etiqueta de pensamento. E agora, quando eu pressionar
a tecla de seta para cima, todos eles se moverão
para cima 50 unidades irreais. Vamos adicionar
50 como um deslocamento toda vez que pressionarmos a tecla para cima. Então, vamos pensar em
todos os casos
de uso possíveis de criar referências
dessa maneira usando uma tag. Bem, talvez você esteja gerando alguns inimigos diferentes e seu nível com o passar
do tempo durante uma partida, digamos a cada 20 segundos. E então você nunca pode ter certeza quantos inimigos existem
de cada vez no seu mapa. Agora diga que você quer destruir todos os inimigos em talvez alguns objetos
ambientais. Sempre que o jogador coletar super-duper, destrua todos os itens. Poderíamos fazer
com que todos os atores tivessem uma determinada tag, digamos ao sobrepor
esse super-duper, destruir todos os itens e depois
destruir, ajustar esses itens. Portanto, todos os tipos de casos de uso bons e
úteis para isso. Mais uma nota paralela que eu queria dar aqui antes de
terminar este vídeo, podemos fazer uma verificação para ver se um ator individual tem uma
tag. Como faríamos isso? Bem, eu tenho meu cilindro
selecionado aqui no meu nível, volta ao meu plano de nível, vou clicar com o botão direito do mouse. Vou criar uma
referência a esse cilindro. E fora de qualquer referência aqui, posso simplesmente fazer uma busca
por função de tag do ator. Então eu poderia conectar isso em um nó de ramificação para que eu pudesse
fazer uma pesquisa aqui para ver, ei, esse cilindro
tem a etiqueta da coisa? E se for verdade,
podemos fazer uma coisa. Se for falso,
poderíamos fazer outro. Só queria apontar
isso aqui também. Tudo bem pessoal, é
assim que você pode criar referências usando tags. Isso serve para oferecer este. Vejo você no próximo.
25. Iniciar o evento: Bem-vindos de volta a todos. Nesta seção do curso, vamos explorar os
eventos com mais detalhes. Vamos explorar alguns dos eventos mais usados no Unreal,
começando com
Event, Begin Play. Agora, nosso objetivo especificamente
neste vídeo é
entender o que é
o evento start at play, onde você pode encontrá-lo e como
podemos usá-lo no irreal. Agora, entrando em
nosso mapa de teste de nível, nosso Plano de Nível aqui. Você pode encontrar isso acessando
aqui, abra o Level Blueprint. Você pode ver que eu configurei um roteiro antes de
gravar este vídeo. Eu vou executar tudo isso
fora do Event. Comece a jogar. Agora parece um
pouco intimidador, mas vou mostrar
as diferentes coisas que estou
fazendo e por que estou fazendo isso. Agora. Em primeiro lugar, como
você consegue um evento? Comece a jogar aqui? Bem, alguns métodos. Você pode clicar com o botão direito do mouse
e digitar começar a jogar como célula, É assim
que você pode encontrá-lo. Como alternativa, eu gosto de
usar o atalho de teclas de atalho, que é simplesmente manter pressionada
a tecla P e clicar com o botão esquerdo. Agora, uma coisa divertida de se notar aqui antes mesmo de conectarmos
isso, é que você
só pode ter um evento começando a
jogar por planta. E não importa
quantos gráficos você tenha. Se você se lembra anteriormente
neste curso, criei um segundo gráfico
chamado tipos de nó. Agora, se eu pular
para o meu gráfico de tipos de nós, estou atualmente no meu Gráfico de
Eventos, Gráfico. E eu mantenho pressionada a
tecla P e clico com o botão esquerdo. Não consigo encontrar. Como alternativa, se eu digitar em uma barra de pesquisa
clicando com o botão direito do mouse e digitando, Iniciar jogo e clico nela, indo para a
guia Gráfico de eventos. Então, isso é uma coisa a se notar. Você só pode fazer com que um evento
comece a jogar por blueprint. Então isso levanta
a questão, bem, se eu quiser fazer várias
coisas fora do evento? Começar a jogar? Eu só preciso de uma longa sequência de roteiro para fazer
várias coisas acontecerem? Bem, não, você não. É aí que esse
nó de sequência é útil. Falaremos mais sobre o nó de sequência posteriormente
no curso. Mas saiba que o
nó de sequência é algo que você pode usar para
dividir essencialmente seu sinal. Então, ao conectar o evento, comece a
jogar em um nó de sequência. Você pode adicionar mais pinos de saída e fazer uma coisa acontecer, depois outra, depois outra e outra, tudo em ordem
sequencial. Então, vamos explorar o que
vou fazer aqui. Fora do evento B em jogo dentro
do meu Level Blueprint. Bem, a primeira coisa que vou
fazer é tocar um evento sonoro. Começar a jogar é um ótimo
evento para usar se você quiser que algumas músicas simplesmente
comecem no início
do seu nível. A segunda coisa que
vou fazer
aqui é colocar meu
personagem de jogador no
meu ThirdPersonCharacter e, em seguida, armazenar meu personagem de
terceira pessoa dentro dessa variável para
que possamos faça uso disso. Então, transmita para nosso
ThirdPersonCharacter e, em seguida ,
encapsule-o dentro
dessa variável. Logo abaixo é onde realmente
usaremos essa variável que
acabamos de armazenar aqui. Vamos obter nossa
referência de personagem que armazenamos aqui. Vamos obter a
localização dos nossos atores e depois vamos
definir isso dentro
dessa variável vetorial. Então, algo que geralmente é
feito fora do evento começar a jogar também é algo chamado variáveis de
inicialização, ou seja, dar a ele
um valor inicial. Agora, no início deste curso, e apenas falando sobre os diferentes tipos de nós de
variáveis, eu crio
uma variável de uma variável vetorial que
tinha valores padrão de 000 e eles seriam 000 se eu não
lhes desse algum outro valor. Nesse caso, estou
inicializando. Isso está dando a ele algum valor
inicial baseado na localização
dos meus personagens. Então, ele vai alimentar a localização de nossos
personagens nisso e armazená-lo dentro
dessa variável vetorial. inicialização de variáveis
é algo que geralmente
é feito
no início do jogo. E também vou
imprimir os resultados disso na
tela para que possamos
ver a localização de
nossa referência de personagem
quando isso estiver definido. Então, três coisas
que estamos fazendo aqui, fora do evento começam a jogar. Vamos tocar um pouco de música. Vamos criar uma
referência ao nosso personagem. E então vamos usar nossa referência de personagem para ajudar a inicializar essa variável vetorial. Aqui vamos nós. Assim, você pode ver alguma
inicialização de nossa variável vetorial
aqui como sendo
impressa na tela. Você pode ouvir a música. E, claro, esse personagem
faz referência a isso como sendo dito. Isso não
é algo muito visual, mas isso está sendo feito fora
do evento começar a jogar. A seguir, vamos falar sobre
onde você pode e
não pode encontrar o Event Begin Play. Como você pode ver, está aqui
no meu Level Blueprint. E o meu plano de
subnível não está disponível lá
também? Sim, é. E vou clicar
aqui para abrir o plano de nível de subnível. E eu criei alguns
scripts antes deste vídeo em que
vou atrasar por três segundos e depois tocar um som de explosão
e vou
depurar para que possamos ver
isso disparando. Mas você notará que, uma vez que eu jogo, aguarde três segundos e
nada parece acontecer. A razão para isso
é porque eu não estou carregando esse blueprint
no nível da sub-rede. E o que quero dizer com isso. Se eu voltar para a guia de níveis, preciso clicar com o botão direito do mouse
no subnível, alterar o método de streaming de blueprints para sempre carregado. E agora, se eu
voltar para o meu subnível, posso clicar em Jogar. Você vê esse evento
disparando a contagem regressiva do atraso, e isso fará com que o
Event Begin seja
reproduzido, jogue as coisas que
vierem depois dele. Portanto, ele está disponível em um plano baixo, bem
como em um plano de subnível. Além disso, o evento begin
play pode ser encontrado em projetos de classe de
ator,
como nosso exemplo de coleta aqui. Novamente, adicionei isso antes de
gravar este vídeo. Você também pode encontrá-lo em projetos de
personagens em terceira pessoa. Você pode ver que estamos usando
aqui para criar nosso HUD e
mostrá-lo na tela. No entanto, você não encontrará
isso em nossos projetos de widgets. Aqui está nosso medidor de saúde,
o Widget Blueprint. E se eu for
até a guia do gráfico, mouse e algum espaço
vazio e digitar e começar a jogar. Você não vai encontrar. Event Construct é essencialmente o evento que começa a
jogar se você quiser, dentro de um Widget Blueprint, você também não o encontrará dentro de um blueprint de
instância de jogo, mas praticamente todo
outra classe Blueprint você pode encontrar Event Begin Play. E por último, mais uma coisa muito
importante a ser mencionada sobre o Event Begin reproduzido
antes de encerrarmos este vídeo. Embora seja verdade que
esse evento dispara quando começamos a jogar, o que fazemos para os
diferentes atores que aparecem em alguns outros
pontos durante o jogo? Quando o Evento Começa a
Jogar para eles? Bem, o evento começou o jogo
começa para esses projetos. No momento em que essas coisas são divertidas. E só para mostrar isso, vou rolar para baixo aqui um pouco no meu mapa de teste de nível, e eu configurei um
pouco mais de
roteiro fora do evento começar a jogar, onde eu vou
gerar uma planta, luz de
teto que foi encontrada conteúdo da estrela
MI
após três segundos. Agora, deixe-me trazer isso
para baixo um pouco aqui. Então você pode ver que é
um pouco melhor. Depois de três segundos
em nosso projeto baixo, vamos gerar essa luz de teto de
planta em uma determinada transformação que não precisa
alimentar este transformador. Isso vai falhar. Deixe-me entrar aqui
e vou adicionar todas as classes em que
cliquei aqui. Todas as aulas encontrarão uma nota. Vamos encontrar um ator de notas apenas para nos dar um lugar
no espaço para referência. Eu vou levantar, levantar
no ar assim. Com isso selecionado, vou
voltar para o meu Level Blueprint,
manter pressionada a tecla R, clicar com o botão esquerdo, Aí está o
meu ator de notas. Vou fazer com que
os atores se transformem. Vamos gerar
essa luz de teto. Agora, o que eu fiz antes
deste vídeo em meu projeto, luz de
teto, e mais uma vez, isso pode ser encontrado em meus projetos de conteúdo
estrela. Essa luz de teto aqui é que eu criei esse script
onde estou começando a jogar. Vamos atrasar
mais três segundos. Vou definir o raio de atenuação das minhas
luzes pontuais. Isso é essencialmente o quão longe
uma área ou
luz puntiforme pode afetar. Também vamos
definir sua cor clara
para essa cor rosada. Este evento de início
de jogo vai disparar no momento em que
entrar em nosso nível. E novamente, estou
entrando em nosso nível aqui no meu mapa de teste de nível fora
do evento começar a jogar. Então, vamos depurar essa
configuração naquele lago. Então, tentamos enquadrar
isso assim. Ok, compilar isso,
certifique-se de que nosso roteiro está bom. E aqui nós vamos
para a direita ali. Depois de três segundos. Essa luz realmente se acende. Então, mais uma vez, aqui nas minhas
plantas, luz de teto, esse evento começou a
ser jogado assim que esse ator
apareceu no nível. Portanto, para revisar o evento começar a jogar, é ótimo para executar o
script no início do jogo. Nesse caso, tocar música
é ótimo para criar referências de
objetos. Nesse caso, criar nossa
referência ThirdPersonCharacter é ótimo para inicializar
variáveis. Nesse caso, estou usando para inicializar nossa
variável vetorial aqui. Também é bom para gerar
atores após um determinado
período de tempo. Muitas coisas que você pode fazer
fora do evento. Comece a jogar. Bem pessoal, isso
vai fazer isso com frequência. Neste vídeo, veremos
você no próximo.
26. Martelo de eventos: Bem-vindos de volta a todos. Neste vídeo, nosso objetivo é
entender o que é o tick do evento, onde podemos encontrá-lo
e como ele pode ser usado. Agora, como esse é um evento
que dispara todos os quadros, você deve usar esse evento com cuidado ou corre o risco destruir
totalmente o desempenho do seu
jogo. Ou seja, sua taxa de quadros pode
sofrer muito, muito. Portanto, use esse evento com cuidado. Portanto, os eventos podem ser encontrados
em praticamente qualquer projeto dentro do Unreal que
inclua Planos de Nível, projetos subnível e a
maioria dos projetos de classe. Uma exceção a isso, mas eu sei com certeza é o plano da instância do
jogo. Falaremos mais sobre esse importante
tipo de projeto posteriormente no curso. Vou clicar com o botão direito do mouse
em algum espaço vazio aqui. Vou criar
uma nova
Classe Blueprint do tipo ator. Eu poderia escolher qualquer um desses.
Eu vou escolher ator. Vou deixá-lo
como o nome padrão e simplesmente
clicar duas vezes nele para abri-lo. E você pode ver que, quando
passamos para o Gráfico de Eventos, esse tick de evento é um
dos eventos padrão que está
imediatamente disponível para você. Agora, se você fosse
excluir isso, deixe-me ir em frente e fazer isso. Eu poderia clicar com o botão direito do mouse
e digitar Tick, e eu posso adicioná-lo de volta lá. Agora você só pode ter
um desses parágrafos. Então, se eu fosse clicar com o botão direito do mouse
e digitar Tick novamente, simplesmente seria
como sim, aí está. Isso vai te
levar direto para isso. Agora vou excluir esse projeto aqui e
vou pular para meu Plano de Nível
para fazer
algumas coisas com os ticks de eventos. Então abra o Level Blueprint. Aí está a marca do meu evento. Também é importante notar
que você só pode ter um tick de evento por
blueprint, não por gráfico. Este é o meu Level Blueprint. No, no meu Level Blueprint, Eu tenho atualmente dois gráficos, meu Gráfico de Gráfico de Eventos e meu gráfico de tipos conhecidos
que eu criei. Eu estava criando meu
vídeo falando sobre os diferentes
tipos de nós no Unreal. Então, se eu estava no meu gráfico de eventos, clique com o botão direito do mouse e digite a
palavra tick e cliquei nela. Isso vai me levar para
a minha refeição gráfica de tipos de nó. Sim, aí está o seu evento. Aí está. Agora, o evento tick, como
dissemos anteriormente, ele dispara todos os quadros. Agora, é importante notar
que você pode mostrar sua taxa de quadros
nos editores de nível. Então, vamos fazer
isso agora, antes de
continuarmos falando
sobre eventos aqui, volte
para o seu editor de níveis. E aqui você tem esse ícone de hambúrguer de
três linhas, se preferir, vá em frente
e clique com o botão esquerdo nele. Bem aqui, mostre quadros por
segundo Control Shift e h, fazendo isso irá gerar
sua taxa de quadros para a tela que é de 120 quadros por segundo que estou executando
atualmente. Isso é 8,33 milissegundos. Tudo bem, então outra coisa
que vale a pena destacar aqui é que você pode definir uma taxa de quadros
fixa. Isso é um
pouco tangente aqui, mas vale a pena notar também. Se você entrar em suas
configurações, configurações do projeto e digitar taxas de quadros, eu gosto de preencher esses vídeos
com todos os tipos de conhecimento. Eu poderia usar uma taxa de quadros fixa. No momento, está definido para 30. Não há nenhum botão Salvar
aqui nem nada. E agora, se eu
voltasse para o meu editor de níveis, eles mostrariam que
atualmente estou rodando 30 quadros por
2,33, 33 milissegundos, desfazendo o que acabei de
fazer. Portanto, o tick do evento
dispara em todos os quadros. Vamos fazer algo com nossos eventos dentro do
nosso Level Blueprint. Então, deixe-me
movê-lo aqui em cima. E eu vou acrescentar, vamos adicionar um inimigo ao nosso nível. Não é um inimigo extravagante, é claro, mas aqui no meu navegador de conteúdo, vou entrar na
minha pasta de manequins, minha pasta de malhas. Você pode colocar qualquer coisa
no seu nível aqui. Vai representar um inimigo
simples, estúpido e
que não funciona. Vou arrastar e soltar esse Quinn simples no meu nível. E com isso
selecionado, eu vou
voltar para o meu plano de
nível. Vou manter pressionada
a tecla R com o botão esquerdo do mouse para criar uma referência ao nosso inimigo simples Quinn
lá, se você quiser. E fora da marca do evento, vou me arrastar para fora
disso e vou digitar é válido. Eu quero essa versão de ponto de
interrogação. Vou verificar se
meus objetos inseridos aqui, meu inimigo é válido. Ou seja, ele existe? E se não existir, significa que foi destruído. Vamos fazer uma vez. O que vamos fazer uma vez? Bem, vamos
tocar um som indicando que ele
sumiu, tchau. Vamos reproduzir um som 2D, e vamos reproduzir um
som de confirmação VR confirmado q. Agora, se
vamos fazer essa verificação para ver se é válido ou não. Precisamos ter alguns meios
de destruir esse ator. Precisamos destruí-lo para que ele verifique
se não é válido. Lembre-se, esse tick de evento
vai disparar a cada segundo. Então, vou clicar com o botão direito do mouse
e algum espaço vazio
aqui embaixo e faremos as quatro teclas. Fora das quatro teclas, vou puxar para baixo botão esquerdo para trazer outra referência
ao nosso simples Quinn. E eu vou me
arrastar para fora disso e digitar Destroy Actor. Certo? Então a ideia aqui é que cada quadro que
vamos verificar para ver se nosso símbolo inimigo Quinn
aqui é válido ou não. Se for válido,
significando que existe, não
faremos nada. Se não for válido,
significa que está destruído. Uma vez vamos
tocar esse som e é assim que vamos
destruir aquele ator. Portanto, essa avaliação não é válida. Tudo bem, vamos
em frente e jogar. E você pode ver que o tick do evento
está disparando em cada quadro, mas não está indo
além disso é válido porque está continuamente
verificando se é válido, sim, existe em nosso nível. No entanto, uma vez que eu
pressiono a tecla F4, aqui vamos nós. Foi destruído. E você pode ver como
uma vez tocamos esse som. Portanto, esse é um
exemplo perfeitamente legítimo de usar o evento tick. Agora, uma coisa que quero
destacar aqui é que você pode modificar a taxa de ticks. Agora, se o nosso jogo
estiver rodando a 120 quadros por segundo, tick do
evento vai
disparar 120 vezes por segundo. Agora, se eu clicar no botão de padrões da
minha classe aqui, posso modificar o intervalo de ticks. E, novamente, diz em segundos, a frequência em segundos na qual a função tick
será executada. Portanto, não precisa
disparar todos os quadros. Eu posso disparar isso a
cada dois segundos, cada três segundos, eu
vou a cada cinco segundos. Agora, isso vai ser um exemplo um
pouco extremo. Mas agora, assim que
eu destruir meu ator, ele não vai tocar
esse som imediatamente. Vamos em frente e
tentar isso. Vou clicar em Reproduzir. Vou pressionar a tecla F4
para destruir nosso ator aqui. E então, finalmente, ele tocou o som um pouco
atrasado depois disso. E
isso porque está apenas passando, está apenas disparando esse tick de
evento a cada cinco segundos. Então, essa é uma maneira de
você modificar o tick do seu evento. Agora, aqui está outro caso de
uso prático para o evento tick. Ter algo gira para enfrentar outra coisa ao longo de um jogo, como esta cadeira, porque obviamente você teria uma cadeira girando a face
do jogador o tempo todo. Agora imagine se fosse uma câmera de
segurança ou
uma torre que visse tiros no
jogador e você quisesse atrair o jogador. Você pode fazer isso a
cada quadro, ele está mudando sua rotação
de re-frame. Agora, se você quiser brincar
em casa e ver como eu fiz isso,
eu simplesmente coloquei uma cadeira de
malha estática no meu nível. Você pode descobrir que, quando eles estão
nesse diretório, alterei a mobilidade desta cadeira selecionada para uma
móvel no painel Detalhes. E então, no meu Level Blueprint, este é o meu roteiro para
ter reunido isso. Você obtém uma referência
à sua cadeira
selecionando sua cadeira , mantendo pressionada a
tecla Alt e clicando com o botão esquerdo do mouse. E o que estou essencialmente fazendo aqui é dizer que odeio compartilhar. Eu quero que você
olhe para este player e atualize a rotação
dele a cada quadro. Agora, nós nem falamos
sobre deltas segundos aqui. Então deixe-me, eu vou
colocar isso na tela em primeiro lugar, vamos arrastar para cá,
vamos imprimir string. Delta segundos é a quantidade
de tempo entre os quadros. Então, voltando para o meu editor de níveis
aqui, estamos
rodando a 120 quadros por segundo, o que é 8,33 milissegundos. Então, se eu jogar isso, ele deve mostrar que o
tempo entre os quadros é 0,0083 segundos porque estamos rodando a 120
quadros por segundo. 120 vezes esse número
será igual a um segundo inteiro. Então aí está. Você também pode notar
que no canto superior direito, ele não está mostrando meus quadros por segundo enquanto estou jogando, mesmo que esteja fazendo
isso no editor de níveis, a maneira como podemos obter nossos quadros
por segundo para aparecer em nossa janela de jogo aqui é simplesmente
tocar na tecla Tilda. Esse é o que está à esquerda
da tecla única na maioria dos
teclados no canto superior esquerdo. Isso trará
uma pequena barra de console, se você quiser, na parte inferior, se eu digitar stat
FPS e pressionar Enter. Agora mostre sua taxa de quadros
no canto superior direito. É bom saber. Agora você pode usar a saída de segundos
Delta em
cálculos que determinam o quanto
um determinado ator, como uma plataforma, deve
mover cada quadro. Dessa forma, você pode usar essas saídas de segundos
Delta para mover uma plataforma com a mesma quantidade,
independentemente da taxa de quadros. Isso é um
pouco mais avançado. Eu não vou
entrar nisso, mas apenas dando uma
introdução rápida sobre quais segundos
Delta podem ser usados maioria das vezes, você não
vai precisar deles. E, finalmente, no
início deste vídeo, mencionei sobre
como você deve ter
cuidado ao usar o autêntico. Porque se você não
usá-lo de uma maneira boa, você pode destruir as taxas de quadros do seu
jogo. Então, vou
demonstrar o que não fazer
dentro do meu BP
ThirdPersonCharacter. Você pode encontrar esse
esquema de personagem aqui
neste diretório dentro do
seu navegador de conteúdo. Aqui dentro, eu
pré-preparei um roteiro. Estamos fora do evento. Estou simplesmente fazendo
meus atores se transformarem. É aí que esse
ThirdPersonCharacter será localizado e
girado dentro do mundo. Eu vou então gerar
um efeito de projeto de fogo
que eu coloquei bem aqui. Este é um ator de spawn
do nó de classe. E a partir disso, o que eu simplesmente fiz foi me drogar fora disso e estou tirando o componente de
áudio
de incêndio deste projeto. Estou apenas desenhando esse componente
assim que o gerei em cada tick aqui, em cada quadro. Porque, caso contrário,
o áudio para isso fica muito irritante,
muito rápido. Portanto, observe que assim que
eu clicar em reproduzir aqui, minha taxa de quadros será destruída. Vai passar de
120 quadros por segundo para 20 bem rápido
aqui. Então, aqui vamos nós. Olhe no canto superior direito aqui. Observe que ele está gerando um efeito de fogo onde quer que meu
personagem esteja, a cada quadro. E você pode ver como isso é
prejudicial
para a taxa de quadros. E mais uma vez, se eu entrar na
minha turma padrão aqui e eu definir minha taxa de tick para
algo como, oh, vamos, vamos defini-la
para cada três segundos. Isso pode ser
algo aceitável. Então agora, em vez de
disparar todos os quadros dos padrões da
minha classe, estou dizendo, ei, autêntico só dispara a cada três segundos. E fazendo isso, você pode
ver que minha taxa de quadros
vai permanecer bastante
estável pelo menos por um tempo, porque eu só estou gerando esse efeito de partícula a
cada três segundos. Então, se você vai usar o
tick de eventos e você realmente
não precisa gerar algo ou girar
algo ou fazer algo. Cada quadro vem sob os padrões da classe e define seu intervalo de ticks
para algum número. Bem pessoal, isso vai fazer tudo por este para o evento tick. Nos vemos na próxima.
27. Entrada de eventos: Neste vídeo, nosso objetivo é
mostrar como podemos
utilizar eventos de entrada. Um dos eventos mais
comuns usando jogos para disparar
um pouco de script. Agora, quando estamos falando
sobre eventos de entrada, estamos falando sobre coisas como pressionar
teclas no teclado. Pode ser
pressionamento de botão como o botão a ou B em um controlador
tradicional. Ou pode ser algo
como tocar em um dispositivo, um telefone celular ou um iPad, esse tipo de coisa. Normalmente, esses
eventos de entrada estão simplesmente se registrando. Você pressionou ou
soltou? Eventos de entrada não devem ser
confundidos com eventos de acesso, que podem ser lidos em uma variedade de valores, como os polegares esquerdo
ou direito em um painel de controle
tradicional, podem dizer se seu personagem está se movendo apenas um pouco ou se você está
tentando correr com eles. Portanto, os eventos de acesso são
diferentes dos eventos de entrada. Agora, no exemplo que estou
prestes a mostrar a vocês, vamos fazer com
que pressionar um botão faça nosso
personagem disparar. E então soltar esse
botão nos faz
retornar à nossa velocidade normal de
locomoção. Vou usar nosso ThirdPersonCharacter
para este vídeo. Então, se você quiser
jogar junto em casa, está na pasta Blueprints de conteúdo em
terceira pessoa. É aí que você pode
encontrar esse plano. Clique duas vezes
nele para abri-lo. E aqui dentro você pode
ver que já
fizemos uso de alguns eventos de entrada. Especificamente, estou
usando a tecla de seta no meu teclado para enviar um traçado de
linha ao mundo. E aqui em cima, estou
usando as cinco teclas para ocultar ou mostrar meu HUD Widget Blueprint que estou criando
ao começar a jogar. Se eu passar um pouco para a
esquerda aqui, há alguns
outros eventos de entrada que estavam aqui por padrão. Temos um salto de
ação de entrada que está definido nas configurações do seu projeto e mostrarei como fazer
isso e só um pouco. E também temos
uma entrada de toque. Então, ambos estão fazendo nosso personagem pular
ou parar de pular. Tudo bem, vou adicionar esse script de sprint à direita
dos nossos scripts saltados. Então, clicando com o botão direito do mouse em
algum espaço vazio, vou digitar
a palavra teclado para encontrar todos os nossos diferentes eventos de
teclado. E você pode ligar isso
a qualquer chave, como se eu
fosse fazer com a tecla L. E eu também vou trazer
outro evento também. Vou clicar com o botão direito do mouse
e algum espaço vazio. E eu vou fazer uma busca por um game pad, botão de rosto, fundo. Agora, como você sabe, os controladores PlayStation e
Xbox são bem idênticos. Portanto, a parte inferior do botão facial do gamepad corresponde ao botão x no controle do PlayStation, ou acredito que seja o botão a
no controle do Xbox. Você conhece aquela
configuração
de diamante no lado direito. Então, eles os
chamaram de agnósticos, para não chamar um
controlador em particular ou outro. Ok, o que queremos
que aconteça quando pressionamos a tecla L em um teclado ou conectamos o
gamepad ao seu computador. Bem, vamos pegar nosso
componente de movimento de personagem aqui, porque se selecionarmos nosso componente de movimentação de
personagem, você pode ver que
temos muitas propriedades
diferentes que
podemos modificar que, incluindo nossa velocidade máxima de caminhada, esse é esse
parâmetro aqui. Isso está determinando a rapidez nosso personagem está
se movendo pelo mundo. Então, vou arrastar nosso controlador de movimento de
personagem ou
componente de movimento de personagem, não controlador. Para isso, vou me arrastar para
fora e vou dizer que está
definida a velocidade máxima de caminhada. Mais uma vez,
isso nos permitirá
modificar nossa velocidade máxima de caminhada. E eu vou apertar
Control C e copiar esse Control V para colar isso. Assim. E assim, quando eu pressiono a tecla L e solto a tecla L, todos
gostariam que nossa velocidade máxima de caminhada fosse. Bem, você pode ver
que atualmente eu tenho minha velocidade máxima de caminhada definida para 500. Eu vou dizer que
quando eu lançá-lo, eu quero que ele volte para 500. Mas quando eu quiser correr, vou definir
isso para algo como 3 mil
algo meio louco. Agora, no momento, não tenho meu botão facial do gamepad
conectado a isso também. Mas eu posso, posso fazer com
que, pressionando a tecla L ou
o
botão de face inferior em um gamepad, eu possa definir nossa
velocidade máxima de caminhada para 3 mil. Ou se eu soltar o alceno ou soltar a parte inferior do botão frontal, posso ajustar nossa
velocidade máxima de caminhada de volta ao que era. Indo para clicar com o botão esquerdo,
arrastar e tocar na tecla C. Este é o meu roteiro de Sprint. Compile isso para garantir que o script esteja com boa aparência. E então vamos em frente
e configurar o clique em Play. E vou definir nossa opção de depuração aqui para ser nosso
ThirdPersonCharacter. Deixe-me trazer aquela vitrine de
jogo mais uma vez. Tudo bem, então você pode ver que apertamos shift na F1 para mover
isso um pouco para baixo. Agora você vai ser capaz de
ver enquanto eu pressiono a tecla L, o script disparando. E então, quando eu
soltá-lo, ele vai diminuir minha velocidade máxima de caminhada. Então WFISD para se mover, mantendo pressionada a tecla L, movendo-se muito mais rápido,
liberando-a. Indo muito mais devagar. Tudo bem, agora isso não é o ideal. Eu tenho dois eventos
de entrada separados essencialmente fazendo
a mesma coisa. E eles também não são
muito descritivos. Eu tenho L, uma chave e um botão frontal do
gamepad na parte inferior, essencialmente fazendo
a mesma coisa. Existe uma maneira de simplificar isso? E a resposta é sim, você pode. O que vamos fazer é
voltar ao nosso editor de nível principal. E nas configurações, configurações
do projeto, vamos ficar do lado esquerdo e
selecionar a categoria de entrada. E aqui podemos criar nosso próprio
mapeamento de ação, eventos de entrada. Temos mapeamentos de acesso
ou mapeamentos de ação. É muito importante
que você faça isso nos mapeamentos de ações. Agora, se eu expandir esse
triângulo aqui, podemos ver que um evento de entrada de
mapeamento de ação já existe chamado jump. E isso é interessante
porque se voltarmos ao nosso personagem em terceira pessoa, voltarmos ao nosso controle de saltos, teremos um nó de evento
chamado salto de ação de entrada. A razão pela qual isso existe é porque,
nas configurações do projeto, criamos um mapeamento de ação de salto que
é um nó de evento chamado jump. E, atualmente, se eu
expandir isso, posso ver que duas entradas
exigirão que essa
ação de entrada aconteça. Uma barra de espaço no teclado ou na parte inferior do
botão frontal do gamepad. Então, vamos adicionar um
novo mapeamento de ação aqui. Clique nesse botão de adição para
adicionar um novo mapeamento de ações. E vamos dar o nome
que quisermos. Vou chamar meus sprints. E eu vou dizer, isso
vai ser ligado à tecla L. Ou clicando em. Eu posso adicionar quantos
deles eu quiser. Vou fazer com
que seja o gamepad, Vamos fazer o botão de rosto, certo? Claro.
Botão facial do gamepad, certo? Qualquer um deles
pressionando a tecla L ou os direitos do botão facial do gamepad faria com que nosso
personagem pudesse correr. Agora não há nenhum botão Salvar
nem nada aqui. Com isso criado,
posso voltar ao nosso
Projeto de Personagem de Terceira Pessoa. Agora posso clicar com o botão direito do mouse em algum espaço vazio e
digitar a palavra sprint. E ele encontrará nosso novo evento de ação que
acabamos de criar, chamado Sprint. Indo para nomear a ação de
entrada do nó sprint, agora
posso excluir
esses dois nós, conectá-los assim. E se eu fosse pular
e jogar mais uma vez, W, a, S e D para me mover
segurando a tecla L. E você pode ver que
eu estou correndo, liberando vontade gradualmente,
lentamente de volta para baixo. Agora, a próxima coisa muito
importante a se perceber sobre eventos de entrada é que, embora você possa adicioná-los a uma série de tipos de Blueprint, nem todos eles
os acionarão por padrão. No entanto, alguns vão. Se você adicionar eventos de entrada
ao seu plano gráfico de nível, isso será executado conforme o esperado. Você pressiona a tecla Z,
ele
imprimirá esse
nível de string na tela. Também fará isso para plantas de
personagens e peões. Então, se eu pressionar a tecla X dentro do meu ThirdPersonCharacter
Blueprint, ele também imprimirá
isso. Também fará isso para os projetos do
controlador do jogador. E agora isso
será algo sobre o qual falaremos mais tarde
no curso. Mas dentro das
configurações do meu projeto aqui, sob mapas e modos
do controlador do jogador, esse é o tipo de projeto de
que estou falando. Você pode usar
eventos de entrada dentro
do blueprint do controlador do player sem nenhum tipo de configuração especial. Contudo, em algo como um projeto de classe de ator como exemplo da
BP, pegue aqui. Se eu pressionasse a tecla C, uma dessas no meu nível, não
imprimiria isso na tela. Então, só para demonstrar isso, deixe-me ir em frente e clicar em Play, clicando na minha janela
aqui para ativá-la, vou pressionar a tecla Z. Você vê esse nível de texto
aparecendo no canto superior esquerdo. Se eu pressionar a
tecla X várias vezes, você verá que os textos foram impressos. No entanto, se eu pressionar a tecla C, os textos
que supostamente dizem “pickup” aqui
no canto superior esquerdo, isso não vai ser impresso. E isso ocorre porque projetos da classe de
ator não estão configurados para registrar eventos de entrada. Por padrão, no entanto,
você pode alterar isso dentro da classe
padrão desse blueprint. Então, se eu selecionar meus padrões de classe aqui no
lado direito, eu tenho uma categoria
chamada input. E como a entrada de recebimento automático
aqui está atualmente desativada. No entanto, se eu mudar
isso para o jogador 0 porque atualmente
tenho um jogo para um jogador. Isso fará com que agora,
quando eu pressionar a tecla C, ele
imprima isso na tela. Vamos em frente e tentar isso. Agora, quando pressiono a tecla C, você pode ver que a coleta de textos agora é impressa
na tela. Agora, vale a pena notar
aqui que aqui nos padrões da
minha classe
eu tive que mudar isso dentro do meu plano de aula de
ator. Para que a
entrada de recepção automática seja o jogador 0. Se você olhar em
algo como, digamos seu padrão de
classe ThirdPersonCharacter e você for para a seção de entrada. Atualmente, também diz que a entrada de
recebimento automático também está
desativada. No entanto, mais uma vez, plantas de
nível de
personagem e de
classe
e plantas de
controle de jogador. Eles os
registrarão por padrão, mesmo que isso seja um
pouco enganador aqui dizendo que a
entrada de recebimento automático está desativada. Em seguida, precisamos falar sobre
como o unreal prioriza o mesmo evento de entrada quando
usado em vários blueprints. E para demonstrar isso
no meu Level Blueprint, estou usando a tecla X
para imprimir uma string. Também estou usando a entrada x dentro do meu
personagem de terceira pessoa agora. E também o estou usando dentro
do meu captador de exemplo BP. Bem, está conectado
em três áreas. Então, se eu clicar em Reproduzir
e pressionar a tecla X, qual deles ele
priorizará? E você pode ver que está priorizando meu ator no
plano de aula bem aqui, porque eu habilitei nos padrões da
minha classe que receberei informações
do jogador 0, eu, o jogador emprestado. Portanto, a priorização
é a seguinte. Se você tiver uma configuração
como essa usando a mesma entrada após a aula, BPs serão priorizadas primeiro, seguidas pelas plantas de controle ou controle do jogador
do que pelas plantas do controlador de
nível e depois projetos
do Character Controller. Agora, o que acontece se dois projetos do
mesmo tipo receberem entradas? Bem, nesse caso, aceitaríamos essa prioridade de entrada
mais alta. Agora, para demonstrar isso, vou soltar Apenas para
deixar perfeitamente claro, tecla X dentro
do meu ThirdPersonCharacter
e dentro do meu mapa de teste. E agora eu tenho meu captador de exemplo
conectado à tecla x. E também estou usando meu
script de construção de exemplo BP aqui. Também vou conectar minha chave X para
imprimir essa string. Observe também aqui dentro
dos padrões da minha classe. Eu configurei sob a área
de entrada para o jogador 0, ou seja, eu para
receber entrada aqui. Atualmente, ambos estão definidos para
a prioridade de entrada 0. Prioridade de entrada 0, aí está. Então, qual deles
vai mostrar? Vai mostrar essa
picape ou vai mostrar
o roteiro da construção? Bem, se eu tocar na tecla X, ele priorizará o que eu
adicionei a entrada x. Mais recentemente. Como sempre? Se eu fosse entrar no
meu exemplo de coleta e alterar a prioridade
para um número maior, algo maior do que o que está
no script de construção. Pode ser um,
pode ser 100, pode ser 5 mil. Claro, vamos apenas 5 mil. Agora ele deve imprimir a coleta assim que
eu pressionar a tecla X. Lá vamos nós. E, finalmente, mais uma coisa que
eu queria acrescentar sobre eventos de
entrada em seus gráficos é que, se você tiver
esse nó selecionado, há algumas opções
no painel Detalhes com as quais você
pode mexer. Essa é uma maneira rápida de
alterar a tecla de entrada aqui. Você também pode adicionar um modificador. Portanto, em vez de pressionar a tecla X, você pode ser forçado
a pressionar as teclas Alt e x ao mesmo
tempo para fazer
algo acontecer. Mas o que eu realmente queria falar que
aprendi por tentativa e erro foi essa opção
executar quando pausar. Muitos jogos, você o
configurou para que, se pressionar
um determinado botão, possa pausar o jogo. E então, se você
quiser reativá-lo, você pressiona o mesmo botão. Vamos verificar essa configuração. Eu tenho que ir aqui. No momento, eu
o configurei para que ,
ao pressionar a tecla X, eu pause o jogo. E então, quando eu
soltei a tecla X, eu deveria estar
despausando o jogo e o jogo, mas veja o que acontece aqui. Vou seguir em frente
e clicar em Play. Você pode ver essa recuperação de saúde
giratória aqui que vai realmente mostrar que o jogo
está pausado ou não. Estou pressionando a tecla X
e tudo pausa. Eu liberei a tecla X e
tudo permanece em pausa. E a razão para isso
é que eu não estou permitindo que este evento continue a ser executado quando
o jogo é pausado, que está atualmente definido como false. Então, se eu quiser fazer com que
isso continue a ser executado mesmo
enquanto o jogo estiver em pausa, vou marcar esta caixa. E então, quando eu pressionar
a tecla X agora, ele pausará o jogo. No entanto, quando eu
soltei a tecla X, ela interromperá o
jogo porque isso também será
executado quando pausar. Aqui vamos nós, segurando x pressionado, ele está pausando e agora
vou lançar o ECS. E também
disparou o pressionamento
ou, neste caso, a
liberação da tecla X. Então aí
estão vocês que vão fazer
tudo por este
sobre eventos de entrada, veremos no próximo.
28. Eixo de eventos: Bem-vindos de volta a todos. Neste vídeo, nosso
objetivo é aprender quais eventos de acesso
são irreais, como podemos criá-los, como podemos usá-los. Agora, na realidade, nosso projeto de
personagem já tem alguns eventos de acesso
dentro dele e funcionando. Vamos em frente e
conferir isso. Primeiro, entrando na pasta
Blueprints de terceira pessoa de conteúdo, você encontrará seu BP
ThirdPersonCharacter. Clique
duas vezes nele para abri-lo. E foi aqui que paramos criar nosso evento de entrada de sprint, que eventos de entrada de ação. E isso já havia
saltado para o evento de ação de entrada que o pessoal Epic Games já havia
incluído neste. Agora, acima, você encontrará alguns eventos do eixo e
até o diz no nome. Temos um evento de eixo de entrada para avançar e retroceder, um para mover para a esquerda e para a direita. Isso controla o movimento do nosso
personagem. E aqui em cima temos alguns eventos do eixo de entrada da
câmera, um para o gamepad, e outro aqui no PC
para você, um mouse folk. E isso está determinando o movimento de nossa
câmera para a esquerda e direita e para cima e para baixo enquanto
movemos isso ao redor. Agora, de onde vieram esses
eventos do eixo? Bem, se você se lembra do
nosso último vídeo dentro das configurações do projeto,
é onde podemos criar não apenas eventos de ação de entrada, mas também esses eventos do eixo de
entrada. Então, vou ficar
embaixo do meu botão de edição no canto superior
esquerdo do editor. Essa é outra maneira de
acessar as configurações do projeto. Dentro das
configurações do seu projeto, vem sob a opção de entradas
no lado esquerdo. E, como você pode ver, temos mapeamentos de
ação
com os quais lidamos no último vídeo. E aqui temos mapeamentos
de
acesso aqui todos os nomes
dos vários eventos de eixo que existem atualmente
dentro do nosso editor. Agora, se eu expandir um
dos nossos eventos de eixo aqui, posso ver que posso vincular não apenas os botões do teclado a
um determinado evento de acesso nomeado. Também posso comprar algumas entradas
do controlador que são semelhantes
aos mapeamentos de ação de entrada que tivemos
no último vídeo, como nosso salto e nosso sprint. Agora, falaremos sobre o que esses valores de escala significam um
pouco mais tarde aqui. Mas antes mesmo de chegarmos a isso, vamos definir em que eventos de um
eixo é como isso
difere de um evento de entrada, um desses eventos de
entrada de ação, bem, a principal diferença é acesso eventos são eventos que
são disparados continuamente, seja, uma vez por quadro para
realmente levar para casa neste ponto, vamos pular para o nosso projeto de personagem em terceira
pessoa. E se eu diminuir um
pouco o zoom aqui e clicar em Reproduzir, você pode ver que meus vários eventos de acesso
estão disparando sem parar. E precisa, porque
se ele vai lidar com o
movimento do nosso personagem em si, ele precisa
atualizar nosso movimento cada quadro para
frente e para trás, esquerda e direita, bem como
a câmera movimento certo. Agora, outra característica definidora dos eventos de
acesso é que eles podem gerar no
valor do eixo e isso se encaixa. Se eu voltar para as configurações
do nosso projeto, esses valores de escala que você vê ao longo
do lado direito das várias entradas. Para w, temos uma escala de um, e para S temos uma
escala de menos um. Agora, para ver isso em jogo, deixe-me voltar para o meu
BP ThirdPersonCharacter. E eu vou
modificar esse script aqui um pouco. Vou clicar com o botão direito do mouse
e algum espaço vazio e digitar a string de impressão. E eu vou
pegar nosso eixo de entrada, mover para frente e para trás, canalizá-lo por aqui. E eu vou gerar
o valor do eixo. Ele vai converter
esse flutuador em uma string e vai
imprimi-lo na tela. Vamos em frente e fazer isso agora. E você pode ver mais uma vez, isso está disparando todos os quadros
do lado esquerdo, você está vendo um valor
de 0 porque eu não estou pressionando W ou S. Agora, quando eu pressiono a tecla
W para avançar, Olhe ao longo do
lado esquerdo da minha janela de jogo. Você vê todos esses
valores mudarem para um. valor do meu eixo é um. Quando pressiono a tecla Esc, tudo muda para menos um. Agora, em um teclado é
tudo ou nada, certo? Não há gradiente
como você pode obter com um stick analógico,
onde você pode
apenas cutucá-lo um pouco. Em um teclado. É só um. Dê-me tudo isso
daqui para frente, ou o oposto de um, que é menos um. Estamos usando os valores
de um e menos um para significar uma
coisa daqui para frente, ou o oposto daquela
coisa neste caso, que é retroceder. Agora, se tudo isso for
um pouco confuso, você pode passar o mouse sobre
esse valor
de escala neste nó de função para
adicionar entrada de movimento. E eles podem dizer
que ele também pode ser usado para entrada analógica. Não precisa ser
apenas um ou menos um. Essas configurações de escala estão
apenas determinando o alcance. E você pode ter um alcance
com um stick analógico, enquanto você não pode ter
isso com eventos de teclado. Atualmente, tenho um controlador conectado ao
meu computador para demonstrar isso. Deixe-me pular de volta aqui. Clique em Reproduzir. E agora vou usar meu controle Xbox e pressionar levemente
para frente com o
manípulo analógico esquerdo. E você pode ver
que o valor é 0,08. E à medida que eu o empurro para a
frente cada vez mais, está me dando bem como me
aproximando de um. Considerando que se eu puxar
o manípulo para baixo um pouco, e depois mais e mais
e mais e mais, isso está me
aproximando dos meus outros limites, o que é menos um. Então, o manípulo analógico
está me permitindo ir a algum lugar entre 11 negativo. Agora, para avançar
ainda mais neste ponto,
tenho um gráfico aqui para você. Olhando para uma visão panorâmica, visão cima para baixo do nosso personagem. Este é o nosso polegar esquerdo. Nas configurações do projeto
, em nossos mapeamentos de acesso, definimos nosso w para ter um valor de escala de um Isso é
o mais longe
que podemos ir, isso equivale a você seguir em
frente o mais rápido possível. Na extremidade oposta. Nossa chave S tem um valor, um valor de escala de menos um, significando o oposto de um, neste caso indo
na direção inversa. Agora, novamente, em um teclado, se você pressionar W,
Não há, não há intermediário aqui. Você está indo de 0. Eu não estou indo
até um, estou indo em frente
e a toda velocidade. Se eu tocar na tecla S, isso significa que estou
retrocedendo a toda velocidade. Não há meio-termo, no entanto, com o manípulo analógico
esquerdo, você pode fazê-lo de forma
que você possa apenas empurrá-lo para a frente um
pouco e chegar a
meio caminho de seus limites
de um ou negativo 0,5 para seus limites de menos um indo
na direção inversa. Agora, vale a pena
notar aqui que seus valores de escala não precisam
ir de um para menos um. Você pode definir alguns
outros valores de escala, mas muitas vezes esse
é o conjunto de intervalos. Tudo bem, em seguida, vamos
em frente e criar alguns eventos
de acesso que
podemos usar. Portanto, vou clicar neste
botão de adição em Mapeamentos de acesso, certifique-se de não fazer
isso em Mapeamentos de ação. Além disso, deixe-me
desmaiar meu movimento para frente e para trás. Vou nomear esse
primeiro companheiro. Mova-se na horizontal. E eu vou definir
isso para minha chave L. Nós vamos fazer alguns
eventos de teclado vai fazer L, a tecla L. E a escala para isso
será mais 11 vezes. Vou definir o oposto
disso para ser a chave J. E isso vai ter
uma escala de menos um. Em seguida, vou adicionar outro
eixo de mapeamento aqui. Isso vai ser chamado de
companheiro, mover verticalmente. E vamos
definir isso para ter o nojento com a
escala definida como um. E o oposto disso será a
tecla K e definirá a escala para
isso como menos um. Agora, o que
pretendemos fazer aqui é
adicionar um componente ao nosso
ThirdPersonCharacter. E usando esses mapeamentos de acesso, seremos capazes de
mover esse objeto. Vai ser uma esfera simples. Então, companheiro, mova-se horizontalmente, acompanhe e mova-se verticalmente. Nós configuramos isso nas configurações do
nosso projeto na categoria de entrada, Vamos voltar para o
nosso ThirdPersonCharacter. E a primeira coisa que
vamos fazer antes mesmo lidar com os eventos de acesso
que acabamos de criar. Vamos adicionar componentes. Então, clique em componentes, vamos adicionar um componente. Vamos adicionar componentes de esfera
simples. Agora, no painel Detalhes,
na verdade, vamos
primeiro
para a janela de visualização para que possamos ver essa esfera, que é uma esfera gigante e
enorme. Primeiro, vou
baixar a escala. Eu quero definir um ajuste uniforme. Então, vamos em frente e clicar neste botão de bloqueio para que, se eu
alterar um desses valores, 2.5, ele mude
todos os três. É isso que esse ícone de cadeado faz. Também vou definir
a localização como 20 no eixo x. Também, coloque-o na frente do nosso personagem um
pouco. Agora também vou
criar duas variáveis para nos ajudar com nosso script que vamos
escrever aqui. O primeiro virá sob variáveis e será chamado de taxas
horizontais complementares. E isso vai
ser uma variável flutuante porque vai ser
um valor de ponto decimal. Vou
clicar com o botão direito nisso. Vou duplicar
isso e isso
vai ser chamado de companheiro. Taxas verticais, mips com
erros ortográficos um pouco. E se eu compilar, posso definir alguns valores
padrão aqui. Então, vou definir minhas taxas
horizontais como dez. E também vou marcar
esta caixa, por exemplo, editável que entrará em
jogo aqui um pouco mais tarde. E farei o mesmo com a minha tarifa vertical
complementar. Vou definir isso para dez também. Marque também esta caixa,
por exemplo, editável. E vamos em frente
e salvar isso. Em seguida, vamos
criar um script
em nosso gráfico de eventos usando os eventos de eixo
que acabamos de criar. Então, movendo-se um pouco para a
esquerda aqui, clicando com o botão direito do mouse
e algum espaço vazio, vou digitar
e mover horizontalmente. E aí está o meu evento de eixo para
companheiro, mover horizontal. Agora, não se confunda entre
os valores dos eixos e
os eventos do eixo. Queremos que o companheiro se mova horizontalmente com um pequeno ícone de
seta bem ali. Boom. Agora vou clicar com o botão direito do mouse
e vamos digitar mover vertical, vertical. Esse pequeno ícone de seta para a direita também
indica nos eventos. Tudo bem, e o que queremos
fazer é mover nossa esfera aqui um
pouco a cada quadro. Então vá em frente e arraste e
solte isso em nosso gráfico. Bem aqui e aqui embaixo. E eu vou arrastar para
fora da nossa esfera e digitar adicionar localização relativa. Então, queremos atualizar
a localização
dessa esfera, cada quadro. Vou ligar
isso imediatamente. A localização delta
é o quanto queremos mudar nossa localização relativa. Então, para fazer isso,
vou arrastar para fora do valor de nossos eixos e fazer uma
busca por um nó de multiplicação. Eu quero multiplicar isso por
nossas diferentes taxas aqui. Eu realmente poderia ter feito
apenas uma variável aqui e chamar isso de taxa de acompanhante. Mas só para jogar bem aqui, vou conectar
nosso companheiro e taxa
horizontal
diretamente lá. E então eu vou
puxar para trás
dessa localização delta e
digitar make vector. Estamos procurando um nó de vetor
make. Agora, novamente, esse valor vetorial está procurando por x, y e z. Só
queremos alterar a
localização dos eventos desse eixo. No eixo y, vamos movê-lo horizontalmente. Então, o eixo y, o
eixo y, a seta verde. Então, esses serão os roteiros. E vamos fazer o
mesmo aqui em baixo. Vou copiar e colar
esses três nós aqui, 123 destacando
todos os três, controle C, controle V.
Arrume isso um pouco. A esfera é a coisa que
fazemos para nos movimentarmos. E temos que nos certificar de que
obtemos o valor dos nossos eixos aqui, em nosso companheiro, neste caso, Taxa
vertical bem aqui. Mais uma vez, poderíamos
ter criado apenas uma variável chamada taxa
complementar, já que elas têm o mesmo valor. Mas eu quero que ele mostre esse recurso
editável de instância aqui
em pouco tempo. Tudo bem,
vamos compilar isso. Vamos salvar isso em. Agora, se olharmos para trás em
nossas configurações de projeto, você pode ver que se
movermos a tecla L e J, vamos mover
esse companheiro, se você quiser, horizontalmente. E se pressionarmos
o I ou o KCI, vamos
movê-lo verticalmente. Então, voltando para o
nosso editor de níveis aqui, eu vou em frente
e clicar em plaquetas. Na verdade, vamos
disparar isso do nosso
ThirdPersonCharacter. Eu quero ver o
roteiro disparando. Então clique em jogar aqui. Você
pode ver mais uma vez, eles estão disparando sem parar. Eu realmente deveria soltar
essa corda de impressão. Na verdade, deixe-me fazer isso agora. Vou soltar
essa string impressa de mais cedo porque isso
só vai ser confuso. Tudo bem, estou clicando em jogar. Esses eventos estão disparando. Você pode ver aquela pequena
esfera ali na minha frente. Eu vou fazer o
eixo de entrada, mover horizontal. Então J, K, L key, assim. Icky e KCI também estão
movendo-o horizontalmente. E a razão para isso é porque eu cometi esse erro de simplesmente fazer com que os dois
mudassem a localização y. Vou manter pressionado Control, clicar com o botão esquerdo do mouse e
conectá-lo ao local z e isso
deve resolver esse problema. Agora. J e L e eu e K. Sim, você pode
colocá-lo no chão. Agora, um recurso divertido aqui é
que, porque estamos fazendo alguma multiplicação aqui
para determinar a taxa na qual estamos mudando a localização
de nossa esfera. Eu posso voltar para o
meu editor de níveis. Vou alterar
minhas configurações de local, clicando nesses
três pontos
aqui na janela de visualização selecionada. Depois de fazer isso,
vou jogar o jogo e
selecionar a janela de visualização. My ThirdPersonCharacter,
que surgiu
no nível aqui, agora está
aparecendo no meu esboço. Isso é o que essa cor amarelada indica que ela foi
gerada para a existência. E selecionando isso, posso
procurar um companheiro. E posso ver essas duas
variáveis que
expus ao editor aqui do meu BP ThirdPersonCharacter
marcando a caixa editável da instância
em cada uma dessas variáveis. Agora, o que isso
me permite fazer é pressionar a tecla R ou J e L, ou as
teclas I e K, Isso é ótimo. Mas mudando o controle de ganho F12, posso modificar esses valores
no editor agora, então vou alterar a taxa
horizontal para ser bem lenta e a
taxa vertical para ser bem rápida. Em seguida, clicando com o botão direito aqui, minha janela de visualização, J e L, está atualizando lentamente, mas para cima e para baixo está
indo muito rápido. Então, esse é apenas um recurso divertido
que eu pensei em lançar lá
fora também. Uma vez que eu escape daqui, vale a pena notar que esses valores variáveis
voltam aos seus padrões. Isso é só para brincar com valores
diferentes no jogo. Mais alguns itens úteis
antes de concluirmos este vídeo, como com os
mapeamentos de ação de entrada encontrados
no último vídeo, você pode selecionar esses eventos. E no
lado direito do painel Detalhes, você pode modificar algumas
coisas sobre eles, incluindo executar quando pausar, eu caí para falar sobre isso, consumir uma entrada que também é disponível nos mapeamentos de
ação de entrada com isso, se estiver definido como true, essa entrada
funcionará apenas para o blueprint que tiver a
prioridade padrão mais alta que a implementa. Tudo bem? Isso pode ser encontrado
novamente nos padrões da sua classe. Lembre-se, sob sua entrada,
essa prioridade de entrada, que
o consumo de
entrada funcione apenas para aquele que tem a prioridade padrão
mais alta. Agora, outra coisa a se
notar aqui com isso, isso dispara
todos os quadros, certo? Então você pode estar se perguntando, bem, se eu modificar nos padrões da minha
classe, a taxa de tick, isso
afetará isso também? Não, não vai. Afetar a taxa de ticks afetará
apenas esse evento. Evento de tick, isso não
afetará a taxa em
que isso acontece. Isso vai
sair de todos os quadros, quer você mude isso ou não. Tudo bem pessoal, isso vai
fazer tudo para este vídeo, nos vemos no próximo.
29. O evento começar a superar: Você já jogou um jogo e se perguntou como quando
seu personagem está andando por aquele corredor escuro
em um jogo com tema de terror, um zumbi pula na hora certa para assustá-lo. Ou talvez você esteja jogando
um jogo como Uncharted. E enquanto Nathan Drake está brilhando ao longo da borda de um penhasco rochoso, o penhasco
rochoso desmorona quando ele passa por uma área de aparência
precária. Agora, a maneira como isso é feito
nos jogos é por meio algo chamado volumes de
gatilho. E, mais especificamente, quando você começa a sobrepor, um volume de
gatilho está indo. Este vídeo é para mostrar como
podemos usar volumes acionadores para iniciar um evento de sobreposição de início de ator
. Agora, esse é um
dos eventos mais comuns
desencadeados em todos os jogos
e, portanto, esse é um
evento essencial para conhecer. Tudo bem, vamos
começar aqui no canto superior esquerdo do nosso editor, bem aqui embaixo do, uh, adicionar
rapidamente ao
botão Projeto, se você quiser. Podemos encontrar volumes, volume de
acionamento. Você pode colocar um dessa
forma em seu nível. Como alternativa, você
pode entrar no painel de atores locais, que adicionará um
painel de atores de lugar ao seu editor de níveis. Aqui você pode encontrar diferentes
guias de diferentes atores, incluindo uma guia Volumes. E aqui, todos eles estão
listados em ordem alfabética. Você pode encontrar um volume de gatilho. Deixe-me ir em frente e
colocar um desses. E, alternativamente, na guia Básico aqui, você pode encontrar diferentes formas de volumes para adicionar uma
caixa de acionamento ou uma esfera de gatilho. Existem algumas
diferenças sutis entre os dois, embora o que pretendemos fazer com eles seja
semelhante. Realmente não
importa qual acréscimo. Vou adicionar
essa caixa de gatilho apenas para mostrar algumas
diferenças entre isso
e meu volume de gatilho. Agora, se a caixa Acionador estiver
selecionada no painel Detalhes, ela me dará acesso a uma opção de espessura de linha na
categoria Forma. Então, vou definir
isso para dez imediatamente. E então, para a extensão da caixa vou definir que isso
seja algo como, bem, vamos 300 por 300 por 300, algo bom e grande. Eu quero que isso seja colocado em
algum lugar na frente
dos meus jogadores. Comece ator, mas não muito perto, então não vou sobrepor
isso imediatamente. Vamos fazer algo assim. Tudo bem se estiver penetrando um pouco pelo
chão. Agora, você também pode definir
uma cor de forma aqui. Então, se você
desmarcá-lo, ele mostrará a cor da
forma verde. Caso contrário, quando
você
selecioná-lo, ele terá aquele destaque amarelo. Agora, isso é apenas um show,
um pouco de
diferença entre nossa caixa Trigger e
nosso volume de gatilho. Se eu tiver selecionado o
volume do gatilho, você pode realmente alterar
a forma disso. Isso não precisa
ter uma forma cúbica. E para fazer isso, você estaria
sob suas configurações de pincel. E sob a forma do seu pincel, você pode mudar
isso para um cone. Você poderia mudar isso para uma escada, se
quiser, um cilindro. E depois há propriedades
diferentes a serem alteradas dependendo da forma
do pincel. Mas para os propósitos
deste vídeo, vou me livrar disso e simplesmente
rolar com essa caixa
de gatilho. entanto, a funcionalidade será a
mesma entre eles. Tudo bem, então selecionamos essa
atriz em nosso nível. Vou fazer
alguns scripts aqui dentro dos nossos planos de nível. Vamos em frente e abrir isso. E vou colocar isso no
meu gráfico de eventos, gráfico. E em algum espaço vazio, vou simplesmente clicar com o botão direito do mouse. E quando você clica com o botão direito do mouse com um objeto selecionado
em seu nível, você pode adicionar um evento
para esse objeto. Nesse caso, a caixa de gatilho cinco é o que está sendo chamado. E sob a seção de colisão, eu gostaria de fazer um ator
adicional, começar a sobreposição. Quando algo se sobrepõe a
essa caixa Trigger. Podemos fazer algo e descobrir quem era o
outro ator. Isso resultará, nos
informará quem era o outro ator. Só para ajudar a visualizar isso, vou arrastar para fora do
meu pino de execução aqui e trazer uma função de
string de impressão. E eu vou conectar esse
outro ator diretamente nisso para obter o nome de exibição
do que quer que esteja sobrepondo isso, se eu fosse compilar
isso e jogar, passar meu personagem por isso e olhar no canto superior esquerdo da
minha janela de reprodução aqui, quando eu
sobreponho esse volume de gatilho, ele me mostra que é um ThirdPersonCharacter
sobrepondo isso. Agora você não pode ver
esse volume de acionamento atualmente no nível. Vamos em frente e consertar isso antes de prosseguirmos aqui. Então, vou voltar ao meu editor de níveis aqui com
minha caixa de gatilho selecionada. Eu tenho esse ator escondido
na caixa de seleção Jogo marcada, o que significa que ele
estará oculto no jogo. Se eu desmarcar isso,
vá em frente e jogue. Agora posso ver esse
volume de gatilho em toda a sua glória feia. Tudo bem, vamos fazer
algo acontecer quando sobrepomos esses volumes de
gatilho. Então, voltando ao meu plano de
nível. Eu posso me livrar disso agora, clique com o botão esquerdo e arraste
até lá para que eu coloque
o outro ator. Bem, vamos nos arrastar para fora
disso e vamos fazer esse elenco para nosso personagem de
terceira pessoa apenas para garantir que só
queremos que algo aconteça quando nosso ThirdPersonCharacter
estiver se sobrepondo também, estamos vai impactar diretamente nosso ThirdPersonCharacter
aqui também. Portanto, é uma espécie de duplo
propósito por que estamos fazendo isso. Então, quando o outro ator é
o personagem de terceira pessoa, o que queremos fazer? Bem, podemos entrar em contato nosso ThirdPersonCharacter aqui modificar algo sobre ele. Inclusive se eu abrir meu
Projeto de Personagem de Terceira Pessoa. Inclusive, podemos
modificar algumas propriedades nos componentes de
movimento desse personagem. Então, vamos fazer isso. E lembramos que o componente de
movimento do personagem pode controlar coisas como a
rapidez com que um personagem se move. Essa é a
propriedade de velocidade máxima de caminhada bem aqui. Então, de volta aqui no meu
Level Blueprint, eu vou arrastar para fora do meu como BP ThirdPersonCharacter e digitando movimentos de personagem, whoops,
personagem. Podemos descobrir que na
parte inferior aqui, obtenha o Componente de
Movimento do Personagem. E o que queremos
modificar dentro desse componente de movimento do
personagem? Bem, eu queria modificar
essa velocidade máxima de caminhada. Então eu vou voltar para o
meu Level Blueprint aqui. Vamos nos arrastar para
fora disso e digitar set max, walk, speed. Agora você vê esse tipo de coisa feita em jogos o tempo todo. De fato, recentemente terminei jogar Final Fantasy
seven remake. Há áreas nesse
jogo em que Cloud Strife está caminhando e sua velocidade de
movimento diminui. Então, o que está acontecendo
lá é que a nuvem está sobrepondo uma caixa de gatilho e a velocidade máxima do personagem
está sendo ajustada para um ritmo de caminhada para me
impedir de correr
por uma área. Talvez eu esteja
passando por um espaço apertado ou algo assim. Vou definir a velocidade
máxima de caminhada para 200 aqui quando estiver sobrepondo
esta caixa Trigger, vamos compilar, garantir que nosso script esteja com boa aparência
aqui. E então vamos jogar. Agora, deixe-me definir minha
opção de depuração aqui meu mapa de teste de nível para que você possa
ver esse evento disparando. Mova isso para cima. Tudo bem? E você pode ver que estou
correndo em um ritmo decente. Mas quando eu vou uma sobreposição
desse volume de gatilho, eu diminuo a velocidade. Agora você pode ver que quando eu
saí desse volume de gatilho, eu não volto a acelerar. E isso porque este é um evento de sobreposição de início de ator. Isso está afetando meus
personagens definindo minha velocidade máxima de caminhada quando
estou sobrepondo, mas não estou dizendo
para voltar a qualquer velocidade máxima de caminhada normal
quando eu terminar essa sobreposição. Agora, esse é um exemplo muito básico, mas vamos dar
alguns passos ridículos adiante apenas para mostrar
a variedade de coisas que você poderia fazer em um ator começar a se sobrepor. Bem, uma coisa que você pode fazer é
se arrastar para fora disso e tocar som no local. Qual local? Bem, poderíamos dizer a localização da nossa caixa de
gatilho. Vamos clicar com o botão direito do mouse e
algum espaço vazio. Eu ainda tenho minha
caixa de gatilho selecionada no nível. Então, vamos criar uma referência
para uma caixa Trigger. Arraste para fora disso e diga Obter localização, obter ator, localização. Não preciso fazer
isso em um determinado local, mas vou tocar
música em um determinado local. Claro. Certo. Isso é algo que poderíamos fazer. Outra coisa que poderíamos fazer é secar
isso e gerar ator da sala de aula. O que queremos gerar? Bem, vamos primeiro de tudo, precisamos nos dizer
onde desovar. Então, usando nossa
caixa Trigger mais uma vez, eu posso me arrastar para fora disso e
dizer ainda transformação de ator. Então, o que queremos gerar
nessa rotação de local? Vamos desovar com certeza,
alguma fumaça aparecendo. Então também podemos fazer algo
como arrastar isso e digitar sistema de desova
no local. Agora o sistema vai gerar
qualquer sistema de partículas do Niágara. Tão irreal tinha essa coisa em
que eles costumavam usar todos os sistemas de partículas chamados cascata e esse era
o sistema mais antigo. Algumas das explosões e efeitos de
fogo que você me
viu usar até agora. Esse é o sistema de
partículas mais antigo, mas o rolamento com o sistema de partículas
Niagara da Huron. Então, se você quiser adicionar um sistema de partículas
Niagara, você pode ir à
Epic Games Store e no mercado
sob o Unreal Engine cinco, você pode entrar em efeitos
visuais. Você pode definir o preço
máximo como gratuito. E você pode adicionar alguns
desses
efeitos de partículas do Niágara ao seu projeto. Isso é bem simples. Não vou fazer
isso agora
porque vai levar um
pouco de tempo. Mas se você
selecionasse um desses, você poderia adicionar ao projeto. Selecione em quais projetos
queremos adicioná-lo. Que diabos? Eu vou adicionar isso provavelmente depois deste vídeo no projeto. E é assim que você
faria isso. Assim que você
clicar neste botão, volta aqui no seu editor de níveis, você verá as pastas
apropriadas que teriam esses efeitos de
partículas dentro. E isso permitiria que você entrasse em um sistema apropriado. Claro, você
precisaria dizer isso onde você quer gerá-lo. Tudo bem, então só para
demonstrar isso, vamos em frente e clicar em
play mais uma vez. E quando sobrepomos isso, diminuímos a velocidade,
tocamos música, e nosso efeito de projeto está
emitindo um pouco de fumaça, certo? Bem no centro. Tiro com arco. Por fim, é importante
perceber que esses
eventos de sobreposição de início não estão restritos
apenas a
esses volumes de gatilho que você encontra aqui
no painel de atores locais. Pelo contrário,
arrisco-me a dizer que a maioria
dos eventos de sobreposição de início
que eu uso em scripts são encontrados dentro das próprias
classes de blueprint. Agora, para demonstrar isso, vamos voltar para dentro do
nosso exemplo de captação bp. Clique
duas vezes nele para abri-lo. E se você se lembra desde o
início do curso, estávamos usando um colisor de esferas, um volume de gatilho
para verificar se nosso personagem de terceira pessoa estava sobrepondo a isso
para coletá-lo. Agora, se eu entrar
neste painel de componentes aqui e clicar em Adicionar, se eu rolar para baixo, existem diferentes tipos de volumes de gatilho
na categoria de colisão, mas há uma caixa colisão, colisão forma de
cápsula
e colisão de esfera. Agora, com qualquer um deles
adicionado a um blueprint, se você selecioná-lo
no lado direito, poderá ver que tem um evento begin overlap
associado a ele. Isso está bem no fundo. Como alternativa, se
eu clicar com o botão direito do mouse sobre isso e
entrar em Adicionar eventos, esse mesmo evento também
estará disponível aqui. Apenas como lembrete
aqui, meu gráfico de eventos. É aqui que estou usando um
componente estranho, comece a sobreposição. Este é um tipo de
volume de gatilho. É apenas um componente estranho. É um volume acionador de componente atualmente em formato esférico. E sempre lista o nome do componente
aqui entre parênteses, assim como no
Level Blueprint, ele lista o nome
do volume acionador
entre parênteses também. Este é apenas um ator começar a
se sobrepor no meu exemplo de BP, está no componente começar a se sobrepor. Ambos são eventos de sobreposição nos quais você pode
disparar algum script. Bem pessoal, isso vai
fazer tudo por esse. No próximo vídeo, falaremos sobre os eventos de sobreposição final. Vejo você lá.
30. Overlap de final de eventos: Bem-vindos de volta a todos.
Neste vídeo, nosso objetivo é mostrar como os volumes de
acionamento também podem ser usados para disparar
e sobrepor eventos. Agora, às vezes, você
quer que algo aconteça quando você
começa a entrar uma área e às vezes
quer que as coisas
aconteçam quando você sai de uma área. O evento de sobreposição final
é para aqueles momentos em
que você deseja que algo aconteça
ao sair de uma área. Agora paramos o último vídeo em que
quando eu entrei nesse volume, esse volume de gatilho bem aqui, isso deixaria meu personagem mais lento. Agora eu fiz mais algumas coisas
ridículas, como tocar pouco de música e gerar um efeito de partícula,
esse tipo de coisa. Mas eu não estou realmente acelerando meu personagem de volta depois que
eu saí desse volume. Então, aqui, vamos
explorar como fazer exatamente isso. Agora, antes mesmo de chegarmos a isso, eu vou voltar para o meu Level Blueprint bem aqui. E eu terminei de adicionar um sistema de partículas de Niágara bem
no final aqui. E eu só queria
destacar no último vídeo, que eu direcionei você para
a Epic Game Store. E enquanto estamos aqui, fui ao
mercado e estávamos procurando alguns efeitos visuais. Você E5, eu fui sob um UE cinco efeitos visuais
e acho que eu estava apontando sob
os pacotes gratuitos. Este aqui, esse
é o antigo sistema em cascata. Se você quiser alguns efeitos
do Niágara
, escolha um que diz
Niagara bem aqui. Agora eu incluí
isso entre os vídeos. E assim, quando
eu jogar agora, você verá que eu tenho uma rainha no chuveiro que vai
aparecer lá também. Só queria apontar isso
para concluir a última parte. Tudo bem, vamos continuar
com a sobreposição final. Então você pode ver
no início se sobrepor onde abrandar nosso
personagem. Bem, vamos acelerá-los de volta. Agora, assim como
mostramos no último vídeo, se quisermos adicionar esse evento
ao nosso Plano de Nível, você precisa
ter certeza de que selecionou
esse ator
em seu nível. Então, vamos em frente e
garantir que
tenhamos os volumes acionadores selecionados. Você pode selecioná-lo aqui ou
mais no seu Outliner. De qualquer forma, faremos. E de volta ao seu
Level Blueprint. É assim que você pode
voltar ao projeto do amor. Vá em frente
e clique com o botão direito do mouse e algum espaço vazio, podemos adicionar um evento para isso que é conhecido como
Trigger box five para mim, não se assuste se ele disser outra
coisa para você. Caixa de gatilho 27 ou qualquer outra coisa. Realmente depende de
quantas caixas de gatilho você adicionou até agora. Aqui queremos
fazer uma sobreposição. Tudo bem? Também vamos fazer
um casting para nosso
ThirdPersonCharacter. Queremos descobrir
se o que
acabou com a sobreposição Cast to ThirdPersonCharacter foi
o personagem da terceira pessoa. Agora, se foi o
ThirdPersonCharacter que terminou de se sobrepor,
esse volume de gatilho, queremos pegar, tirar nosso Componente
de
Movimento de Personagem desse
ThirdPersonCharacter. E então podemos arrastar
para fora disso e digitar set max, walk, speed. E, novamente, eu sei que
essa propriedade existe porque dentro do componente de movimento do
personagem, dentro do meu personagem de
terceira pessoa, há um parâmetro de
velocidade máxima de caminhada. Então, eram 500 antes. Deixe-me voltar ao
meu projeto de terceira pessoa apenas para mostrar isso dirigindo para casa Componente de
Movimento do Personagem, a velocidade máxima de caminhada está
atualmente definida para 500. Então, aqui no meu
Level Blueprint, vou definir a velocidade máxima de
caminhada de volta para 500. Então, quando terminarmos de sobrepor esse volume de gatilho,
devemos voltar
à nossa velocidade normal. E eu só quero mostrar que esses eventos vão
começar aqui. Então, deixe-me definir minha
opção de depuração ali mesmo. Traga meu personagem de volta. Tudo bem. Você pode ver que ele estava
correndo às 500. Dentro do volume do gatilho. Quando eu saio e me
sobreponho a 500, você pode ver
aqui esses eventos
disparando. Tudo bem. Portanto, considere os outros
usos possíveis para uma sobreposição final. Poderíamos fazer com que,
quando nós e nos sobrepuséssemos pudéssemos parar de tocar alguma
música que geramos, que não possamos parar essa música porque isso é um
fogo e esquece. Mas se você entrasse na música, poderíamos salvar isso
em uma variável e parar de tocar a música deles. Talvez você possa
usar uma sobreposição final para parar de machucar o jogador. Talvez o jogador estivesse em uma zona de gás venenoso que estava afetando sua saúde
assim que eles se sobrepuseram. Mas quando eles terminaram de se
sobrepor eles não estão mais
perdendo saúde. Ou talvez possa
ser algo como você vê em Uncharted ou
Final Fantasy seven, que quando você começa a
sobrepor volume, você não pode desenhar uma arma, mas quando você termina de
sobrepor esse volume, você pode sacar essa arma. Isso pode ser feito por meio de variáveis
booleanas definidas dentro de seu
ThirdPersonCharacter. Bem pessoal, isso vai
fazer tudo para este vídeo, nos vemos no próximo.
31. O evento começa o cursor: Bem-vindos de volta a todos. Neste vídeo,
vamos criar alguns projetos
e também alterar a configuração de um projeto apenas
para que possamos mostrar como os eventos de passar o mouse são legais. Agora, esses são ótimos eventos para saber se
você quiser fazer algo acontecer ao passar o
mouse sobre um objeto, como um item de
mudança de cor, como algum tipo de efeito de
destaque, ou fazer com que a
descrição de um item apareça talvez
o nome do objeto que você está
superficialmente pendurado. Ou talvez alguns textos
que dizem pressione X para interagir ou pegar esse
objeto, esse tipo de coisa. Agora, esse será
predominantemente um evento do tipo PC, mas é bom saber
sobre isso, independentemente da plataforma em que
você está desenvolvendo. Só para ver tudo o que pode
ser feito aqui no Unreal. Tudo bem, para mostrar isso,
vamos criar um plano de classe preciso. E você pode colocar isso em
qualquer pasta que quiser. Mas vou entrar na
minha pasta de visão geral de scripts e clicar com o botão direito do mouse
em algum espaço vazio, classe Blueprint. Depois da aula é o que estamos procurando e
vou nomear
esses eventos de mouse de sublinhado da BP. Então vamos
clicar duas vezes nesse cara para abri-lo. Vemos nossa raiz de
cena padrão aqui. Vamos adicionar
um único componente. Então, vá para o
painel Componentes, clique em Adicionar. Vamos adicionar componentes de
esfera. Ótimo, e vamos em frente e colocar isso direto no nosso nível. Provavelmente é uma boa ideia
colocá-lo bem na frente de onde seu personagem vai
aparecer, para que
os jogadores comecem a atuar. Assim, podemos ver isso
imediatamente e, em seguida,
voltar aos eventos do mouse p.sit e seguir para o Gráfico de Eventos. Agora, queremos que
algo aconteça
quando passarmos o mouse sobre
nossa esfera aqui. Então, quais eventos
temos disponíveis para isso? Bem, com nossos
componentes de esfera selecionados no painel Detalhes
na parte inferior, você pode encontrar todos os
eventos associados e disponíveis para você para esse componente
específico, incluindo On begin cursor sobre. Então, se eu clicar nesse botão de adição, posso adicionar esse evento ao nosso gráfico e ele me levará
direto para ele. Agora, você também pode adicionar esses
eventos, se quiser,
clique com o botão direito do mouse nesse componente. E então o pequeno
menu flutuante adicionar evento, você o encontrará nesta lista. A razão pela qual não é essa lista é porque ela já foi
adicionada ao nosso gráfico. Mas se não foi
adicionado ao nosso gráfico, podemos encontrá-lo aqui também. Tudo bem, então o que
queremos que aconteça é quando movemos
o cursor do mouse sobre a esfera, vamos
mudar nosso material. Então, vamos pegar uma
referência à nossa esfera. Clique com o botão esquerdo do mouse e arraste-o
para o gráfico. E vamos nos arrastar para fora da nossa esfera
para falar com ela,
para mudar alguma coisa sobre ela. Vou digitar o material
do conjunto. E mais uma vez, eu sabia que
essa é uma propriedade que eu poderia mudar sobre esse componente porque se eu selecionar minha esfera, um dos
detalhes disponíveis é o material. Então essa é uma boa dica se
você estiver se perguntando, ei, o que posso mudar um determinado componente enquanto
simplesmente seleciono esse componente. E nos detalhes,
veja todas
as diferentes coisas que
poderiam ser mudadas sobre isso. Agora vou definir
meu material aqui para ser algo bastante desagradável. Vou digitar vertex verde, é isso que
estou procurando. E a razão pela qual não estou
encontrando é porque, se eu clicar neste pequeno ícone de engrenagem, quero pesquisar não
apenas meu conteúdo normal mas também o conteúdo do meu mecanismo. E o vertex verde não está aqui? Deixe-me digitar em
verde, aí está. Modo de visualização de cores de vértice , somente
verde,
é o que eu estou procurando. Então, se eu compilar isso, eu posso ver que meus scripts
aqui estão prontos. Eu vou salvá-lo também. Você pode pensar, tudo bem, se eu
entrar no jogo e colocar cursor do mouse sobre esse
medo de que isso funcione. Bem. Na verdade, ainda não
vai funcionar. Precisamos fazer algum
trabalho dentro dos
projetos de um controlador de jogador para realmente ativar esses eventos de passar
o mouse sobre. Agora, projetos de
controladores de jogadores são
algo sobre o qual falaremos muito mais quando falarmos
sobre projetos de estrutura. Mas para fazer justiça a esse vídeo em
particular, eu tenho que
entrar nessas águas. Para os fins deste vídeo, tudo o que você precisa saber sobre o esquema do controlador do jogador é que o
controlador do jogador funciona em conjunto com um personagem ou
plano da classe de peão para afetar sua experiência de
jogo. O controlador do player é
essencialmente as cordas da marionete. O personagem é o fantoche. Você é a marionete. Analogia excessivamente simplificada, eu sei, mas o blueprint do
controlador do jogador tem algumas configurações do mouse
dentro dele que precisamos
definir para definir esse evento comece o cursor sobre o
evento realmente aconteça. Vamos em frente e criar
esses projetos de controle de jogador. Então, de volta aqui em
nosso editor de níveis, vou criar
uma pasta totalmente nova para abrigar os projetos do
controlador do jogador. Então, vou clicar com o botão direito do mouse
na minha pasta de scripts. Vamos
criar uma nova pasta. E vou
chamar essa estrutura porque vamos adicionar alguns Blueprints do tipo de trabalho de quadro mais tarde na estrutura do
curso. Planos gráficos são alguns projetos de alto
nível para determinar as coisas sobre todo o
seu projeto. E aqui dentro vou direito do mouse na classe Blueprint. E um dos mais comuns é um projeto de
controlador de jogador. Ele controla um peão usado pelo jogador. Essa é
a descrição lá. E vamos em frente
e criar isso. Vou chamar isso de controlador de jogador de
sublinhado da BP. Vamos clicar duas vezes
nesse cara para abri-lo. Não muito aqui, no
entanto, na classe, o botão padrão da classe
com
o selecionado no painel Detalhes vem sob esta seção da interface do mouse. Essa é a parte realmente
importante. Uma coisa que você quer
ter certeza de fazer é mostrar o cursor do mouse
marcando esta caixa, vamos garantir
que o cursor do mouse que estou
acenando agora esteja presente
a tela. E a outra coisa importante que
você precisa definir aqui é ativar eventos sobre o mouse. Isso é fundamental para que esse
cursor sobre os eventos aconteçam. Certifique-se de nos
compilar e salvar. Podemos ir em frente e
fechar daqui, mas ainda não terminamos. Criamos esse projeto de
controlador de jogador, mas não dissemos ao nosso projeto para usar esse esquema de
controlador de jogador. Então, saindo daqui, volte para o seu editor de nível
principal. Você pode entrar em
Configurações, configurações do projeto e na seção de mapas
e modos, temos essa classe de
controlador de jogador. Queremos definir isso para o controlador bp player do cliente que acabamos de criar. Ao fazer isso, estamos contando ao
nosso projeto aqui que
criamos para usar essa classe de controlador de
jogador. E aquela classe de
controlador de jogador. Lembre-se, esses eventos de
passar o mouse estão ativados? Ótimo. Agora podemos voltar
ao nosso nível.
Vamos em frente e jogar. E você pode ver que meu
cursor está presente
na tela e ficou verde
quase imediatamente aqui. Deixe-me ir em frente e jogar. Ok, não é verde. Devo ter pesado meu
mouse sobre ele imediatamente. Então, deixe-me clicar com o botão direito do mouse
e algum espaço aqui. Essa esfera é aquela cor
esbranquiçada e
assim que eu passo o mouse sobre
ela, bum, fica verde. Agora, voltando ao nosso projeto de eventos do mouse
bp, você pode ver como eu poderia estender essa funcionalidade
para reproduzir um som 2D, uma espécie de som de confirmação quando começo a passar o mouse
sobre a esfera. Mas eu não estou fazendo nada quando terminei essa sobreposição
da esfera. Vamos lidar com esses
eventos no próximo vídeo. Tudo bem, eu quero
mostrar mais um exemplo aqui antes de
terminarmos este vídeo, vamos fazer o
próximo exemplo dentro do nosso bp, um ThirdPersonCharacter
Blueprint. Então eu vou pular lá novamente. Você pode encontrar isso em projetos
de terceira pessoa. Dentro do nosso
ThirdPersonCharacter. Vamos definir o material
para o nosso personagem quando
começarmos a passar o mouse sobre ele. Agora, a razão pela qual
vou mostrar isso é para mostrar um parâmetro
que você precisará definir
aqui
para fazer com que o cursor
sobre os eventos funcionem . Então, o que eu quero fazer é quando estou passando o mouse sobre
esse componente da cápsula, que é essa cápsula invisível encapsulando nosso caráter. Quer que algo aconteça. Vamos mudar a malha, que é o material,
se você quiser, a cor, a malha da cor
da nossa, do nosso manequim aqui. Vamos para
o gráfico de eventos. E com esse componente Capsule selecionado, vou clicar com
o botão direito do mouse. Vamos adicionar eventos,
começar com o cursor sobre. Ele adicionará esse
evento ao meu Gráfico de Eventos. Então eu vou
arrastar minha malha que é todo esse manequim, se você quiser, arraste isso para dentro. E então eu vou
arrastar isso e digitar um material de conjuntos. E eu vou fazer com
que nosso material mude para, eu vou mudar
para verde
também , aquela cor desagradável. Muito bom. Agora, vou em frente e compilar isso, salvar e jogar. E agora você pode ver quando
eu passo o mouse sobre minha esfera, sim, isso muda de verde. Você esperaria o
mesmo quando eu
passar o mouse sobre meu manequim aqui também, mas não parece estar
funcionando o que está acontecendo aqui? Bem, se você quer
fazer algo assim, o que precisamos fazer é
voltar aos componentes
da cápsula. E nas configurações de colisão, queremos expandir nossas predefinições de
colisão aqui. Predefinições de colisão bem ali, atualmente
está definido para penhorar. Vamos mudar
isso para personalizado. E vamos permitir que nosso canal de
visibilidade
aqui seja bloqueado. Essencialmente, esses eventos de
passar o mouse verificam se a visibilidade está sendo bloqueada e se
está sendo bloqueada, isso vai disparar
agora, estamos ignorando isso. É assim que estamos
detectando se esse evento de
passar o mouse está acontecendo, acontecendo. Está fazendo uma visibilidade
traçada no mundo. Agora mesmo. É apenas ignorar que,
se definirmos isso para bloquear, ele reconhecerá que sim, esse traço atingiu algo, neste caso, o Componente
Cápsula. Vamos em frente e
mudar esse material. Tudo bem, vamos compilar
isso e salvar mais uma vez, clicando em play aqui na esfera fica verde
e agora olhe para isso. Minha malha também fica verde. Por que não a coisa toda? Bem, a razão pela qual a coisa
toda não está ficando verde é
porque se selecionarmos nossa malha aqui
no painel Componentes e
viermos em Materiais, eu só estou mudando
esse elemento é 0. Não vou mudar
o elemento um, que está determinando a cor de outras partes do nosso manequim. Então, se eu fosse mudar isso
para o índice de elemento um, seria mudar essas partes em
oposição a essas partes. É bom saber. Quais são alguns usos possíveis
para esse tipo de evento? Bem, mais uma vez, você
pode mostrar o prompt do botão, interagir, destruir, interagir com a
coleta. Você pode ter algum tipo de
efeito de destaque de item. Pode ser um som, pode ser uma partícula
que pode ser uma mudança material
como fizemos aqui. Bem pessoal, isso vai
fazer tudo por este. Nos vemos na próxima.
32. Cursor de final de eventos: Nosso objetivo neste vídeo é
continuar nossa exploração dos eventos do cursor do mouse
disparando evento quando terminamos de passar o
mouse sobre um objeto. Isso é extremamente útil para
fazer um objeto retornar ao seu estado normal sempre que
terminamos de verificá-lo, assim como fizemos no último vídeo que passamos o mouse
sobre essa esfera, ela ficou verde, mas quando nós
não passe mais o mouse sobre ele, acabamos com o mouse. Ele não volta ao seu estado normal, mesmo
com nosso personagem. Então, vamos adicionar um cursor
final sobre os eventos para colocar essas coisas de
volta ao seu estado normal. Senhor, no meu
Projeto de Personagem em Terceira Pessoa. E a partir do último vídeo aqui, tudo o que estamos fazendo é
quando estamos passando o mouse sobre nosso
componente de cápsula bem aqui, estamos fazendo com que o material em nossa
malha fique verde, pelo
menos elemento 0
NÃO elemento um. Vamos em frente e
recuar isso. Agora, a maneira como podemos
recuar é simplesmente o botão direito do mouse em nosso componente
cápsula aqui. No evento, temos esse cursor
final sobre. Vamos adicionar isso ao nosso gráfico. E eu posso simplesmente copiar este
nó aqui, controle C, controle V. Podemos usar a mesma referência de malha aqui
para definir isso como nosso alvo. E estamos afetando o
elemento 0 bem aqui. Vamos afetar o
elemento 0 aqui embaixo. No entanto, precisamos mudar o material de volta
para o que era. E qual era esse material mais
uma vez, bem, era como MI Quinn. E podemos pular para
isso clicando aqui
mesmo navegando até lá
no Navegador de conteúdo. Diz MI Queen. Ele está localizado nesta série
de pastas com os ativos de instância
material selecionados aqui
em nosso
ThirdPersonCharacter. E verifique se você
selecionou isso. Podemos simplesmente clicar
nesta seta aqui para encaixá-la sob
o material. Vamos compilar. Esse roteiro está parecendo bom. Salve também. Clique em Reproduzir. E agora, quando eu passo o mouse, nosso personagem fica verde, pelo
menos nessas
áreas onde os elementos 0 estão afetando nossa malha aqui. E quando eu tiro o mouse
sobre isso, o coloca de volta. Legal. Vamos fazer isso com nossa esfera de eventos bp
mouse também. Saltando para o nosso gráfico de eventos aqui, estamos fazendo algo
quando
começamos rapidamente sobre essa esfera. Então, vamos selecionar nossa esfera. Vamos clicar com o botão direito do mouse aqui
e em algum espaço vazio nos eventos para finalizar o cursor. E eu farei o mesmo aqui. Controle C para copiar, controle V para colar. Podemos usar a mesma referência de
esfera, ou você pode adicionar uma
nova referência de esfera, apenas mostrando várias
maneiras de fazer algo. Ambos têm como alvo o
mesmo índice de elemento. Este tem apenas
um índice de elemento para
os elementos materiais 0. E está usando esse material de formas
básicas. Eu posso procurá-lo aqui, ou eu poderia fazer o
que fiz antes dessa hora, vamos simplesmente pesquisar por ele clicando nesta seta
suspensa. Digite formas básicas, material de forma
básica. E vamos tentar isso, compilar, salvar e jogar. E eu também superei a
esfera fica verde. Na verdade, vamos mostrar esse
roteiro disparando aqui. Ele fica verde, fica branco, fica verde fica branco, e você pode ver esses
eventos disparando também. Coisas bem simples. Use-o em conjunto com o
evento start cursor over. E mais uma vez,
para fazer com que qualquer desses eventos de cursor sobre
eventos aconteça, ou aqueles que passem por cima de eventos. Você tem que definir
essas
configurações nos projetos do
controle do jogador para aceitar esses eventos de
passar o mouse, pessoal, eu farei
tudo por este. Nos vemos na próxima.
33. Evento em clique: Bem-vindos de volta a todos. Bem, nos últimos dois vídeos, mostramos como configurar um projeto de controle do player para detectar quando estamos passando o
mouse sobre algo. E então o oposto disso,
que é acabar passando o mouse
sobre alguma coisa. Vamos dar um passo adiante
nos próximos dois vídeos aqui para detectar quando
clicamos em algo, bem
como quando temos
um lançamento que clique. Vamos começar aqui dentro
dos nossos eventos bp mouse. E o que queremos fazer
é detectar quando clicamos
nesta esfera. Então, para fazer isso, podemos clicar com o botão direito do mouse em nosso componente
sphere aqui. E em nosso
pequeno menu suspenso Adicionar evento aqui, posso adicionar um evento ao clicar. Essa é uma maneira de fazer isso. Ou, alternativamente, com
esses componentes selecionados. Na parte inferior
do painel Detalhes, está nossa lista de
eventos disponíveis para esse componente. Vou clicar aqui neste botão de adição para
o evento OnClick. Isso nos levará ao Gráfico
de Eventos
e adicionará esse evento ao nosso gráfico. Então, vamos criar
um roteiro muito básico aqui. O que eu quero fazer é falar com nossos componentes de
esfera para que eu possa arrastar isso para dentro ou
arrastar isso aqui embaixo. Qualquer um serve, eu
vou conseguir. E eu quero definir a escala mundial desse
objeto quando clico nele. No entanto, não
quero definir isso para um número difícil e rápido. Eu quero fazer um pouco
de matemática muito básica. Então, o que eu vou fazer
é me arrastar para fora disso. Eu vou obter sua escala mundial
atual aqui digitando e apenas
obter a escala mundial. Isso me dará sua escala mundial
atual, que se eu selecionar
minha esfera aqui, A escala mundial
disso é atualmente 111. E eu quero fazer com que
toda vez que eu clicar nisso, eu simplesmente vou adicionar
um pouco a ele. Então, arrastando para fora do valor de
retorno aqui, use esse botão de adição
para adicionar um nó de adição. E vamos simplesmente
adicionar 0,1 nas dimensões x, y e z, tornando isso um pouco maior toda
vez que você clicar nele. Então, na primeira vez que
você clicar nele, vamos
mirar em nossa esfera. Vamos definir
nossa escala mundial. Ele vai de um
para 1.1 em toda a linha, depois clicando nele novamente, ele definirá para 1.2,
et cetera, et cetera. Vamos compilar o
script e salvá-lo. E tudo isso parece
bom, no entanto, você verá que quando eu
clicar em Reproduzir aqui e depurando esse objeto de
eventos do mouse aqui. Eu posso ir em frente e
destacá-lo e ele fica verde. No entanto, quando eu estou
clicando nele, nada parece acontecer. Agora, a razão pela qual nada está acontecendo aqui é porque
eu preciso cavar de
volta no controle do meu player e marcar uma caixa que
permite eventos de clique. Então, se você esqueceu qual era o
esquema do
seu controlador de player, nós o tínhamos em nossa pasta
framework. Clique
duas vezes nele para abri-lo. E dentro daqui, com
um botão de padrões de classe selecionado, vem sob a seção de interface do
mouse. E, assim como antes, quando
ativamos eventos de mouseover, precisamos habilitar eventos de clique. Agora, uma vez que fazemos isso, observe isso aqui, as teclas de eventos de clique. Então, estamos checando isso. Sim, podemos reconhecer eventos de
clique. E abaixo, podemos definir o que é registrado como um evento de clique. Por padrão, ele
definirá o botão esquerdo do mouse, mas você pode clicar aqui. Você pode clicar lá várias vezes para adicionar chaves diferentes. Então, vou
deletar isso porque
só quero o botão esquerdo do mouse. Então isso vai funcionar. Isso ativará o botão
esquerdo do mouse. Ele se registrará, isso
é um evento de clique. Também vale a pena notar aqui
que, abaixo, temos um
canal de rastreamento de cliques padrão e ele é
definido ao longo do canal
Visibility. Vamos voltar aos nossos eventos
bp mouse. E se eu selecionar minha esfera aqui e olhar para
o painel Detalhes, fique sob a seção de
colisão. Você pode ver isso se eu estiver
em Predefinições de colisão, que está definido para bloquear todas as dinâmicas para esse componente
específico. Abaixo, meu canal de rastreamento, para o canal Visibility nomeado ou o canal de rastreamento chamado visibility
está definido como block. Isso é importante porque , desde que esteja configurado para bloquear, ele poderá reconhecer um evento de clique. Também voltando ao meu controlador
bp player, mostra
que a
distância de rastreamento para isso é de 100 mil unidades irreais. Então, a maneira como funciona é se eu clicar aqui no meu mundo, assim, esse objeto está a menos de
100 mil unidades irreais do lugar em que estou
clicando na tela. Então, ele registrará
isso como um evento de clique. Se for mais do que
isso, não o registrará. Então, vamos dar uma jogada aqui. Vou voltar
aos eventos do BP Mouse que possamos ver isso disparando, clicando em play e
colocando isso aqui embaixo. Então, é
reconhecê-los passando o mouse sobre. Assim que eu clico, ele
fica um pouco maior. Clicando novamente, um
pouco maior, um pouco maior, um
pouco maior, um pouco maior. Então aí está. Para permitir que este evento onclick funcione dentro do seu controlador
bp player, você precisa ter
ativado os eventos de clique. E então também disse
pelo menos uma chave de evento de clique. Pessoal, isso fará
tudo por esse. Nos vemos na próxima.
34. Evento lançado: Bem-vindos de volta a todos. Bem, esse é
o companheiro do vídeo anterior. Fizemos isso no último
vídeo que, uma vez que clicamos em nosso
projeto de eventos do mouse bp aqui, a esfera, estamos
tornando-a cada vez maior. Vamos
mudar
um pouco nosso roteiro e
vamos fazer algo acontecer quando
soltarmos nosso clique do mouse. Então, fazemos algo
acontecer quando
clicamos com o botão esquerdo
do mouse para baixo. Mas quando levantamos isso, queremos que
algo mais aconteça. Vamos voltar aos
nossos eventos bp mouse. Atualmente, eu tenho isso para que,
assim que clico na esfera, ela fique um pouco maior. Vou excluir esses dois nós e
vou simplificar um pouco
esse script aqui. Vou apertar o Controle C e Controle V para duplicar isso. E o que eu quero fazer é
também mirar na esfera. No entanto, quero adicionar
eventos não lançados, então vou clicar com o botão direito do mouse
na minha esfera no evento. E no lançamento, isso vai
disparar mais uma vez. Depois de levantar o botão esquerdo
do mouse, clique aqui. Vamos fazer com que,
quando clicarmos em nossa esfera, definamos
o tamanho para
dois em toda a linha, o
dobro do tamanho. E quando o lançarmos,
ele será definido para ser
um em todos os aspectos. E eu vou mover isso para
o canto superior esquerdo aqui, e vamos compilar isso. Certifique-se de que o roteiro tenha uma boa aparência. Vamos em frente e jogar isso. E você pode ver que quando
eu clico, ele fica grande. Assim que eu soltar, ele
volta ao seu tamanho normal. Grande, pequeno, clique, solte. Coisas bem simples. A outra coisa que
vou colocar aqui é no controle do seu jogador bp. Desde que sob os padrões da classe você
tenha habilitado eventos de clique, desde que isso esteja marcado e você tenha uma chave de evento de
clique de algum tipo que permita que
o evento onclick funcione, bem como o
evento de lançamento para funcionar. Então, uma espécie de dois por um lá. Tudo bem pessoal, isso vai
fazer tudo por este. Vejo você na próxima.
35. Evento: Bem-vindos de volta a todos. sucesso do evento é o
tópico deste vídeo e este é um
evento super importante para se conhecer porque a colisão
entre os atores está acontecendo em todos os tipos
de jogos o tempo todo. Imagine em um jogo de tiro, você atira uma bala, bate em uma parede. Você vê um pouco de
poeira voar e você vê uma bala D cal deixada
naquele ponto de impacto. Ou imagine que você está
planejando um jogo de corrida. Você bate em outro carro e
vê algumas faíscas voando. Essa é uma dica de evento saindo nos
bastidores e
fazendo essas faíscas voarem. decalques de bala apareceram
naquele ponto na parede. Tudo bem, vamos explorar como
esse evento pode ser usado. Agora, vou usar esse
lugar de ator de cubo no meu nível, ele é chamado de cubo. É um ator de malha estática. Você pode colocar qualquer ator de malha
estática em seu nível para verificar o que
estamos prestes a conferir. Mas se você quiser jogar junto
em casa, eu fui bem aqui, fiquei sob formas e eu
tenho meu cubo bem ali. Com isso selecionado,
vou
pular para o meu Level Blueprint. E em algum espaço vazio, vou
clicar com o botão direito do mouse e
vamos adicionar um evento
para esse ator. Selecionamos entrar na
seção de colisão. E aqui temos
acréscimos de actores. Assim como nossos eventos de sobreposição. Pode nos dizer quem foi o outro ator que
neste caso nos atingiu. Vamos verificar para
ver, neste caso, se é o
personagem do jogador que nos atingiu. Então, vamos clicar com o botão direito do mouse
e
digitar algum espaço vazio , obter o personagem do jogador. Vamos ver
se o outro ator é igual ao personagem do
jogador. Ou seja, eles são
a mesma coisa? É o
personagem do jogador que nos atingiu? Essa é uma maneira de
fazer essa verificação para
ver se o personagem do jogador, o outro ator que nos atingiu. Se eles forem iguais, então
vamos sair daqui,
trazer um nó de ramificação. E se é verdade que o personagem do jogador foi o outro ator que nos atingiu. Se isso for verdade, vamos nos arrastar daqui
e digitar o
som toca para D. Esse é um som
não localizado, e eu farei minha boa e
velha explosão. Q, porque isso
é muito distinto. Isso é algo que aconteceu. Além disso, o que
vou fazer é destruir essa malha. Então, vou clicar com o botão direito do mouse
e algum espaço aqui. Vamos criar uma
referência para nossa fila aqui. Arraste para fora dele e
digite Destroy Actor. Tudo bem, vamos
em frente e compilar isso para garantir que nosso
script esteja com boa aparência. marca de seleção verde diz que sim, é. E então eu vou seguir
em frente e clicar em jogar aqui. E assim você pode ver o
script disparando acima. Vamos colocar nosso jogador
naquele cubo. Aqui vamos nós. Bam. Agora, neste momento, vale a pena desacelerar um pouco para explicar como essa
colisão foi detectada. Como isso funcionou? Por que meu personagem
não passou direto por aquele cubo? Bem, para começar, vamos verificar nosso projeto de
personagem em terceira pessoa. Eu tenho essa abertura aqui. E eu tenho o
componente da cápsula selecionado. Todos os outros componentes
estão ligados a isso. Esse é o componente invisível em
torno do meu personagem aqui. E se eu olhar
no painel Detalhes
na seção de colisão, atualmente
tenho minhas
Predefinições de colisão definidas como Personalizadas. E você pode ver
como a colisão aqui está configurada para
bloquear tudo, todos os diferentes tipos de objetos. Agora, que tipo de
objetos existem? Bem, esse personagem em
terceira pessoa em particular é um tipo de objeto peão
listado sob o tipo de objeto. E este lago está configurado para
bloquear objetos estáticos do
mundo, objetos dinâmicos do mundo, outras lagoas e todas essas
outras coisas aqui. Agora vamos comparar isso com
o que vemos em nosso cubo. Agora eu tenho meu cubo
selecionado aqui
no próprio nível que
é uma instância de cubo. Essa instância de cubo é composta por componentes
de malha estática e esse é o Componente
de malha estática. Se você selecionar isso, é aí
que a
malha do tubo real é encaixada. Role aqui embaixo e
veja as configurações de colisão. predefinição de colisão aqui está
atualmente definida como padrão, então não consigo realmente detalhar e ver todas essas outras configurações. No entanto, se eu fosse alterar isso para personalizado apenas momentaneamente, isso iria expor a configuração atual da colisão para este cubo. Você pode ver que o tipo de
objeto listado para este cubo é um tipo de objeto
estático mundial. Agora, isso está configurado
para bloquear um peão, assim como nosso
ThirdPersonCharacter, o peão está configurado para bloquear um objeto
estático do mundo também. encurtar a história,
eles devem colidir uns
com os outros. Uma coisa não vai
passar por outra. Agora, se eu fosse
mudar meu cubo aqui. Ignorar colisões
com um peão. Lembre-se de que meu
ThirdPersonCharacter está configurado como um tipo de objeto peão. Vamos definir
isso momentaneamente para ignorar as lagoas. Veja o que acontece agora. Tente passar meu peão, meu personagem por isso
e nada acontece. Fica um pouco
estranho com a câmera. Mas, para encurtar a história, que no
evento de sucesso do ator nunca ocorre. Deixe-me ir em frente e mudar
isso aqui para bloquear. E isso mudará a colisão, apresentará de volta ao padrão. Tudo bem, agora vamos nos aprofundar um pouco mais aqui, porque
há algumas nuances que você deve saber sobre o trabalho em madeira
com este evento. Vamos clicar com o botão direito do mouse
em algum espaço vazio aqui estou na pasta de visão geral do
script de conteúdo. E eu quero criar um ator de projeto de classe
preciso, eventos de sublinhado da
BP. Hit é o que eu vou chamar isso. E vou clicar duas vezes
sobre isso para abri-lo. E vou adicionar
três componentes aqui. Vou adicionar um cubo. Vou ampliar aqui atrás. Vou adicionar uma esfera, vou movê-la
para a direita um pouco aqui também. E vou adicionar
rolagem para baixo. Vamos adicionar Claro, um cilindro. Tudo bem, agora não
importa quais atores você tem. Você se apegou a outros. Se eles estão apegados ou não. Isso realmente não importa para os propósitos deste vídeo, o que eu quero chegar, no entanto, é que o Gráfico de Eventos
excluirá esses eventos e, em seguida,
algum espaço
vazio mostrará como você
pode adicionar hit ao evento. A primeira maneira, clique com o botão direito
do mouse no hit do evento. Isso fará com que você seja atingido pelo evento. Alternativamente. Outra maneira de
verificar quais eventos estão disponíveis em um
determinado blueprint é no painel
Meu Blueprint, na seção
de funções. Se você estiver sob a substituição, desça bem
aqui, selecione esta opção. Ele tem uma lista completa
de eventos disponíveis para você para este
ator de blueprint, incluindo o sucesso do evento. Agora, tudo isso é um
pouco enganador, pelo
menos achei
confuso quando entrei pela primeira vez no script de
blueprints, porque na área de
funções, você pode encontrar eventos diferentes, pelo
menos achei
confuso quando entrei
pela primeira vez no script de
blueprints,
porque na área de
funções,
você pode encontrar eventos diferentes,
acho que com o significado deles
aqui está qualquer coisa que você adiciona além desses vários eventos. Essa é a funcionalidade
essencialmente que você está adicionando para quando você acerta
algo neste blueprint. Tudo bem? Então, o que eu quero
mostrar aqui é arrastar o tipo na string impressa. E queremos encontrar a
outra coisa que nos atingiu. Então, eu vou arrastar para
fora daqui e digitar get display name. A razão pela qual estou fazendo isso é para mostrar que
esses hits
de eventos específicos serão
acionados se atingirmos qualquer
componente que adicionamos, não
importa qual deles. Então, vamos em frente e jogar aqui. Também definirei meus objetos de depuração. Bem, em primeiro lugar, eu
tenho que adicionar isso ao meu doador de nível. Isso
seria útil. Vou adicionar isso ao meu nível, arraste e solte aqui
e gire-o um pouco. Lá vamos nós. Vá em frente e jogue. Nosso objeto de depuração é sets. E agora, quando eu acertar qualquer um
desses componentes
que vai disparar, isso vai disparar. E então eu vou disparar. Não importava qual
componente eu atingi, o hit do evento disparou e você
pode
vê-lo disparando várias vezes. O que é algo a se estar
ciente, porque em muitos casos você não quer que ele dispare
várias vezes assim. Para remediar isso, você poderia adicionar um nó devido uma vez no meio aqui, de modo que
na primeira vez que você o acertar,
ele só o faça uma vez. Mas para chegar ao nosso próximo
ponto aqui é que você pode adicionar um hit de evento ao
atingir um componente específico. Vou selecionar
meu cubo aqui. E se eu clicar com o botão direito do mouse, posso adicionar um evento, adicionar
cabeçalhos de componentes. Então, isso no acerto é específico
para acertar apenas este cubo. Deixe-me arrastar para fora daqui e
apenas digitar a string impressa. E eu
vou simplesmente colocá-lo na fila de palavras quando
atingirmos
o Q. Então, emoldurando meu
script assim, eu vou clicar em play mais uma vez. Agora você pode ver que
quando eu acerto este cubo, esses
dois eventos
estão disparando. No entanto, se eu apertar
ajustar a esfera, apenas o
hit do evento principal será disparado. Não que
os componentes estranhos sejam atingidos porque hit do componente é
específico para esse cubo. Agora, uma
nuance muito importante para entender sobre a
ocorrência de eventos é o que acontece se você tiver objetos físicos
em seu nível. E com isso, estou falando sobre um objeto que pode ser
chutado ou respeitar a
queda da gravidade, etc. Deixe-me ir em frente e clicar em reproduzir aqui e
mostrar o que quero dizer. Você vê aquela cadeira caindo
no chão, que é um objeto de física. Agora, eles são muito
simples de configurar. Se você tiver uma cadeira, alguma outra
malha estática no seu nível, qualquer malha estática servirá. Foi aqui
que encontrei essa cadeira no meu
conteúdo inicial no painel Detalhes. Se eu selecionar minha instância de cadeira, venha sob o componente
de malha estática, mas entre na seção de
física. Eu configurei isso para
simular a física. Agora há um monte de
propriedades que você pode
configurar se um objeto
simular física. Mas assim que você
marcar essa caixa, isso é considerado
um objeto físico. Se eu entrar no sucesso do meu evento BP, você viu aquela cadeira atingir esse projeto de classe de
ator. Observe que, quando clico em Reproduzir, nenhum desses eventos
está sendo acionado. Eventos de kit sempre serão acionados se o movimento
do personagem estiver desencadeando o golpe, esses eventos de acerto não serão acionados se um
objeto físico o atingir. A menos que o ator ou
que deseja detectar um acerto tenha uma
caixa de seleção específica marcada. Então, vamos em frente e fazer isso. Vou entrar
em meus componentes,
meu componente cubo dentro
do evento BP e mais no painel Detalhes
sob a seção de colisão, o que estou procurando é que a
Simulação gera eventos de sucesso. Se eu marcar essa caixa
e clicar em Reproduzir. Você pode ver agora que esses dois
eventos foram acionados. Agora, o que acontece se eu
arrastar esta cadeira para cima,
digamos, o cilindro e
depois olhar para cima do cilindro.
Em seguida, clique em play. Esses eventos não disparam. E isso porque eu
teria que selecionar meu cilindro e fazer
a mesma coisa aqui. Eu precisaria
marcar esta caixa para simulação, gera eventos de
sucesso. nuance muito importante para entender seus, evento
deles atingiu o nariz. Um dos eventos mais populares usados em todos os nossos scripts de
blueprint. Isso serve para oferecer este. Vejo você na próxima.
36. Eventual de danos: Olá, olá. Nosso objetivo neste vídeo
é começar a explorar alguns dos eventos de dano
disponíveis no unreal. Agora, o dano é obviamente
uma grande parte de muitos jogos, e é bom
saber que o unreal já tem
funções e
eventos existentes dentro do script de
blueprints para ajudar a implementar
esses conceitos. Vamos explorar qualquer
evento danificado primeiro e depois
ramificar a partir daí. Tudo bem, o
ThirdPersonCharacter será a
estrela deste vídeo. Então, vá até
esse diretório no Navegador de conteúdo ou na gaveta de conteúdo. Clique duas vezes
nele para abri-lo. Vamos começar
adicionando uma variável. Vamos adicionar
uma variável de saúde. Então, venha sob variáveis plus. E vamos
adicionar uma nova variável chamada
simplesmente de saúde. Vamos deixá-lo
do tipo float. Pode ser um número inteiro porque a
saúde às vezes pode ser representada em números inteiros oposição a números decimais. Mas vamos com um tipo de
flutuador lá. Vamos compilá-lo e, em seguida,
dar-lhe um valor padrão de 100. Esse é um bom valor redondo. Agora, enquanto o irreal
tem alguns conceitos e eventos relacionados
a danos incorporados nele. Não tem nenhum
conceito de saúde. Pelo menos a partir da
gravação de hoje embutida no irreal. Você tem que criar uma variável de saúde dentro do projeto do
seu personagem, e então você pode lidar
com ela a partir daí usando os vários eventos de dano. Tudo bem, com isso
criado, vamos adicionar um evento, qualquer dano. Algumas maneiras de fazer isso. Você pode clicar com o
botão direito do mouse em qualquer dano. Você pode encontrar lá. Como alternativa, você pode encontrá-lo na seção de
funções
do painel Meu Blueprint, no
menu suspenso de substituição , há
eventos, qualquer dano. Tudo bem, com esses eventos adicionados, queremos modificar nossa
variável de saúde de alguma forma. Então é assim que isso funciona. Vamos em frente e arrastar nossa variável de
saúde para o gráfico. Nós vamos buscá-lo. Quando esse evento é acionado, ele pode gerar
quanto dano foi causado. Agora o que queremos fazer aqui é
pegar nossa variável de saúde. Vamos arrastar um aqui, digitar o símbolo de menos que
queremos subtrair. Então, vamos pegar a saúde do
nosso personagem
e subtrair nossa saúde
pela quantidade de dano que foi causado. Depois que esse
cálculo estiver concluído, atualizaremos
nossa variável de saúde. A maneira como podemos fazer isso é
arrastar e soltar isso
diretamente no
pino de saída e configurá-lo. Então, estamos pegando nossa saúde, subtraindo a
quantidade de dano dela e definindo esse é o
nosso novo valor de saúde. Muito simples e
direto. Então o que vamos fazer é nos
arrastar para fora disso e trazer um sinal de menor ou igual a. Vamos dizer que se isso
for menor ou igual a 0, então vamos ramificar. Se for verdade que somos
menores ou iguais a 0, nossa saúde cai
para 0 ou abaixo, então vamos
destruir o ator. Nesse caso, o
alvo somos nós mesmos. Vamos destruir
essa coisa toda. Agora, antes de vincular isso, vou simplesmente entrar sorrateiramente em
um nó de string de impressão aqui. Assim, podemos ver nosso
valor para a saúde sendo arrastado para fora daqui. Vamos digitar a string impressa. E nós vamos assim. E se colocarmos nossa saúde
nisso em string, ele converterá esse valor
flutuante em uma string. Então é isso que isso
está fazendo aqui. Está convertendo um
flutuador em uma string. E vamos compilar
isso, ter certeza de que esse script está pronto
e parece que está. Agora, observe que esse evento ainda
não fará nada
porque não
dissemos a esse ator para ser impactado pelo conceito de
dano de forma alguma. Faremos isso no ano que vem aqui em nosso editor de níveis. E vamos em frente e
adicionar um volume de gatilho. Eu vou fazer isso
vindo
aqui embaixo , colocar o painel de atores. Vou adicionar
uma caixa de gatilho e colocá-la em algum lugar na
frente dos meus jogadores. Ator inicial. Com isso selecionado. Vou definir a
espessura da linha para ser um pouco mais grossa para que eu possa
vê-la no nível. Também vou fazer com que a extensão
da caixa seja 200 por 200 por 200. E também vou rolar para
baixo e desmarcar o
jogo oculto do ator para que possamos vê-lo. Tudo bem, com tudo isso feito, vamos pular para o nosso nível. Blueprint. Vou clicar com o botão direito do mouse
e algum espaço vazio. Vamos adicionar um evento On collision on begin overlap. Vamos verificar se o outro ator que se sobrepôs
a nós era o personagem da terceira
pessoa, não o modo de jogo. O personagem. Se for, o que
vamos fazer aqui, é arrastado para fora
daqui e digite aplicar dano, a-ha, dano
aplicado. Agora, esse dano básico aqui nos
permitirá inserir quanto dano
gostaríamos de ter
causado ao nosso
ThirdPersonCharacter. Então funciona assim. Você decide quanto dano
gostaria de chamar. Vamos dar um certo número de, digamos, 25,5, algo
ridículo assim. É definido aqui e, em seguida,
aqui quando este evento, qualquer dano chamado, ele
produzirá isso aqui. Então você está passando
esse dano. Tudo bem, com tudo isso feito, vamos em frente e
clique em jogar aqui. E eu quero ser meu modelo
de personagem de terceira pessoa. Para que possamos ver esse
script disparar ou não, se estragarmos tudo , Vamos em frente
e clicar em Play. E devemos ver que o valor
danificado é atualizado aqui no
canto superior esquerdo porque estamos imprimindo isso
na tela. Vamos sobrepor isso. E eu não estou vendo isso. E a razão pela qual eu não estou vendo
isso é porque eu esqueci um passo atrás aqui no
meu Level Blueprint, eu esqueci de ter esse ator de dano definido como
o personagem de terceira pessoa. Então, se fizermos isso,
estamos dizendo, Ei, ThirdPersonCharacter,
toda essa função de dano aplicada, dispara isso e
certifique-se de que, ao fazer isso,
você está fazendo com que esse evento seja disparado com
qualquer dano. Portanto, estou chamando essa
função se você definir o ator de dano neste caso
como ThirdPersonCharacter,
isso fará com que esse evento seja acionado por
qualquer dano. Vamos tentar isso mais uma vez. Portanto, você deve ver esse valor de
dano atualizado aqui assim que
isso se sobrepor a esse volume de gatilho. E lá vai você,
ele viu o fogo disparar. Se eu fizer isso de novo, você
atualizará a saúde novamente até
que eventualmente eu vá além desse limite e
boom, estou morto. Agora, apenas algumas notas aqui de volta no meu Plano de Nível. Esta classe de tipo de dano. Existe a capacidade de
adicionar dano de fogo, dano raio, dano de água,
todo esse tipo de coisa. No Unreal. Não precisa ser definido
e está além do escopo deste vídeo como
definir esse tipo de coisa. Este ícone de servidor, esse nó indica que esta função só é executada no servidor
para jogos para um jogador, o cliente local é considerado o servidor que
pensei em lançar essas notas. Outra coisa que
vale a pena apontar aqui é que se eu voltar para o meu ThirdPersonCharacter
Blueprint e em vez de subtrair
aqui, eu fiz. Arrastado para fora disso
e digite anúncio. Você não precisa
tratar isso como algo negativo. Você pode realmente usar todo
esse conceito de dano como um meio de cura. Então, em vez de subtrair, você poderia fazer algo assim e adicionar
esse valor. Então, se você quisesse ter
uma espécie de lagoa de cura, você poderia fazer isso também. Uma observação final sobre o
evento de qualquer dano é que ele deve ser usado para danos de propósito
geral, como danos incorridos
pelo seu ambiente, protegidos de fogo ou veneno,
esse tipo de coisa. Tudo bem pessoal,
isso vai servir para oferecer este. Vejo você na próxima.
37. Dano de pontos de eventos: Bem-vindos de volta a todos. Bem, estamos no segundo
dos nossos três eventos de dano. No último, falamos
sobre o evento de qualquer dano. Esse é o seu evento de dano de
propósito geral a ser usado para coisas como danos
ambientais. E este aqui
vamos falar sobre danos nos pontos de evento. Agora, o dano pontual é
danificado para ser causado por armas de projéteis, armas varredura de
acertos,
até mesmo armamento corpo a corpo. E eu vou até adicionar
um quarto aqui. Vamos colocar uma caixa
de física na cabeça de
nossos jogadores para
que ela possa ser usada para algo assim também. Agora, embora funções semelhantes
para evitar qualquer dano, ele tem algumas informações adicionais
que podem ser passadas, o que o torna ideal para aplicações
de
danos no estilo projétil. Agora, no interesse do tempo, eu configurei um monte de coisas antes de gravar este vídeo, mas eu vou te mostrar exatamente o que eu fiz para que você possa jogar junto em casa se você quiser
acompanhar este exemplo. Em primeiro lugar, você coloca
um ator de malha estática em seu nível e o
coloca logo acima de
onde seus
jogadores aparecem nesse ator
Player Start. Estou simplesmente usando um ator de malha
estática em cubos, mas qualquer coisa serve
e você pode pegar um cubo vindo
aqui, cubo de formas. E então, com esse cubo
selecionado no painel Detalhes, selecionei meu componente
de malha estática. E há duas caixas de seleção
que eu tinha certeza de marcar. Uma delas é simular a
física para garantir que essa caixa caia em
cima da cabeça do meu personagem. E também na seção de
colisão,
certifiquei-me de simular a
geração de eventos de acerto. Definindo isso como true também, porque eu quero que isso
gere um evento de sucesso. Agora, com isso selecionado
no meu Plano de Nível, você pode descobrir isso
aqui, abra os Planos de Nível. Em seguida, clique com o botão direito do mouse com esse cubo selecionado
no nível, clique com o botão direito e adiciono
um evento para isso E eu adicionei um
sucesso de ator e isso mostra que esse é o
nome do meu cubo. Agora, o que eu quero fazer
é quando eu acertar algo, eu quero chamar essa função de ponto de
aplicação danificado. Agora você me viu aplicar qualquer
dano no último vídeo. Então, algo semelhante aqui. Esta foi a aplicação de qualquer dano
do vídeo anterior. Estamos fazendo algo
semelhante aqui. Vamos aplicar
um dano pontual. E, assim como antes,
precisamos alimentar esse ator danificado, antes de ser um personagem de
terceira pessoa. Aqui vamos seguir um caminho um
pouco diferente. Vamos nos arrastar para
fora do nosso resultado
de acertos quando nosso
cubo acertar alguma coisa. E tudo o que você precisa fazer é
arrastar até aqui e digitar
break e, em seguida, quebrar
o resultado do hit, você pode extrair todos os tipos
de informações sobre o hit que ocorreu
entre aquele cubo
e o que quer que ele tenha atingido. Uma daquelas coisas que você pode extrair são os atores de sucesso. Então, se você conectar seu
ator principal ao ator de dano, podemos chamar esse evento de dano
pontual no projeto Ator de Sucesso. Chegaremos a isso
em apenas um momento. Além disso, podemos passar de
onde veio esse golpe. O que estou fazendo aqui
é fora da cabeça dele, estamos quebrando o
resultado do acerto e eu estou dizendo, Ei, onde isso ocorreu, a localização x, y e z. E estamos passando isso
para o acerto da direção essencialmente
fornecendo as coordenadas x, y e z onde esse
acerto está ocorrendo. Outra coisa que você
precisa fazer aqui antes de compilar
é
passar essas informações de acerto desses eventos
de acerto para as informações de acerto de sua função de dano de ponto de
aplicação. Com tudo isso feito, você
pode compilar e salvar isso. E isso está tudo muito bem. Mas a próxima coisa que você
precisa fazer é pular
para o nosso Projeto de Personagem de Terceira Pessoa. Mais uma vez,
no Navegador de conteúdo, você pode encontrar seu
ThirdPersonCharacter diretamente neste local. Aqui eu configurei esse dano de ponto de evento e todas as coisas que
eu queria que ocorressem. Então, em primeiro lugar, de onde você consegue
esses pontos de evento danificados? Bem, duas maneiras de clicar
com o botão direito do mouse e digitar dano pontual. Você pode encontrá-lo no menu do botão direito do
mouse. Alternativamente, se você
ainda não adicionou isso ao
seu gráfico, você pode entrar em funções
e, em seguida, na seção de substituição, você pode encontrar a função
danificada do ponto aqui como bem. Ele não está listado
aqui porque já foi adicionado ao meu gráfico. Agora, uma vez que o hit ocorre volta em nosso Level
Blueprint, mais uma vez, estamos passando
o Ator de Sucesso e sabemos que ele vai nos atingir
um ThirdPersonCharacter. Ele chamará esse
ponto de função danificada, o que resultará
no disparo desse evento. E o que estamos dizendo
aqui é que queremos fazer isso apenas uma vez,
porque este é um evento que, à medida que atinge
as coisas em nosso nível, esse cubo pode se unir. Pode atingir nosso
personagem várias vezes. Só queríamos
registrar um hit, então só
vamos além dessa 0,1 vez. O que estou fazendo aqui
é
passar a quantidade de
dano que
especifiquei aqui na minha função de dano de ponto de
aplicação. Aqui, estou apenas dizendo
50,5 só porque esse número aqui é passado junto com o dano do nosso ponto de
evento. Então, estou subtraindo isso de nossa variável de saúde aqui e definindo isso
como nossa nova Saúde. Só estou
imprimindo isso na tela. Então, a última coisa que
estou fazendo aqui é gerar o
emissor no local. Este é o antigo sistema
de partículas aqui, o sistema de partículas em cascata. Só estou usando uma
explosão aqui. E o que estou fazendo
fora do
dano do ponto de evento está bem aqui. Este golpe da direção. Estou passando essa
informação, venho daqui no
local atingido para fornecer o local onde eu quero que
essa explosão ocorra. Que resultados são esses? Agora você viu que o fluxo de
execução logo acima. E aqui estou eu no meu
ThirdPersonCharacter. Vamos fazer isso de novo. Do meu Level Blueprint. Diminua um pouco o zoom. Então, mais uma vez, fique de
olho neste script disparando. Bam. Você pode ver que ele está disparando várias vezes
lá porque está batendo no chão, além de
bater no meu personagem. Agora, se você quisesse usar o
sistema de partículas mais novo em vez desse emissor de geração no local, você poderia excluí-lo. E se você tiver alguma
partícula de Niágara em seu projeto, você pode simplesmente especificar
uma delas aqui. Eu tenho um chuveiro com moedas que não parece tão
legal quanto aquela explosão, mas veja isso aqui. Agora, uma coisa que
ainda não mencionei, mas preciso é que, se
você estiver usando esse dano pontual em uma
instância como eu o estou usando, você quer ter certeza de
que está
usando apenas esse ponto de evento danificado? Olha o que eu fiz lá em cima. Eu desconectei meu
evento qualquer dano. Agora, se eu ligar isso também
e perceber que estou fazendo essa modificação de saúde
aqui para, bem, isso resultará em
ambos os eventos disparando. E você pode ver minha
saúde realmente cair abaixo de uma negativa lá. Quando você está ligando. Se eu aplicar dano pontual, você também estará chamando não apenas dano de ponto de evento, mas
também qualquer dano de evento, porque o dano pontual é
tecnicamente qualquer dano. Portanto, esteja ciente
dessa instância também. Agora observe que, embora esses
eventos sejam semelhantes, a vantagem do dano do ponto de
evento é que a localização pode
ser transmitida. Você tem algumas outras
coisas que você pode passar aqui também, mas esse local é o
principal deles. Tudo bem pessoal, isso vai
fazer tudo por esse. Vejo você na próxima.
38. Dano radial do evento: Então aí está você cuidando da
sua própria vida e, em seguida,
pisa em uma mina terrestre sofre grandes danos. Você voa até a
metade da tela e mergulha até a morte. Evento. Danos radiais são a causa desses casos e dos jogos
Unreal Engine. E o que torna esse
evento único em relação aos dois
eventos de dano anteriores é que ele é perfeito para danos na área
de efeito. Com o dano radial do evento, você pode especificar um ponto de origem onde o dano máximo é aplicado e também um raio no qual a
queda pode ser aplicada. Portanto, quanto mais longe você
estiver da origem, menos danos
ocorrerão ao seu personagem. Tudo bem, então eu configurei
um exemplo antes de gravar este vídeo e vou
explicar
exatamente o que está acontecendo aqui. Acompanhe se
quiser jogar em casa. Então, o que eu fiz aqui foi colocar uma
esfera de gatilho simples no meu nível. Você pode descobrir isso acessando
o painel de atores locais. E na minha aba básica, eu simplesmente coloco o
dedo de Trier no meu nível. Aqui, eu simplesmente defino o raio
da minha esfera como 1.000. E também estou fazendo com que
isso apareça simplesmente
passando por “onde está?” Mais uma vez, a seção
de
renderização , renderização,
renderização. Aí está. Estou escolhendo não ter
esse jogo escondido. Também estou definindo a escala do outdoor do
editor. Esse é um ícone de até cinco, só para deixar isso bem óbvio, para ver a seguir, o que eu fiz foi a
largura que essa atriz selecionou, pulei para o
meu Level Blueprint. E aqui, criei uma referência para que
isso desencadeie o medo
mantendo pressionada a tecla RT
e clicando com o botão esquerdo, desde
que você tenha
selecionado no nível. E então eu saí disso e consegui a localização do ator. Agora, o que estou fazendo aqui é,
ao pressionar a tecla E, você pode ter qualquer combinação de
teclas de sua escolha. Mais uma vez, o Level Blueprints
reconhecerá os eventos de entrada. Estou então gerando e
emitindo neste local, o ponto central da minha esfera, estou apenas aumentando a
explosão para ficar ainda maior. Mais uma vez, se você
não quiser usar os emissores em cascata da velha escola, bem, você pode criar
um sistema de desova no local para os efeitos das
partículas do Niágara. E então esse é o nó principal do qual estamos
falando aqui, aplicando
danos radiais com queda. Agora, observe que se eu
clicar com o botão direito do mouse e algum
espaço vazio e digitar aplicar radial, você pode aplicar um dano radial e também aplicar
dano radial ao cair. Ambos chamaremos de evento
de dano radial que usaremos daqui a pouco. No entanto, eu gosto um
pouco mais deste porque ele tem a capacidade especificar um raio interno e
um raio externo, bem como danos
básicos e, em seguida, danos
mínimos. O que isso permite que você faça
é especificar um intervalo de queda. Então, essencialmente, o que
estou dizendo aqui, deixe-me me livrar
desse raio interno. Mais uma vez, minha esfera tem
1.000 unidades irreais de tamanho. Isso é isso aqui. O raio da esfera é 1.000. De volta aqui, estou dizendo que
o raio interno é de 200 unidades irreais, o raio externo é de 1.000 unidades. O dano no epicentro
da origem e dentro desse raio
interno será de 100. Então, qualquer coisa dentro desse
raio interno sofrerá o máximo de dano
que no raio externo, no limite extremo, eu vou causar
pelo menos um dano. Agora eu coloquei um valor de queda
danificado. Isso determina a rapidez o
dano cairá
do ponto central, a origem aponta para com que o
dano cairá
do ponto central,
a origem aponta para
as bordas. Você pode
contornar esse número para ter
uma queda mais ou menos extrema. E então o resto dessas
entradas são todas opcionais. Mas, para que o sistema funcione, isso é suficiente. Agora, entrando no meu
ThirdPersonCharacter Blueprint, eu configurei as coisas. Assim, meu
evento foi danificado radialmente, que você pode
obter novamente clicando com o botão direito do mouse, digitando radial danificado, aí está o evento dano
radial. Outra forma de obter
esse evento é
na seção de substituições de funções. Você pode encontrar isso
aqui se ainda
não o adicionou ao seu gráfico. E aqui estou eu transmitindo
esse dano recebido. Estou subtraindo isso da
minha variável de saúde e definindo isso como meu
novo valor de saúde. Agora, qual
quantidade de dano é transmitida ao longo da parede, isso
realmente
depende de quanto meu personagem estava no centro desse
dano quando isso ocorreu. Agora, aqui,
também estou imprimindo esse valor de saúde
na tela para que eu possa ver quanta saúde foi realmente subtraída do meu nível
base 100. Então, o que eu também estou fazendo aqui são algumas coisas extras. Isso não é realmente necessário para
ver isso acontecer. Mas o que eu fiz aqui foi
pegar meu componente de cápsula. Acabei de arrastar uma
referência a isso. E eu fiz um conjunto de simulação
da função física aqui. Marque essa caixa. Isso é o
que fará com que meu personagem voe
pelo ar. E é isso que vai
fazer com que ele voe pelo ar, um impulso
radial, impulso no ponto de impacto. Tudo o que estou fazendo aqui é
passar a origem, o ponto central do meu dano
radial aqui, estou passando por esse
gatilho, acionando a localização da esfera
como origem. E é aqui que estou dizendo que
estou enviando um impulso, imagine como uma onda de pulso
invisível. Então, o raio desse impulso
será 1.000. E eu defino a força
que você pode contornar com esses valores em
meio milhão. Agora, de volta ao nosso nível, aqui
você pode ver que o
ator inicial do meu jogador começará fora desse raio. Então, se eu clicasse em
Play e tivesse meu ThirdPersonCharacter
Blueprint agora aberto e eu pressionasse a tecla E. Você pode ver que não estou
causando nenhum dano radial porque meu personagem
não está dentro desse raio. No entanto, quando
eu estiver dentro do alcance, agora observe que mal
estou
entrando nesse raio. Olhe aqui no canto superior esquerdo. Isso vai mostrar
quanta saúde do meu valor inicial de
100 é subtraída. Então,
acho que vou acabar com um valor de 89 ou algo
parecido porque mal estou
aqui, então vou pressionar a tecla E, acabei com 87. Então, quase 13 pontos de vida foram subtraídos por apenas pisar. E
vamos tentar isso. Mais uma vez. Isso, eu vou dar um passo
direto para o meio. Portanto, isso deve causar o
máximo de danos. E se voltarmos
ao nosso mapa de teste, você pode ver que o dano
radial aplicado diminui. Está mostrando que dentro
desse raio interno de 200, eu deveria estar danificando
todos os 100. Então, vamos ver se esse
é de fato o caso. Deixe-me abrir meu plano
de personagem de terceira pessoa. Mais uma vez, toque nesse Like e, no canto superior
esquerdo, ele deve mostrar 0,0. E isso acontece. Assim, você pode ver, como dito, simular a física
e o pulso radial da cabeça. Tudo é para diversão e jogos. Agora, uma última
informação a ser transmitida aqui, assim como o dano pontual. Se você também tiver
algum dano associado. Causar dano radial fará com que qualquer dano acione dois. Então, agora eu deveria estar causando
algum dano ao meu personagem, além de ver
este texto Olá aqui assim que
pressiono a tecla E dentro daqui. Então você pode ver
que Hello apareceu, bem como um pouco de saúde sendo subtraído. Tudo bem, pessoal, há um
evento de dano radial. Vamos recapitular rapidamente os
diferentes eventos de danos. Portanto, qualquer dano é bom para danos
ambientais. Quando você não sofreu danos
em nenhum ponto específico. Isso é ótimo para
atravessar fogo ou gás venenoso,
esse tipo de coisa. O dano pontual é
bom para especificar um determinado local onde o
dano ocorreu. Ótimo para projéteis
atingirem o jogador. O dano radial é bom para
explosões e para especificar um local na origem onde ocorreu
o máximo de dano. E esse tipo de dano pode
cair quanto mais se
afasta da origem. Isso vai acabar com isso. Nos vemos
no próximo vídeo.
39. Evento destruído: Bem-vindos de volta a todos. Eventos destruídos é o tópico
deste vídeo e nosso objetivo
é aprender o que faz com que evento destruído seja
incendiado para um ator e como podemos usar
isso em um roteiro. Para este vídeo, vou usar nosso Level Blueprint aqui. Você pode encontrar isso aqui,
abra o Level Blueprint. E também vou usar nossos desenhos de
personagens em terceira pessoa. Você pode encontrar isso aqui
neste diretório. Também fiz alguns
trabalhos de configuração com antecedência. Se você acompanhar
os vídeos anteriores de
vários nós de aplicação de danos, tudo
isso parecerá
muito familiar para você. No entanto, se você acabou de
assistir a este vídeo, deixe-me mostrar o que
fiz com antecedência na preparação para
exibir o evento destruído. Agora, para começar, coloquei uma caixa de gatilho no meu
nível e tudo o que fiz aqui foi simplesmente aumentar
o tamanho da caixa para
200 por 200 por 200, definir a espessura da minha linha para dez. E também fiz com que,
na seção de renderização, onde
está aquela seção de renderização, mais
uma vez, aí está. Eu disse que o
jogo oculto do ator não deveria ser verificado. Então, com essa
caixa de gatilho selecionada no meu nível, acima do Level
Blueprint, cliquei com o botão direito do mouse. Eu criei um anúncio sobre actor start overlap para aquela caixa de gatilho arrastada do outro ator estamos escalando para nosso
ThirdPersonCharacter para ter certeza que é o ThirdPersonCharacter
sobreposto a nós. E então, se for, vamos aplicar dano
ao nosso personagem de terceira pessoa, estou causando 25 pontos
de dano aqui. Então, no
ThirdPersonCharacter Blueprint, isso
também deve parecer
familiar para você se você o acompanhar junto
com os vídeos anteriores. No caso de qualquer dano
ser causado. E mais uma vez, isso
é chamado quando essa função danificada
aplicada aqui em nosso Level
Blueprint é acionada. Isso, em seguida, dispara. Tudo o que estou fazendo aqui é tomar nossa saúde atual
, que começa aos 100. Vamos subtrair a
quantidade de dano que é fornecida aqui em nossa função de dano aplicada
no Level Blueprint 25. Vamos
subtrair isso da nossa saúde e definir isso como uma nova saúde. E se nossa saúde for menor ou igual a zero, vamos destruir o ator. Agora, essa é a
função importante aqui. Porque quando essa função Destroy
Actor é chamada, evento destruído também é
acionado. Então, se eu fosse jogar agora, isso é o que eu teria. Eu clico em jogar aqui. Deixe-me definir meu personagem
como meus objetos de depuração, abrir minha
janela de jogo
mais uma vez. Aqui no canto superior
esquerdo, você
verá que o
valor da saúde diminui. Lembrete, meu sistema de saúde
não está conectado ao meu
medidor aqui. Poderíamos mudar isso mais tarde. Talvez tenhamos 75, 50. Você está vendo esse evento disparar
acima e depois explodir, nosso personagem é destruído, mas os eventos destruídos
podemos usar ainda mais para fazer outra
coisa acontecer. Então, vamos adicionar o evento destruído, e há algumas maneiras de
adicionarmos esse. Poderíamos clicar com o botão direito do mouse
e algum espaço vazio, eventos
de digitação destruídos. Essa é uma maneira. A segunda forma, é
claro, está
no painel
My Blueprint, na área de funções, você pode substituir eventos, destruir o alvo, aqui
será um ator. E como você pode ver,
nosso Destroy Actor, o alvo está inativo. Então, neste caso, nosso personagem de terceira pessoa,
estamos dizendo:
Ei, destrua a nós mesmos. Portanto, não há saídas aqui. Estamos nos destruindo. Assim que isso for encerrado, faremos uma ligação para este evento para iniciar. Tudo bem, então vamos fazer
algo acontecer aqui. Vamos sair
daqui e digitar emissor de
spawn no local. Mais uma vez, você pode
fazer o sistema de desova em um local que é o sistema de partículas do
Niágara. Eu só vou usar a explosão
da velha escola. Aí vamos nós. E é claro que temos que
fornecer um local para isso. Então, vamos simplesmente clicar com o botão direito
do mouse em algum espaço vazio e digitar get actor location. O alvo é nossa
terceira pessoa. O personagem é a localização. E vamos fazer outra
coisa para acabar com isso. E vamos criar um
ator da sala de aula. Vamos gerar um pouco de fogo, nosso fogo de efeito de projeto. Temos que fornecer
uma transformação de spawn. Então, vou clicar com o botão direito do mouse. Vamos transformar o
ator. Mais uma vez. O alvo é nosso eu. Você é um personagem de terceira pessoa. E, por fim,
vamos sair daqui e imprimir a string. E em vez da coisa das
cordas, olá, digamos algo
como o esteróide D destruído, se eu posso soletrar corretamente. Tudo bem, então, quando sobrepormos
esse volume de gatilho, aplicaremos danos ao nosso
ThirdPersonCharacter. Esse dano
será aplicado ao nosso
valor de saúde aqui, uma vez que nossa saúde seja menor ou igual a zero, e isso é verdade. Vamos
destruir esse ator. Isso fará com que o evento
destruído seja disparado. E então ele vai fazer
todas essas coisas aqui. É sempre uma boa
ideia compilar. Certifique-se de que seu roteiro
esteja pronto para ser usado. Vamos guardar isso e
vamos jogar. E deixe-me realmente mover isso para que você possa ver esse disparo. Aqui vamos nós. 12, que a saúde está diminuindo. Três agora, olhe logo
acima do play Windows. Bem, para que o evento
seja destruído para disparar. Boom. Aí está. Nós geramos aquela explosão
e também geramos aquele fogo com efeito de
projeto. Agora eu gostaria de mostrar mais
um exemplo antes de
encerrarmos este vídeo. E só para mostrar
que o que eu fiz aqui está de volta ao meu nível, adicionei um cone aqui um pouco além dos limites do volume do
meu gatilho. Você pode descobrir isso no painel de atores do
seu lugar aqui. Mas qualquer malha estática
serve se você quiser jogar junto com o cara selecionado. O que eu fiz no meu
Level Blueprint rolar para a
direita, onde você não
podia ver isso
à direita antes. Vou apenas
estender a funcionalidade. Estamos prejudicando nosso jogador. O que eu quero fazer aqui
é trazer isso. Então, além de aplicar
algum dano ao nosso personagem, vou esperar 3 s
na primeira vez que sobrepor essa caixa de gatilho e
vou destruir nosso cone. Recebi uma referência ao meu cone aqui porque, com isso selecionado, se eu segurar a tecla Alt, posso clicar com o botão esquerdo e trazer
uma referência ao meu cone. Então eu estou dizendo, ei, Cone, você é o ator alvo que
eu quero destruir. Agora lá embaixo. Com esse cone também selecionado, você pode clicar com o botão direito do mouse em
algum espaço vazio e dizer, Ei, quando você for destruído. Mais uma vez, vou te mostrar
como consegui isso OnDestroy. Aqui está eu selecionei
esse cone. Eu posso adicionar eventos e,
na seção do jogo, você
pode adicionar destruídos. E se eu selecioná-lo
agora, ele vai me levar
até e dizer,
ei, eu entendi você. Então, o que estou fazendo é
extrair algumas informações
do meu ator destruído. Estou fornecendo esse
ator aqui. Estou dizendo, ei, eu
quero sua transformação. Vamos criar um
exemplo de captação de BP
e, em seguida, vamos tocar um som. Então, isso vai
acontecer na primeira vez que sobrepormos
essa caixa de gatilho. Então, ignorando todo esse dano
ao personagem de terceira pessoa
agora, em 3 s, alguns
destruirão nosso cone, e então esse evento
destruído acontecerá e
teremos esse spawn. Vamos
jogar isso. Vamos compilar isso primeiro. Certifique-se de que esteja bem. Seguindo em frente e planejando aqui, deixe-me definir meu objeto de depuração para ser meu mapa de teste e abrir
minha janela de jogo mais uma vez. Agora, a primeira vez que eu
sobrepor isso em 3 s, aquele cone vai se
transformar na picape. Aí está. Então, alguns usos
para o evento foram destruídos. Você me viu apenas demonstrar
algumas delas agora. O número um seria
gerar uma partícula ou um som em um local
de destruição. O número dois seria
desovar e outros atores, como um banheiro ao
matar um inimigo. Tudo bem, pessoal, isso vai
fazer tudo por esse. Nos vemos no próximo.
40. Eventos personalizados: Eventos personalizados são o
tópico deste vídeo, e esse é um
tópico muito importante porque os eventos personalizados são alguns dos eventos mais usados em todo o script de um plano. Portanto, nosso objetivo neste vídeo
é saber o que são, como são adicionados e
por que são úteis. Agora, um evento personalizado é um
evento que você pode nomear e convocar para que ele seja acionado
sempre que quiser. Tudo bem, então ver para acreditar, vou usar principalmente o
ThirdPersonCharacter Blueprint neste vídeo, mas vou me debruçar um
pouco sobre o Level Blueprint. Então vá em frente e abra essas. Vou começar no ThirdPersonCharacter
Blueprint. E primeiro, precisamos adicionar
um desses eventos personalizados. Bem, como fazemos isso? Clique com o botão direito do mouse e digite um
espaço vazio na palavra personalizado. E na categoria Adicionar
evento, adicionamos um evento personalizado. Agora, no momento em que eu fizer
isso, ele adicionará
eventos ao meu gráfico, mas
me solicitará que eu dê um nome a ele. Vou chamar
isso de adicionar saúde. Agora, se a qualquer momento você
quiser alterar o nome do seu evento personalizado, há duas
maneiras de fazer isso. Você pode simplesmente
clicar duas vezes sobre isso e você poderá alterá-lo aqui. Ou, com esse nó de evento adicionou esse fornecedor do cliente e o
adicionou no painel
Detalhes. Você também pode mudar
o nome dele aqui. Tudo bem, então adicionando saúde, vamos fazer com que
esse evento realmente acrescente um pouco de saúde
sempre que for chamado. Agora, não agora. temos nada que
realmente chame esse evento. Nós cuidaremos
disso daqui a pouco. Mas, para realmente fazer com que
isso faça alguma coisa, vamos incluir nossa variável
de saúde. Eu vou pegar isso. Eu quero arrastar esse
tipo no botão de adição. Vamos adicionar uma
quantia a isso. Vamos adicionar 010. Parece bom. Em seguida, vou arrastar e
soltar minha saúde em cima
dessa saída para que
possamos definir nossa saúde. Então, estamos obtendo nossa saúde, vamos adicionar dez a ela e depois
vamos defini-la. Parece bom até agora. Vamos
imprimir isso na tela também. Então imprima uma string. Se eu pegar essa saída do meu sithealth
e conectá-la à string, obterei um pequeno nó de
conversão para converter um
tipo de dados em outro, um float em uma string que o
imprimirá na minha tela. E então vamos também sair
daqui e digitar o
emissor de spawn no local. Mais uma vez, você pode gerar um sistema, o sistema de
partículas do Niágara. Vou usar a explosão
da velha escola porque gosto de usá-la
para praticamente tudo. É muito visual, certo? Então, vamos desovar
e explodir onde? Bem, vamos encontrar a localização
dos nossos atores aqui. Ainda assim, fatore a localização. O alvo é nós mesmos, o personagem
em terceira pessoa. Vamos inserir isso aqui. E então vamos
tocar um som também. Arraste alguns sons de reprodução. 2d. O som 2D
é aquele que não está em um determinado local. É ótimo
para sons de menu. A propósito, vou compilar,
compilar e ter sucesso. Qualquer um deles fará, tudo bem, compilar e salvar isso. Parece um bom roteiro. Tudo bem, então precisamos de algo que realmente exija que
esse evento aconteça. Então, esse será um exemplo
bastante acadêmico, mas só para facilitar
as coisas aqui,
vou fazer é clicar com o botão direito do mouse
em algum espaço vazio. Você pode colocar uma chave. E eu vou dizer que ao
pressionar uma tecla, vamos nos arrastar para fora disso. E agora, se eu digitar Add
Health, confira isso. Eu tenho um nó que posso adicionar, um nó de função de
chamada chamado addHealth. Então, o que basicamente
vou fazer aqui é, quando pressiono uma tecla, estou ligando para esse evento personalizado chamado
AddHealth seja acionado. Essa é uma conexão sem fio e esse é um dos benefícios de usar eventos personalizados e secretar essas conexões
sem fio. Agora, poderia
facilmente dizer: Ei, com uma chave, faça tudo isso. No entanto, às vezes você
tem scripts muito complicados e quer manter as coisas
boas, limpas e simples. Essa é uma boa maneira de
criar um disparo
sem fio e sem fio, uma
chamada sem fio desse evento. Então, isso chama isso, o que fará com que
todo esse script aconteça. Vamos
compilar e salvar. Vá em frente e jogue aqui. E vou tentar
enquadrar tudo isso. Então assista. Assim que eu pressionar uma tecla, isso fará com que tudo
isso aconteça. Você vai ver
esse emissor ocorrer. Você vai ouvir
um som, etc. Aqui vamos nós. E eu posso continuar fazendo
isso de novo e de novo
e de novo. Então, essas conexões sem fio
são legais e tudo mais, mas esses não são realmente todos os benefícios que você
obtém de eventos personalizados. Com eventos personalizados,
você também pode solicitar esse evento aconteça a
partir de outro plano. Então, vamos continuar e convocar esse evento de dentro
do nosso Level Blueprint. Então, se você esqueceu como
entrar no seu
Plano de Nível a partir de agora, aí está pela 100ª vez. E eu vou clicar com o botão direito do mouse
em algum espaço vazio e vou
trazer o, vamos fazer a tecla sete ou
qualquer outro evento de teclado. Em seguida, vou clicar com o botão direito do mouse
e algum espaço vazio. Vamos pegar o personagem
do jogador. Vamos nos afastar disso. Precisamos disso para transformar em ThirdPersonCharacter. Porque precisamos
fornecer um objeto ao elenco
do ThirdPersonCharacter e isso basta obter o personagem
do jogador. Então, ao fazer isso,
estamos verificando, ei, nosso personagem de jogador
é
o ThirdPersonCharacter? E se for, podemos falar com nosso ThirdPersonCharacter de
alguma forma, forma ou forma. Isso inclui
convocar eventos personalizados. Então, para que isso funcione, você precisa ter
certeza de que compilou seu
ThirdPersonCharacter Blueprint. Muito importante aqui. Depois de compilar isso, agora
você poderá encontrar esse AddHealth em
nosso Level Blueprint. Vamos voltar aqui, arrastar para fora do seu
ThirdPersonCharacter e digitar Add Health. E olha mais uma vez, temos essa vocação da
função na área da saúde. Esse é o mesmo tipo de nó que tínhamos em nosso
ThirdPersonCharacter. alvo de Addhealth é
ThirdPersonCharacter. Em nosso Plano de Nível, meta de
AddHealth é
ThirdPersonCharacter. Tudo bem, compile isso, salve, jogue
e sacuda. Eu posso pressionar uma tecla. E a única chave novamente é adicionar. Alguns estão chamando
esse evento personalizado de dentro do
ThirdPersonCharacter. Mas agora vou
pressionar a tecla sete. E eu tenho meu nível definido
como minha opção de depuração aqui. Então você vai
ver esse fogo acender. Aqui estão sete. Isso também pode ser chamado. Então, esse é um
dos principais benefícios de um evento personalizado
quando você tem uma referência a esse modelo
fornecido,
neste caso, nosso
ThirdPersonCharacter. Você pode então fazer isso
e encontrar aquele evento personalizado. Você pode fazer uma ligação para
esse evento de cliente. Tudo bem, com
isso,
vamos abordar algumas das nuances,
algumas
das outras
coisas que você pode fazer com esses eventos personalizados. Vou voltar ao meu
plano de personagem de terceira pessoa aqui. E o que vou fazer é
sair
dessa pequena caixa vermelha
aqui. O que é isso? Este é um delegado de saída. Então, para que posso usar isso? Bem, vamos dar um exemplo. Vou clicar com o botão direito do mouse
em algum espaço vazio aqui e digitar eventos. Comece a jogar. Eu tinha isso ligado à minha criação do
widget, meus widgets do HUD. Olivia desconecte isso
mantendo pressionada a tecla Alt. Clicando com o botão esquerdo,
vou roubar o evento e começar a jogar rapidamente. Vou trazer
isso até aqui adicionando um evento
personalizado de Saúde. Em seguida, vou me arrastar para
fora disso e digitar definir cronômetro por evento. Ao começar a jogar. Esse é o nosso personagem de terceira pessoa sendo gerado no jogo. Podemos fazer com que algum evento desencadeie qualquer
evento que conectemos a ele. Agora, isso funciona não
apenas para um evento personalizado, mas estou mostrando isso aqui
com um evento personalizado. Isso também pode funcionar para
outros eventos. Você pode ver o evento B em
jogo e outros eventos também
têm esse tipo de
delegado. Então, vou pegar isso, conectá-lo aqui, e vou
definir meu tempo para 5 s. E também vou
configurar isso para ser um loop. Então, agora vamos
entender o que
eu estou acontecendo aqui com
esses eventos personalizados. Eu vou dizer que um
lago está começando a jogar. Vamos chamar
essa função,
essa configuração cronômetro por
evento para acontecer. O que vai acontecer
aqui é que a cada 5 s, esse evento
conectado a essa função de temporizador definido por evento
será acionado. E isso
acontecerá a cada 5 s porque temos essa caixa de seleção em
loop marcada. Então veja isso. Então, vamos compilar isso e jogar. Portanto, nenhum funcionário do evento B
já aconteceu. A cada 5 s. Pode esperar mais 5 s. Então, este evento começa a
ser jogado logo no início. Depois de iniciar meu jogo, meu personagem responde. A partir daí. Você não vai mais ver
esse fogo acender, mas ele continuará funcionando
a cada 5 s,
bam, bam, bam, bam, bam, bam. Tudo bem, agora
você sabe que, com o evento do cliente criado
e adicionado ao seu gráfico, cabe a você
garantir que você ligue para que o
evento do cliente seja acionado. Às vezes, isso pode
ser um pouco irritante quando você está
testando coisas, porque talvez as condições que
você configurou para chamar esse evento personalizado
sejam um pouco complexas. Há algo
que você possa fazer para fins de teste para facilitar o início do
evento do cliente? Bem, com
esse evento personalizado selecionado
no painel Detalhes, você tem uma caixa de seleção do
editor de chamadas. Vá em frente e verifique isso. Esta é uma
etapa muito importante aqui com isso marcado, vá em frente e clique
nesta opção de compilação. Depois de fazer isso,
observe que esse ícone
aqui mesmo em seu evento
personalizado mudará desse ícone de seta para
essa pequena
coisa
que parece no diamante. O que isso vai fazer agora é se voltarmos ao
nosso editor de níveis, quando eu jogar, veremos nosso ThirdPersonCharacter
ser gerado. Estará presente
em nosso outliner. Em seguida, poderei
selecionar isso. E mais no painel Detalhes. Haverá no
botão AddHealth que eu posso clicar manualmente para fazer com que
um evento personalizado seja acionado manualmente. Eu faço isso acontecer. Eu preciso de uma
janela lateral para isso um pouco. Vou clicar em Jogar. Tudo bem, aqui está minha janela de
jogo. Agora, aqui, meu editor principal. Vou ter que diminuir um pouco
isso, desculpe pela falta de espaço. Há em amarelo meu
ThirdPersonCharacter, vou selecionar
aquele gerado nele para
que a
coloração amarela indique. E aqui embaixo
, no painel Detalhes. Se eu fizer uma pesquisa por AddHealth, agora
posso encontrar nos botões do
AddHealth, então acabei de fazer isso,
acabei de configurá-lo. Então, aqui no editor, posso chamar manualmente
esse evento personalizado. Portanto, observe que, quando
eu clicar
nisso, todo o script a
seguir acontecerá, que criará
a explosão no OneNote. Então, se você está
olhando aqui enquanto
clico em Adicionar Saúde,
ele chama esse evento personalizado de bam, bam, bam, bam, bam. Você está vendo essa
saúde melhorar também. Mas é claro que nem tudo isso
é checkout. O que mais podemos fazer
com o evento personalizado com isso selecionado
no painel Detalhes, eu tenho esta seção de entrada. Para que podemos usar isso? Bem, deixe-me clicar neste botão
Plus aqui e mostrar um exemplo rápido. Nós podemos criar uma entrada. Observe como isso acabou de aparecer
em uma nova entrada de parâmetro, e aí está o nome dela. Então, vamos dar um nome a ele. Vamos chamar isso de saúde para adicionar. E você pode mudar o tipo. Observe que eu atualizei o nome
e atualizei aqui. Eu não quero que isso
seja um booleano, então vou mudar
isso para um flutuador. E vou apenas modificar
meu script da seguinte forma. Deixe-me seguir em frente e fazer com que nossa saúde acrescente “Não
vamos cruzar
os fios, certo? Vamos ligar para a AddHealth. Quando ligarmos para o AddHealth, vamos descobrir
quanta saúde queremos adicionar, adicioná-la à nossa saúde
existente e defini-la como nossa nova saúde. Agora, observe que
tudo isso é um pouco confuso, pelo
menos neste estágio porque entrada é
o que isso é chamado. E isso está no lado
direito de um nó. E, como mencionei antes, as
saídas estão no lado
direito de um nó. As entradas estão no lado
esquerdo de um nó. Tudo isso é um
pouco enganador aqui, mas faz sentido se você
rolar até aqui e observar que essa chamada de addHealth desse evento personalizado adicionou uma entrada aqui,
saúde a ser adicionada. Então, ao adicionar essa entrada
ao nosso evento personalizado, você a adicionou como uma entrada sobre a convocação desses eventos
personalizados. Então, vamos mudar isso
para, vamos 25. E agora, se eu continuar,
compile, salve, jogue. Observe que sempre que
eu pressiono uma tecla, isso exigirá que esse evento
personalizado seja acionado. Toda vez que eu faço
isso, vai dizer, ei, adicione 25 pontos de vida à nossa saúde existente e defina
isso como nossa nova saúde. Então, vamos lá. Você pode ver que está aumentando
25% a cada vez. Então, para recapitular aqui rapidamente, por que usar eventos personalizados? Bem, número um, se
você vai chamar um evento personalizado dentro do
Blueprint que você criou, esse evento personalizado,
você pode criar essas conexões sem fio que mantêm as coisas boas,
organizadas e limpo. Mas o principal benefício de um evento personalizado é
criar um em um único plano. Desde que você tenha uma referência a isso,
com um plano, como fazemos aqui em nosso Plano de
Nível, você pode ligar
para esse evento personalizado, que é a
coisa mais poderosa sobre eles. Ou pessoal, que
farão tudo por esse vídeo, nos vemos no próximo.
41. Visão geral de variáveis: Ok, então, com
os eventos no espelho retrovisor, vamos
mudar nossa atenção para o tópico das variáveis e nosso objetivo nesses vídeos
específicos de
aprender , e as variáveis são quando se
trata de programação, ou, no nosso caso, scripts de
projetos. Tudo bem, então o que é
mesmo uma variável? Bem, você pode pensar em
variáveis como contêineres que contêm um tipo
específico de informação. E eu adoro o fato de
que, em irreais, esses recipientes,
essas variáveis têm o formato de uma cápsula. Se você imaginar uma
cápsula
capaz de conter algum tipo de coisa, terá uma ideia do que são as
variáveis. Eles mantêm algo,
neste caso, contêm alguns dados e na verdade, tipos específicos de
dados, dependendo de seus tipos. Agora, esses contêineres,
essas variáveis existem dentro de um projeto
específico. Então, agora eu estou no
meu Level Blueprint. Essas variáveis que
são criadas no meu painel
My Blueprint existem somente nesse modelo específico. Se eu pular até
minha picape de exemplo da BP, esse era um plano de
classe de ator. Eu tenho algumas variáveis aqui, esse som de captação é uma
delas. Eu também tenho uma
variável de segundos Delta. Eles só existem dentro
da minha picape de exemplo da BP. Vamos dar uma olhada em nosso
ThirdPersonCharacter. Existem variáveis
que existem apenas dentro do meu
ThirdPersonCharacter. Agora, esses contêineres, essas
variáveis podem ser criadas. Esses contêineres, essas
variáveis, podem ter um valor padrão atribuído a
eles ou podem estar vazios. E só de dar uma olhada em nosso personagem de terceira pessoa aqui, eu tenho essa
variável de saúde e atualmente ela tem um valor padrão de 100. E esses contêineres podem ter seu conteúdo alterado com o tempo. Seu conteúdo pode ser variado. Como podemos ver aqui, um personagem em terceira pessoa
começa com um valor de saúde de 100. Mas você já viu em vídeos
anteriores modificar essa
variável de saúde para mudar. Não precisa ficar em 100. Se eu sofrer algum dano, ele pode cair para 75, 60, etc. Ou eu posso me recuperar e encontrar meu caminho de volta com saúde
total e 100. Então, onde você pode criar
essas variáveis? Bem, há algumas maneiras diferentes
de fazer
isso no painel My
Blueprint. A maneira número um é simplesmente
clicar neste
botão Adicionar aqui. Lá você pode criar uma variável. Outra forma é
no painel My Blueprint, encontrar a seção de variáveis e clicar neste
botão positivo aqui. Portanto, é importante notar que alguns projetos podem ter variáveis
herdadas. Ou seja, variáveis
que vieram junto com a classe principal da qual
seu plano atual
herda. No entanto, eles não aparecem por padrão aqui no
meu painel de plantas. Você pode expô-los. Então, a maneira de fazer
isso é clicando neste ícone de engrenagem e você obtém esse pequeno menu suspenso, mostrando as variáveis
herdadas. Vá em frente e
clique nessa marca
de seleção que essa
categoria seja exibida. E agora você vê várias
categorias diferentes preenchidas na seção de
variáveis. E você pode expandi-los
simplesmente clicando em qualquer
um desses triângulos. Deixe-me expandir
essa categoria de peões aqui. E agora você pode ver todas as suas diferentes variáveis no painel My Blueprint. É meio chato
clicar em todos eles
individualmente, assim, para ver qual é o valor padrão. Existe uma maneira mais fácil? Bem, é claro que existe. Se eu clicar
no botão de padrões da classe no topo
do meu plano, posso ver todas as variáveis
diferentes que existem para essa
classe principal em caracteres, essa específica de BP ,
Personagem de terceira pessoa. Observe que eu tenho uma
subcategoria de variáveis. E, no
lado direito, ele mostra todas essas mesmas variáveis e mostra todos os
seus valores padrão. Isso é meio útil. botão padrão dessa classe. Observe também que, nas variáveis que criamos no
início do curso, temos a
variável saúde e outros enfeites. Eles pertencem a uma categoria
chamada de padrões. E o WPP HUD estava
na categoria de padrão. Então, se chegarmos aos padrões de nossa
classe, mais uma vez, podemos ver que temos
uma categoria padrão e elas existem
atualmente abaixo dela. Agora, observe que
diferentes classes principais têm quantidades diferentes
de variáveis herdadas. Mas se você clicar nos padrões
dessa classe, você verá todas as
variáveis que podem ser alteradas em um determinado modelo, incluindo aquelas que
você criou e poderá ver todas seus valores padrão
também são muito úteis. Agora, outra coisa que vale a pena
notar aqui é que, embora uma determinada classe possa ter um monte de variáveis
associadas a ela. mesmo acontece com os componentes, então se eu fosse até
lá e selecionasse componente
de movimento do
meu personagem no painel Componentes. Você pode ver que esse componente de
movimento, esse componente de movimentação de personagens, tem muitas variáveis
associadas a ele. Todas essas são variáveis porque seu conteúdo pode ser alterado. Agora, observe que uma linguagem comum que você ou ouve muito
quando se trata variáveis é que você pode obter a variável ou definir a variável. Agora, deixe-me
acessar meu gráfico de eventos rapidamente. E eu simplesmente vou
usar meu produto mais saudável. Se eu clicar com o botão esquerdo e arrastar
isso para o gráfico, estou simplesmente
clicando e arrastando com o botão esquerdo. E eu lancei. Vai dizer: você
quer obter seu valor de saúde ou quer definir
seu valor de saúde? Então, vamos explorá-los. Ao obtê-lo. Podemos dizer, Ei. Quanto tem aqui? E vamos colocar isso
em algum outro nó. Nesse caso, estamos dizendo
quanta saúde existe dentro dessa cápsula, certo? Por outro lado, posso clicar com o botão esquerdo,
arrastar e dizer, vamos definir a saúde. Agora, com esse tipo
de nó, um setter, você pode determinar para
quanta saúde isso será alterado. Novamente, uma variável
pode ser alterada. Aqui estamos obtendo
o conteúdo atual. Aqui, estamos definindo o conteúdo como o valor dessa variável. Então, se eu quisesse mudar
o valor da nossa saúde, eu poderia dizer, você
sabe o que é saúde, eu quero que você tenha 50 anos. Agora, acabei de
codificar isso digitando um número. Mas poderia ter outra
variável que poderia
se conectar a isso que determinaria que é uma nova quantidade de saúde. Observe, no entanto, que
com um getter, você está simplesmente extraindo esses dados
dessa variável. Com um setter. Você precisa conectar
um fio de execução. E o fio de execução
precisa definir isso. Portanto, algum evento ou algum outro nó que leva a isso
precisa fluir para ele. E você
também pode fazer com que
algo saia disso se quiser
continuar com seu script, mas você deve ter
algo fluindo este pino de execução
aqui para definir, ou
seja, altere o
valor dessa variável. Agora, alguns atalhos
que você pode usar ao tentar obter
ou definir um nó. Você me viu, ele clica com o botão esquerdo
e arrasta e você coloca aquele pequeno menu lá
para obtê-lo ou configurá-lo. Um atalho aqui é
se você manter pressionada a tecla Control, clicar com o botão esquerdo
e soltá-la dessa forma, obterá essa variável. Por outro lado, se você pressionar
a tecla Alt, clicar com o botão esquerdo, arrastar e soltar, obterá um
configurador para essa variável. Então, uma linguagem muito importante
para entender é
que você está obtendo o
valor de uma variável ou definindo essa variável
com um novo valor. E, finalmente, uma coisa
muito importante a lembrar aqui é que você deve compilar um plano
para definir um valor padrão. Então, vou passar para o meu exemplo de BP, escolha
aqui, esse cara. E digamos que
eu queria adicionar uma variável que contivesse a
quantidade de
saúde necessária para curar nosso
personagem, uma vez que a sobreponhamos. Então, eu poderia criar uma variável
clicando nesse botão de adição. Chamaremos isso de quantias para curar. No entanto, no painel
Detalhes, diz que não
posso dar a isso um
valor padrão, a menos que eu o compile. Então, se eu clicar no canto superior
esquerdo ao lado do ponto de
interrogação amarelo, compilar significa que está pronto. Agora posso dar a isso
um valor padrão. Eu vou dizer 25. Ótimo. Isso também é importante
porque, se você estiver tentando acessar essa variável de
dentro de outro blueprint, essa é uma etapa necessária. E só para demonstrar isso, deixe-me mostrar que eu tenho uma instância desse plano, meu exemplo de
captação de BP no meu nível, vou pular para o meu Plano de Nível, nível
aberto Planta. Vou manter pressionada a tecla
R e clicar com o botão esquerdo para criar uma referência
a esse exemplo de captação. E agora, se eu me arrastasse para fora disso e digitasse o que eu
chamei, isso equivale a curar. Agora eu poderia obter a quantidade
para curar se
precisasse encontrá-la e
imprimi-la na tela ou
algo parecido. Ou eu poderia sair disso
e digitar a quantidade para curar. E opa, ainda não. Quantidades para curar. Poderíamos definir esse valor. Então, se eu quisesse alterar o valor padrão aqui
para algum outro valor, novamente, é isso que as variáveis
permitem que você faça para alterar o conteúdo
desse contêiner. Eu posso dizer, sabe o que, eu não quero que você cure 25. Eu quero que você cure
apenas cinco em vez disso. Eu poderia fazer isso também. Tudo bem, pessoal,
vamos resumir esta rápida visão geral
sobre variáveis. Nos vemos no próximo vídeo.
42. Booleano: Bem-vindos de volta a todos. Neste vídeo, nosso objetivo é
aprender o que é uma
variável booleana, como criar uma e como ela pode ser
utilizada
na criação de scripts de
blueprint. Então, primeiro, o que é
uma variável booleana? Bem, uma variável booleana
é uma variável que contém informações verdadeiras ou
falsas. E falamos
no último vídeo as variáveis são
essencialmente contêineres que contêm algum tipo de dado. Uma variável booleana
é um contêiner que simplesmente contém informações verdadeiras ou
falsas. Então imagine uma cápsula e
dentro está um pedaço de papel. E nesse pedaço de papel
diz verdadeiro ou falso. Isso é tudo o que pode ser, verdadeiro
ou falso. E, dependendo do
conteúdo disso, você pode emparelhá-lo com
algo como um nó de
ramificação para criar um
caminho de execução ramificado. Se for verdade, faça isso. Se for falso, faça isso. Então, aqui estou eu dentro do meu plano de
personagem em terceira pessoa, e vamos
mostrar um exemplo aqui. Vamos começar criando
uma variável booleana
acessando as variáveis do painel My
Blueprint, este pequeno botão positivo aqui. E vamos criar uma
variável chamada can jump. E eu geralmente gosto de colocar
um ponto de interrogação depois disso. Vou apertar Enter aqui. Eu pessoalmente, e essa é
minha preferência pessoal. Gostaria de nomear minhas
variáveis booleanas com um ponto de interrogação. Essencialmente, isso é
verdade ou é falso? Agora posso alterar o tipo de variável
clicando aqui, e você pode ver que é
booleana por padrão para mim, posso clicar
ali e alterá-la, ou essa variável selecionado acima
no painel Detalhes? Eu também posso alterar o
tipo de variável aqui. Uma curiosidade para você aqui. Quando você cria
uma nova variável, ela define o tipo
da variável para ser o último tipo de
variável que você criou. Então, o que vamos
fazer com isso pode pular? Bem, antes de tudo, precisamos
dar a ele um valor padrão. Para fazer isso, precisamos
compilar o plano. Então, vamos prosseguir
e compilá-lo. E com isso feito,
podemos definir um valor padrão. Eu vou dizer que sim, podemos pular por padrão, marque essa caixa. Marcado significa verdadeiro,
não verificado significa falso. Vamos prosseguir e
marcar essa caixa. Agora vamos usar
essa variável booleana. Para fazer isso, vou
criar um pouco de
espaço aqui entre nossa ação de entrada Jump, que será acionada quando
pressionarmos a barra de espaço, e nossa
função de salto aqui. Então, com nossa variável can jump down na seção
My Blueprint, vamos clicar com o botão esquerdo e arrastá-la para
o nosso gráfico de eventos. Queremos obtê-lo ou configurá-lo? Nesse caso, queremos
obter o conteúdo disso. Queremos descobrir
se podemos pular. O que vou fazer a
seguir é sair disso e trazer um nó de ramificação, um dos nós mais comuns em todos os scripts do Blueprint. Você pode ver que esse
nó de ramificação pode assumir um tipo de variável vermelha que é
um tipo de variável booleana. Essa é a condição
aqui que nos permite inserir algo
nisso para avaliar:
Ei, qual é o conteúdo
dessa variável? Agora, são apenas curiosidades aqui. Se eu clicar com o botão esquerdo e
quebrar esse fio, poderíamos definir essa
condição como verdadeira ou falsa, verdadeira, falsa. Mas eu quero ler o
conteúdo dessa variável. Então, estou definindo isso como minha
entrada do nó da ramificação. Agora vamos colocar isso
no meio aqui. Aqui, vou cortar
esse fio mantendo tecla Alt
e clicando com o botão esquerdo. E vou definir
meu script para que
assim que eu pressionar a barra de espaço, que
acionará esse evento, avaliaremos se essa variável
é verdadeira ou falsa? Se for verdade, vamos pular. Se for falso, não
faremos nada. Agora está definido como verdadeiro. Então, você esperaria que, de
fato, pulássemos. Vamos prosseguir e compilar. E vamos jogar. E se eu definir meu objeto de depuração aqui como meu
ThirdPersonCharacter. Deixe-me seguir em frente
e começar com isso. Agora você verá o script ser
acionado aqui. Quando eu pressiono a barra de espaço. Você verá que eu posso, de
fato, pular depois de soltá-lo. A propósito, esse stop
jumping vai disparar. Mas como isso é
avaliado como verdadeiro, eu posso ir em frente e pular. Agora, se eu mudar isso, vou manter
pressionada a tecla Control, clicar com o botão esquerdo e mudar para false. Agora vamos ver, ei, Ken Jump
está definido como falso? Bem, não é. Então, se eu fosse
jogar, você verá que agora eu
pressiono a barra de espaço. Mas, na verdade, nunca vai além desse nó de ramificação e está morrendo aqui porque o conteúdo dessa variável pode saltar. Variáveis booleanas definidas como
verdadeiras não estão definidas como falsas, então estão fazendo com que nosso
personagem não possa pular. Ok, então, reconhecidamente, esse foi
um exemplo bastante acadêmico, mas vamos usar
algo um
pouco mais real. Vamos seguir esse
cenário em que seus personagens
acabaram de entrar em um prédio lotado. E, muitas vezes, nos jogos, você descobrirá que, quando está dentro de um prédio lotado, eles impedem seu
personagem de correr. Eles impedem seu personagem
de sacar uma arma. E no nosso caso,
vamos dizer que nosso personagem não pode pular. Agora meu computador trava
entre pequenos cortes aqui. Portanto, certifique-se de definir seu
script de salto de ação de entrada para ser o seguinte. Queremos dizer que pode pular, que é definido como verdadeiro por padrão. Vamos ramificá-lo
e garantir que, na verdade, diremos que
sim, você pode pular. O que vamos fazer aqui é, dentro do nosso
Level Blueprint, alterar o conteúdo
dessa variável. Então, quando estamos dentro
de um volume de gatilho, impedimos que nosso
personagem pule. E quando estamos fora dela, a viramos para trás para que ela possa pular. Vamos fazer isso. Agora precisamos
voltar ao nosso nível. Dentro daqui. Vamos
colocar uma caixa Trigger. E mais uma vez, você pode
fazer isso caindo. Aqui. Traga seu
painel de atores com esta guia básica, você pode encontrar sua caixa de gatilho. Coloque isso na frente
de seus jogadores. Comece como ator. Vou
dimensioná-lo rapidamente para 100, 200, 200. Deixe-me definir a espessura da linha
para ser algo como dez. Algo bonito e grosso. Não vou me
preocupar muito com o policial. E abaixo,
vou mudar a renderização para que
o final do jogo
oculto do ator fique desmarcado. Isso fará com que
possamos ver isso. Agora, essa caixa de gatilho foi selecionada. Vamos ao nosso Level Blueprint. Você pode acessar seu
Level Blueprint acessando aqui e aqui, clique com o botão direito do mouse. E temos essa
caixa de gatilho selecionada em nossos níveis. Podemos adicionar um evento para ele. Vamos adicionar um para começar a sobrepor. E também vamos
adicionar um para sobreposição de extremidades. O que queremos fazer é verificar quem era o
outro ator. Queremos verificar se
foi o personagem em terceira pessoa. Então, vou sair daqui
e
digitar a terceira pessoa que podemos usar para nosso
ThirdPersonCharacter. Assim. Se fosse o
ThirdPersonCharacter que se sobrepôs a nós, adivinhe? Podemos acessar nosso modelo
de personagem de terceira pessoa. E podemos acessar as variáveis
que estão dentro dela,
inclusive aquelas que podem pular uma variável booleana
que acabamos de criar. Então, vendo mesmo,
vou dar meu salto de dez, vou digitar e
pular assim. E aí está minha variável. Eu posso obtê-lo ou configurá-lo. Nesse caso, eu quero configurá-lo. Então, vou dizer que
quando nosso personagem está sobrepondo essa
caixa de gatilho, não podemos pular. Vamos deixar
isso como falso. Clique com o botão esquerdo e arraste,
destacando esses dois nós, controle C para copiar, controle V para colar. Vou conectar isso
assim e assim. E vamos
dizer que quando terminarmos sobrepor essa caixa de gatilho, diremos que sim,
você pode pular mais uma vez. Então, dentro da
caixa do Trigger, vamos dizer:
Não, você não pode
pular fora dela. Vamos dizer que sim, você pode se lembrar aqui em nosso
ThirdPersonCharacter Blueprint, que estamos verificando quando
pressionamos a barra de espaço, estamos verificando o conteúdo
dessa variável por padrão true. Mas em nosso Plano de Nível, quando estamos sobrepondo
essa caixa de gatilho, estamos alterando-a para falsa. Quando estamos terminando, estamos
mudando de volta para verdade. Vá em frente e compile
isso rapidamente. Certifique-se de que nosso roteiro tenha uma boa aparência. Salve isso. Vamos jogar
e expressar isso. Deixe-me mudar isso
um pouco aqui. Na verdade, não consigo mover
isso enquanto estamos jogando. Então, deixe-me
anotar isso aqui. Jogue mais uma vez.
Tudo bem, vamos lá. Estou fora da barra de espaço da caixa de
gatilho. Sim, eu posso pular. Vamos mover meu
personagem para dentro dela. Veja, ele está
trocando essa variável agora para falsa, passando o
mouse sobre ela. Eu também posso ver isso. Deixe-me seguir em frente e
pressionar a barra de espaço. Eu não posso pular. No entanto, quando eu deixo
isso, essa variável
volta para verdadeira e eu posso pular. Tudo bem, vamos falar sobre
alguns possíveis casos de uso booleanos que você considera comuns em jogos. Uma delas poderia ser: o lote
da porta é verdadeiro ou falso? Você tem o cartão-chave, por exemplo, tal você pode disparar uma arma? Você ainda tem algum animal
, verdadeiro ou falso? E se você puder
pegar um item? Você está perto o
suficiente disso, verdadeiro ou falso? E se você puder
equipar um item? Você está em um
nível alto o suficiente, verdadeiro ou falso? E se você puder comprar um item? Você tem
dinheiro suficiente, verdadeiro ou falso? Tudo isso é possível. Exemplos de casos de uso de
uma variável booleana. Tudo bem, pessoal, isso
serve para oferecer este. Nos vemos no próximo.
43. Inteiro: Neste vídeo, nosso objetivo é
aprender o que é uma variável
inteira e como ela pode ser utilizada
em seus próprios projetos de jogos. Vamos começar nosso
plano
de personagem de terceira pessoa. Então é aí que
você pode encontrá-lo em seu navegador de conteúdo
ou gaveta de conteúdo. Clique duas vezes nele
para abri-lo. E antes mesmo de criarmos uma variável
inteira aqui embaixo, vamos falar sobre o que é
um par inteiro. Bem, isso é um contêiner. Esse tipo de variável
é um contêiner que contém informações de números inteiros. Ou seja, números sem
ponto decimal. Podem ser números positivos
ou negativos. Agora, você pode pensar em alguns exemplos
de casos de
uso em que números
inteiros são usados. Coisas como valores de pontuação
geralmente são impressas
em números inteiros. Valores monetários,
quanto ouro ou prata, esse tipo de coisa que você tem. Ou o nível de um
personagem? Nível um a 100? Esses geralmente são números inteiros. Agora, números inteiros também costumam ser usados
para impulsionar a lógica, por exemplo, você pode verificar se o valor
fornecido de um número inteiro economiza pontos de experiência ganhos atingiu um determinado limite. E se tiver, o
jogador sobe de nível , tudo
bem, vamos criar
uma variável inteira. Aqui está meu painel de
plantas. Desta vez, vou criar
um clicando aqui embaixo do botão Adicionar. Vamos criar uma variável. E, por padrão
, isso fará com que o tipo seja o mesmo qualquer que tenha sido sua última
variável criada. Então, está começando com booleano. Vou chamar
isso de total de EXP ganho. E você pode alterar o tipo de
variável aqui, o que eu farei. Queremos definir isso como um
número inteiro e não um inteiro 64, mas falaremos sobre
essas diferenças um pouco mais adiante
neste vídeo. Assim, você pode alterá-lo aqui
no tipo de variável ou no painel Detalhes, você também pode alterar o
tipo de variável aqui. Falaremos sobre
essas diferenças mais adiante no curso. Mas, por enquanto, saiba que o tipo de
variável que você deseja alterar está nesse menu
suspenso. Um pouco mais de nuance para
explicar enquanto estamos aqui, podemos definir um intervalo deslizante para essa variável, bem
como um intervalo de valores. Bem, o que isso significa mesmo? Bem, para realmente
esclarecer esse ponto, vamos compilar nosso plano para que possamos definir
um valor padrão. E agora, se definirmos um
intervalo de controle deslizante e tentarmos de zero a, vamos 50.000. Assim. E nossa faixa de valor é,
digamos, 0-100 mil. Basicamente,
estabelecemos alguns limites
sobre até onde podemos levar esse valor. Agora, o intervalo do controle deslizante surge quando você clica com o
botão esquerdo nele, veja como o ícone de seta passou do cursor do mouse para a seta esquerda e direita, eu posso clicar com o botão esquerdo. E se eu mover isso para a esquerda, não
posso ir abaixo de zero. No entanto, se eu
movê-lo para a direita, posso ir até um limite de 50.000, que é o alcance do controle deslizante. No entanto, se eu
clicasse nisso e colocasse um número
, tentaria 200.000. É difícil
inseri-lo e pressionar Enter. Vai limitá-lo
à minha faixa de valor aqui está dizendo que minha
faixa de valor é de 0 a 100 mil. Isso é o máximo
que eu posso definir. O valor do controle deslizante determina quanto, se você
clicar com o botão esquerdo aqui, quanto custará se você
simplesmente clicar com o botão esquerdo e arrastá-lo. O intervalo de valores é,
se você clicar nele, quais são os números máximo e
mínimo? Você pode fazer uma entrada difícil. Vou colocar isso de volta em
zero por enquanto. Em seguida, vamos acessar
nosso gráfico de eventos e criar um script simples para usar
essa variável inteira. Vou clicar com o botão direito do mouse
e algum espaço vazio. Vou digitar no teclado e vou
procurar o evento de teclado. Qualquer um desses funcionará bem. Mas vou procurar
x porque faremos algo que valha nossos pontos de
experiência aqui. Então, quando pressionamos a tecla X, o que queremos fazer? Bem, vamos pegar
nosso ganho total de EXP. Vou manter
pressionada a tecla Control, clicar com o botão esquerdo e arrastar
para obter essa variável, cujo conteúdo
atualmente é zero. E então eu vou
me afastar disso. Trazendo o
botão adicionar operador plus, você chegará lá. Vamos adicionar 100 a isso. Eu só vou me esforçar para definir isso. Em seguida, vou definir
um novo valor de EXP ganho. Então, vou
segurar, na verdade, vou
clicar com o botão esquerdo, arrastar
e soltar isso aqui. Vou apenas manter
pressionada a tecla Alt, clicar com o botão esquerdo e arrastar. Mas se eu simplesmente soltar
essa variável
aqui nesta saída,
eles me darão um setter. Está bem? Bem,
vamos fazer a partir daqui se arrastar para fora disso. Vamos imprimir essa string. Vamos imprimir a
quantidade disso em nossa tela. Proporciona uma pequena
conversão, convertendo um tipo de dados
inteiro em um tipo de dados de string. Em seguida, vou sair daqui. E vamos
fazer uma busca por um nó
maior ou igual a. Diremos que
se nosso ganho total de EXP for maior ou igual
a, diremos 500. E eu só vou começar. Essas, no próprio nó, eu mesmo poderia conter essas
invariáveis, mas vamos usar
o valor fixo de 500. Arraste isso, traga um
nó de ramificação. Vamos conectar
isso assim. E diremos
que, se for verdade, se nosso total de EXP ganho for
maior ou igual a 500, o que faremos então
é sair daqui. Faça outra impressão, tela, tela de impressão, string de impressão. E nossa sequência aqui
simplesmente vai ler sobre Gratz, seu nível dois. E vamos mudar a cor do
texto aqui para que fique um pouco nociva,
como a costa rosa quente. E faça isso aparecer
na tela por 5 s. Então, esses são nossos
scripts aqui. Podemos clicar com o botão esquerdo e
arrastar para colocar uma caixa de comentários ao redor desse clique com o botão esquerdo e arrastar destacar todos os toques em CQI. E chamaremos isso de R usando um número inteiro para aumentar o nível do script. Vou mudar a caixa de
comentários aqui
no painel Detalhes para preta. Tudo bem, compile
isso para garantir que seu script esteja pronto para uso. Isso é o que
temos acontecendo aqui. Vamos
jogar e ver se estamos fazendo uso
dessa variável inteira. Ok, então toda vez
que eu pressiono a tecla X, deixe-me definir meus objetos de depuração aqui como meu ThirdPersonCharacter. Toda vez que eu pressiono a tecla X, você vai
ver esse fogo se acender. No canto superior esquerdo. Eu tenho 100 XB. Começamos com
zero, adicionamos 100. Nosso novo total é 100. Mais uma vez,
200300400500 parabéns, você está no nível dois. Então esse é um exemplo de
caso de uso de uma variável inteira. Tudo bem, vamos tentar mais um
exemplo desta vez acessando
essa variável a partir de outro blueprint,
nosso Level Blueprint. Vou voltar
ao nosso nível aqui. Vamos nos certificar de que temos uma caixa de gatilho colocada
em nosso nível. Você já me viu fazer
isso várias vezes. Vou colocar uma caixa de
gatilho no meu nível. Eu só vou
dimensioná-lo um pouco. Vamos de 200 por 200 por 200, alteramos a
espessura da linha para dez. Você está ficando bom
nisso agora.
Vou até a seção de
Renderização. Certifique-se de que o
jogo oculto preciso não esteja marcado. Com isso selecionado. Vou passar
para o nosso plano de níveis. Em qualquer espaço vazio, em qualquer gráfico que você escolher. Vou clicar com o botão direito. Vamos adicionar um evento
para essa caixa de gatilho. Quando começarmos a sobrepô-lo, vamos sair
do outro ator, ver se esse é o
ThirdPersonCharacter. E se for, agora
podemos extrair algumas informações do nosso
ThirdPersonCharacter. Ou seja, podemos acessar
qualquer variável que dentro
do nosso
ThirdPersonCharacter Blueprint. Mais uma vez, uma vez
que você tenha uma referência de algum tipo a um determinado objeto, neste caso, nosso personagem em
terceira pessoa. Você pode acessar as variáveis chamadas funções dentro dela. É cetera. Então, vou digitar o ganho total
de EXP. Vamos pegar esse valor. E vamos sair daqui. Faça a mesma coisa.
Vamos adicionar 100 a ele. E então vamos prosseguir e tirar
essa variável
de arrasto daqui, XB total. Nós podemos configurá-lo. Obviamente, com os centros, você precisa
canalizar e executar o fio. E vamos definir isso como
o novo valor de EXP. Então, vamos compilar esse Save. E agora o
que estamos acontecendo aqui é que sempre que
sobrepomos isso, vamos incrementar nosso
total de EXP dessa maneira. Aqui vamos nós. Então, olhando
no canto superior esquerdo, eu o sobreponho uma vez e não
o imprimi na tela. Então, provavelmente
seria útil fazer isso. Arraste para fora desse tipo
na string de impressão. Não vou subir de
nível e só espero
mostrar que isso está realmente
incrementando essa variável. Tudo bem, aqui estão nossos scripts,
compile, salve, jogue. Quando sobrepomos essa caixa de
gatilho, 100, sobrepomos novamente, 200, 300, etc. Então imagine que você poderia
dar pontos de
experiência ao seu personagem se ele chegasse ao topo da montanha,
esse tipo de coisa. Finalmente, no início deste vídeo, eu disse que descreveria um pouco qual é a
diferença entre um número inteiro ou um inteiro de
64 variáveis. Então, deixe-me voltar ao meu ThirdPersonCharacter
Blueprint. Vou
criar temporariamente uma variável inteira 64. Vamos fazer isso. Além disso, vou chamar isso de int 64. Vamos mudar isso
para um número inteiro 64, tipo
variável compile save. A diferença é o
intervalo de valores possíveis. Portanto, com um número inteiro 64, você pode ter uma
faixa maior de valores. Novamente, isso está no
positivo e no negativo
, clique com o botão esquerdo e
arraste até o fim. Pode até sair da
tela lá. Isso não acontece. Você pode
pesquisar on-line o intervalo disso,
mas, essencialmente, com o número inteiro 64, você obtém uma faixa muito maior
de números possíveis. Não é totalmente infinito. Em 64, ele ocupa um
pouco mais de memória, mas não é
muito na maioria dos casos. E quase todos os casos em
números inteiros devem estar bem. Deixe-me voltar ao
meu número inteiro normal e mostrar o intervalo. Opa, eu tenho que
tirar meu boné aqui, apagar meu boné, excluir. Deixe-me definir isso como
zero e assim por diante. Boom, esse é o limite para um
número inteiro variável que vai
no positivo e no negativo
em 64, infinito nove. E esse é o intervalo
para o int 64. Novamente, isso vai na direção positiva e negativa. Gente, isso vai fazer
de
tudo para nossa discussão sobre a variável inteira. Muito útil, muito útil saber o que bastaria
para oferecer este. Nos vemos no próximo.
44. Flutuante: Tudo bem, bem vindos
de volta a todos. Neste vídeo, nosso objetivo é
aprender o que é uma variável flutuante, como criá-la
e como ela pode ser utilizada na criação de
scripts de projetos. Então, primeiro, antes de
começarmos aqui, o que é um carro alegórico? Um flutuador é uma variável que
contém um valor de ponto decimal. Novamente, pode ser
positivo ou negativo. Agora, no Unreal, essa variável
costuma ser usada para
manter um valor de tempo ou para determinar uma porcentagem
como zero a 100%. E isso geralmente é
representado com 0,0, seja, 0% e
1,0 igual a 100%. Vamos mostrar alguns casos de uso
diferentes aqui. Eu vou estar dentro do
meu BP ThirdPersonCharacter. E vou pegar carona no
script que usei
no vídeo anterior quando
estávamos exibindo um número inteiro. Vamos continuar e
criar uma variável. Vou fazer isso
clicando aqui. E vamos chamar isso de atraso. Vamos definir
um intervalo de tempo antes de fazer com que nossa string seja
impressa na tela aqui. Novamente, queremos tornar isso uma variável
flutuante para que você
possa alterá-la aqui. Alterando-a lá
ou, inversamente, você pode alterar o tipo de
variável com essa variável selecionada
no painel Detalhes. Agora, depois de criar isso, podemos compilar para definir um valor. Mais uma vez, os flutuadores têm
um valor de ponto decimal, então vamos tentar 1,5. Essa será a nossa vez
de
atrasarmos a impressão
de nossa corda. Vamos trazer nossa
variável de fluxo mantendo pressionada a tecla Control, clicar com o botão
esquerdo e arrastar
trará um
resumo dessa variável. E você pode ver que os carros alegóricos são
dessa cor verde limão. E então vamos colocar um nó de atraso para que eu possa clicar com o botão direito
nele. Um espaço vazio. Digite com atraso. Aí está nosso nó de atraso. E deixe-me colocar
isso aqui. Assim. Então, mais uma vez, neste
nó de função de atraso, pode ser difícil definir pode ser difícil definir
um atraso que
atualmente é 0,2 s. Ou podemos inserir
algum valor flutuante novamente, no lado esquerdo, ele está
solicitando uma entrada. E a entrada que
você está procurando é um flutuador. Assim, você pode codificá-lo ou
armazená-lo em uma variável. Então, estamos armazenando isso aqui. Nosso atraso atual
é definido como 1,5 s. Então, ao pressionar a tecla X, descobriremos nosso total de pontos de experiência ganhos. Vamos adicionar um a ele. E vamos definir
isso como nossa nova variável para o total que XB
ganhou esse número inteiro. Uma vez que isso tenha igualado
ou excedido 500. Quando isso for verdade,
atrasaremos esse valor em 1,5 s
e, em seguida, imprimiremos a mensagem que Parabéns, você está no nível dois. Vamos compilar nosso script. Certifique-se de que é bom salvá-lo.
Aqui vamos nós. Jogar. Deixe-me colocar isso aqui para que você possa ver tudo isso funcionando. Ok, então, pressionando a tecla X também não
ultrapassamos
esse limite. Você pode ver esse
valor aqui. E estamos gerando um valor
estranho para x p ganho porque esqueci de definir o ganho de XP volta a zero desde
o último vídeo. Então eu preciso consertar isso. Vamos colocar isso de volta em zero.
Isso vai estragar tudo. Compile, salve, jogue mais
uma vez. X Recebi 100, 200.300.400.500 XP atrasando e , em seguida, parabéns pelo nível dois. Agora você pode ver que, uma vez que
ultrapassamos isso, esse tipo de atraso de
contagem regressiva faz a contagem regressiva aqui no roteiro, que é muito útil. Você pode ver que, ao pressioná-lo novamente porque estamos excedendo
esse limite, contagem
regressiva é muito útil. Em seguida, por que você não volta para esse pequeno script em seu BP ThirdPersonCharacter
Blueprint, onde
estávamos criando nosso HUD e o
adicionando à janela de visualização. Eu destruí isso
alguns vídeos atrás. Então, o que vou
fazer aqui é deixar eu abrir meu respiradouro e começar a jogar. Isso vai
me levar até aqui. Deixe-me colocar esse evento
B em jogo em posição. E se você destruiu
um pouco do roteiro, é
assim que você pode recuperá-lo. O evento começa a jogar. Vamos criar um widget. Este é um nó de criação de widget. Você pode configurar seu HUD WB P novamente aqui para criar
esse Widget Blueprint. Então, neste pino, cliquei com o botão direito
do mouse nele e o promovi para uma variável para encapsulá-la
com qualquer variável. E então adicionamos
isso à janela de exibição. Feito tudo isso,
clicamos em Jogar. Podemos ver que esse medidor
de saúde
foi adicionado de volta à nossa tela aqui. Agora, tudo isso é relevante
porque
usaremos uma variável flutuante para determinar
a quantidade de saúde
exibida neste medidor de
saúde. Então. Dentro de sua mente painel
Blueprint de seu
personagem de terceira pessoa. Algum tempo atrás,
criamos uma variável de saúde. Se você não fez isso, você pode
ir em frente e fazer isso. Agora. Atualmente, ele está definido com
um valor padrão de 100. Agora, mencionei que os valores
flutuantes
costumam ter um valor entre 0,0 e 1,0 para determinar uma porcentagem
de 0% até 100%. Então, vamos definir
esse valor flutuante para 1,0, o que significa saúde total. E então, lá embaixo, eu
tinha um script para definir a visibilidade desse HUD. Ligue e desligue. Em vez disso,
vou destruir
esta . Quando
eu pressionar a tecla cinco, vou
diminuir
um pouco nossa saúde para que
possamos ver uma diminuição. Então, vou manter pressionada a tecla Control, clicar com o botão esquerdo e arrastar isso para dentro. E então eu vou
sair daqui e
vou trazer
a tecla menos,
a chave de subtração. E vou dizer que
diminua 0,1, ou seja, 10%. E então vamos
arrastar e soltar isso
na saída para definir a saúde. Ok, então atualmente
temos esse roteiro em
andamento dentro do nosso
ThirdPersonCharacter. Podemos compilar isso e salvar. Agora, se eu pressionar a tecla
cinco dele agora, você verá que
nada aconteceu com
o medidor real em si. E só para provar isso, estou pressionando F5
e parece que,
ok, os
medidores de saúde não estão caindo. Isso porque precisamos vincular essa variável a esse medidor. Então, isso
envolverá que vamos até
o ativo do WPP HUD, fazendo algum trabalho dentro dele. Assim, podemos localizar esse ativo acessando
esse nó aqui clicando aqui para
navegar por esse ativo no navegador de conteúdo. Aí está. E vá
em frente e abra isso. Ok, aqui dentro queremos clicar na
nossa barra de progresso. Podemos fazer
isso aqui
no layout visual ou
na hierarquia. Você pode selecionar esse widget da barra de
progresso. E então,
no painel Detalhes, na seção de progresso, você pode ver que temos
esse valor atual e atualmente é de 1,0%. Novamente, esse medidor
vai de 0,0 a 1,0. Então, se eu clicar com o botão esquerdo, arrastar
e mover isso para a esquerda, olhar para o medidor
no lado esquerdo, aquela barra verde está
caindo à medida que eu diminuo isso de 1,0 para 0,0. Então, está tudo bem. Mas como associamos nosso valor à saúde em nosso
bp ThirdPersonCharacter, isso mesmo, aquilo,
como associamos isso a esse widget
específico? Bem, precisamos
criar uma encadernação aqui. E a maneira de fazer isso é com essa barra de progresso selecionada, exatamente onde está esse valor
presente aqui. Você tem essa
pequena opção de vinculação. Vá em frente e clique aqui. Queremos criar uma encadernação. Isso fará com que a gente ouça da nossa guia Designer
para a guia de gráficos. Depois de fazermos isso, vamos fazer isso. Crie uma encadernação. E agora o que
fizemos foi criar uma função, criar
uma guia gráfica
aqui chamada Obter porcentagem. Podemos renomear isso. Eu vou fazer isso agora. E nos deu
esses dois nós. Primeiro, vamos renomear isso. Vou
clicar nisso, pressionar F2 e vou chamar isso de
Get Player health, assim. E, em seguida, segurando a
tecla Control, rodando com o mouse. E vamos ampliar
isso um pouco. O que queremos fazer é botão direito do mouse em
algum tipo de espaço vazio em obter personagem do jogador. Podemos sair disso e
lançar para ThirdPersonCharacter. Você já me viu fazer
isso várias vezes. Vamos onde está essa entrada, então
por que a cena é assim? E uma vez que fazemos isso, temos acesso a todas as
variáveis ou funções, ou podemos chamar eventos personalizados dentro do nosso
ThirdPersonCharacter. Bem, queremos extrair
essa variável de saúde. Então, vamos sair daqui, digitar e obter saúde. Existe aquela variável de
saúde flutuante. E olha, isso está
procurando por entradas flutuantes. Podemos inserir nossa saúde conforme extraída de nosso
ThirdPersonCharacter e devolvê-la. Assim, podemos compilar e salvar isso. Tudo o que estamos fazendo agora é associar se
ThirdPersonCharacter é uma variável de saúde
a esse medidor. E isso vai
impulsionar essa porcentagem. Talvez eu deva mudar a
cor disso de verde limão. Faz algo um
pouco mais sombrio. Vamos usar azul escuro,
algo parecido. Torne-o um pouco mais
visual aqui e compile para salvar. Podemos clicar em Jogar aqui. Na verdade, vamos fazer isso a partir do
nosso ThirdPersonCharacter. Podemos ver esse script funcionando. Clique em Jogar a partir daqui. Está bem? E criamos nosso widget de saúde
ao começar a jogar. E agora, quando eu pressiono a
tecla cinco , a saúde
diminuirá em
10% toda vez que
deveríamos ver isso refletido em nosso
medidor de saúde aqui em cima também. Então, vamos lá. 555-55-5555 por cinco,
até o fim. E agora veja isso. Agora que temos uma variável flutuante de
saúde associada ao nosso
ThirdPersonCharacter. E agora que temos
essa variável vinculada a esse medidor dentro
do nosso HUD WPP. Podemos voltar à parte inicial
do curso em que criamos este exemplo de
captador da BP e fazer com
que , quando nosso personagem
realmente o pegue, pouco da
saúde de nosso personagem é restaurado. Então, se você esqueceu onde estava
esse plano, tínhamos uma visão geral de
scripts de conteúdo neste
diretório,
aqui . Vou clicar duas vezes nele
para abri-lo. Aqui dentro, vamos
criar um pequeno espaço entre nosso nó
ThirdPersonCharacter aqui e essa
reprodução do som, que você
possa
empurrá-lo para a direita. Bem, vamos fazer aqui. Vamos tentar emoldurar
tudo isso para que você possa ver. Vamos sair do
nosso ThirdPersonCharacter. Vamos obter sua saúde. Essa variável flutuante. Bem, o que faremos então é adicionar quantidade de saúde
que queremos
curar sempre que sobrepormos
esse plano. Então, vamos adicionar
outra variável aqui. Vamos chamar isso de saúde para adicionar. Essa também será
uma variável flutuante. Precisamos compilar
isso para fornecer um valor padrão. Então, vamos controlar 20% da saúde de nosso personagem, o que
seria bom lembrar nossa saúde está variando de
uma escala associada ao nosso medidor
de saúde de 0,0 a 1,0. Então, 0,2 seria 20% de saúde. Vamos
arrastar e soltar isso em nosso gráfico. Nós
vamos conseguir isso. Vamos somar
esses
dois números, arrastar para fora daqui, digitar o botão de adição para abrir
um anúncio, assim. E então vamos sair
do nosso ThirdPersonCharacter e definir essa saúde. Então, aqui estamos
obtendo a saúde. Estamos adicionando essa quantidade de saúde sempre que
sobrepomos sua picape. E vamos definir isso
como a nova variável de saúde. Novamente variáveis, você pode
atualizar seus valores. Tudo bem, então esse
será o nosso roteiro, certo? Existem scripts atualizados. Vamos compilar isso
como um pequeno bônus aqui que eu quero
adicionar à nossa saúde para adicionar, ir em frente e selecionar
essa variável. Se você marcar essa caixa
chamada instância editável, o que isso fará
é fazer com
que , em nosso editor de níveis, possamos realmente
modificar a integridade que esse plano
específico pode oferecer. E podemos alterá-lo para
cada instância. Então, vamos compilar e
dizer isso mais uma vez. E eu vou
arrastar isso e tenho uma instância
disso atualmente no meu nível. Deixe-me seguir em frente e manter pressionada a
tecla Alt, clicar com o botão esquerdo e arrastar. Então, eu tenho dois deles. E com a segunda selecionada no painel Detalhes, tenho essa saúde a acrescentar
que foi exposta agora. Assim que
marcarmos a caixa chamada
instância editável, vou alterar a integridade
para adicionar este um para um. Vamos dizer que
essa é a questão da saúde completa. Eu também posso mudar a
escala aqui. Vamos mudá-lo para 22,2, só para deixar
bem claro
que esse será o curador completo. Tudo bem, então com isso, este aqui
vai ser o pequeno curador. Isso vai adicionar 20% de saúde. Neste caso, adicionaremos 100% de saúde. Vamos jogar isso. E se você se lembrar, se eu pressionar a tecla cinco, posso diminuir minha saúde. Ou vou sobrepor
o primeiro aqui. Vamos recuperar
20% da saúde. Cinco teclas, um pouco mais até
o fim e sobreposição
e o grandalhão, e estamos de
volta à saúde plena. E aí está. Os flutuadores contêm valores de ponto
decimal que podem ser positivos
ou negativos. E, muitas vezes, eles são usados
para manter valores de tempo ou para manter uma porcentagem
que varia de 0,0 a 1,0. Gente, isso é
suficiente para oferecer este vídeo, nos vemos no próximo.
45. Nome: Bem-vindos de volta a todos. Nosso objetivo neste é
aprender o que é uma variável nomeada, como criá-la
e como ela pode ser utilizada em um script de
esquema. Portanto, muitas vezes há
muita confusão no Unreal se um nome, uma string ou
uma
variável de texto devem ou não ser usados. Então, ao longo
dos próximos três vídeos aqui,
falaremos sobre algumas
das diferenças sutis
entre esses três. Então, começando com
a variável
nome, nome é um texto usado para identificar algo
dentro de um jogo. Agora vamos
usar algumas variáveis de nome dentro
deste vídeo. Identifique um nível para o qual transferir. Vamos fazer a transição desse nível para outro. Também
usaremos um nome para identificar um soquete
ao qual queremos conectar um suporte. Isso pode ser
algo como uma espada mão, esse tipo de coisa. Agora, um nome, um
nome é uma variável que não diferencia maiúsculas de minúsculas, e isso significa que letras
maiúsculas ou minúsculas não importam. Em uma variável nomeada é usado
para caracteres alfanuméricos, ou seja, todas letras e números. Tudo bem, vamos
começar aqui dentro do nosso Level Blueprint. Então, se você ainda não
tem isso aberto, você pode vir aqui e abrir
seu Level Blueprint. E vamos criar algumas variáveis
de nome. Então, no painel My Blueprint, vamos adicionar uma variável. Vou chamar o primeiro
nível de sublinhado de 01. Atualmente, eu a tenho
como uma variável de nome. No entanto, se você
quiser alterá-lo, aí é onde
você pode fazer isso. Aí está o nome. Como alternativa,
com isso selecionado no painel Detalhes, você também pode alterar o tipo
aqui. Agora eu quero criar uma duplicata dessa variável e
chamá-la de nível dois. Então, algumas maneiras
de fazer isso. Em primeiro lugar, eu poderia clicar com o botão direito nele e duplicá-lo dessa forma. No entanto, eu também poderia fazer o controle mais D com
o destacado. Para criar
um nível duplicado, O2 é o que eu quero chamar isso. Vamos prosseguir e
compilar para que possamos fornecer a esses alguns valores padrão. Começando com o nível um, vou inserir meu
nível um como mapa inicial. E observe como eu escrevo tudo
isso em minúsculas. Em seguida, vá para o nível dois. E com isso,
defina o valor padrão como Mínimo, sublinhe o padrão. E eu estou fazendo isso em letras maiúsculas. Você precisa se certificar de
que escreveu corretamente. Agora, se você está se perguntando por que eu os
insiro como valores padrão, é
porque aqui
em nosso editor de níveis, dentro da minha pasta de mapas de
conteúdo de histórias, eu tenho dois mapas que existem dentro desta estrela
pasta de mapas de conteúdo. Um chamado padrão mínimo. Observe como está escrito:
apenas o M e o D são capitalizados e, em seguida,
o nível inicial do mapa. E observe que o S e o M no veterinário são capitalizados. Portanto, intencionalmente, não estou usando exatamente
a mesma maiúscula e
minúscula com variáveis de nome. Você não precisa ter exatamente
o mesmo invólucro. Eles não diferenciam maiúsculas de minúsculas. Tudo bem, voltando ao
seu mapa de teste de nível, vá em frente, compile
e salve-o. E então, em um gráfico
de sua escolha, pode ser o gráfico de eventos
padrão ou outro gráfico
que você criou. Vamos
criar um script simples. Vou clicar com o botão direito do mouse
e digitar algum espaço vazio no teclado para que eu
tenha eventos de teclado. Vou usar a tecla L
porque isso faria sentido na transição
para outro nível. Estou muito ampliado
aqui, mantendo pressionada a tecla Control, com o mouse girando para cima. Deixe-me ampliar
esse evento-chave L. O que vou fazer é
sair daqui, trazer um nó de ramificação. E se isso for verdade, queremos abrir um nível pelo nome. E eu vou duplicar
esse Controle C, Controle V. E se for falso,
queremos abrir um nome de nível diferente.
Qual nível é chamado? Bem, veja isso. Ele está procurando uma entrada de nome. Agora eu poderia ter codificado
isso apenas inserindo isso. No entanto, estou armazenando
esses nomes de níveis dentro dessas variáveis. Então, vou arrastar
e soltar o nível um para aqui e o nível dois para cá. Então, se nossa condição aqui
for verdadeira,
faremos a transição
para o nível inicial do mapa. E se nossa condição
for falsa ao pressionar a tecla L,
faremos a
transição para o nível dois. Esse é o padrão mínimo. Agora, atualmente, nossa condição
está dificilmente definida como verdadeira. No entanto, se eu fosse clicar com
o botão direito do mouse em
algum espaço vazio e
digitar bool aleatório. Esse nó prático simplesmente
emitirá uma bola aleatória escolhendo
aleatoriamente
verdadeiro ou falso toda vez que pressionarmos a
tecla L, muito útil. Aqui vamos nós. Vamos compilar isso,
salvar e experimentar. Tudo bem, então pressionando
a tecla L aqui, devemos fazer a transição para um desses dois
níveis. Aqui vamos nós. E eu tenho uma falha na viagem. E isso deve ser
porque eu
não devo ter copiado um
dos nomes corretamente. Então, nível dois aqui, vamos verificar o padrão mínimo. E se eu verificar novamente, meus padrões
mínimos são altos. Nós temos que
soletrá-lo corretamente. Eu escrevi isso incorretamente. Então, deixe-me ir em frente
e consertar isso. É bom
aprender com nossos erros. Padrões mínimos. Perna. Então compile e diga, vamos tentar isso mais uma vez. Novamente, não diferencia maiúsculas de minúsculas. Não importa
se essas letras,
esses caracteres estão em
maiúsculas ou não. No entanto, você precisa
ter escrito corretamente? Então, pressionando a tecla L, escolhemos o nível para aquele momento. Então, temos esse nível estranho aqui, vamos sair daqui. Então, isso foi nivelado
para os escolhidos em. Vamos garantir que o Nível
um funcione corretamente. Parando de tocar mais uma vez, pressionando a tecla L,
uma foi escolhida e aí está. Em seguida, usaremos
uma variável nomeada para anexar um prompt ao nosso
ThirdPersonCharacter. Então, se você ainda não tem seu
ativo ThirdPersonCharacter aberto, veja os esquemas de
terceiros do conteúdo clique duas vezes
neles para abri-lo. E dentro daqui, encontre seu componente de malha. Precisamos fazer um pouco
de trabalho de configuração antes
mesmo de usarmos qualquer variável de nome. Vamos adicionar soquetes
à nossa malha esquelética. Portanto, selecione sua malha e,
no painel Detalhes, clique em
Malha esquelética. Clique aqui para navegar até esse ativo no Navegador
de conteúdo. Então você vai
querer clicar duas vezes
neste SK M Quinn, simples. E então, no canto superior direito,
você tem guias diferentes. Clique nessa aba de esqueleto
e o que queremos fazer é adicionar um soquete na mão do nosso
personagem. Então esta é a nossa Árvore Esquelética, todos os ossos diferentes dentro do esqueleto de
nosso personagem. Então, vou procurar uma mão
nisso. E vamos adicionar um soquete à mão direita de
nossos personagens. Vou clicar com o botão direito
nesta mão. E clicando com o botão direito do mouse
no osso da mão, podemos adicionar um soquete. E acabamos de adicionar um soquete. Esse é o pequeno ícone, vou
clicar nele e
vou renomeá-lo aqui. Então, o nome do soquete que
vou definir é soquete manual assim. Agora, a curiosidade
é que você pode adicionar um adereço de pré-visualização para
ver como é. Quando algo estiver conectado
ao soquete aqui, vou clicar com o botão direito do
mouse nesse soquete manual. Vamos adicionar
uma malha de pré-visualização. E vamos adicionar uma lâmpada, visualizar a malha como
uma luminária de teto. Obviamente, algo
como uma espada ou um punhal seria melhor aqui, mas não vamos ser
muito exigentes com isso. Vou clicar
com o botão direito aqui, pressionar a barra de espaço. Você pode ver como isso
pode ser posicionado forma que você possa
movê-lo para cá desta forma. Não vou me
preocupar em ser muito cuidadoso com isso. Você pode girá-lo,
algo assim. E, novamente, você poderia
passar muito tempo mexendo onde esse
soquete existe. Estamos compensando isso
em relação à nossa mão aqui. Assim, você pode inserir alguns
números aqui para a localização e a
rotação, etc. Ou você também pode mexer nele aqui na janela de pré-visualização. Novamente, não vou ser
muito específico para isso. Por enquanto. Vamos salvar isso. Em seguida, vamos voltar ao nosso ThirdPersonCharacter e criar
algumas variáveis. Então, voltando ao nosso
ThirdPersonCharacter, vamos criar uma variável clicando nesse botão de adição. Este será
chamado de nome de soquetes. Vou mudar isso
para ser uma variável de nome. E eu vou mudar
o valor padrão aqui. Se eu compilar, como
chamamos esses soquetes manuais, vou fazer todos os soquetes de mão com
letras minúsculas. E observe
que esse
não será exatamente o mesmo
caso de como fizemos aqui em nosso esqueleto. Chamamos isso de soquete manual
com H e S. Em nosso
ThirdPersonCharacter, estamos usando apenas letras minúsculas. Agora vou adicionar
mais um componente aqui como suporte para conectar ao nosso soquete. Então, vamos fingir que
temos uma espécie de fonte. Vou adicionar componentes de malha
estática. E chamaremos isso de nossa espada, mesmo que
pareça uma lâmpada. E com
os componentes dessa espada selecionados, esse componente
de malha estática está no painel Detalhes. Vamos nos encaixar como uma
malha estática ou lâmpada, luminária de teto. Vou
posicioná-lo de forma muito, muito ruim. Deixe-me desligar o movimento, Snapping aqui. E eu não vou gastar
muito tempo com isso. Só vamos fazer
algo louco assim. Claro. Assim. o destruidor
de Final Fantasy. Claro. E então
vamos até nosso gráfico de eventos e vamos clicar com o botão direito do mouse
e, em algum espaço vazio, preciso de uma chave de evento. Vamos fazer as entradas R
ou, na verdade, vamos fazer o teclado. Vamos ver o que temos para os eventos de teclado
disponíveis. Vamos para a chave zero. Claro, isso vai funcionar. Vamos sair
disso e anexar. E o que estamos
procurando é conectar um componente a outro. Eu tenho várias opções aqui. Vamos anexar um componente,
dois componentes, uma espada. A espada. Opa. Isso é algo que
queremos anexar. O pai é a coisa à qual
queremos vinculá-lo. Nesse caso, é a nossa malha. E lembre-se, a malha é a coisa que tem um
soquete associado a ela. Então, vamos arrastar e soltar o nome do nosso
soquete ali mesmo. Então, algumas coisas que precisamos corrigir aqui são nossas regras de localização
e rotação. Queremos definir isso para ser
direcionado para o alvo, assim. Então esse deve ser nosso roteiro. Queremos colocar nossa
espada, esse é o alvo. Queremos anexar isso
à nossa malha principal. E onde, especificamente,
somos
chamados de soquete e definimos nosso nome de
soquete como soquete manual. Então compile. Digamos, vamos jogar. Agora, veja aquela bela
espada na bolsa do meu personagem. Embora pareça
terrível, deixe-me pressionar a tecla zero e boom, agora
ela está conectada
à nossa tomada manual. Tudo graças a esse nome,
variável, nome saccad. Agora vamos resumir. Uma variável de nome é um
texto usado para identificar algo
em um jogo. As variáveis de nome consistem em caracteres
alfanuméricos, ou seja, todas letras e números. E não diferenciam maiúsculas minúsculas, o
que significa que maiúsculas e minúsculas não importam. Gente,
isso é o suficiente para este vídeo, nos vemos no próximo.
46. Corda: Tudo bem, bem vindos
de volta a todos. Neste vídeo, nosso objetivo é
aprender o que é uma variável de string, como criá-la
e como ela pode ser utilizada na criação de scripts de
blueprint. Neste vídeo, vamos trabalhar dentro do nosso bp, um ThirdPersonCharacter, que é o diretório
onde você pode encontrar isso. Então, vamos
abrir isso imediatamente. Então, como você pode esperar, você pode criar essa
variável String aqui
no painel
My Blueprint clicando Adicionar variável ou,
na seção variável, clicando no botão de adição. E vou criar nossas
duas primeiras variáveis de string desde o início aqui. Esse primeiro eu vou chamar
de primeiro nome. E mais uma vez, você
pode alterar o tipo da variável
a partir dessa string suspensa, é o que
estamos procurando fazer aqui, ou aquela variável selecionada no painel Detalhes
sob o tipo de variável? E vou duplicar
isso imediatamente. Posso clicar com o botão direito do mouse
e duplicá-lo. Ou com isso selecionado, eu posso usar aquela tecla de atalho lá, que é control mais
D. E eu vou mudar esta para LastName. Então, vou
compilar isso para que possamos dar a isso
alguns valores padrão. Então, para o primeiro nome,
vou entrar
na seção Detalhes
e digitar mr. Com um período. E então eu vou adicionar um
espaço em branco logo depois. Sobrenome, vou
adicionar uma gota. Tudo bem? Agora vamos falar sobre o que
é uma variável de string? Bem, uma variável de cadeia de caracteres
é uma variável que pode conter letras,
números ou símbolos. Ou cadeias de caracteres são úteis para manipular texto
dinamicamente em tempo de execução usando algumas funções
prontas e exploraremos algumas
delas posteriormente neste vídeo. As cadeias de caracteres podem ser pesquisadas , modificadas e
comparadas com outras cadeias de caracteres. Observe que, por causa disso, as strings são preferíveis às variáveis de
nome se você quiser
manipular o texto de alguma forma
enquanto o jogo está em execução. Portanto, as strings são um pouco mais caras do que as variáveis de nome. Mas quero dizer, se você está executando um jogo menor ou
até mesmo um jogo maior, quero dizer, o custo não
é muito maior. Ok, então vamos criar nosso primeiro
script que
utilizará algumas dessas variáveis de
string. Então, aqui está um
espaço vazio em um gráfico de eventos. Vou clicar com o botão direito do mouse. Eu vou trazer, vamos tentar a chave sete. Qualquer evento de teclado serve. Deixe-me ampliar isso. E você já me viu usar
essa função muitas
vezes arrastando para fora
daqui, imprimir string. Portanto, esse nó pode receber
uma variável de string. Agora, há muitas
coisas que podem ser convertidas em uma string, mas aquele pino rosa ali, se você passar o mouse sobre
ele, diz que está procurando por uma variável de string. Se eu inserir o nome do
nosso soquete,
ele o converterá em uma
string. Na verdade,
se eu fizer isso e
arrastar até aqui e disser toString,
posso convertê-la se eu fizer isso e
arrastar até aqui e disser toString, em
uma variável de string. Muitas outras variáveis também podem ser convertidas em cadeias de caracteres. Mas vamos mostrar nossas duas variáveis de cadeia de caracteres e como podemos juntá-las. Isso é unir
um ao outro. Então, vou manter pressionada a tecla Control, clicar com o botão esquerdo e arrastar
meu primeiro nome e segurar Control com o botão esquerdo. E também vou receber
meu sobrenome. Tantos nomes são apresentados. É o primeiro nome
seguido pelo sobrenome. Então, uma forma de manipular essas duas cadeias separadas
é anexando-as. Então, se eu clicar com o botão direito
do mouse em algum espaço
vazio e entrar na seção de utilitários na parte inferior,
porque tudo está em ordem alfabética. Utilitários. Podemos entrar na string
Utilities. E no topo há uma função chamada append que consiste concatenar duas cadeias para
combiná-las. Assim, podemos pegar nosso primeiro nome e acrescentar
o sobrenome a ele. E isso nos dará
o resultado final. Assim. Se eu compilar isso, verifique se meu script está com boa aparência aqui. Salve, vamos jogar. Agora, quando eu pressiono a tecla sete, você deve ver meu nome e
sobrenome combinados aqui. Aqui vamos nós. Sete, você vê o Sr.
vagar todo combinado. Agora, nessa seção de
cadeias de utilitários, há muitas funções que podem ser usadas para
manipular cadeias de caracteres. Deixe-me encontrar
outro aqui. Vou arrastar meu
sobrenome, assim. E vou
digitar duas partes superiores,
novamente, ele vai encontrá-las
na seção de cadeias de utilitários. Eu vou continuar assim, conectando isso também à seção
B. Agora, se eu fosse compilar,
salvar e reproduzir, o que você notará
no canto superior esquerdo quando eu pressionar a
tecla sete é observar como ela mudou toda a string do
sobrenome em maiúsculas. Então, isso também é meio útil. Várias maneiras de
manipular cadeias de caracteres. Esse é um dos principais
benefícios de transformar algo uma string todas essas funções diferentes
para manipulá-las. Vou mostrar
algumas das outras funções de manipulação
no Level Blueprint porque
preparei algumas antes
deste vídeo. Então, vou sair do
meu personagem de terceira pessoa e
entrar no meu
Plano de Nível mais uma vez, é assim
que você pode fazer isso
clicando ali mesmo,
abra os Level Blueprints. Aqui eu tenho várias funções
diferentes. Há muitas outras que
vamos explorar aqui. Novamente, você pode descobrir isso
clicando com o botão direito do mouse e com
algum espaço vazio
na seção de caracteres de utilitários. Aqui, todas as
funções do manipulador de strings que você viu serem adicionadas. Então, se eu quiser, vou arrastar e
soltar cada um deles em minha
função pronta aqui,
meu script de função de string de impressão que pode ser acionado
com a tecla S aqui. Então, se eu experimentasse isso, você pode ver como,
pressionando a tecla S, posso acrescentar esse valor em dólares
após as mensagens de dinheiro. Muito útil. Tudo bem, deixe-me me livrar
desse cara e
passaremos o tempo em segundos para a corda. Esse é
outro que eu gosto muito. O que isso fará, e eu a
preparo com antecedência, é alterar essa variável flutuante
para ter um valor de 500. Então, se eu fosse transformar
isso em segundos, quantos segundos seriam? Bem, isso fará
o trabalho para você. Então, se eu pressionar a tecla S agora, você pode ver como isso a imprime
em um bom formato de tempo. Vamos deletar esse. Vamos tentar dividir uma string. Então, se esta é minha string
de origem em 4 de julho com uma vírgula 17, 76, e eu quero
dividi-la aqui
no STR, tudo bem. Aqui, à esquerda,
terei 4 de julho. À direita disso,
eu obteria 17 76. Então, vamos
tentar isso rapidamente. Dividindo uma string. Estou indo para a
esquerda dessa vírgula, pressionando a tecla S. 4 de julho. E se eu mantivesse o
controle pressionado e ficasse
à direita disso, agora eu entenderia que,
na verdade, seria um espaço em branco em 17 76, mas você não consegue ver
o espaço em branco, ele simplesmente vai mostre um 17 76. Agora, algo interessante que você
pode fazer aqui é convertê-las em variáveis que
poderíamos mudar. Então você pode
clicar com o botão direito do mouse sobre isso, promover isso para uma
variável e chamar essa data de independência de estado
independente para os Estados Unidos de qualquer maneira, aqueles internacionalmente,
isso seria alguma outra data, espero que seja
para sua independência, você
deveria aproveitar esse luxo? Então, ao fazer essa compilação, você pode ver como
criamos a variável
dessa forma clicando com o botão direito do mouse e a promovemos para variável. Observe que ele pega
automaticamente as informações que
você codificou em sua função
naquele local e preenche
automaticamente
essa variável de string. Então, pensei em jogar
isso lá fora também. Vamos ver outra
aqui, essa função de substituição. Você também pode encontrar isso
na seção de cadeias de utilitários
e clicar com o botão direito do mouse no menu. Super útil porque você podia
ver um cenário como esse. E novamente, onde você
tem uma string de origem que
diz que a porta está trancada. Você pode alterar alguns
textos especificados, neste caso
bloqueados no texto aberto. Então, essa é outra vantagem
dessas funções de string. Você tem todas essas maneiras
diferentes de manipular os textos. Então, vamos lá. Isso deveria dizer que a porta está trancada, estou dizendo que mudou de
trancada para aberta. Então, pressionando a tecla S, a porta está aberta. E aí está. Uma variável de cadeia de caracteres é
uma variável que pode conter letras,
números ou símbolos. Eles são úteis
porque podem ser manipulados
dinamicamente
em tempo de execução. E mais uma vez, para encontrar
todas essas funções clique com o botão direito do mouse e você
deseja acessar Utilitários. Na parte inferior, aqui, uma string de
utilitários e você tem uma série de funções para
manipular essas cadeias de caracteres. Bem, isso vai fazer
tudo por esse cara, nos vemos no próximo.
47. TEXTO: Bem-vindos de volta a todos. Neste vídeo,
aprenderemos o que é uma variável de
texto, como criá-la e como ela pode ser
utilizada
na criação de scripts de
projetos. Portanto, essa é a terceira
dessa categoria de variável,
ou seja, a variável de nome, a variável de string
e a variável de texto. O que é a variável de texto
e quando ela deve ser usada? Bem, variáveis de texto
devem ser usadas para qualquer texto que um usuário possa
ver durante um jogo. Textos que você pode ver
em um HUD do jogo, ou talvez alguns textos que
você vê nos menus ou talvez em uma
tela de alta pontuação, esse tipo de coisa. Use esse tipo de texto que
você deseja localizar. Então, se você quer
traduzir seu jogo e todo o texto que o
acompanha para alemão, francês, espanhol, todo
esse tipo de coisa. Você vai querer ter
certeza de que esse texto está no tipo de variável de texto. Agora, as variáveis de texto
diferenciam maiúsculas de minúsculas, enquanto as variáveis
nomeadas não diferenciam maiúsculas de minúsculas. Eles não diferenciavam maiúsculas de minúsculas. As variáveis fiscais diferenciam
maiúsculas de minúsculas. Tudo bem, vamos trabalhar um pouco
dentro do nosso WB P HUD. Então é aí que
você pode descobrir que criamos isso há alguns vídeos. Também trabalharemos um
pouco
dentro do nosso
ThirdPersonCharacter Blueprint. Portanto, você também pode encontrar isso
na pasta
Blueprints em terceira pessoa. Então abra esses dois caras. Vou
começar no meu W BP HUD. Agora, você deve se lembrar de quando
fizemos isso há algum tempo. Tudo o que fizemos foi criar
uma caixa horizontal. E dentro dessa caixa
horizontal, adicionamos um widget de texto
e uma barra de progresso. Agora, eu tenho essa coisa de
saúde por enquanto, mas vou mudar isso
no painel Detalhes. Você simplesmente diz o nome do
personagem? Nome do personagem. Isso é do tipo de
variável text. Na verdade, se eu passar o mouse sobre
essa bandeira aqui, você pode ver que esses
são alguns textos que podem ser localizados em que a
caixa de seleção está ativada. Também vou mudar o nome desses widgets
específicos para nomes de personagens ou
textos de personagens. Que tal isso? Estamos falando de
variáveis de textos aqui. Só para deixar isso um
pouco mais claro. Então, o que vamos
fazer agora é E dentro do nosso
ThirdPersonCharacter, estou disposto a
criar uma variável de texto. E eu vou dar a
ele o nome que eu gostaria ao nosso
ThirdPersonCharacter. Então eu vou subir até lá. Vamos criar uma associação aqui
daqui a pouco. Mas vá até seu
personagem de terceira pessoa. E vamos
criar uma nova variável. E vamos chamar isso textos de
nossos personagens apenas
para deixar isso ainda mais claro. E vamos mudar
isso para um tipo de variável de texto. Vamos compilar isso. E vou chamar isso de meu super-herói. Isso soa como um bom nome. Agora, com essa
variável de texto criada, vou compilar
aqui e salvar. E agora vamos associar
essa variável ao nosso HUD W, B P para que possamos realmente ler esses textos de super-heróis. Então vá para o seu WPP HUD. Selecione onde está escrito o nome do
personagem. E no painel Detalhes,
onde diz o nome do
caractere de texto, precisamos criar uma encadernação. Vou fazer isso
clicando na encadernação. Crie uma encadernação. E isso vai nos
levar
da guia Designer
para a guia de gráfico. Foi exatamente o que aconteceu lá. A guia Designer leva você
de volta a esse layout visual. A guia Gráfico é onde você
pode criar algum script. E, mais especificamente,
isso nos levou à criação de uma função totalmente
nova. Então, no momento, nossa função é
chamada de obter textos de caracteres. Textos é zero, o que
é um nome horrível. O que foi feito foi
abrir uma nova guia aqui. E aqui está o nome
da função que estamos
montando. Vou renomear isso
passando o mouse sobre isso. E vamos renomeá-lo. F2 também mentirá para renomeá-lo, e vou chamar isso de
obtém textos de caracteres. Então, agora o que queremos
fazer daqui é muito parecido com o que
fizemos com a saúde do Get Player. Vou
passar para essa função muito rapidamente
clicando duas vezes nela. Estávamos escolhendo nosso
personagem de jogador e lançando para nosso ThirdPersonCharacter
para que pudéssemos obter essas informações variáveis. Vou destacar
esses dois nós, clicando com o botão
esquerdo e arrastando. Vou fazer o Controle C.
E depois vou clicar duas vezes na
função da qual acabei de vir. Eu recebo textos de personagens. E então aqui eu vou
fazer o Control V para colar isso. Vou conectar
isso assim. E mais uma vez, depois de ter uma referência ao seu
ThirdPersonCharacter, você pode extrair algumas
informações dele, incluindo quaisquer variáveis
que estejam dentro dele. Então eu criei essa variável
dentro do meu
personagem de terceira pessoa , aqui chamada de textos de
personagens. Então, de volta aqui para o meu
HUD WB P, dentro dessa função, vou arrastar até aqui
e posso
pesquisar os textos de um personagem. Quero obtê-lo e ver o valor de retorno que essa
função está procurando. Eu mencionei que,
na guia Designer, neste widget de texto
específico, estamos vinculando isso a
alguns textos reais. Essa é a saída que
estamos procurando aqui em nossa guia de gráficos. Isso é procurar o
valor de retorno de uma variável de texto. Então, vamos
inserir esses textos aqui . Assim. E se eu compilar e
salvar e agora jogar, você notará que
no canto superior esquerdo, agora está escrito super-herói, o nome do nosso personagem, conforme
especificamos dentro da variável de texto do
personagem. Ok, outra coisa que
eu queria mostrar com uma variável de texto
aqui é a maneira como você pode formatar alguns textos,
porque acho que muitos de vocês também acharão
isso útil. Agora, para fazer o que
eu quero mostrar, vamos voltar ao
nosso personagem de terceira pessoa. E então voltaremos
aqui para o nosso WPP Hudson. Não feche
isso ainda. Vamos voltar ao nosso
ThirdPersonCharacter. Assim. Vamos criar
novas variáveis de texto. Vou entrar em
Variáveis, clique em Mais. E eu vou chamar isso
de “perna do estado de saúde”. Então, vou mudar o valor padrão do estado
de saúde para ser algo interessante. Então, vamos compilar aqui e ver o que
vou digitar aqui. Deixe-me expandir
isso um pouco. dizer que você tem, e isso vai ser
um mano encaracolado, desculpe, colchete
encaracolado, não colchete
reto mantendo pressionado o turno, colchete encaracolado
esquerdo, saúde. Suporte encaracolado direito mantendo
pressionada a tecla Shift e pressionando o botão do suporte, restando
HP. Agora, enquanto. Agora, por que fiz isso é porque, com nossa variável de
texto aqui, temos a capacidade de
formatar nossos textos e alterar esses conteúdos
aqui para que isso seja lido, você tem 100 HP restantes, você tem 50 HP restantes, esse tipo de coisa. Agora, a maneira de
fazer isso é por meio um nó de formatação de textos. Então, eu quero formatar isso. Vou fazer alguns scripts
aqui e, em seguida, ele os
vinculará de volta ao nosso HUD do WPP. Então, aqui está o gráfico
de eventos de caracteres em terceira pessoa. Vou clicar com o botão direito do mouse
e vamos tentar a tecla nove. Qualquer tecla de entrada serve. A Nike funcionará
muito bem por enquanto. E eu vou
sair daqui. Na verdade, não vamos
sair daqui ainda. Quero trazer
nosso estado de saúde, arrastar isso e
vamos conseguir isso. E então vou sair
daqui e digitar o texto em formato. Ok, então as folhas atuais têm
apenas um pino, mas vamos
adicionar um alfinete aqui. E atualmente está
rotulado como zero. No entanto, se eu selecionar
esse nó de texto de formato, posso alterar
aqui o argumento que será esse pino de entrada. Muitas vezes, isso deve ser escrito exatamente como está escrito
em nosso estado de saúde. Então eu tenho maiúsculas H E, H E a L T H, saúde. Simplesmente assim. Com seu formato, os nós de
texto selecionados alteram o argumento
para que seja exatamente o mesmo, e isso
aparecerá como um pino de entrada nesse nó de texto de formato. Em seguida, o que vou fazer
é pegar nossa variável de saúde
aqui, assim. Atualmente, é um flutuador
e conecte-o aqui embaixo. Agora, atualmente está cinza, o que significa que pode absorver qualquer coisa. Então, vou conectar uma variável flutuante,
e ela dirá:
Ok, você quer
conectar uma variável flutuante, agora será uma entrada flutuante. Isso o mudará para qualquer tipo de entrada que você
colocar nele dessa forma. E o resultado aqui, vou promover
isso para uma variável. Clique com o botão direito em promover E criou essa nova
variável de texto aqui
chamada resultados. Vou mudar isso
para ajudar no resultado. Acho que isso será um
pouco mais descritivo. Então, agora o que estamos fazendo aqui é quando pressionamos a tecla nove, vamos pegar nosso estado de saúde
atual aqui, esta frase, se você quiser,
vamos trocar o que
especificamos aqui essa saúde e
a razão pela qual temos essa saúde exata entre colchetes é exatamente a mesma aqui nos argumentos
é para que ele leia que essa é a textura que
estamos tentando trocar. E então o resultado aqui
será o resultado
dessa linha com a saúde sendo trocada por qualquer
valor flutuante. Agora percebi que isso está
em forma de ponto decimal. Então, vamos obter
um valor aqui, 0-1. E normalmente você
gostaria de ler em 100 Health, esse
tipo de coisa. Mas isso vai ser bom
para fins de demonstração. Vou compilar a última parte que preciso
fazer aqui é
vincular esses resultados de saúde da
noite para o dia, WB be HUD. Então, para fazer isso, vou
voltar para cá. Deixe-me voltar para
minha guia Designer. Vou
arrastar e soltar rapidamente um widget de texto
em algum lugar próximo a ele. Não é necessário que isso
seja muito preciso. Isso só vai
ficar aqui. Eu não vou mostrar ou esconder
isso ou algo parecido. Vou chamar
isso de meu estado de saúde. E atualmente, se eu
jogasse, isso só nos
mostraria o estado de saúde
na tela. Assim, estado de saúde. No entanto, quero vincular
isso à nossa variável,
nossa variável de estado de saúde dentro de nosso
ThirdPersonCharacter. Então, precisamos criar
essa ligação acessando aqui, vincular, criar vinculação. E quando passamos
para a guia do gráfico, vamos mudar o
nome dessa função, pressionando F2 aqui para
obter o estado de saúde desse jeito. Vamos fazer o mesmo
que fizemos com nossas
outras funções aqui, vou clicar duas vezes
nessa outra função. Vamos pegar
esses dois nós, controle C. Voltar para nossa
função de estado de saúde em que estamos trabalhando, controle v. Assim. E agora que podemos fazer é encontrar dentro de nosso
ThirdPersonCharacter, certifique-se de ter compilado isso. Queremos pegar essa variável de resultado de
saúde. Eu não deveria mudar
isso para o Help Desk, vou chamar isso de resultados de
saúde de boa saúde. Vamos ser um
pouco mais precisos. Eles estão saindo do
nosso
tipo de personagem de terceira pessoa nos resultados de saúde. Queremos obter o resultado de
saúde, não o estado
de saúde dos resultados de saúde. Há dois com nomes semelhantes. E agora, se eu fosse compilar, salvar, observe que nosso
ThirdPersonCharacter, depois de pressionarmos a tecla nove, é
isso que vamos
atualizar nosso resultado de saúde aqui. Então, vou pressionar
o botão play. E uma vez que eu pressiono a tecla nove, você tem um HP restante. Agora, em algum lugar aqui
nesse personagem de terceira pessoa, eu estava diminuindo nossa saúde. Bem, foi com os doentes, a chave cinco, certo? Então, voltando para cá. E estou pressionando a
tecla cinco para diminuir minha saúde. Agora, se eu pressionar a tecla nove, ele deve atualizar isso. Agora eu tenho 50% de saúde, as cinco chaves diminuindo,
diminuindo, diminuindo. Eu não deveria ter 20
por cento de saúde. Então, vou pressionar a tecla F9. Mais uma vez, você também tem
20% de saúde. E eu poderia
formatar isso para ser mais sensato, mas você entendeu. E, finalmente,
mencionei que qualquer texto
voltado para o usuário, seja no HUD
ou nos menus, esse tipo de coisa que você
deseja localizar. Deve estar dentro de uma
variável de texto, esse tipo de texto. Ele deve estar dentro de uma
variável de texto se um usuário quiser lê-lo em idiomas
diferentes. Agora, como você faz todo esse processo que está muito além do
escopo deste vídeo. No entanto, vou
indicar essa
documentação específica. Na documentação
oficial do Unreal Engine 5, você pode consultar docs
dot Unreal engine.com. Você pode ver o
endereço aqui. Muitas informações
sobre como localizar textos com esses caras. Isso fará tudo por este. Nos vemos no próximo.
48. vetor: Bem-vindos de volta a todos. A variável vetorial é
o tópico deste vídeo. Então, vamos aprender como
criar um e como
utilizá-lo em alguns scripts de
blueprints. Então, primeiro, o que é
uma variável vetorial? Bem, uma
variável vetorial é aquela que contém três valores flutuantes, ou seja, números com
um ponto decimal. Eles geralmente são
usados para especificar dados de coordenadas 3D x, y e z. No entanto, eles podem ser
usados para conter R, G e B, ou seja, dados de cores vermelho ,
verde e azul. Tudo bem, para mostrar
alguns exemplos aqui, quero usar
nosso Plano de Nível,
mas antes mesmo de
entrar lá, vamos nos certificar de que você tenha uma caixa de gatilho dentro do
seu nível, porque estamos vou fazer uso disso para
mostrar algum uso de variáveis
vetoriais. Então, se você
ainda não fez isso, aqui, abaixo
do painel de posicionadores, com a guia básica selecionada, você pode encontrar uma caixa de gatilho. Vá em frente e coloque um
desses no seu nível. E então tudo o que fiz aqui foi definir as extensões da minha caixa para 200, 200, 200, espessura de linha de dez. E na seção de renderização, acabei de desligar o ator hidden
and games para que eu possa ver esse volume de gatilho
quando estou jogando. Tudo bem, com esta caixa de
gatilho selecionada e, em
seguida, pule para o seu plano de
nível. Agora mesmo. O que
vamos fazer é clicar com o botão direito. Você já me viu fazer
isso 1 milhão de vezes. Agora. Vamos adicionar um evento de sobreposição de
ator start. Queremos que algo aconteça quando sobrepomos essa caixa de gatilho e queremos que isso
aconteça somente quando o ThirdPersonCharacter
for o outro ator. Isso se sobrepõe a nós ao
arrastar para fora de lá digitando Cast to
ThirdPersonCharacter. A primeira coisa que quero
fazer aqui é simplesmente deslocar para outro local. Agora, para
determinar em qual local também
queremos trabalhar, poderíamos manter isso em
uma variável vetorial. Então, vamos ver
nossa seção de variáveis. Clique no botão de adição
e vamos chamar isso de nossa localidade distorcida. E para mudar isso para uma variável
vetorial, mais uma vez, você pode clicar aqui e
defini-la como uma variável vetorial. Ou com isso selecionado
no painel Detalhes, você também pode alterar o
tipo de variável para um vetor. Vou compilar aqui. E podemos ver que, uma vez que o fazemos, o valor padrão é definido como 00,0 e esses são valores
decimais. Esses são três valores flutuantes. E você pode ver que, como estou
destacando sobre
elas, normalmente são coordenadas x, y e z. Além disso, você pode clicar nesta
pequena seta para baixo para expandi-la e mostrar
x, y e z. O que vou fazer
aqui é definir isso
como um valor que está acima, no
ar, acima da
minha caixa de gatilho. Então, o que eu estou basicamente procurando aqui é que eu
quero sobrepor isso. Eu vou aparecer
aqui mesmo. Vou sobrepor
isso e depois quero me deformar em um local
logo acima dele com a ideia de
que vou cair em algum lugar próximo a ele. E então eu posso repetir
isso de novo e de novo. Então, vou copiar
a localização
dessa caixa de gatilho com ela selecionada
no painel Detalhes, vou clicar com o
botão direito do mouse aqui e copiar essas coordenadas. Em seguida, vou voltar
para o meu mapa de testes de
nível, Level Blueprint, que
está sob minha orientação para o local. E aqui
vou clicar com o botão direito do mouse e colar para colar
esses mesmos valores. No entanto, quero
definir meu valor z para ser maior para que eu não volte
para a mesma caixa. Então, vou definir meu
valor z aqui como 2000. Saiba que, dependendo de onde
você colocar sua caixa de gatilho, seus valores aqui
serão diferentes. Você só precisa
saber que seu x e y podem dizer o mesmo que sua caixa
de gatilho. O Z que você vai querer
definir para ser um
número maior para que você acabe se deformando acima
dos limites dessa caixa. Agora, o que queremos fazer
aqui é quando sobrepomos essa caixa com um personagem de
terceira pessoa, queremos arrastar para fora do nosso
ThirdPersonCharacter e digitar a localização do ator inserido. Esse é um nó de função
que pode mover seu alvo. Nesse caso, nosso personagem em
terceira pessoa para um novo local. E o que você
sabe? Estamos armazenando essa localização dentro
dessa variável vetorial. Assim, posso clicar com o botão esquerdo, arrastar
e soltar isso logo em cima do
nosso novo local. E vou compilar
isso para ter certeza de que nosso roteiro está
bem aqui e está, vamos salvá-lo e
vamos jogar. Então, uma vez que eu sobreponho isso, devo me deformar para um local que esteja acima dele
em algum lugar. Aqui vamos nós. Aí vamos nós. Você pode ver que eu continuo
caindo nela de novo
e de novo e de novo. Deixe-me tentar
me afastar de lá. Circuito infinito. Mas você entendeu a ideia. Agora você pode ver como expandir esse script
aqui mesmo em um efeito sonoro,
talvez um efeito de partícula
menor no local em
que sobrepomos essa caixa de gatilho e na distorção para o local. Mas a localização
da caixa Trigger é um exemplo
de uso de uma variável vetorial. Agora vamos fazer mais um uso de uma variável vetorial e
usá-la para especificar uma cor. Para isso, vou clicar
com o botão esquerdo
nessa distorção para localizar o
Controle D para duplicá-la. Isso duplicará essa variável
e eu vou
chamar isso de nova cor. Vou simplesmente
adicionar uma chave de entrada aqui. Vamos experimentar a chave, eu não sei a tecla nove e ver
se ela está disponível. As nove teclas, Claro, Qualquer evento de entrada serve. E vou arrastar isso
e digitar a string de impressão. E vai
imprimir o texto Olá. No entanto, se eu expandir isso para baixo, posso especificar uma cor de texto. Agora, se eu passar o mouse sobre
esse pino de entrada, ele diz que esse tipo de variável é uma estrutura de cores linear. Esse é o tipo de
variável que ele está procurando. E podemos criar
um desses
clicando com o botão direito do mouse e
promovendo para uma variável. Mas a ideia aqui
é
mostrar como uma variável vetorial pode ser usada para
especificar uma cor. Agora, se eu selecionar minha nova variável de
cor aqui e compilar para
poder adicionar um valor aqui. Está copiando os dados que vieram da minha
distorção para o local. Então, deixe-me definir
isso de volta para 00.0. Agora, se você estiver usando
uma variável vetorial para especificar uma cor RGB, você precisa saber que
esses valores seriam essencialmente de 0,0 a 1,0. Você está essencialmente especificando
qual porcentagem de vermelho ou porcentagem você quer de verde e qual porcentagem
você quer de azul. Vou definir minha
nova cor aqui para ser 1,0 para o valor r, o b e o g,
vou deixar como zero. Então, estou basicamente
dizendo que me dê 100% de vermelho, sem verde e sem azul. Agora, se eu tentar arrastar
e soltar isso sobre a cor do meu texto, é porque
eles não, não conseguem. No entanto, se eu arrastar e
soltar, eu entendo. E então eu arrasto isso para
a entrada de cor do texto. Ele vai
converter meu vetor em
um tipo de estrutura de cores linear. Agora, ao fazer isso,
posso compilar, salvar e garantir que
meu script esteja pronto para uso. Vamos jogar. Agora, quando eu pressiono a tecla nove, você verá que o texto Hello aparece em
vermelho e está sendo impulsionado pela minha variável vetorial onde estou usando isso
para especificar um valor de cor R, G e B. E aí está. usos comuns de
variáveis vetoriais incluem usá-las para gerar pontos de resposta
ou talvez para pontos iniciais e finais de uma plataforma
móvel. E exploraremos isso
mais tarde, quando fizermos uma aula sobre usar nós de cronograma
nos scripts de projetos. Gente, isso vai fazer
tudo por esse. Nos vemos no próximo.
49. Rotador: Bem-vindos de volta a todos. A variável rotadora é
a estrela deste vídeo. Então, vamos aprender como criar
um e como ele pode ser utilizado em um script de
projeto. Em primeiro lugar, o que é um rotador? Bem, o rotador é uma variável que contém informações
rotacionais. Agora, os objetos podem ser girados
em torno de três eixos diferentes , o x, o y e o z. E isso pode informar o
quanto queremos que um determinado objeto seja girado, armazenando-o dentro dessas variáveis
rotativas. Agora, antes de chegarmos a
qualquer uma dessas coisas, quero apenas
destacar aqui, com qualquer objeto selecionado
em seu nível como a rotação gira em
torno de um determinado eixo. Então, agora você
pode ver que eu selecionei meu volume de gatilho aqui, minha caixa de gatilho, e
atualmente estou no
meu modo de movimento, indicado
por esse widget com seta. Agora, se eu fosse mudar
isso para o modo de rotação, podemos ver como, se girarmos em torno do eixo x,
há setas vermelhas aqui. Isso envolve se mover assim. Ele se move em torno desse eixo. Da mesma forma, observe nosso eixo y aqui apontado
nessa direção. Se mudarmos
isso para rotação, moveremos
em torno desse eixo. Da mesma forma, se temos nosso eixo z aqui
apontado para cima e para baixo, se estamos girando
em torno desse eixo, estamos essencialmente
movendo-o assim. Girando-o assim. Eu preciso estar
gramaticalmente correto. Tudo bem, com isso,
também fiz mais uma
mudança entre os vídeos criei
uma pasta totalmente nova
aqui e nossa pasta de scripts
simplesmente clicou com o botão direito do mouse, criei uma nova pasta
e a chamei de ator. Bp's. O que fiz aqui
foi mover todos os meus projetos que estavam
na minha pasta de visão geral. Eu simplesmente os arrasto e
solto, clico com o botão esquerdo e
os arrasto para dentro da pasta do
meu novo ator BP. Porque isso parecia
um nome mais descritivo. Pasta de visão geral. Meio que sobreviveu
à sua vida útil. Então, vou criar
um novo plano aqui dentro das pastas dos meus novos
atores, BP. Ao clicar com o botão direito do mouse, criaremos
uma nova classe de blueprint. Este será um projeto de
aula de ator. Então escolha ator. E vou chamar essa porta giratória
BP underscore. Vamos criar
algumas variáveis rotativas dentro deste projeto. Em primeiro lugar, vamos clicar duas vezes nele
para abri-lo. E eu não quero adicionar
alguns componentes. Então, o primeiro componente que
vou
adicionar ao entrar na minha seção de
componentes, será uma
caixa, caixa, caixa. Deixe-me fazer uma busca
por uma caixa. Aí está. Colisão de caixas. E com isso selecionado, tenho alguns detalhes que
quero definir para isso no painel Detalhes. Quero definir
a localização como menos 45 e a localização z como 110. Você verá o porquê aqui
em pouco tempo. Vamos meio que
no ar desse jeito. Além disso, vou
mudar a extensão da caixa para 170 no x, 60, no y, em 110, no z. Então é meio alto,
algo assim. Tudo bem, com isso feito, vamos adicionar um componente de malha
estática. Vou adicionar isso. Estamos procurando uma malha estática. E atualmente essa
malha estática está anexada à nossa caixa. Vamos corrigir isso daqui a
pouco. Vou chamar
isso de malha de minha porta. Tudo bem, com isso selecionado
no painel Detalhes, quero definir nossa malha
estática para ser, clique nesta pequena porta suspensa de sublinhado
S M. Agora, esse é um ativo que reside na pasta de
solicitações de conteúdo inicial. Honestamente, você pode usar qualquer
tipo de porta como malha, mas esta funciona bem. Então, vamos usá-lo. Observe aqui que essa malha não tem nenhuma
colisão nela. Eu sei que você pode simplesmente
passar direto por ela, mas vai
ser bom para
mostrar a rotação de uma malha de porta. Vamos seguir em frente e colocar isso. Agora, mencionei que isso está atualmente
anexado à nossa caixa. Vou apenas arrastar
e soltar isso em cima da nossa caixa para
que não fique preso. Não deveria ser
muito importante, mas apenas jogar
comigo em casa. Tudo bem? próxima coisa que vamos fazer
é criar algumas variáveis. Então, na seção My Blueprint, na
seção
de variáveis, clique no botão de adição. Vamos chamar isso de
primeiro, o início localizado, a rotação
inicial, não a rotação do
local. Vamos mudar o
tipo aqui para ser um rotador. Em seguida, vou
selecionar isso
mais uma vez e fazer Control
e D para duplicá-lo. Isso vai ser
arte e rotação. Então, com isso,
vamos compilar para que
possamos definir
alguns valores aqui, estamos iniciando a rotação,
certifique-se de selecionar isso. Queremos que seja 00,0. Em seguida, vá em frente e selecione
sua rotação final. Só queremos que nossa rotação e
ao longo do eixo z seja 90. Então, você sabe, se você abrir
uma porta a 90 graus, você basicamente vai
começar com ela, como se fosse uma visão panorâmica. E então o final vai
ser mais ou menos assim, certo? Só vai
abri-lo. Balance isso daqui para cima desse jeito com meu mouse. Isso é bom, Sr. Waldroup. Tudo bem, a seguir,
vamos fazer um pouco de script
em nosso gráfico de eventos. Portanto, temos alguns
nós de eventos aqui por padrão, podemos clicar com o botão esquerdo do mouse em arrastar e nos
livrar deles. E agora queremos que
algo aconteça quando começarmos a sobrepor essa caixa. E então, quando terminamos de
sobrepor essa caixa, e essa é essa caixa
aqui, eu pulei para a guia da
minha janela de visualização. Então, vamos voltar
ao meu gráfico de eventos. Vou clicar com o botão direito do mouse
no componente da minha caixa. Vamos adicionar
um evento para quando começarmos a sobrepô-lo. E então vamos
clicar com o botão direito do mouse novamente no evento para a sobreposição final. Agora queremos
especificar que é o personagem do jogador
que está se sobrepondo a nós. Agora, eu poderia escalar para meu
personagem de terceira pessoa. No entanto, há outra maneira
de fazer isso. Então, eu gostaria de mostrar técnicas
diferentes. Vou digitar
com o botão direito do mouse para obter personagem do jogador. E o que vou fazer
aqui é verificar se o outro ator é igual a. Vou apenas digitar
o símbolo igual. Se isso for igual ao
meu personagem de jogador. Se eles forem iguais, vou manter pressionada
a tecla B e trazer um nó de ramificação como este. Outro ator é igual ao
meu personagem de jogador. O que eu quero fazer
é abrir a porta. Agora, para fazer
isso, usaremos um nó de linha do tempo. Agora eu tenho um vídeo
inteiro mais tarde no curso que
será dedicado a isso. Então, vamos
nos apressar um pouco aqui. Este vídeo não é sobre a
criação de um cronograma. Então, se você nem mesmo
entende completamente o que
está acontecendo aqui, tenha paciência comigo. Mesmo que eu faça o
possível para
explicar isso o mais rápido possível, clique com o botão direito do mouse em algum
espaço vazio e faça uma busca por um nó da linha do tempo. Depois de digitar
a palavra linha do tempo, ela será pesada na parte inferior para adicionar uma linha do tempo. E esse é um nodo muito especial. E uma das coisas que
vai permitir que você faça é dar um nome a ela. Vou chamar isso de rotação da
minha porta. Você pode ver que
tem muitos pinos de entrada,
muitos pinos de entrada
de execução onde podemos jogá-lo. Podemos parar neste nó, clicar duas vezes
para especificar uma animação
de que é uma linha do tempo. Vamos animar nossa
porta em um determinado cronograma. Se clicarmos duas vezes nisso, podemos adicionar uma linha do tempo
à nossa janela aqui, então eu cliquei duas vezes nela. Temos nosso
nó de cronograma de
rotação de portas bem no topo aqui. Queremos adicionar uma faixa. Queremos adicionar especificamente
faixas flutuantes. Se eu entrar na pista
aqui, clique no botão Mais. Queremos adicionar uma pista flutuante. Um Float Track nos permite
alterar uma
variável flutuante ao longo do tempo. Então, estamos adicionando um Float Track. Podemos renomear essa faixa e eu
vou chamar isso de rotação. Agora, o que eu quero
fazer é especificar alguns momentos. Portanto, a maneira de adicionar um ponto a esse gráfico é clicando com o botão direito do mouse
e adicionando uma chave. Essa é uma forma de adicioná-lo. E com esse primeiro ponto, adicionado esse primeiro quadro-chave, como é chamado, vou
especificar um tempo de zero. Um valor de zero. Pressione Enter. E isso vai colocar
isso aqui na minha trilha. Em seguida, vou clicar com o botão direito do mouse
novamente em outra tecla. Essa é uma maneira de
fazer isso, ou posso manter
pressionada a tecla Shift
e clicar com o botão esquerdo. Essa é outra forma de adicionar uma chave. Vou selecionar essa chave. E vou definir
a hora em um, ou
seja, 1 s, e
o valor em um. Agora ele vai saltar
da parte superior da tela aqui. Mas se você clicar nessas setas, poderá enquadrá-las assim. Agora eu também quero alterar
o comprimento da minha faixa aqui para atualmente ser de 1 s em vez de 5 s.
Isso basicamente especifica quanto tempo eu
quero que essa faixa tenha. Quero que seja tão longo
quanto meu último quadro-chave aqui, quero que seja 1 s. Então, o que essencialmente
vou fazer aqui é alterar
o valor de uma variável flutuante chamada
rotação de
zero, um valor de zero
em 0 s para um valor de 1 s depois, será lentamente, mudando
gradualmente esse
0-1 ao longo de
1 s. Agora, essa variável de
flutuação de rotação, se eu voltar para o meu
evento
gráfico aqui, observe que isso é chamado de rotação. Agora você pode ver que cronograma de rotação da
minha porta tem uma saída e essa saída
é um valor flutuante. Isso produzirá
esse valor flutuante. E, novamente, se eu voltar para essa linha do tempo clicando duas nela, clicando duas vezes nela. Vou mudar
o valor desse 0-1 gradualmente ao longo de 1 s. Agora isso é útil
porque podemos usar isso para conduzir algo
chamado loop. Então, se eu clicar com o botão direito do mouse
e algum espaço vazio, posso pesquisar
um nó chamado rotador. Agora, isso vai
ser confuso no começo, mas vou
descrever como isso funciona. nó de alerta nos
permite passar de um valor para outro durante um
determinado período de tempo. E, de fato, se girarmos ou passarmos
o mouse sobre o topo desse nó, ele diz que vamos interpolar
linearmente entre a e b com base no
valor Alfa que fornecemos. Então, vai funcionar assim. Uma rotação vai de 0 a 1. Esse é o valor.
Vai ficar entre 0-1 ao longo de 1 s. Quando Alfa for zero, ele lerá o valor
desse nó
em que estamos iniciando a rotação. Observe que nossa
rotação inicial é basicamente 0,0. Agora, como nosso
valor de rotação aqui vai de 0 a 1, vamos gradualmente
nos mover do nosso valor a, nosso valor b. Então, como nossa rotação
aqui é assim, 0-1 sobre 1 s, ela estará continuamente
se afastando de a para B sobre 1 s de 01
vai nos mover de a para b. Então nossa rotação final vai especifique nossa rotação final. Estamos começando nessa rotação. Estamos terminando nessa rotação. Agora está tudo bem, mas o valor de retorno
aqui precisa ser
conectado à função de
rotação relativa definida. Ou o que vamos fazer aqui
é dizer, ei, malha de porta, esse é o componente
que queremos girar, arrastar e soltar em nosso gráfico. Em seguida, arraste-se para fora disso. Queremos definir sua rotação
relativa. Isso é mudar sua rotação em relação ao local de
onde você começou. Então, nossa configuração final ficará assim. Vamos analisar isso para
entender isso um
pouco mais detalhadamente. Agora, ao sobrepor
esse volume de gatilho, vamos descobrir se personagem
do jogador que
foi o fator geral, o outro ator
que se sobrepôs a nós. Se isso for verdade, vamos
jogar, jogar esta linha do tempo. Vai ser 0-1,
um valor de rotação
se o valor flutuante for superior a 1 s. E, ao fazer isso, alterando o valor
dessa variável 0-1, passaremos da nossa rotação inicial para nossa rotação final
ao longo de 1 s. é o que isso está fazendo. E o retorno dessa passagem
de a para B
fará com que a malha da nossa porta
gire ao longo de um segundo. Vamos nos
dar uma tribo. enquanto, nem nos preocuparemos com
nossa sobreposição final. Mas para fazer
isso, precisamos arrastar e soltar isso
em nosso nível. Vamos arrastar e soltar
isso em nosso nível. Vou colocá-lo aqui. Vamos clicar em
Jogar. E você sabe o que? Para fazer isso, devo me certificar de que estamos fazendo isso em uma nova janela
do editor como essa. Além disso, vou fazer
isso de dentro do
nosso projeto aqui para que você
possa ver o roteiro em ação. Então, deixe-me
ficar desse jeito aqui. Vamos clicar em jogar aqui. Temos nossa configuração de depuração
em uma porta giratória. Traga-o para nossa janela de
jogo aqui. E quando eu sobreponho isso, você pode ver que ele girou
90 graus. Agora, como você pode ver, quando eu saio desse volume de
gatilho, ele não o atrasa
ou algo parecido. E já definiu a
rotação desta para ser aberta. Então, está aberto. Agora eu quero chegar tão perto. Só precisamos usar uma configuração semelhante à que
temos aqui. Então, o que vou fazer é arrastar um aqui. Digite o sinal de igual. Mais uma vez,
vamos descobrir se outro ator é igual
ao nosso personagem de jogador. Mais uma vez, vamos
copiar nosso
controle de ramificação C, controle V. E se for verdade que o outro
ator encerrou nossa sobreposição, se isso for verdade, vamos
reverter esse cronograma. Vamos reverter a rotação
daquela porta. Então, vamos compilar isso. Salve no jogo. Vou tirar isso
daqui para que você possa ver o roteiro sendo lançado. Tudo bem, então a linha do tempo é reproduzida. Então, vamos acabar com nossa sobreposição. Fique atento ao lançamento do
roteiro. Abra o Sesame. Lows,
sem mais nem menos. E aí está. Neste vídeo, usamos
a variável rotadora para especificar um
local inicial para nossa malha de porta, bem
como uma
rotação final para nossa malha de porta. É tão simples quanto aqueles caras que farão
tudo por esse vídeo. Nos vemos no próximo.
50. Transformação: Bem-vindos de volta a todos. A variável de transformação é
aquela
com a qual estamos lidando neste vídeo Mostraremos como
criar uma e como ela pode ser utilizada na criação de
scripts de projetos. Agora, um excelente uso
da variável de transformação
é quando você especifica um ponto dentro um nível ao qual talvez
queira responder. Agora, a variável de transformação é uma variável que
contém dados de localização, rotação e escala. Na verdade, se você olhar
no painel direito,
no painel Detalhes, para ver qualquer ator que você tenha selecionado
em seu nível, poderá ver algumas
informações de transformação sobre ele. Na verdade, se eu selecionar o ator inicial
do meu jogador aqui, você poderá ver
a
localização especificada, a rotação e a escala. Então, essa
é essencialmente uma variável que consiste em nove valores flutuantes, três cada na localização, rotação e escala nove no total. Agora, por uma questão de tempo, eu configurei um monte de coisas
antes de gravar este vídeo. Então, deixe-me mostrar o que
fiz e
vou explicar
isso passo a passo. Para começar, aqui eu
tenho meu
ator inicial de jogador localizado ali mesmo. Como em muitos outros vídeos, adicionei uma caixa de gatilho ao meu nível. E desde que você
tenha seu jogador, seu
painel de atores está disponível, que você pode
usar ali mesmo. Você pode pegar uma
caixa Trigger ali mesmo. E também tenho três
atores-alvo, 12.3. E você pode encontrar esses
caras se pesquisar
no painel de atores locais e
apenas pesquisar o alvo, você encontrará um ator
ponto-alvo. Eles são essencialmente excelentes para especificar um ponto no espaço. Esses ícones não
aparecerão enquanto você estiver jogando. No entanto, ao selecioná-los, você pode ver a localização deles. Use também sua localização ou seus dados de
rotação. E eu gosto de usá-los
para esses propósitos. Agora, entrando no
nosso Level Blueprint, deixe-me mostrar o roteiro
que eu montei aqui. Então, vamos conferir em
nosso Plano de Nível, começando com a configuração
de pontos de desova aleatórios. Então, neste vídeo inteiro, vamos usar
uma variável transformada. Então, o que você quer
fazer aqui é,
no painel My Blueprint,
na seção de variáveis, clicar no botão de adição e
criar uma nova variável. Deveria ser do tipo de transformação
ali mesmo, e eu chamo isso de ponto de resposta. Agora, se você compilá-lo, descobrirá
que seus valores padrão são zeros, zeros, zeros e a escala é 111, essencialmente os verdadeiros valores
padrão. Agora, o que vamos fazer aqui é ao começar a jogar,
após o início do jogo, começar a jogar,
após o início do jogo, você pode encontrar isso
clicando com o botão direito do mouse e fazendo uma busca por
Event Begin Play. Queremos definir nosso ponto de
resposta, ou
seja, preenchê-lo com alguns dados porque não queremos manter a localização e
a rotação, todo esse tipo de coisa
em zeros, zeros, zero. Então, para que vamos definir
esse valor para que, novamente, as variáveis, o conteúdo delas
possam ser alteradas, elas podem ser definidas. Então, o que eu fiz aqui, pego uma referência a
todos os três pontos-alvo. Agora eu chamo esses pontos-alvo alvo 0,0, alvo 0,1
e ponto-alvo como. E então, o que você pode
trazer como referências a elas está de volta ao seu nível. Você pode selecioná-lo e, em seguida,
um por um, com ele selecionado, você pode manter pressionada a tecla R
e clicar com o botão esquerdo, assim. Diversão, mais complicada. Se eu selecionar todos esses três
pontos-alvo lá, eles estão todos selecionados e, em seguida,
apertar o RT e clicar com o botão esquerdo, posso
trazer referências a todos os três imediatamente. Belo truque. Eu gosto
muito desse. Então o que eu fiz foi arrastar
cada um deles. E eu disse, dê-me
que os atores se transformem. Estou dizendo, me dê, me
dê esses dados
aqui para cada um desses pontos-alvo dados. Então o que
eu fiz foi sair daqui e digitar make array. Então, basicamente, estou criando uma lista de diferentes transformações, diferentes
dados de transformação do alvo 0.0, ponto
alvo e do alvo 0.2. Então, eu tenho uma lista de três transformações
possíveis. O que eu fiz então
foi sair daqui e
digitei gets e queria
obter uma referência, aquele cara ali mesmo. E então eu arrasto para trás e digitei um
número inteiro aleatório no intervalo, estou dizendo, dê-me uma
dessas transformações desta
lista e torne-a 0-2. Talvez seja necessário ajustar
esses números dependendo quantos pontos-alvo diferentes você
conectou a essa matriz. Então, estou dizendo que
me dê 01 ou dois, esse é o meu intervalo, zero a dois. E o resultado disso, eu vou definir como
meu ponto de resposta. Então, isso mudará
ao começar a jogar. Vamos atualizar
nossos pontos de resposta para um determinado local. Um desses três, vai ser escolhido aleatoriamente. Agora, isso é apenas definir esses pontos de resposta,
essa variável de transformação, mas na verdade não
obtivemos e usamos essa Transformação
de Ponto de Resposta. Então, lá embaixo, eu tenho
um script adicional. E deve ser o seguinte. O que eu fiz aqui foi começar a
sobrepor essa
caixa de gatilho e, mais uma vez,
com essa caixa de gatilho selecionada
novamente com essa caixa de gatilho selecionada em seu Level Blueprint, você pode clicar com o botão direito do mouse
em um evento para isso e fazer em um
ator, comece a se sobrepor. Podemos nos arrastar até aqui e depois fazer um casting para nosso
ThirdPersonCharacter. Queremos fazer algo quando nosso ThirdPersonCharacter estiver
sobrepondo essa caixa de gatilho. E o que estamos fazendo aqui é fazer
algumas coisas e aí
que
entra um nó de sequência , onde eles
sequenciaram o outro. Podemos dizer “faça isso” e
depois “faça isso”. E podemos realmente
adicionar coisas adicionais se clicarmos neste
botão positivo aqui embaixo. Mas é essencialmente uma maneira agradável e
arrumada de dizer faça isso, depois isso, então qualquer coisa
que venha depois disso. Então, a primeira coisa que
queremos fazer depois que nosso personagem de terceira pessoa se
sobrepõe é a caixa Trigger é destruir nosso personagem de jogador atual, nosso
personagem atual de terceira pessoa. Queríamos destruí-lo. Então, o que vamos
fazer imediatamente depois é gerar
um ator da sala de aula. Agora, observe que este é um ator de
spawn do node de classe. No entanto, depois de preencher a classe com nosso
ThirdPersonCharacter, ele atualizará
o nome aqui, mas esse é um
ator de spawn do node da classe. Agora, o que você precisa
fazer aqui é
especificar uma transformação de spawn. E é aqui que
estamos usando
nossa variável de transformação que
criamos e preenchemos. Estamos volta aqui
quando começamos a jogar. Sem isso. Se você compilar, isso
gerará um erro e me
deixará realmente fazer isso. Vou quebrar isso, mantendo pressionada a
tecla Alt e clicando com o botão esquerdo. Então, se eu fosse compilar,
diria: Ei, você precisa ter
uma transformação de spawn conectada para que possamos
prosseguir e conectá-la. E então o que estamos
fazendo daqui é botão direito do mouse em algum tipo de espaço
vazio no controlador get player. E fora disso, e deve estar fora disso. Se você se arrastar para fora disso porque o alvo
é um controlador, você pode pesquisar
esse nó de posse. Ao possuir, arrastando para fora de lá e
agarrando um nó de possessão, você pode escolher um
peão para possuir. Aqui estamos gerando um novo
personagem de terceira pessoa. Aqui estamos dizendo: Ei, queremos gerar ou
queremos possuir esse personagem de terceira pessoa
com nosso controlador de jogador. Falaremos mais sobre os controles do
jogador mais adiante no curso. Vamos prosseguir e compilar aqui. E esse é o nosso
roteiro para destruir o jogador e depois responder outro, acabar com ele. Então, está tudo emoldurado aqui. Se você quiser pausar
o vídeo aqui e dar uma boa olhada
nele, aí está. Ok, vamos
jogar novamente. E vamos ver isso em ação. Isso vai ser um
pouco pequeno aqui. Mas espero que você possa ver alguns
desses fios se soltando. Vamos jogar. E já
definimos um ponto de resposta. Deixe-me prosseguir e definir meu objeto de
depuração lá no meu nível. Agora, uma vez
que eu sobreponha essa caixa de gatilho, você vai nos ver
destruindo o ator. E então, imediatamente
após gerar
um novo ThirdPersonCharacter e
possuí-lo. Aqui vamos nós. E isso mostra esse ponto
além do nível. E atualmente está
escolhendo a mesma novamente, porque somente no início do
jogo definimos nossa variável de transformação para um desses três
pontos-alvo. No entanto, se você fosse
fazer algo assim, arraste para fora daqui,
arraste de volta para cá. Toda vez que eu sobreponho essa caixa de
gatilho e estou redefinindo, estou escolhendo aleatoriamente um
desses três
pontos-alvo que eu quero definir como minha variável de resposta. Então, vamos tentar isso. Então, sobrepondo-se. Eu apareço por trás disso. Vamos nos deparar com isso novamente. Para a esquerda,
aquela vez atrasada. Novamente, isso é
escolhê-lo aleatoriamente. Há outra coisa com a
qual eu quero mostrar aqui. A variável de transformação
é que você pode realmente extrair esses dados exclusivos de localização, rotação e escala. Agora, essa variável de transformação
contém todos esses dados. Mas se você quisesse extrair apenas uma parte
desses dados, você poderia. E a maneira de
fazer isso é arrastando para fora desse pino aqui
e digitando divisões. Deixe-me quebrar
esse fio aqui. Em vez disso, clique com o botão direito do mouse nele e as coisas dividem o Struct Pin. Desculpe por isso. Aqui, podemos dividir nossos
pontos de respondente transformados
em dados
de localização, rotação e
escala. E, como você pode ver, uma
variável transformada
consiste essencialmente em dados vetoriais, dados
do rotador e dados vetoriais. Da mesma forma, a partir
dessa transformação de spawn aqui em nosso
ator de spawn do nó da classe, eu poderia
clicar com o botão direito do mouse nela e dividir esse pino
nos dados de localização, rotação e escala. Se você não gostar desse
nível de granularidade, clique com o botão direito do mouse
nesses pinos e
recombine-os novamente em apenas uma transformação
singular. Pino recombinado e batido
é o que isso é chamado. Então, pensei em jogar
isso lá fora também. Então aí está. Uma transformação, uma nota
variável para algo como especificar
um ponto de resposta. Isso é suficiente para oferecer a
essa,
pessoal, até a próxima.
51. Ator (objeto): Bem-vindo. Neste vídeo, nosso objetivo é
aprender o que é
um ator, uma variável, como criar uma
e como ela pode ser utilizada na
criação de scripts. Agora, com a divulgação completa aqui, este vídeo
será basicamente uma análise de
nosso vídeo de referências a objetos em tempo de execução da classe BP , que
fizemos anteriormente no curso. Agora, se eu entrar e jogar aqui, isso servirá como
um pequeno lembrete. Quando pressionamos a tecla de seta, isso é o que
escrevemos naquele vídeo. Quando pressionamos uma tecla zero, estávamos enviando um traço de linha para o mundo desse jeito. E quando um objeto escondido
no canto superior esquerdo, é mostrado o nome daquela
coisa que estamos atingindo. E uma vez que definimos esse
ator como variável, podemos pressionar a
tecla nove para fazê-lo desaparecer. Agora, ao fazer isso, enquanto
fazíamos, definíamos uma variável de ator sempre que nosso traçado de
linha detectasse um acerto. Agora vamos voltar ao nosso bp ThirdPersonCharacter
localizado em nossa pasta
Blueprints em terceira pessoa e ver os scripts que
montamos lá. Então, o que estamos fazendo aqui é
ao pressionar alguma tecla de entrada, eu estava usando a tecla de seta. Estávamos enviando um traçado de
linha começando na localização de
nossos atores e terminando em nosso ponto final de
rastreamento de linha, que era uma variável que criamos em nossa seção de
componentes aqui. Está em nossa janela de visualização,
aqui mesmo. Esse é um componente de erro
que também está listado como uma variável no endpoint de rastreamento de linha do
componente. É assim que chamamos
esse componente de seta. Então você está iniciando um
rastreamento na localização de nossos atores. Estamos terminando com aquela flecha. E estamos enviando isso,
aquela linha traçada para
o mundo ao longo do canal
Visibility. Também temos esse
tipo de Draw Debug definido para quatro durações. Então, podemos ver esse traço de linha. E se detectarmos
que atingimos algo, se isso realmente
atingiu alguma coisa, esse valor de retorno
acaba sendo verdadeiro. Vamos tocar um som. E então também vamos
divulgar os sucessos aqui. Isso é o que tudo isso está fazendo. Saímos daqui e
estamos divulgando os ataques. E estávamos
descobrindo o que atingimos. E estamos definindo isso dentro
de um tipo de variável de ator. Agora, poderíamos criar isso
clicando com o botão direito do mouse aqui e escolhendo promove duas variáveis no menu
do botão direito. Ou a forma como você pode criar uma variável de ator acabou
na seção de variáveis, você pode clicar no botão de adição e simplesmente digitar ator var. E aqui está configurando-o como ator imediatamente, porque essa é
a última variável que eu disse. Mas você poderia fazer uma
busca por ator. E nos
tipos de objeto, você gostaria de
escolher a referência de objeto do ator. Agora vamos falar sobre o que
são referências de objetos válidas. Bem, exemplos de objetos
podem incluir luzes
, malhas estáticas, câmeras, sinais de
som ou outros atores de
projeto. Aqui estamos apenas detectando o que atingimos e definindo
isso como nosso ator. Realmente não
importa se é uma cadeira de malha estática versus
o que quer que seja. Seja qual for essa malha,
isso realmente não importa. Qualquer coisa com a qual nosso traço de linha
esteja colidindo. Isso vai definir isso
como nossa variável de ator. Então, estamos apenas
imprimindo
o nome disso na tela. Agora, a razão pela qual estávamos
armazenando isso dentro de variáveis de um ator é porque uma vez que
nosso traçado de linha atinge
algo e nos define, queremos que ele seja
capaz de destruí-lo. E isso é o que esse roteiro
estava fazendo aqui embaixo. Ao pressionar a tecla nove, estávamos descobrindo, ei, qual é o conteúdo
dessa variável Hit Actor,
essa variável de ator? Se isso for válido, significa que
há algo nele. Se isso for válido,
queremos destruí-lo. Portanto, o conteúdo desse ator de
sucesso pode mudar. Deixe-me demonstrar que estou clicando em jogar aqui. E, novamente, vou
pressionar o botão, deixe-me definir meu objeto de depuração. Aqui está meu b, meu
personagem de terceira pessoa. Traga meu personagem mais
uma vez. Então, vou enviar
esse traço de linha para
o mundo
pressionando a tecla V zero. E então, no canto superior esquerdo
, você vai ver o nome da coisa que
estou batendo. Chave zero. Não estou perto o suficiente. Tenho que chegar um pouco mais perto. Aí vamos nós. Stat, preview, mesh,
seja o que for. Então, se eu pegar a Nike, isso obviamente vai desaparecer. Mas se eu
dissesse para repetir esse cenário e
fazer a mesma coisa, vou começar pressionando a tecla zero aqui para definir
isso. No entanto, posso
redefinir o conteúdo lá chegando a esta
cadeira pressionando a tecla zero. Então, agora, se é isso que está
definido como meu ator de sucesso aqui. Então, agora, se eu pressionar a Nike, isso não vai destruir isso. Isso vai destruir
minha cadeira porque esse foi o mais
recente set de Ator de Sucesso. Aqui está a Nike, boom By Chair. Agora, só para mostrar que essa variável de ator não
precisa ser uma malha estática. Pode ser algo
como uma luz. Vou definir isso a
partir de outro plano. E também apenas para
mostrar que você pode definir isso a partir de
outro Blueprint. Então, vou voltar
ao meu nível aqui, e vou colocar
uma luz no meu nível. Você pode colocar, quando estiver em
seu lugar, painel de atores. Aqui é onde você pode
encontrar as luzes. Ou, alternativamente,
você pode vir
aqui e depois as luzes florescerem . Você pode adicionar uma luz dessa
forma que a luz pontual serve. Vamos arrastar e soltar
um desses em nosso nível. Eu só vou
fazer essa soma de cores
nocivas como rosa. E então o que vou fazer
é entrar no meu Level Blueprint,
abrir Level Blueprint. E vamos
dizer isso quando eu pressiono alguma tecla aqui dentro, vamos ver quais tipos de teclas
estão disponíveis aqui. Eu só usei uma chave próxima, então vamos usar as duas chaves, certo? Estou no meu
gráfico de eventos aqui, vamos clicar com o botão direito
do mouse nas duas teclas. Vamos fazer uma busca
pelo teclado. É assim que você pode encontrar esses eventos de teclado com
muita facilidade. Aperte as duas teclas. E
ao fazer isso, vamos clicar com o botão direito do mouse em Obter personagem do
jogador. Então, se nos arrastarmos para fora disso, podemos passar para nosso
ThirdPersonCharacter. Novamente. Depois de ter acesso ao
seu ThirdPersonCharacter. E sim, eu percebo que tenho uma referência de personagem armazenada
aqui à esquerda. Eu poderia usar isso também. Mas uma vez que eu tenha isso, posso sair daqui e encontrar
essas variáveis do Hit Actor
, desde que elas sido criadas e
eu tenha compilado. Então, novamente, estamos tentando
extrair esse ator ou uma variável e configurá-lo do
nosso Level Blueprint. Vamos sair daqui e
digitar sucessos, ator. Vamos definir
o Hit Actor. E o que queremos
definir para o Ator de Sucesso? Bem, se eu segurar a tecla
R e clicar com o botão esquerdo, posso configurá-la para ser
minha luz pontual. Vamos entender o que
eu estou acontecendo aqui. Deixe-me compilar isso rapidamente, para garantir que os
scripts estejam prontos para uso. Então, a partir do Level Blueprint, estou acessando meu Character Blueprint sempre que
pressiono as duas teclas e vou definir
a variável ator dentro do meu ThirdPersonCharacter
como o ponto luz. E então, dentro do meu
ThirdPersonCharacter Blueprint, vou pressionar
a tecla nove para destruir o conteúdo
dessa variável Hit Actor, que neste caso ela seria preenchida com aquela luz pontual. Então, vamos em frente
e nos dar uma jogada. Eu realmente não tenho um bom
meio de exibir os dois, na verdade, eu posso
mostrar os dois. Não importa. Vou jogar aqui. Então, estamos começando em nosso mapa
de teste de nível aqui. Vou definir minha
opção de depuração para ser o mapa de teste. Ok, então vamos descobrir a luz. Você não pode ver o ícone de luz, mas você pode ver essa luz
no chão para
saber que ela está lá. Vou pressionar as duas teclas. Então, isso preencherá
essa variável de ator
com a luz pontual. Tudo bem, isso já foi definido. Agora, deixe-me pular para meu
ThirdPersonCharacter. E mais uma vez, tenho que
abrir essa janela novamente. Opa, veja, lá vamos nós. Então, agora, quando eu
pressiono a tecla nove, vejo essa luz desaparecer,
e aí vai. Então, neste vídeo, você aprendeu como
criar uma variável de ator e como ela pode ser definida e
manipulada de alguma forma. E também fizemos alguma comunicação cruzada com o
Blueprint. Para que você poderia usar
algo assim? Bem, imagine como
um sistema de criação em um jogo em que talvez você precise interagir com alguns itens
colhíveis em seu mundo. E seu objeto, seu objeto colhível
pode ser o que seu personagem estiver
mais próximo de uma flor, um pedaço de madeira, esse tipo de coisa sempre
pode ser definido como seus atores colhíveis com os quais
você está tentando interagir. Tudo bem, pessoal,
isso vai bastar para este vídeo, nos vemos no próximo.
52. Coisas variáveis para saber (parte #1): Tudo bem, bem-vindo de volta. Neste vídeo, nosso
objetivo é aprender algumas
coisas importantes que você deve saber ao trabalhar com
variáveis no irreal. Agora, essas não são realmente
dicas e truques em si. Eles são mais uma explicação de alguns conceitos-chave nas opções de
variáveis Você deve saber sobre coisas como inicializar
uma variável, como definir uma variável
como pública ou privada e até mesmo o que isso significa. E como expor
a variável à cinemática ou quando gerada. Em primeiro lugar,
falaremos sobre
inicialização de variáveis. E para demonstrar isso, vou trabalhar dentro dos meus
projetos de ThirdPersonCharacter. Se você esqueceu onde aquele cara está, eu o acesso em nossa pasta
Blueprints em terceira pessoa, lá está seu BP, personagem de
terceira pessoa. Então, o que significa
inicializar uma variável? Bem, isso significa dar a ele
um valor inicial de alguma forma. Agora, muitas vezes
atribuímos a uma variável um valor padrão quando
criamos a variável,
mas nem sempre, podemos inicializar e, caso contrário esvaziar a variável quando ocorre
um evento, isso pode ser um evento de sobreposição , pode ser um evento de entrada, algo dessa natureza. Considere este exemplo
que eu configurei antes deste vídeo em
meu ThirdPersonCharacter. Então, primeiro de tudo, criei
no painel My Blueprint uma
variável chamada warp to locale. E é do tipo de variável
vetorial. Agora, o que estou fazendo aqui é
começar o evento. Lembre-se de que você
só pode
começar a jogar um evento em um gráfico aqui. Eu adicionei isso. E o que estou fazendo é
assim
que começamos a jogar, é quando esse personagem aparece no meu nível, no local inicial do
meu jogador, ali mesmo. Quando surge, estamos simplesmente obtendo a localização de
nossos atores. Nesse caso, nosso
ThirdPersonCharacter. E estamos definindo
essa localização como as coordenadas dentro
dessa variável vetorial. Então, por padrão, aqui, meus valores para essa variável de
distorção para localidade são 00.0. No entanto, quando eu começo a jogar, o conteúdo disso
é inicializado. Eles são trocados para a localização do
meu ator, onde meu personagem em terceira pessoa
está aparecendo. Então, aqui, estou simplesmente
adicionando um pouco de script para fazer uso dessa variável agora inicializada,
essa variável preenchida. Depois de pressionar a
tecla numérica no meu teclado, vou definir a localização do
meu ator. Esse é esse projeto, esse é o próprio ator-alvo
para esse determinado local, a distorção para a localização local. Então,
verifique isso no meu mapa aqui. Coloquei esta cadeira bem
perto de onde estou desovando. Porque lembre-se,
somos um personagem que surgiu exatamente
neste local. Ao começar a jogar em que
nosso personagem responde, definiremos a localização de nossos
atores como o local em que queremos nos deformar para a localização de
nossos novos atores ou,
bem, nosso
personagem em terceira pessoa é a localização precisa. Então, essencialmente,
o que está em jogo aqui. Agora, essa variável
já foi inicializada antes
mesmo de eu definir meu objeto de
depuração aqui, então isso já ocorreu. E agora, quando eu colocar
isso de volta no lugar, você vai ver, eu
vou sair desse ponto. Mas essa distorção para o local foi estabelecida no local em que
eu nasci. Então, sempre que eu
pressiono a tecla
numérica, a tecla a mais no
meu teclado, o símbolo de mais. Ele vai voltar direto
para aquele local porque esse é o local de inicialização. Botão plus, não
importa. Botão Plus. É um hábito que consiste em inicializar uma variável para atribuir a
ela um valor inicial. A seguir, vamos falar
sobre variáveis públicas versus privadas e
o que isso significa. E para este exemplo, vou usar meu captador de exemplo da
BP. Eu tenho um desses colocando
meu nível e depois
cliquei duas vezes nele para
abri-lo, aqui em cima. Então, se você se lembra
de um vídeo anterior, criamos uma integridade para
adicionar a variável flutuante. E no
lado direito, aqui, onde temos esse olho atento para algumas
dessas outras variáveis
para adicionar à saúde, simplesmente
clicamos aqui para
mostrar o ícone do globo ocular. E ao fazer isso, isso fez com que esse
campo editável da instância tivesse essa caixa de seleção. Portanto, essa caixa de seleção é igual a um globo ocular
não exposto aqui. Portanto, não importa se
eu clicar aqui para fechar. Isso definirá a
caixa de seleção editável dessa
instância como falsa. E se eu clicar aqui, ele vai configurar isso para estar ativado. Não importa qual
deles você alterna,
você está alternando para
a mesma propriedade. Agora com isso ligado. E você pode ver
na dica de ferramenta aqui que está dizendo que essa é uma variável editável
publicamente. O que isso ainda significa? Então, depois de definir isso, você compila isso e
volta ao seu editor de níveis. Em qualquer caso, ou
seja, para qualquer cópia
deste plano, adicionado
ao seu nível. Essa variável que você definiu para ser editável publicamente agora está acessível quando você
seleciona esse objeto no painel de
detalhes, confira. Essa variável de adição saudável agora
pode ser modificada para cada instância
desse plano. Se eu mantivesse pressionada a tecla Alt, clique com o botão esquerdo e arraste, agora tenho uma segunda instância desse
plano, o nível MI. Então, para este exemplo
do plano, eu poderia mudar minha saúde
para adicionar 0,5. Neste caso
do plano, eu poderia definir que
seria
20%, essa cura 50%. Foi assim que fizemos essa configuração. Então, essa é uma variável pública. É igual a esse campo
editável de instância aqui. Agora, um pouco mais longe dessa instância, o campo editável
é essa opção privada. Se marcarmos essa caixa
em uma determinada variável, o que fizemos foi fazer com que essa variável
não possa ser modificada a partir de
esquemas externos. Então, o que vou fazer aqui é
compilar isso. Eu vou economizar,
então vou
entrar no meu Level Blueprint aqui. Observe que eu tenho meu exemplo de captador
BP, um desses selecionado, está
tudo bem. Qualquer um
desses serve. Eu selecionei o número
dois aqui, mas qualquer um deles serve. Vou entrar no
meu plano de níveis. Vou manter pressionada a
tecla R e clicar com o botão esquerdo para trazer uma referência a esse
exemplo, pegue-a. E agora vou
fazer uma busca por essa variável chamada
Saúde para adicionar. E aqui vamos nós. Vou me arrastar para fora disso
e digitar saúde para adicionar. E você pode ver, eu
nem consigo encontrá-lo aqui. Ela não aparece
porque está definida como privada, o significa que não consigo
modificar ou acessar essa variável a partir de um modelo externo,
como o Level Blueprint. No entanto, se eu voltar
para minha coleta de exemplo da BP aqui, vou desmarcar isso. Vou compilar, salvar e voltar ao
meu Level Blueprint. Vou sair
daqui e digitar saúde para adicionar e aí
posso obtê-lo ou configurá-lo. Então, o estranho
é que você pode ter uma variável
configurada para ser pública. Ou seja, você pode acessar e
editar a partir do editor. Você também pode
configurá-lo como privado. Esses não são um ou outro. Você pode configurá-lo para ambos. Isso confunde muitas pessoas, mas pode ser
configurado para ser público, que significa que você pode
editá-lo a partir do editor. E também pode ser
definido como privado, o que significa que, uma vez definido como
privado, você
tenta arrastá-lo para fora dele, salvo
de outro plano. Você não consegue encontrar nem
acessar essa variável. Por que você quer fazer isso? Bem, pode ser uma solução à
prova de falhas garantir que você não modifique algo
que não pretendia. Em seguida, vamos explorar
essa opção exposta no spawn que você encontra nas variáveis. O que isso faz? Para isso? Vou usar
nossa porta giratória bp. Criamos esse modelo de
classe de ator quando estávamos explorando o tipo de variável
rotadora. E se você esqueceu onde está, isso está dentro de nossos
atores, uma pasta BPS. Nós mudamos tudo.
Movemos todas essas plantas
pós-aula de
nossa pasta de visão geral
para a pasta do nosso ator BP. Dentro daqui, vá
em frente e selecione sua variável
rotadora de rotação final. E no painel Detalhes, queremos definir isso para
ser exposto no spawn. Agora, quando você for
compilar isso, ele vai gritar com você. E quando isso acontecer,
dirá, ei, isso é ótimo. Você o marcou como
exposto no spawn. Mas, para isso, também precisamos
marcar isso como instância editável. Então vá em frente e faça isso também. Ambos precisam
ser verificados para serem exibidos no recurso de
desova aqui. Então, depois que os dois estiverem
verificados, compile-os novamente. E então o que
vamos fazer é pular para o nosso Plano
de Nível. Então, se você ainda não
tem isso aberto,
venha aqui, abra o Level Blueprint. E vamos
montar um roteiro simples. Vou clicar com o botão direito do mouse
em algum espaço vazio. Qualquer evento de entrada serve. Vou trazer F h porque isso parece
uma boa entrada de m. Vamos sair daqui e
gerar um ator da sala de aula. Agora lembre-se de que, com
esses nós, você precisa alimentá-los com uma transformação de
spawn. Então, vou
pegar a transformação. Vamos pegar a transformação de nossos jogadores iniciarem o ator aqui que
selecionei no meu nível. Então, com isso selecionado, volte para o meu Level
Blueprint mantendo pressionado o botão esquerdo para obter
uma referência a isso. Arrastado para fora
dessa transformação de ator. Vamos conectar isso. E o que queremos que
apareça nesse local? Bem, vamos gerar
uma de nossas Doris rotativas de bp. Eu vou rolar
até aqui. Onde está aquela porta
giratória?
É a porta giratória da BP. Agora, no momento em que fiz isso, eu a defini como a classe em
que eu queria aparecer. Confira isso. Minha
variável de rotação final foi exposta nesta função de
desova. Então, aqui podemos definir a rotação para ser algo
diferente do valor padrão. Agora eu tinha configurado para que a
porta se abrisse 90 graus. O que significa que abriria. Uma porta normalmente se abre, mas eu posso abri-la
ainda mais aqui. Então, vamos seguir em frente e tentar isso. E eu vou definir isso para 135. Agora, se eu fosse jogar isso, clicaria em Jogar aqui. E eu nem vou definir minha opção de depuração aqui para mostrar
esse script funcionando, apenas confie nisso,
bem, vou
sair dessa
estrela de jogador aqui. Então, removendo isso, vou pressionar F8. Boom, aquela união de Doris, embora um pouco
mais alta do que ser colocada perfeitamente no
chão, é perfeitamente normal que ela esteja
flutuando no ar. Vou sobrepor
esse volume de gatilho. Lembre-se de que um
volume de gatilho detectará quando meus caracteres se sobrepõem
e quando eu o sobreponho,
ele abre mais de 90 graus, abre 135 graus.
Então aí está. Exponha ao desovar, você
precisa marcar isso e verificar a instância editável para que ela apareça. Quando você cria um ator da sala de aula.
53. Coisas variáveis para saber (parte #2): E, por fim, eu queria
mostrar essa caixa de seleção exposta ao cinema que você encontra em algumas variáveis,
não em todas. E explicarei
quais você pode ou não encontrá-lo mais adiante
neste vídeo. Então, neste exemplo, estou mais uma vez dentro da
minha picape de exemplo da BP. No painel My Blueprint, criei uma nova variável
vetorial. Eu a chamei de escala. E depois de compilar, defini minha escala para 11,1. Vamos marcar também essa
caixa de seleção “Exposição à cinemática”. Então vá em frente e compile. Agora, para mostrar o que
queremos mostrar, você está expondo essa variável
a um filme. Precisamos adicionar um
filme ao nosso nível. Para não fazer isso,
vamos voltar ao nosso nível aqui
na barra de ferramentas, você tem esse pequeno ícone de
prancheta. Vá em frente e clique aqui, e queremos adicionar uma sequência de níveis que seja cinematográfica.
Vamos fazer isso. E quando clicarmos
nisso, ele dirá: onde gostaríamos de
salvar esse ativo? Vamos colocá-lo dentro
de uma nova pasta. Eu
selecionei o script aqui. Vou clicar com o botão direito do mouse. Vou criar uma nova
pasta, chame-a de sequência. Na verdade, vou chamar isso de
cinemática, assim. E vou deixá-la em uma
nova sequência de níveis, que será meu nome, Shore. E depois de fazer isso,
estou clicando em Salvar. Agora adicionei um novo
ator ao meu nível. É chamada de nova sequência de níveis. É do tipo de ator de sequência
de níveis. E também ao lado do meu navegador de
conteúdo, aqui, expus uma nova janela
chamada sequenciador. Agora, o que toda essa janela
permite que você faça para modificar algo ao longo do tempo e
criar uma espécie de filme. Então, para fazer isso, precisamos adicionar uma faixa. Então, se eu clicar neste botão de
faixa aqui embaixo, quero adicionar um ator
ao meu sequenciador aqui
em, no pequeno menu de flores, posso escolher um
ator no meu nível. Observe que todos os
atores aqui também existem no meu esboço e, no
canto superior direito, quero adicionar meu exemplo de captação de
BP. Eu reduzi para apenas
um no meu nível atualmente. Então, vou acrescentar isso. E agora posso clicar neste
botão Plus aqui para detalhar mais
detalhadamente meu exemplo de captador da BP
e ver a parte inferior. Eu tenho uma propriedade de escala que agora
foi exposta
a um filme. Este sequenciador é cinematográfico. Agora, nesta pequena mosca, vejo que é um vetor
e posso modificá-lo. Eu posso escolher x, y ou z. Não importa qual
deles você escolha. Eu vou escolher x aqui. Agora vai expor variável a essa
linha do tempo, a esse filme. E se eu clicar nesse
pequeno menu suspenso, você pode ver que
agora posso modificar o x, y ou z dessa
variável vetorial ao longo do tempo. Agora, essa escala está sendo
exibida atualmente em quadros por segundo. Isso é o que esses 30 FPS significam. Podemos modificar esses
quadros ou o que eu gosto
de fazer é clicar neles. E, em vez disso, gosto de mudar
isso como um momento. Então, Showtime em segundos, assim. E agora, para mim, isso é um
pouco mais sensato. Eu posso mudar as coisas de 0 s atualmente para 5 s. Eu também
posso expandir isso, mas não vamos
criar uma. Isso é muito longo. Tudo bem, então o que
eu quero fazer aqui? Eu quero modificar uma dessas propriedades de
escala em 5 s. Então, vou modificar
apenas a escala z. Eu poderia modificar todos eles, mas vou
adicionar um quadro-chave em 0,0 s aqui clicando
neste botão de adição. Então, estamos dizendo que eu quero
que
o valor da escala dessa variável vetorial seja
um no z em 0 s. Em seguida vou mover meu
controle deslizante da linha do tempo até 5 s. E então vou
clicar no botão de adição novamente. Só que desta vez vou
dizer que,
neste momento da linha do tempo, adicionei outro quadro-chave. Isso é o que esse ponto vermelho significa. Vou dizer que, neste momento, quero que a escala Z seja
cinco, então vamos de 1 a 5. E se eu mover esse controle deslizante, observe que o valor da escala
Z muda com o tempo. Tudo isso é muito bom,
exceto que não estamos realmente fazendo uso dessa variável,
tudo dentro de nosso captador de exemplo de
bp, nós a expomos, expomos a variável vetorial de
escala para nosso cinema aqui. E vamos
ajustá-lo em
relação a esse filme aqui. Mas ainda não temos nenhum roteiro que realmente
tire proveito disso. Então, vamos fazer isso a seguir. Então, para isso, vamos
adicionar uma caixa de gatilho ao nosso nível. E eu vou fazer isso de forma
relativamente rápida aqui. Vou
aumentá-lo em tamanho e
alterar a extensão da caixa
para 200 novamente em 200, 200 no painel Detalhes. Vou mudar a espessura da
linha para dez mais
uma vez, assim. , esse sequenciador de níveis ,
ator, não
importa onde você propósito, esse sequenciador de níveis,
ator, não
importa onde você o
coloque no
nível. E então eu vou fazer
isso para que possamos ver. O jogo
oculto do ator de renderização em falso. E então, com esse
ator selecionado, vou passar para o
meu Level Blueprint,
clicando com o botão direito do mouse. Eu vou fazer algo
quando começarmos a sobrepor isso. A primeira coisa que vamos fazer é
arrastar o elenco para uma terceira pessoa. Vamos fazer algo com nossas
sobreposições de personagens de terceira pessoa em. O que queremos fazer é pegar uma referência à nossa sequência
de níveis aqui. Então vá em frente e clique
nela novamente em seu Plano
de Nível. Ao manter pressionada a tecla R, clique com o botão esquerdo para trazer
qualquer referência a isso. E então vou me arrastar
para fora
disso e digitar o jogo de palavras. Queremos jogar nosso reprodutor
de sequência. Essa é a opção que
estamos procurando. Estamos essencialmente dizendo: Ei, reproduza esse filme, então
deve ser conectado assim. Isso vai tocar o cinema. Portanto, ele realmente
modificará essa propriedade. Mas ele modificará essa propriedade de
escala ao longo de 5 s. Mas ainda não estamos criando nenhum script para realmente
mostrar que o crescimento está acontecendo. Então, para que isso ocorra, essa é uma configuração muito
complicada aqui. Vou clicar com o botão direito do mouse,
trazer um cartaz de evento. Cada quadro. Nós queremos. Selecione seu exemplo,
comece lá no nível. De volta ao nosso plano de níveis, vamos manter
pressionado o
botão esquerdo do archae para fazer
uma referência a isso. Vamos sair daqui. Vamos definir uma escala mundial de três D para a colisão da
esfera. Por causa da colisão de nossa esfera, tudo está ligado a isso. E mova-o assim. E então
também vamos
sair do nosso exemplo de coleta e encontrar essa variável de escala. Eu tenho que rolar até
o final para obter nossa escala. Assim. Portanto, observe que nossa
escala é, por padrão, 11.1. Então, em cada quadro, ele
vai ler isso. Isso causará a colisão de nossa
esfera aqui, que é o componente mais
raiz em tudo que está
ligado ao 2111. No entanto, uma vez
que eu sobreponha essa caixa de gatilho, vamos
dizer aquela sequência ou jogar que
funcionará como uma linha do tempo para modificar o
valor dessa variável, 1 a 5 em 5 s. Isso é nosso cinema. Então você pode pausar o vídeo aqui, confira se
quiser jogar em casa, vou compilar isso. Vamos fazer uma jogada. Mova isso um pouco para o lado
daqui. Então você pode ver nosso exemplo de
captação lá na parte de trás. A escala permanece constante. Deixe-me definir meu
objeto de depuração ali mesmo
para que você possa ver tique-taque do
evento
disparando em cada quadro. Traga-o para minha
janela de jogo mais uma vez. Então, uma vez que eu sobreponho
é superior a 5 s, você deve ver isso aumentando
de tamanho. Aqui vamos nós. Muito fofo. E, de fato, isso aconteceu. Então, essa é uma
maneira muito longa de mostrar o que exatamente essa opção cinematográfica exposta
faz. Então, só para trazer
isso de volta à caixa de seleção exposta à
cinemática, você pode encontrar isso em variáveis
booleanas, inteiras, flutuantes,
sequências , transformações vetoriais e de
ator. Você não encontrará isso para nomes, textos ou variáveis rotativas. Tudo bem, pessoal,
isso é suficiente para oferecer este vídeo, nos vemos no próximo.
54. Dicas e truques variáveis: Bem-vindo. Neste vídeo,
analisaremos dicas e truques essenciais que você absolutamente deve
conhecer para trabalhar com variáveis da maneira mais
eficiente possível. Vamos falar
sobre as diferentes formas de obter e
definir variáveis. Vamos analisar como
promover uma variável. Vamos falar sobre como
categorizar variáveis
e dar dicas de ferramentas. E, por fim, falaremos
sobre como alterar os tipos de variáveis. Vamos começar em nosso bp
ThirdPersonCharacter Blueprint para ajudar nessa discussão. Então, se você não tem isso aberto, você pode encontrar isso em plantas em
terceira pessoa. É aí que você pode encontrar
o ThirdPersonCharacter. E uma vez dentro daqui, vamos
explorar como obter e definir variáveis de três maneiras
diferentes sobre as quais falaremos aqui. Primeiro, vamos explorar
as três maneiras diferentes de obter uma variável, ou seja descobrir qual conteúdo
existe dentro dessa variável. E para isso,
vamos nos livrar
dessa matriz GET de saúde aqui porque vamos
explorar isso. Então, a primeira maneira é clicar com o botão esquerdo e arrastar. E então, em nossa pequena caixa de
diálogo aqui, quando soltamos o botão esquerdo, poderíamos obter a saúde. Esse é o caminho número um. Segundo caminho, posso manter
pressionada a
tecla Control, clicar com o botão esquerdo, arrastar, soltar e clicar com o botão esquerdo, que também
pode
ajudar a entender isso. E a terceira forma, menos comum, mas
supereficaz, é simplesmente clicar com o botão esquerdo e arrastá-la em um pino de entrada
de um determinado nó. Então, uma vez
que a arrastarmos e soltarmos em cima
dela, o conteúdo dessa
variável será realmente útil. Tudo bem, vamos falar sobre como
definir uma variável. Então, aqui,
temos um centro instalado. Vou deixá-lo lá
por enquanto. Mas o que vamos fazer
aqui é clicar com o botão esquerdo e arrastar quando o número um
aqui é simplesmente escolher Definir Saúde nesse
menu. Se você clicar com o botão esquerdo, arraste,
solte e clique com o botão esquerdo. A segunda maneira é manter
pressionada a tecla Alt. Clique com o botão esquerdo, arraste,
solte e clique com o botão esquerdo. Essa é a segunda maneira de
obter um centro disso. E a terceira forma de definir
o conteúdo de uma variável. Então, vou excluir esse cara por enquanto, é simplesmente arrastar e soltar
no pino de saída de um determinado nó, e isso também
trará um centro. Então, definir mais uma vez, permite que você altere o
conteúdo dessa variável. Em seguida, vamos falar
sobre a promoção para uma variável que você
já sabe. Você pode criar variáveis
clicando aqui, adicionando uma variável
ou entrando aqui variável e
clicando no botão de adição. No entanto, promover uma variável é a terceira forma de
criar uma variável e é bastante útil por
alguns motivos aqui. Primeiro, ele pode fornecer o tipo de variável que você
precisa desde o início. Então, usando esse nó
como exemplo aqui. Então, digamos que temos nossa variável de
saúde e queremos adicionar
alguma quantidade a ela. Bem, podemos simplesmente
clicar com o botão direito do mouse neste pino e isso nos
dará o tipo de variável
que já precisamos,
neste caso, um flutuador para que ele
possa clicar com o botão direito do mouse, promover e eu clico, eu posso chame isso de saúde para adicionar. O segundo benefício
de promover para uma variável é que, se
compilarmos isso, podemos ver que ela
captura automaticamente o valor que estava
dentro desse nó. Se você já tiver
colocado um valor dentro dela e
o promoveu para uma variável e depois o compilou,
ela preencherá automaticamente essa variável com o valor que
estava dentro dela
. Então, isso é muito útil. Vale
ressaltar aqui que você pode promover uma variável em qualquer nó, não apenas do lado da entrada, mas também do lado da
saída. Então, no lado da saída
deste centro de saúde, eu poderia clicar com o botão direito do mouse sobre isso, promover isso para variável e chamar isso de variável minha
saúde novamente. Não sei por que você
gostaria de definir sua, definir uma nova variável depois disso, mas talvez você queira
fazer algo assim. Portanto, promover uma variável é uma
maneira
super prática de obter o tipo de variável que você está
realmente procurando, bem
como configurá-la o conteúdo que
já estava lá. Agora, o que eu realmente gosto em
promover para uma variável, deixe-me ver
meu exemplo de BP, é que
falamos sobre alguns tipos de variáveis muito
comuns aqui, mas também existem outros mais
obscuros. Por exemplo, eu tenho esse nó 2D de
reprodução de som aqui está um exemplo de captador IBP. E eu tenho algo
chamado configurações de simultaneidade. Você pode estar se perguntando, eu
não tenho ideia do que isso é, mas eu quero mexer com isso e ver o que posso mudar. Bem, você pode
clicar com o botão direito do mouse neste alfinete. Você poderia promover isso para
uma variável, compilá-la. E então, no
painel Detalhes, você pode ver quais coisas sobre essa
variável você pode definir. E você pode não
conseguir ver nada, pode não fazer sentido para você. Mas essa é uma ótima
maneira de aprender quais são todos
esses diferentes tipos de
pinos, quais são essas diferentes
variáveis no lado de entrada de um nó ou
no lado de saída do pino. Ótima maneira de aprender essas coisas. Tudo bem, a seguir, vamos
falar sobre a criação categorias para suas
variáveis viverem. Agora, à medida que você fica mais
complicado com seus scripts, você pode ter
mais e mais variáveis
no lado esquerdo
e querer ter alguma forma de categorizá-las. Bem, você pode criar categorias
para eles viverem. Deixe-me selecionar por saúde
para adicionar aqui. E no painel Detalhes, temos uma categoria e,
atualmente, todas elas estão na minha categoria padrão, desde o som de captação até as configurações de
simultaneidade. Eu poderia criar um
simplesmente selecionando esse campo de
categoria aqui. Em primeiro lugar, vou
chamar isso de minha categoria de saúde. Tudo bem, agora você vê,
no painel My Blueprint, que
eu criei uma categoria de
saúde e minha saúde para adicionar
existe dentro dela. Agora eu posso adicionar outras
variáveis a essa categoria. Eu poderia dizer, Ei, escala, eu quero que você
também viva
nessa categoria simplesmente selecionando-a. E agora, se eu clicar nesse
menu suspenso,
eu vou ser capaz de encontrar saúde dentro desse menu suspenso. Assim, você pode criar uma
nova categoria simplesmente substituindo-a e digitando
o nome de uma nova categoria. No entanto, depois de
criar uma categoria, você pode escolher definir uma variável dentro
dessa categoria
escolhendo esta opção aqui. Ou posso simplesmente arrastar uma variável
para essa categoria. Então, cinco é tentar
arrastar esse
som de captação e colocá-lo
aqui no topo da escala. Veja o que vai acontecer aqui. Ele vai
reordená-lo para
colocá-lo automaticamente dentro
dessa categoria de saúde. Agora, isso também é útil para
criar essas categorias. Porque vamos conferir
isso aqui. Minha saúde, para acrescentar. Ele verificou esse pequeno
globo ocular, tornando essa instância editável. Qualquer variável definida para
ser editável por instância. Mais uma vez, compilando isso aqui apenas para
ter certeza de que entendi, volte para o meu mapa de teste. Eu tenho um desses
exemplos de captadores da BP aqui no meu nível, no
painel Detalhes, com o selecionado Posso ver minhas
diferentes categorias que posso alterar sobre isso. Agora, uma das categorias
que posso mudar é minha saúde para adicionar
e conferir isso. Ele não está mais listado em uma categoria
chamada padrão. Agora está listado em uma categoria
chamada Saúde para adicionar. Vamos continuar e tentar
criar mais uma categoria aqui dentro de nossa seleção de exemplo de
bp. Deixe-me mudar minha escala. Quero dizer, realmente não
faz sentido ter isso em uma categoria de saúde em si. Segundo, vamos mudar para
uma categoria chamada escala. E vou definir isso para
ser editável por instância. Precisamos compilar depois de definir isso para ser
editável por instância para
que possamos encontrar essa variável
exposta em nosso editor. Então, com isso selecionado, agora
tenho uma categoria saúde
com saúde para adicionar a ela. E categoria de escala com uma variável de
escala dentro dela. Agora, para que você gostaria de
criar essas categorias? Bem, em algo como seu
BP ThirdPersonCharacter, você pode ter algumas
variáveis que estão todas relacionadas ao nome
do seu personagem, nome,
sobrenome e segundo nome. Podem ser alguns
atributos de personagem que todos vocês
desejam categorizar. Isso seria uma coisa comum. Podem ser coisas relacionadas
à saúde ou danos. Você poderia criar uma categoria de saúde
e danos, esse tipo de coisa. A seguir, vamos explorar a adição
de dicas de ferramentas, duas variáveis. Em seguida, vou voltar
para minha picape de exemplo da BP. Então, para qualquer uma das minhas variáveis, posso adicionar uma
descrição, uma dica de ferramenta. Observe que, quando eu passo o mouse
sobre minhas variáveis atualmente, diz
que minha saúde
a ser adicionada é simplesmente um som de flutuação por captação, ou
seja , a escala de descrição básica simplesmente diz que é
uma variável vetorial, mas você pode alterar
o conteúdo disso, os textos da dica de ferramenta, se quiser. Com minha saúde para
adicionar selecionada no painel Detalhes,
meu campo de descrição. Eu posso mudar isso para ser essa é a quantidade de saúde
a ser adicionada Enter. E agora, se eu passar o mouse sobre essa
saúde para adicionar uma variável, não diz
mais flutuar de
dupla precisão ou o que quer que tenha sido dito antes, costumava dizer flutuar
de dupla precisão. Agora diz que essa é a
quantidade de saúde para adicionar os textos que eu coloquei
ali mesmo. E, por último, eu só
queria salientar que se você realmente quiser
alterar os tipos de variáveis, você pode, e
você sabe, você pode alterar o tipo
de variável aqui,
clicando aqui, escolhendo um novo
na caixa pop-up aqui ou no painel Detalhes, você também pode alterá-lo
aqui. No entanto, se você fizer isso, há algumas coisas
que você precisa saber. Então, com minha saúde de adicionar a variável
flutuante
selecionada no painel
My Blueprint,
vou alterar o tipo de variável
para um número inteiro. Agora, uma vez que
você fizer isso, você receberá uma pequena caixa
pop-up dizendo:
Ei, você pode quebrar
algumas conexões aqui. Tem certeza de
que quer fazer isso? Então, vamos prosseguir e
mudar esse tipo de variável. Mas você notará
que, quando o
fizer, receberá o seguinte ditado, tudo bem, encontramos isso
aqui no gráfico. Seu exemplo de captação de BP
adiciona sua saúde à adição. Lá estava. Agora eu vou
sair daqui. E você vai ver
isso aqui dizendo:
Bem, era uma bóia, agora
é um número inteiro. Então, o que você faz aqui? Bem, você pode corrigir isso
clicando com o botão direito do mouse nesse
nó e atualizando-o. Agora ele reconhece que, ei, você muda isso para um número inteiro. Mas agora você tem
algum trabalho a fazer aqui. Quebramos esse link e eu poderia conectá-lo aqui também. E neste caso,
vai trazer um, só vai converter
isso em muito bem. Mas em outros casos isso não
funcionará tão bem. Portanto, você realmente precisa
ter cuidado ao interromper suas conexões sempre
que alterar suas variáveis. Agora, só tínhamos essa instância dessa
variável adicionada aqui. No entanto, se você quisesse encontrar todos os lugares onde
isso poderia existir, corrija todas essas referências
dessa variável. Você pode clicar com o botão direito do mouse sobre
isso e encontrar referências. E ao fazer isso, você pode
descobrir onde essa variável existe em qualquer lugar neste gráfico. E você pode descobrir que,
além desse gráfico, se você estava usando essa variável, você está chamando essa variável
de outro Blueprint. Você pode clicar
neste pequeno botão aqui para descobrir onde essa variável estava sendo obtida ou
definida em qualquer outro Blueprint. Então, é muito útil saber como clicar com
o botão direito do mouse e
encontrar referências. Você abrirá
esse pequeno pop-up. Você pode clicar duas vezes nele
para ir direto para ele. Além disso, se você
quiser descobrir onde essa variável está fazendo referência a
outros projetos, clique aqui
para fazer isso. Tudo bem, pessoal. Isso vai acabar
com este vídeo. Isso vai fazer
tudo para variáveis. Nos vemos no próximo.
55. Visão geral das funções: Tudo bem, bem vindos de
volta a todos. Nesta seção do curso, mudaremos
oficialmente nosso foco para o
tópico de funções. E embora você tenha me visto
usar várias funções em nossas discussões sobre outras coisas
relacionadas aos scripts do Blueprint. É aqui que
os detalhamos na íntegra, falando sobre todas as
nuances das funções. Portanto, nosso objetivo neste vídeo é abordar rapidamente
quais são as funções. Dê alguns exemplos de como
eles são utilizados no Unreal. E, por fim, fale sobre
onde você pode encontrá-los. Então, primeiro de tudo,
o que é uma função? Bem, para ajudar a facilitar
essa discussão, estou dentro do meu plano de
níveis e coloquei
alguns nós de função. Uma função é um nó de diagrama que simplesmente faz alguma coisa, ela executa uma operação
específica. Então, que tipo de coisas eu
coloquei antes de você ouvir, bem, você poderia gerar um ator. Isso é para gerar algum objeto em seu jogo que possa
ser útil para você. Você pode gerar um efeito de partícula. Este é o antigo sistema VFX, o sistema de
efeitos visuais em cascata ou um novo
sistema de partículas conhecido como Niagara. Você pode criar um widget que mostre um diagrama de
widget, que geralmente é usado
no Endgame HUD, ou nos menus. Você pode tocar um som. Você pode mudar a localização de um
ator, todos os tipos de coisas que
podem ser feitas com funções. Agora, as funções podem receber
entradas e retornar as de Albert. Apenas como um lembrete, as
entradas são encontradas no lado
esquerdo de um nó. As saídas são encontradas no lado
direito do nó. Unreal já vem com uma
série de funções, se eu clicasse com o botão direito do mouse algum espaço vazio e em
algum espaço vazio e
detalhasse qualquer uma
dessas categorias, você verá todos esses S
sofisticados aqui. Eles estão
em azul ou verde. Esses são todos os tipos de nós de função
prontos aos
quais você tem acesso. Agora você pode criar
suas próprias funções em um plano e
chamá-las quando desejar. Falaremos sobre isso em
alguns vídeos aqui. Agora, algumas coisas que vale a pena observar
nesta visão geral generalizada das funções é que, ao trabalhar
com funções no Unreal, você notará que elas vêm
em dois tipos diferentes. Você tem o azul, que é
conhecido como funções impuras, e eles têm esse cabeçalho
azul. E se eu for
para a direita aqui, você tem funções verdes e essas são conhecidas como funções
puras. Agora, a principal diferença entre elas é que essas funções
verdes e puras não têm pinos de execução
no lado de entrada ou saída, enquanto as funções azuis
impuras têm. Agora temos um
vídeo inteiro dedicado às funções impuras versus puras. Então, falaremos sobre
isso mais tarde, mas só queria ressaltar
isso enquanto estivermos aqui. Outra diferença que
eu queria destacar entre os diferentes nós de
função é que às vezes o cabeçalho deles é um pouco mais
descritivo do que outros. E bem, o que
eu quero dizer com isso? Se olharmos para alguns de
nossos nós de função
aqui embaixo , pois eles são o
sistema de geração desse local, isso
é tudo que esse nó de
função diz ser sistema de geração no local. Agora compare isso com esse nó aqui em cima, defina a localização do
ator. E logo abaixo
diz que o alvo é ator. Este está
solicitando um alvo do
qual queremos mudar a localização. Este não tem nenhum
subdescritor de subtítulos abaixo dele. Agora observe que este
também define o alvo
do material como um componente primitivo. Eu posso fornecer uma malha da qual queremos mudar
o material. Se eu pular para o meu
ThirdPersonCharacter Blueprint, coloco alguns
nós de função aqui também. Todos dizem que alvo
é personagem, alvo é personagem, alvo
é personagem, etc. Portanto, funções diferentes
têm alvos diferentes. Nesse caso, todos
esses nós de função são específicos de uma classe de caracteres. Já em nosso mapa de teste de nível, alguns desses
nós de função não são específicos nenhuma classe ou componente. As funções podem ter alvos
diferentes. Pode ter um alvo
componente, pode ter um alvo de ator, um alvo de personagem,
coisas dessa natureza. E vamos falar
mais sobre isso daqui a pouco. E, finalmente, eu queria
falar sobre onde você pode encontrar funções em um gráfico. Bem, algumas
maneiras diferentes de fazer isso. A forma mais comum é
clicar com o botão direito do mouse em algum espaço vazio. Aqui dentro. Se eu clicar no menu suspenso do meu
ator
aqui, aqui é onde você pode encontrar
muitas funções diferentes. Novamente, eles vêm nas funções impuras do
sabor azul, ou no sabor verde, que são funções puras. E eles estão disponíveis
em qualquer categoria. Você
encontrará uma tonelada
deles que já estão
pré-construídos para você. Agora você também pode pesquisar uma
determinada função. Novamente, o ator de desova da
classe é comum. Então, se você sabe o que
está procurando, você pode simplesmente digitá-lo lá, gerar um ator da sala de aula. Outra coisa
que eu quero destacar aqui é que as funções podem ser sensíveis ao contexto ou
não ao contexto. E essa é essa
caixa de seleção aqui em cima. Ela está marcada por padrão. E deixe-me mostrar como isso pode mudar
os resultados aqui. Então, eu tenho esse
ator de spawn do Class Blueprint, e eu já coloquei um
exemplo de pickup da BP na classe aqui. Se eu quisesse me afastar disso, agora veja se minha caixa de seleção
sensível ao contexto está marcada e o
ator mais importante está minha categoria principal. Isso é com a verificação
sensível ao contexto. Um ator é a
categoria mais alta. Agora, deixe-me
ver essa
função Create Widget aqui. Deixe-me sair daqui. O aviso sensível ao contexto
está marcado. No entanto, eu nem
vejo essa categoria
de ator no topo aqui
porque ela retornará dois
tipos diferentes de coisas. Este
retornará um objeto widget. Este vai devolver meu exemplo de coleta da BP porque essa é a classe
que eu coloquei aqui. Agora, se você estiver nesse menu
do botão direito, mouse sobre essa caixa de seleção
sensível ao contexto aqui. E você clica neste
pequeno menu suspenso. Você pode decidir em
quais contextos ele encontrará determinadas funções
disponíveis. Esse modelo, como
dica de ferramenta, diz que
incluirá funções e variáveis que pertencem a esse plano. Se os componentes forem verificados, incluirão
funções que pertencem aos componentes desse
esquema
e/ou de outras classes de destino. E, em seguida, bibliotecas
que devem incluir quaisquer outras funções que
sejam acessíveis globalmente. E, mais uma vez, temos um vídeo
inteiro dedicado às bibliotecas
funcionais em
pouco tempo. Agora, se você tiver alguma funcionalidade
específica que deseja criar,
você pode criar suas
próprias funções
no painel Meu Blueprint,
na categoria de funções, você pode criar suas próprias
funções aqui mesmo. Você pode chamá-los do que quiser. Você pode criar a
funcionalidade que está
dentro
desse nó de função. E então é tão simples
quanto arrastar e soltar esse nó de
função guia Meus planos
aqui em seu gráfico. Mas também falaremos mais sobre
isso no futuro. Tudo bem pessoal,
há uma visão geral das funções nos projetos do
Unreal Engine. Nos vemos
no próximo vídeo.
56. Funções do ator: Bem-vindo. Neste vídeo, nosso objetivo é
aprender quais são as funções do ator, explorar como encontrá-las e demonstrar algumas. Agora paramos no
último vídeo, apenas dando uma visão geral das funções dentro do
nosso Plano de Nível. E eu estava falando sobre
como algumas funções tinham esse subtítulo
abaixo delas, incluindo esta para definir a localização do ator que
diz que alvo é ator. Então é disso que estamos
falando neste vídeo. Estamos falando sobre a função do
ator. Então, o que é uma função de ator? Bem, é simplesmente uma
função que visa, ou
seja, afetar um
ator específico que você fornece a ele. Agora, o alvo pode ser ele mesmo, mas no caso de
um Plano de Nível, o
eu não ajuda muito. Precisamos realmente dizer, Ei, o que
estamos tentando efetivar? E nesse caso,
que nova localização vamos tentar dar a ele? Agora, vou voltar
ao meu nível aqui e adicionei uma malha
estática ao meu nível. Se você quiser jogar
em casa. Isso está na minha pasta de solicitações de
conteúdo iniciado por conteúdo. Eu coloco um desses
caras no meu nível. E com isso feito, eu também mudei a mobilidade
aqui para ser móvel. E isso será importante
para a função que
vamos tentar definir sobre isso. Então, com isso feito, certifique-se de ter esses atores de malha estática
selecionados em seu nível. E eu vou pular dentro do meu plano de nível, já o
tenho aberto aqui. Mas, mais uma vez, é assim que você pode acessar seu Plano de Nível. Agora não importa em
qual gráfico você está. Eu tenho dois gráficos aqui, meu gráfico de tipos de nós
e meu gráfico de eventos. Meu gráfico de eventos está um
pouco mais limpo, então vou entrar nele. Eu já tenho uma referência
a isso no meu gráfico. Agora, a maneira de obter uma referência a isso é simplesmente manter pressionada
a tecla R e clicar com
o botão esquerdo ou
no menu do botão direito do mouse. Se você selecionou, você deve ser capaz de encontrar
e criar uma referência
para ele clicando com o botão direito do mouse
e escolhendo ali mesmo. Qualquer uma das opções serve para você. Então esse é o ator
que queremos atingir. Então, se sairmos
daqui e liberarmos, verificaremos a sensibilidade ao contexto aqui, o que significa que, se nos
aprofundarmos em qualquer uma dessas categorias, qualquer uma dessas categorias, podemos encontrar funções
específicas que funcionará
para esse determinado ator, incluindo algo
como Destroy Actor. Observe que diz que o alvo é ator. Eu poderia trazer um evento de entrada e, ao pressionar
esse evento de entrada, poderíamos destruir o
ator que é nosso alvo. Estamos falando de funções de ator. Então, vamos experimentar alguns aqui. Já vimos esse Destroy
Actor várias vezes. Então, vamos trazer mais alguns. Então eu vou
sair daqui. E eu vou digitar a localização do ator
no set. E eu posso ver que isso está na categoria de transformação. Então é assim que você
pode ver onde está. Agora, essa é a
razão pela qual tivemos que colocar nossa malha
aqui para ser móvel. Porque se não
definirmos isso para ser móvel, teremos
algumas reclamações. Quando compilamos. Vou definir minha nova localização. Em vez de
inserir uma variável, vou
configurá-la aqui para, digamos, 1.000. E vai simplesmente movê-lo para
algum lugar no ar. Vamos arrastar até aqui novamente, podemos fazer várias coisas. Eu vou fazer a rotação de
atores definidos, que também está na categoria de
transformação. Ok? Então, vamos fazer
isso e observar que estamos usando a mesma referência o alvo para funções de vários
atores o
que é totalmente
aceitável. Vou me afastar disso e vamos fazer
um conjunto
de atores em escala 3D. Isso também está na categoria de
transformação. E então, por fim,
vou me afastar mais uma vez e
definiremos a expectativa de vida. Isso está na categoria ator,
portanto, funções diferentes
podem estar em categorias diferentes, mas se você souber o nome delas,
basta digitá-las acima. Agora, atualmente não
tenho nenhuma entrada aqui, então vamos clicar com o botão direito do mouse,
ampliar e esvaziar o espaço. Vamos fazer qual chave eu ainda não
usei, a chave sete. Vamos fazer a chave sete. Claro, isso vai funcionar muito bem. Então, quando pressionarmos a tecla sete, vamos querer definir
a
localização de nossos atores para estar em algum lugar
no ar. A localização da 001000
no mundo. Então, vamos manter
o fluxo de execução e definir a rotação de nossos
atores. Eu não defini uma rotação aqui, então vamos defini-la como 45,45
apenas para incliná-la um
pouco para que possamos ver algo
diferente do que é atualmente. Então vamos manter o fluxo de execução
aqui. Queremos definir uma
nova escala para isso. Vamos fazer 44.4,
algo meio grande. E então vamos aproveitar
aqui a expectativa de vida. Então é por quanto tempo
isso vai durar
antes de ser destruído,
menos do que nossa expectativa de vida. Vamos 5 s. Tudo bem, então observe que todas
essas funções assumem, em um ator alvo. Podemos usar a mesma
referência e conectá-la à
nota de entrada de destino de todas elas. Então, vou compilar aqui, movendo isso
para a esquerda. Vamos jogar, deixe-me definir meu objeto de depuração para
ser meu mapa de teste. E aí está meu ator. Assim que eu pressionar
a tecla sete, você vai ver
bang, bang, bang, bang. Aqui vamos nós. Sete. Em algum lugar no ar. É girado, é grande. E depois de 5 s de boom, dá adeus. Então você pode ver que ele chamou essa função
nesse determinado ator. E todas essas
coisas mudaram a localização, alteram a rotação,
definem a escala e definem a vida útil. Então aí
está. Funções do ator. Você pode encontrá-los
arrastando um determinado ator, fazendo
uma busca por ele ou simplesmente pesquisando aqui para ver quais tipos de
funções estão disponíveis para você. Tudo bem, isso vai fazer
tudo por esse pessoal, nos vemos no próximo.
57. Funções do curso: Tudo bem, bem-vindo de volta. Neste vídeo, nosso objetivo é
aprender o que são funções de classe, explorar como encontrá-las e depois demonstrar algumas. Então, primeiro, o que é
uma função de classe? Bem, é simplesmente uma função
que só pode ser usada por um tipo específico que
seja uma classe específica. Agora, do que estamos
falando aqui? Bem, se voltarmos
para o nosso Navegador de Conteúdo e ele me viu clicar com o botão direito
do
mouse no início do curso em algum
espaço vazio no meu navegador de conteúdo, se eu entrar na classe Blueprint, essas são as diferentes classes
sobre as quais estamos falando, as diferentes classes de blueprint. Agora, temos funções que
são específicas para cada classe. E isso vai
ser mais óbvio de
demonstrar ao falar
sobre nossa classe de personagem, porque praticamente todo
jogo que você
criará terá um personagem ou talvez
até mesmo classe, mas vamos demonstrar
um personagem. Então vá em frente e abra seu
BP ThirdPersonCharacter. Foi aí que eu comecei
esse vídeo com ele. E observe no meu gráfico aqui que tenho vários nós de função. E observe que logo
abaixo do cabeçalho aqui, o subcabeçalho aqui diz que
alvo é personagem, o
alvo da função de salto é personagem, a função de inicialização do personagem, alvo é personagem, o
agachamento e funções de agachamento. Alvo é personagem. Essas funções são específicas para essa classe, essa classe de
caracteres. E eu posso encontrá-los
clicando com o botão direito em
algum espaço vazio. E então, se eu procurar
o nome da classe principal, estamos procurando o
personagem aqui em cima. Vamos rolar para baixo. E se encontrarmos o caractere C H lá está, aqui embaixo. Você pode encontrar esses eventos. Estamos agachados,
temos o personagem de
lançamento pulado no
crouch, etc. Portanto, eles são muito específicos para essa determinada classe de Blueprint. Agora, vamos demonstrar isso. E eu quero salientar aqui antes de fazermos isso, se você quiser encontrar e usar essas funções de agachar
e agachar, você precisa selecionar componente de movimento do
seu personagem e mais no Painel de detalhes
na categoria de movimento de navegação, garante que você
verifique se pode se agachar. Ela não está marcada por padrão. Tudo bem, então
vamos experimentá-los. Vou clicar em jogar aqui, vou definir meu objeto de depuração para ser de personagem em terceira pessoa. E vou minimizá-los
um pouco assim. Você pode ver, obviamente, se
eu pressionar minha barra de espaço, isso vai fazer meu
personagem pular solto, isso faz com que ele pare de pular. Se eu pressionar a tecla L, tenho essa função de
caractere de lançamento que definiu
fortemente a
velocidade de lançamento para 2000 e z, o que é como um
super salto, se você quiser. No entanto, você ainda pode fazer
isso enquanto estiver no ar. Então, isso é meio divertido. E então eu tenho
a entrada C definida para agachar e agachar
quando eu liberei o CQI. Agora, quando eu fizer isso, você
vai notar algo. Eu pressiono a tecla C
e opa, deixe-me fazer isso. Mais uma vez. Eu pressiono a tecla C e a câmera desce
e ela sobe de volta. Quando eu me agacho, meu personagem não entra em uma animação
agachada. Eu precisaria
trabalhar um pouco mais para consertar isso. Mas não vamos
entrar em declarações, queijos e mudar
nossas animações, todo esse tipo de coisa. Mas você notará que isso
está realmente sob o capô, agachando meu personagem, o
que significa que está baixando minha câmera, está diminuindo a velocidade de movimento
dos meus jogadores. E então, quando me
agachei, voltei à altura
normal da câmera, à velocidade
normal de movimento. Agora, algumas coisas que vale a pena destacar aqui para
todas essas funções, o alvo é o personagem, e não temos nada
conectado a esse alvo. O alvo é
simplesmente definido como eu, o que é válido nessa
situação, porque isto é, nosso eu é uma classe de personagem então não precisamos
inserir nada nela. O eu é uma
coisa perfeitamente válida de se ter dito aqui. O alvo é nós mesmos, que é um ThirdPersonCharacter. Agora também vale
ressaltar que você pode encontrar acesso, fazer uso dessas funções
em outro Blueprint. Então, deixe-me demonstrar isso
rapidamente
entrando no meu Plano de Nível. Você notará que aqui há
algum espaço vazio. Se eu simplesmente clicar com o botão direito do mouse e
pesquisar o lançamento, tínhamos essa
função de inicialização dentro do nosso
ThirdPersonCharacter. Não consigo encontrá-lo. Eu posso encontrar algumas outras funções
com a palavra launch it, mas não com meu personagem de lançamento. sensibilidade ao contexto
é verificada aqui. Esse não é um modelo de
classe de personagem. Você não o encontrará.
Agora, se eu desmarcar isso, agora
posso ver que não estamos pesquisando por meio da sensibilidade ao
contexto. E agora, sob nosso personagem, podemos encontrar nossa função de
personagem de lançamento. Isso pertence à classe de funções de
caracteres. Vamos adicionar
isso ao nosso gráfico. E está dizendo,
ok, você quer
chamar essa função. Isso é ótimo. O alvo é celular, então me forneça um alvo. Agora, se eu simplesmente tivesse um cubo existente no meu nível, como eu coloquei
antes do tempo aqui. Observe que isso está selecionado. Deixe-me fazer uma
referência a isso
mantendo pressionado o botão esquerdo do mouse
arqueano. Se eu tentar conectar
isso como um alvo, vai dizer: Não,
esse não é um alvo válido. Você não pode fazer isso.
O alvo que estamos procurando é um personagem. Assim, poderíamos obter uma referência ao nosso
ThirdPersonCharacter e conectá-la a ela. E então isso funcionaria. Agora, para fazer isso, precisamos obter uma referência
ao nosso personagem. Eu tenho essa
variável de referência de
caracteres que criei
anteriormente no curso. Mas se eu clicar
com o botão direito do mouse nela e encontrar referências, devo ter destruído o
conteúdo dessa variável, então ela está atualmente
definida como nada. Ok? Ainda podemos obter uma referência ao nosso personagem
em terceira pessoa de outra forma. E você já me viu
fazer isso antes. Clique com o botão direito no personagem
do jogador Temos essa
função pura que
retornará o personagem do jogador. Mas ele não sabe
qual personagem queremos
procurar aqui. Então, vamos fazer um elenco de
ThirdPersonCharacter para ThirdPersonCharacter. Vou dizer, ok,
seu personagem de jogador, é um
personagem de terceira pessoa? E se for, podemos chamar algumas funções
relacionadas a esse personagem. E o ThirdPersonCharacter
pode
usar essa função de
caractere de inicialização porque o
personagem de terceira pessoa é uma classe de personagem que
é um alvo válido. Eu só preciso simplesmente
fornecer a entrada aqui, vamos clicar com o botão direito do mouse para
pesquisar a tecla oito. Acho que não estamos usando a tecla oito e nenhuma
de nossa grama aqui, apenas
em nosso gráfico de eventos aqui. Ok, vamos em frente
e conecte isso. Compile, vamos salvá-lo. E agora, se eu fosse jogar, vamos definir nosso objeto de depuração para que possamos
ver isso explodir. E agora, se eu pressionar a tecla
, opa, ele está realmente
tentando chamá-la, mas eu não
calculei a velocidade de lançamento, então isso seria um problema. É isso ou a
velocidade de lançamento será de 2000. Sim, esse é um detalhe meio
importante ali. E pressionando a tecla Alt, agora
podemos chamar essa função de
inicialização. Então, mais uma vez,
desde que você tenha uma referência a essa determinada classe, você pode chamar funções
específicas dessa classe. Tudo bem pessoal, isso vai
fazer tudo neste vídeo, nos vemos no próximo.
58. Funções do componente: Tudo bem, então, nos
últimos dois vídeos, exploramos o ator de
funções e as funções de classe. Neste vídeo, vamos explorar as funções dos
componentes. Vamos explorar
como encontrá-los e demonstrar alguns. Agora, isso levanta a
questão: bem, o que diabos é uma função
componente? Bem, é simplesmente uma função
que visa afetar um componente específico
em um plano. Agora, para mostrar isso,
vamos usar nosso bp ThirdPersonCharacter
Blueprint. É aí que você pode encontrá-lo. Então, clique
duas vezes nele para abri-lo. Antes de gravar este vídeo, criei
alguns roteiros apenas para torná-lo um pouco
mais breve em termos de tempo. E sobre o gráfico de eventos, o que eu tenho
é que coloquei os três
componentes diferentes no meu gráfico. Agora, esses são respectivamente meu componente de
espada entre aspas, que é um componente de malha estática. próximo componente com o qual
trabalharemos aqui é o
nosso componente de malha. E isso está voltando
para a janela de exibição aqui. Essa malha esquelética que
representa nossa personagem, essa
mulher manequim, se você quiser. E então o último componente
que temos é nossa câmera de acompanhamento. E simplesmente voltando para
a janela de visualização ou seguindo a câmera está esse componente
ali, aquela câmera. Então, como
os adicionamos ao nosso gráfico? Bem, como você sabe pelas
variáveis, você pode simplesmente arrastar e soltar para adicioná-las ao seu gráfico. Em seguida, você obtém uma referência
a esse determinado componente. E se você se afastar delas, poderá encontrar
funções específicas desse componente
que sejam
sensíveis ao contexto e funcionem
com esse componente. Então, o que eu tenho aqui
está fora da minha espada, eu simplesmente me drogo e fiz uma
busca por uma malha estática definida. Mas se você está se perguntando
onde isso existe, se você definir uma malha estática, poderá ver que ela está
na categoria de
imagem estática dos componentes. E eu listo isso logo acima malha estática de
seus componentes. Então, se nós simplesmente
saíssemos disso entrássemos em componentes e
entrássemos em uma malha estática. Você pode ver que temos essa
função que podemos adicionar ou podemos adicionar a
função pura para obter limites locais. Mas esse é
muito mais visual. Agora, aqui embaixo, para
esses componentes de malha, eu simplesmente fiz uma pesquisa na
categoria componentes, componentes, componentes
de malha com capa. Você pode ver que temos muitas funções
diferentes aqui para isso. Mas, para este, eu só
queria simplesmente mudar a malha esquelética
associada a isso. E com isso, o que eu estou
falando aqui é que, com nossos
componentes de malha selecionados, vamos trocar a malha esquelética
associada a isso. É muito visual. Então você
pode ver que o alvo aqui é um componente de malha esfolada que está falando sobre
isso aqui. Por fim, temos
a câmera de acompanhamento. Portanto, temos algumas
funções
específicas de um componente da câmera. E você pode encontrá-los
no menu do botão direito
na categoria de câmera. Então, há muitas funções aqui para
brincar também. Este é muito visual, o cenário, o campo de visão. Então, mais uma vez, o
subtítulo abaixo mostra qual
componente específico pode ser direcionado. Tudo bem, então jogando
esse super visual aqui, vamos definir nossa opção de depuração para que você possa ver isso disparando. Então, quando eu pressiono a tecla F, vamos trocar
nossa espada por aquela bola. Essa é a nova malha
que
coloquei lá quando pressiono a tecla G, nossa malha aqui, aquela
mulher manequim em vez de Aaron também
será trocada. Isso mesmo, apenas um cubo. E esse
cubo esquelético aqui está no conteúdo
do motor
que é o cubo esquelético. Por fim, observe o campo de visão aqui
quando eu pressiono a idade, ele vai
mudar um pouco. Tudo bem, então
vamos lá, pressione e a tecla H meio que diminui
o zoom um pouco assim. E aí está. Você pode adicionar todos os tipos de componentes aqui
no painel Componentes. Existem muitos deles. Portanto, observe que, para qualquer
componente que você possa adicionar, pode
haver
funções
associadas a esse componente específico, específicas desse componente. Explore-os, brinque
com eles, aprenda fazendo , tudo
bem,
isso vai fazer tudo neste vídeo, nos vemos no próximo.
59. Como criar funções: Tudo bem, bem vindos de volta a todos. Nos últimos
vídeos, mostramos como
encontrar várias funções que
já existem no Unreal. Neste vídeo, nosso objetivo
é mostrar como podemos criar
nossas próprias funções. Agora, esse é um conceito extremamente
poderoso no script de blueprint. Nele, essencialmente, permite que você crie qualquer funcionalidade
que desejar. Agora, na maior parte deste vídeo, vamos trabalhar dentro do nosso personagem em terceira pessoa bp. Então eu sugiro que você
abra aquele cara. Também abri meu
Plano de Nível na parte superior. Em primeiro lugar, é importante
observar que as funções podem ser criadas dentro de um
esquema de classe ou de nível. Então, só para mostrar, começando com meu plano de nível ou no painel Meu plano. Você tem uma seção para funções. Portanto, as funções podem ser criadas aqui dentro
de um plano de níveis. Além disso, dentro de um Blueprint de classe como o
nosso ThirdPersonCharacter, você encontrará a mesma
seção de funções para poder criar
uma aqui também. Tudo bem, agora vamos falar
sobre diferentes formas de criar funções. Bem, temos esse
botão Adicionar aqui. Você pode clicar nela, criar uma função dessa forma. Outra forma é com o cabeçalho da
função aqui, você pode clicar nesse botão
que criará uma função. E a terceira maneira, e
menos óbvia é em qualquer um desses cabeçalhos, gráficos, funções,
macros, variáveis, etc. Você pode simplesmente clicar com o botão direito do mouse e clicar com o botão direito do mouse
no cabeçalho do gráfico aqui. E ele
abrirá o mesmo menu que você obteve ao
clicar aqui. Então você pode adicionar uma função aqui. E se eu criar quando dessa forma, ele o adicionará à
minha categoria de funções. Vou dar um
nome a isso imediatamente e chamar isso de modificar saúde porque
vou criar uma função que modifica a saúde do nosso jogador. E observe que quando clicamos para adicionar uma função, seja
aqui , aqui ou aqui, o que fizemos foi também abrir uma nova guia logo
no topo. Então, o que você tem diante de você
é simplesmente um nó de entrada, no nó de entrada de sua função. E aqui no
resto do gráfico, você pode criar qual
funcionalidade você deseja essa função tenha
e, no final,
você precisa adicionar um retorno, você precisa adicionar um retorno notas, vou clicar com o botão direito do
mouse e algumas espaço vazio e adicione um nó de
retorno imediatamente, basta clicar com o botão direito do mouse
e digitar
retorno na parte inferior, você pode adicionar um nó de retorno. Agora, novamente, aqui é onde
vamos desenvolver
o que esse
nó de função realmente faz. Mas enquanto estou construindo isso, acho que seria útil
se, no gráfico de eventos, eu simplesmente arrastasse e soltasse esse
nó de função em meu gráfico. Então, vamos lá, arrastando
e soltando. Agora está azul. Ver o alvo é um personagem em
terceira pessoa porque estamos construindo aqui dentro do nosso
ThirdPersonCharacter. Então esse será
o alvo padrão. E note que tudo o que temos
aqui é uma execução em caneta e uma execução com
pino e um alvo. Mas podemos adicionar mais pinos, mais pinos de dados no lado da entrada
ou no lado da saída. E vamos
mostrar isso um pouco aqui neste vídeo. Então, é assim que o
nó da função se parece atualmente. E ao longo deste
vídeo, vamos
modificá-lo um pouco. Vamos voltar à nossa função de modificação de saúde e desenvolver algumas
funcionalidades. Então, a primeira coisa
que eu quero adicionar a essa função
é uma entrada. Eu quero ser capaz de inserir a quantidade de saúde ou dano que nosso personagem receberá. Então, para fazer isso, preciso selecionar meu
nó de entrada aqui, meu Modificar saúde
e, no
painel Detalhes, onde diz entradas, Vamos clicar neste
botão de adição para adicionar uma entrada. Agora, isso
nos permitirá nomeá-lo imediatamente. Por padrão, ele deve ser
exibido como um booleano. No entanto, você pode
alterar o tipo. É mostrado como um carro alegórico
para mim porque eu estava fazendo alguns trabalhos de preparação
antes deste vídeo. Então mude para uma bóia. E, novamente, você pode fazer
isso clicando aqui. E vamos mudar o
nome dessa entrada para ser a quantidade de
cura ou dano. Agora, observe que se eu
voltar para o meu gráfico de eventos aqui, onde colocamos nossa função de
modificação de saúde, agora
vejo no lado de entrada de nossa função
a capacidade de inserir uma variável flutuante, uma cura de saúde ou quantidade de dano. Portanto, é um pouco
enganador quando você está desenvolvendo suas
funções aqui. Você seleciona esse nó de entrada aqui
e, em seguida, adiciona uma entrada. E a razão pela qual isso é um pouco
enganador é que você pensa que as
entradas estão do lado
esquerdo de uma proibição. Mas aqui nesta nota de entrada, ela a mostra no lado
direito do nó. Então, a primeira vez que eu estava
aprendendo tudo isso, eu me senti um pouco confuso. No entanto, na função final
resultante que podemos ver em
nosso gráfico de eventos, quando você arrasta e solta essa função
no próprio gráfico, ela aparece como uma entrada
no lado esquerdo de um nó. Assim, você pode inserir um valor flutuante de saúde ou dano
que será recebido. Tudo bem, vamos continuar. O que eu quero fazer é tirar nossa saúde ou a quantidade danificada que
incorreremos. Vou trazer um sinal
maior do que. Queremos fazer algo se nossa quantidade de saúde ou dano
for maior que zero, ou vamos sair daqui
e
trazer um nó de ramificação. Temos que manter esse fluxo de
execução por aqui. Então, vamos avaliar se a montanha curada ou danificada
é maior que zero. E se for, vamos
sair daqui e
tocar som para D. Na verdade, eu vou
pressionar Control C e
Control V para copiar isso porque
queremos tocar um som, seja ele verdadeiro ou falso. Agora, se for verdade, o
som que eu quero tocar será chamado
de laser push. Se for falso, o
som que eu quero
tocar é chamado de pesquisa a laser. Agora, simplesmente passando o mouse
sobre esse poste de laser, você pode ver que o
caminho para isso está nas pastas de conteúdo do motor. Então, se você está jogando
em casa, não
vê o laser empurrando a piscina de
laser. Aqui mesmo. Você tem esse ícone de engrenagem. Certifique-se de ter marcado o conteúdo
do mecanismo de exibição e,
em seguida, você terá
acesso a esses dois. Tudo bem, então enquete a laser para isso. Portanto, dependendo se a quantidade recebida
for maior que zero, tocaremos um som. Se não for maior que zero, vamos tocar
outro som. Esses são efeitos do tipo mais positivos ou negativos
. Ok, então o que também
queremos fazer aqui é retirar essa quantidade que
vamos inserir. E eu vou apertar
o símbolo Plus. Vamos acrescentar
algo a isso. Queremos acrescentar a
isso nossa saúde aqui. Então, vamos arrastar e colocar nossa saúde em cima disso. Isso nos dará
uma resposta imediata. Então, vamos
acrescentar isso, a quantidade chega à nossa saúde. E então vamos definir
isso para que possamos simplesmente arrastar e soltar nossa saúde na
saída para trazer um centro. Agora o que eu quero fazer é trazer esse caminho até
aqui para que eu possa usar
isso assim. E assim, quando estou
essencialmente dizendo aqui, é que não importa o que aconteça, se a quantidade que chega
é maior que zero ou não, eu quero adicionar isso à
minha saúde atual. Eu vou tocar um
som independentemente de ser maior que zero ou não, um som positivo ou negativo, então vamos definir isso
como nosso novo valor de saúde. Então eu vou colocar
isso em nossa devolução. Mas por último, mas não menos importante, posso arrastar e soltar isso
no nó retornado para adicionar
um alfinete à nossa devolução. Para observar que, depois de fazer isso, basta arrastar e soltar lá. Ele vai adicionar uma
saída aqui em cima. Mas provavelmente queremos nos dar um nome melhor do que
apenas a saída. Então, vou nomear
essa saúde atual. Assim. Agora, outra coisa que
eu quero fazer aqui é que eu quero ser
capaz de reprimir essa saúde porque
digamos que já estamos saúde
plena e a quantidade
recebida vai aumentar nossa saúde do que
nós tecnicamente poderia ter mais de 1,0 pontos de vida. Podemos ter
mais de 100% de saúde. Dessa forma, você pode garantir
que isso seja vinculado a um determinado valor para
inserir um nó de fixação. Então eu poderia sair daqui. Digitando na braçadeira. Queremos prender nossa bóia e
garantir que ela seja 0-1. Isso é meio legal. Então, vou
conectar isso assim
para garantir que , mesmo que estejamos recebendo uma
quantidade saudável, isso aumentará nossa saúde
e a torne acima de 1,0. Que, não
importa o que fique em 1,0, não pode ir além disso, então certifique-se de fazer isso também. Agora, dê uma olhada. Essa é nossa, essa é a nossa função aqui. Essa é uma funcionalidade
que estamos adicionando em nosso gráfico de ventilação com sua função de modificação de
saúde
adicionada ao nosso gráfico, temos essa quantidade de dano do
curandeiro de entrada
e, no lado da saída, nosso gráfico de ventilação com sua função de modificação de
saúde
adicionada ao nosso gráfico,
temos essa quantidade de dano do
curandeiro de entrada
e, no lado da saída,
pode produzir nossa saúde
atual. Agora, alguns detalhes importantes
antes de encerrarmos este vídeo no painel Detalhes
com suas funções selecionadas, dê uma olhada em nossas entradas aqui. Temos esse calcanhar
ou danificá-los. E temos essa
pequena seta suspensa. Se você clicar nele, poderá definir um
valor padrão para isso. Portanto, atualmente é 0,0, o que você pode ver refletido
no próprio nó da função. Se eu mudar isso para 0,5, você pode ver que
quando eu pressiono Enter, vai ficar difícil. Coloque isso aí. OK. Na verdade, não
quero isso por enquanto, mas pensei em
salientar que você pode definir um valor padrão lá. Deixe-me colocar isso de volta em zero. E você também tem essa opção de
passe por referência. O que isso significa mesmo? Bem, ele passado por uma opção ref ou
passado por referência permite que você diga à
função que qualquer variável que você
esteja inserindo nela,
essa é a variável que
você deseja alterar. Essencialmente, ele permite que
você obtenha e defina uma variável ao mesmo tempo. Agora vamos abordar isso um pouco mais
no próximo vídeo. Mas eu só quero salientar aqui que,
se eu marcar essa caixa, observe que esse pino também
mudará desse tipo
de forma circular. Um pouco mais
desse formato de diamante. Tudo bem, vou
desmarcá-lo por enquanto. E mais uma vez,
mostraremos isso um
pouco mais no próximo vídeo. Mais algumas coisas que você
precisa saber aqui é que, se
eu clicar duas vezes
nessa função, observe que estou
no meu gráfico de eventos. Veja o que acontece. Clique duas vezes. Eu saltei do meu gráfico de eventos para o
meu gráfico de funções. Então aqui, essa é uma maneira
rápida e fácil de ver o que essa
função está fazendo. E isso o levará direto
ao seu gráfico de funções. Dica muito útil. Algumas outras notas sobre
as funções que você cria. Você não pode ter nós
latentes, como um nó de atraso ou uma linha do tempo,
em sua função. Essa é uma limitação
de funções. E outra coisa a
observar sobre as funções. Com as funções, você obtém apenas um pino de entrada e
uma execução de saída, ou
seja, uma execução
de entrada e uma execução de saída. Se você precisar
de mais, macros, é o caminho a percorrer agora, no futuro, adicionaremos alguns vídeos falando
sobre macros. Mas pessoal, isso vai
oferecer esse acompanhamento no próximo vídeo,
onde
falaremos sobre funções de chamada. Nos vemos lá.
60. Funções de chamada: Tudo bem, no último vídeo, terminamos de criar uma função dentro do nosso bp
ThirdPersonCharacter. E assim, fizemos dele o
alvo onde quer que você crie sua função
que será o alvo. Neste vídeo,
aprenderemos como chamar essa função tanto de um Blueprint
de classe aqui dentro do nosso
ThirdPersonCharacter quanto de um Blueprint de nível. Então, volte
direto para o seu ThirdPersonCharacter
Blueprint. E se você esqueceu
onde estava, você está vivendo
debaixo de uma rocha em algum lugar. Aqui está o caminho para duplo clique
nesse cara para abri-lo. Agora, eu adicionei isso ao meu
gráfico no último vídeo. Deixe-me
excluir isso e atualizar aqui como podemos adicionar isso
ao nosso gráfico aqui, vou clicar com o botão direito do mouse
e algum espaço vazio. Então, em busca de um nó de evento, porque queremos
começar com um evento F3. F3, não sei porque
achei que não estava em uso. Agora, algumas maneiras de
adicionarmos essa função
ao nosso gráfico. Uma maneira é clicar
com o botão direito do mouse em algum espaço
vazio aqui e
fazer uma busca por ele. Modifique a saúde, essa é
uma forma de adicioná-la. A outra forma, deixe-me
excluir isso é
simplesmente arrastá-lo e soltá-lo da nossa seção de funções aqui. Arraste. E se você soltá-lo no painel de
execução aqui, ele vai
conectá-lo imediatamente. Em seguida, vamos simplesmente sair
disso e
trazer um nó de string de impressão. Certo? E vamos conectar isso em nossa saúde
atual à string apenas como uma atualização, se você clicar duas vezes no nó da
função aqui. Bem, o que estamos fazendo
é ingerir uma quantidade de saúde ou dano. Vamos adicionar isso
à nossa saúde atual. Vamos
fixar isso entre esses dois números
e
definiremos isso como
nosso novo valor de saúde. E então vamos passar isso para o outro lado da
nossa função aqui. Nesse caso, vamos distribuí-lo para fora desse nó. Observe a saúde atual, que é o pino de saída da
nossa função aqui. E vamos simplesmente
imprimir isso na tela. Além disso, precisamos codificar quantidades de cura ou dano. Então vamos começar
com quanta saúde? Bem, dentro de
nossa saúde modificada, aqui, nossa variável de saúde. Isso é o que vamos começar
com 1,0 pontos de vida. Isso é o mesmo
que vemos
no painel Meu Blueprint com essa variável de saúde
selecionada 1.0. Então, com o que
queremos modificar isso? Novamente, podemos curar ou danificar. Então, o que eu vou fazer é definir
isso para uma quantidade prejudicial. Então, vamos 0,5. E porque queremos que
isso cause danos, vamos fazer menos 0,5. Portanto, números
negativos causarão danos. Nesse caso,
os números positivos vão se curar. Tudo bem, vamos compilar,
certifique-se de que nosso script esteja com boa aparência. Jogar. Deixe-me definir minha depuração para meu
ThirdPersonCharacter aqui. Se eu pressionar F3 aqui, você pode ver que isso reduz
nossa saúde pela metade. E você também viu 0,5 no canto
superior esquerdo aqui. Lembre-se de que nossa variável de saúde também está vinculada ao nosso
medidor de saúde aqui. Então, se eu pressionar isso mais
uma vez, você verá 0,0 e
agora nossos medidores de saúde desapareceram. Agora, se eu pressionar F3 novamente, ele continuará mostrando
0,0 de vida. E isso ocorre porque, em ou
modificando a função de saúde, estamos restringindo essa
modificação de nossa saúde entre esses valores. Tudo bem, agora só
para mostrar que essa função pode curar
e causar danos, vamos modificar nosso produto
original saudável. Vamos modificar o valor original de
Saúde para ser, diremos pontos para. Então, vamos
começar com apenas 20% de saúde. E então, em nosso
gráfico de eventos, vamos
mudar nossa cura ou dano MT. Digamos que toda
vez que chamarmos isso, vamos
nos curar em 10%, 0,1. Tudo bem, então isso
pode funcionar nos dois sentidos. Do jeito que temos essa configuração,
você está clicando em Jogar. Então, podemos ver que estamos
começando com 20% de saúde. Eu pressiono F 3.3, 40%,
50%, 6070809100. E, claro, se eu
tentasse revisar isso, não
posso, porque clicar duas vezes em nossa
função de modificação de saúde aqui, isso vai
me levar para esse gráfico. Estamos limitando nosso valor de
saúde de 0 a 1. Tudo bem, então provamos
que você pode chamar essa função de dentro
do modelo em que ela
foi criada. Mas você pode chamá-lo
de outro modelo? E, claro, a resposta
para isso é sim, você pode. Desde que você tenha
uma referência ao seu ThirdPersonCharacter
em outro blueprint, você pode chamar essa função. E para provar isso,
usaremos nosso Plano de Nível. Voltou ao seu nível aqui. E eu tenho uma pequena configuração que você pode
tentar replicar. Mais uma vez, tenho uma
caixa de gatilho colocada dentro do meu nível. E como você viu
em outros vídeos, eu defini a extensão da caixa para 200, 200, 200, e a
espessura da linha para dez. E eu simplesmente escondi o
ator e desligo o jogo. Na
seção de renderização para que eu possa ver esse volume de gatilho. E então eu simplesmente
coloco uma partícula de fogo. Isso é encontrado em meu
conteúdo iniciado, contexto iniciado. Onde está a
pasta de partículas, ali mesmo. Um lugar que fica no
meio só para fazer toda
aquela zona parecer perigosa? E então eu simplesmente
aumentei dez vezes. Então essa
será minha zona de perigo. E a ideia aqui é
que quando meu personagem sobrepõe a isso, eles são danificados. Então, vamos selecionar
sua caixa de gatilho e
entrar em seu Plano de Nível. Então, a primeira coisa que
queremos fazer é que algo aconteça quando
sobrepusemos isso. Então, vamos clicar com o botão direito do mouse em Adicionar
evento quando sobrepomos isso. E, claro, precisamos obter uma referência ao nosso personagem em
terceira pessoa. Se você clicar com o botão direito do mouse
e escolher
um personagem de jogador, tentar arrastar
para fora daqui e tentar encontrar aquela função de modificação de
saúde. Você vai dizer:
Por que eu não consigo encontrá-lo? Se você desmarcar a opção
sensível ao contexto, você vai ficar tipo, oh, aí está. Na classe BP,
ThirdPersonCharacter. Oh, aí está. Mas o problema é que você
não pode simplesmente se conectar, trazer o personagem do jogador aqui. Então, isso é um problema. A maneira pela qual você pode obter
essa função de modificação de saúde, deixe-me excluir
daqui é por meio de casting. Ou se nosso caractere fizer referência à
variável aqui. Se isso fosse realmente preenchido, se tivéssemos inicializado com nosso
personagem de terceira pessoa dentro, poderíamos encontrar a função
Modificar saúde arrastando para fora
dela também. No entanto, vamos usar
o conceito de casting aqui. Essa é uma forma de verificar
se, nesse caso o outro ator era
a coisa que estava sobrepondo essa caixa de gatilho. Então, vamos expor um personagem de duas terças pessoas aqui e no
elenco. E se fizermos isso, se verificarmos
se o outro ator era o objeto que estava
sobrepondo a caixa Trigger, então podemos sair daqui e encontrar
aquela função
de modificação de saúde. E se você marcar a opção contextual,
como eu fiz lá, e de repente ela desaparecer, basta limpar a
pesquisa arrastada novamente, digitar Modificar saúde e você a encontrará. Mais uma vez. Depois de ter uma referência ao
seu ThirdPersonCharacter, você pode chamar qualquer função
que esteja dentro dele. Você pode referenciar quaisquer variáveis que estejam dentro dela,
obtê-las ou defini-las. Você pode até mesmo modificar qualquer um
dos componentes em qualquer uma de suas propriedades que estejam dentro desse
ThirdPersonCharacter. Portanto, obter uma referência
a algo é muito importante. Tudo bem, neste caso,
queremos
curar ou danificar nosso personagem? Eu diria que os danificou. Então, vamos para menos 0,1. E isso deve ser bom o suficiente porque
veremos nosso medidor de saúde diminuir. Vamos compilar isso. Deixe-me voltar ao meu
ThirdPersonCharacter. Certifique-se de que eu redefina
minha saúde para um valor de 11,0, 100%. E vamos jogar. Vou definir meu
objeto de depuração aqui para ser o mapa. Ligando novamente para o meu personagem. Então, estamos
começando com 100% de saúde. Eu sobreponho que eles são o volume de
gatilho aqui, um pouco de áudio lá também. Toda vez. Mais uma coisa antes de
finalizarmos este vídeo. No último vídeo,
falamos sobre uma opção de passagem por referência
dentro da nossa função. E eu preciso voltar a isso. Então, para
voltar à nossa função, aqui estou eu no meu Plano de Nível. Posso voltar para essa função
clicando duas vezes nela. E observe que, assim que eu fizer isso,
farei a transição
do nosso Plano de Nível. Clique duas vezes em nosso
ThirdPersonCharacter Blueprint onde reside essa
função de modificação de integridade. E abriu
a guia Modificar
função de saúde para nós. Vá em frente e selecione sua função de modificação
de saúde no lado esquerdo, ou você também pode clicar no nó de entrada Modificar
integridade. E no
painel Detalhes, você pode ver que
adicionamos uma entrada MT de salto ou dano. E isso equivale a essa entrada que você vê no próprio nó
da função, você é am e meu
Event Graph
voltando para a própria guia de funções. Agora, esse passe por
referência sobre o qual
começamos a falar
no último vídeo, o
que diabos isso faz? Bem, visualmente falando,
o que você vai ver acontecer aqui é que, quando
eu marcar esta caixa, esse
pino de forma circular agora será substituído por pinos em forma de
diamante. Então, aqui vamos nós. Agora é
um alfinete em forma de diamante. Além disso, o
valor padrão foi tchau. Agora, se eu compilar esse Blueprint, você também notará outra
coisa na compilação, obteremos um erro e ele dirá que
isso é inválido, que devemos ter uma
entrada conectada a ele. Então, do que está falando aqui? Deixe-me voltar
ao meu Event Graph está falando sobre essa
área aqui, dizendo, ei, você precisa de algo
conectado a isso. Agora, se eu estivesse modificando, como eu sou funcional Por que não
tenho ideia do que isso
está falando. Esse é um link. Você pode
simplesmente clicar nele. E isso vai te levar direto para ele. Então está dizendo: Ei, insira
uma variável nisso. Então, para mostrar isso, o
que diabos
passa por referência. Sim, eu preciso modificar nossa função de modificação de saúde um
pouco. E ao fazer isso, vou mudar nosso valor. Em vez de usar a escala de 0 a 1, vou quebrar temporariamente nosso medidor de saúde, se você quiser. Eu vou dizer que
vamos começar com uma saúde de dez. Vamos fingir que
temos uma escala de saúde vai de 0,02, 100,0. Tudo bem, então o que vou fazer é
adicionar um pouco de saúde. E, novamente,
vou usar uma escala de zero a 100 em vez de 01. Digamos que nossa
saúde acrescente, vamos mudar para ser, vamos adicionar uma saúde. Tudo bem, deixe-me ir em frente
e conectar isso aqui. Agora vou voar. Estou meio que
acompanhando nossa função de ajuda modificada. Deixe-me clicar duas vezes sobre isso. Mais uma vez, estamos
essencialmente dizendo: Ei, estamos conectando
um aqui. Em seguida, vamos adicionar isso
à nossa saúde existente, que é dez e bater palmas entre zero
e vamos fixá-la em 100. Poderíamos então ter 11. E se pressionarmos F3 novamente, esperaríamos que
fosse para 12, etc. Mas vamos
modificar mais uma coisa aqui dentro de nossa função de
modificar a saúde. O que vamos fazer é adicionar o nó de
incrementos a isso, arrastar para fora daqui e
digitar incrementos. Vamos
incrementar essa flutuação. E vou
religar as coisas um
pouco aqui,
mantendo pressionada a tecla Control, clique com o botão esquerdo e arraste para
onde quiser. Vamos pegar
o resultado disso e conectá-lo a ele. E conecte isso aí. Opa, eu perdi
lá, como um celular. E agora nossa função
fica assim. Então, se eu compilar aqui, o que temos acontecendo? Bem, essencialmente, o
que estamos acontecendo é algo pelo qual vamos
adicionar uma saúde. Isso está sendo
conectado à nossa função. Ao adicionar uma saúde, estamos incrementando
esse número aqui. E se passarmos o mouse sobre
isso, ele diz que adicionará
um ao valor especificado
e, em seguida, o definirá. Então, em vez da próxima vez que o AS
incrementar nossa saúde, sendo um,
então serão dois. E então, da próxima vez
, serão três, e assim por diante. Voltando ao nosso gráfico de eventos, devemos ver isso refletido
em nossa sequência de caracteres impressa. Mais uma vez, esse medidor não
terá valor. Então, vamos continuar dizendo que também temos esse ar em nosso Plano de
Nível. Vá em frente e clique
neste mapa de teste de nível. O que está falando
se você clicar nisso é porque não conectamos
nada aqui, eu vou quebrar isso
temporariamente. Sim. Em qualquer lugar que você tenha ele vai gritar
com você e dizer:
Ei, você precisa de algo
conectado a essa entrada. Tudo bem, vamos jogar isso. Então, pressionando a tecla F3, agora
temos 12 pontos de saúde, 15 ,
saúde, 19, saúde, 24, saúde. E você pode ver que ele continua adicionando um à quantidade
que sempre adiciona. Agora, a razão pela qual isso
começou às 12, deixe-me jogar mais
uma vez. Novamente. Estamos começando com dez pontos de
vida do que adicionando um ou
achamos que estamos adicionando um
, exceto que vamos 10-12. E a razão para isso
é porque, aqui, estamos pegando esse valor um e o incrementando
imediatamente. E ao fazer isso, isso é uma
passagem por referência, como isso é uma
passagem por referência, também
estamos incrementando
essa variável. Lembre-se de que no
último vídeo que eu disse fazer isso passado
por referência, onde quer que você tenha
conectado esse passe por referência. E você não está apenas
obtendo esse valor, você também o está definindo
imediatamente. Então, mesmo que
comece como um, toda vez que você
passar por aqui, ele vai incrementar um. Então 234, et cetera, et cetera. Um pouco de
nuance com a qual
passei muito tempo. Tudo bem, aí está
, pessoal. Isso é chamar funções. Você pode chamá-los de dentro
do blueprint em que você os
criou ou pode chamá-los
de outros blueprints. Contanto que você tenha uma referência ao modelo em
que eles foram criados. Gente, eu vou oferecer essa. Nos vemos na próxima.
61. Colapso para a função: Tudo bem, bem vindos de volta a todos. Neste vídeo, aprenderemos
como transformar uma rede existente de nós dentro de qualquer planta
em uma função. Isso é chamado de colapso
para uma função. Agora, esse é um truque muito útil. Sempre que você estiver duplicando uma seleção de nós em diferentes
partes do seu gráfico. Então, em vez de fazer
isso, podemos simplesmente transformar essas notas em uma
função e, em seguida, chamá-la quando
e onde você quiser. Atualmente, estou dentro
da minha picape de exemplo da BP. E digamos, por exemplo, que eu vou clicar com o botão esquerdo
e arrastar isso. Estamos duplicando esse
trecho de script
repetidamente em várias partes do nosso gráfico por qualquer motivo. Em vez de copiar e
colar esses nós, podemos destacá-los todos
exatamente como eu fiz aqui. E então você pode clicar com o botão direito do mouse em qualquer um dos nós destacados
e, em seguida, clicar com o botão direito do mouse no menu, você pode voltar a funcionar. É disso que trata este
vídeo. Vou demonstrar
isso brevemente aqui, mesmo que não seja aqui que
pretendo ir
com este vídeo. Então, vou transformar
isso em uma função. Observe que, quando eu faço isso,
eu transformei todos esses nós em
uma única função. No
lado direito, está escrito: você
quer
chamar essa função? Vou deixá-lo
como esse nome temporariamente. Então, eu vou pressionar enter aqui. E se eu mergulhar
nessa função, existem todos os nós que criaram uma função a partir
de todos esses nós. E a vantagem
disso é que poderíamos simplesmente
arrastar
e soltar isso em outras partes do nosso
gráfico e usá-lo da mesma forma que faríamos se copiássemos e
colássemos todos esses nós. Então essa é a vantagem disso. Agora, mais uma
vez, não era exatamente aqui que eu pretendia fazer isso. Então, deixe-me controlar o
Z aqui várias vezes e levá-lo de volta
ao seu estado original. Vou compilar e
dizer isso mais uma vez. E vamos criar uma nova
classe de Blueprint aqui. Para demonstrar isso,
vou clicar com o botão direito do mouse algum espaço vazio aqui dentro
de uma pasta Blueprints. Eu renomeei essa pasta
entre os vídeos do ator BP para projetos porque isso não será
um plano de ator. Vamos clicar com o botão direito na classe
Blueprint. E a classe Blueprint que
vamos criar aqui é uma pesquisa
de vibração de câmera seção de todas as classes, em Camera Shake. E estamos procurando uma base de vibração de
câmera. E então vamos
clicar em selecionar
aqui para criar isso,
vamos dar um nome a isso. Vou chamar isso de
sublinhado da BP, vibração da câmera. Tudo bem, então vamos clicar duas vezes
sobre isso para abri-lo. Resumindo, o que essa classe
principal básica de vibração da câmera nos permite
fazer é especificar alguns parâmetros de
vibração da câmera. Eu sei que há um gráfico do meu
projeto aqui. Há um gráfico de eventos
e todo esse tipo de jazz é consistente com
outros projetos. Mas o cerne de uma classe principal de vibração de
câmera é que você pode especificar alguns parâmetros de vibração da
câmera
e, em seguida, podemos reproduzir esses parâmetros de vibração
da câmera. Então, o que vamos
fazer aqui
no painel Detalhes é
em root, shake, param, clicar neste pequeno menu suspenso e queremos configurá-lo para o padrão de vibração da câmera
osciladora de onda . Depois disso, podemos clicar
aqui como um menu suspenso. E eu tenho alguns parâmetros
configurados com antecedência para
fins de tempo. Veja abaixo dessas configurações do
campo de visão F0 v. Abra isso algumas vezes. Queremos definir nossa amplitude para cinco e nossa frequência para cinco. E o tipo
de deslocamento inicial será definido como aleatório. Mais tarde, você pode brincar
com esses parâmetros, mas eu sugiro que você
apenas brinque ou simplesmente jogue junto em casa. Então você pode ver o
quanto isso faz. E mais tarde
você pode voltar e brincar com isso e ver o quanto
valores diferentes abalam as coisas. Na categoria de tempo, vamos definir uma duração
de 0,5 meio segundo. Aaron está misturando o tempo
e o tempo limite. Vamos definir como 0,2, 5,0, 0,25. Ótimo. Vá em frente, guarde isso, e vamos pular
em seguida para nosso personagem em terceira pessoa. Então, vamos voltar
ao nosso Navegador de Conteúdo. Plantas de personagens em terceira pessoa. Clique duas vezes em seu
ThirdPersonCharacter para abri-lo. Agora vamos pular para
o nosso gráfico de eventos. Portanto, não precisamos mais dessa função de modificação de
saúde. E em nosso evento, os grafetes
encontram algum espaço vazio. Precisamos de uma contribuição para o evento aqui. Então, um evento de entrada, vamos fazer F. Bem, claro, F2 parece um
bom evento de entrada aleatória. E, oferecendo isso, vamos
arrastar e digitar
um nó de função chamado
play world camera shake. Aqui, com esse
nó de função, veja isso. É uma nota azul que
é um nó de função. Podemos especificar uma classe. E é aqui que entra
nossa vibração da câmera B P, porque se
clicarmos neste menu suspenso. Podemos inserir os parâmetros de
vibração da câmera que
acabamos de configurar em nosso plano de
vibração da câmera, muito útil. Agora precisamos
especificar um epicentro. Ou seja, onde queremos
basear esse
tremor de câmera, tipo, qual é o epicentro? Você sabe como os terremotos
têm um epicentro? Bem, os tremores de câmera também precisam de
um epicentro definido
para eles. Para isso, vamos
dizer: Ei, vamos nos basear nos componentes da cápsula. Ou seja, esses
componentes da cápsula cercam
nosso personagem. Vamos baseá-lo no
centro disso, certo? Então, temos os componentes de uma
cápsula. Vamos arrastar e soltar isso
no gráfico, obteremos
uma referência a eles. Vamos acabar com isso
digitando a localização mundial. Isso retornará o valor das coordenadas x, y e z. Então, diremos que esse
é o nosso epicentro essencialmente no meio
do nosso componente de capital. Agora, precisamos especificar
um raio externo aqui, essencialmente a partir do epicentro, que
distância está a vibração
da câmera dele em ação? Vamos sentar. 500 é nosso raio externo. Desde que nossa câmera
esteja dentro
desse raio, se você deixar as
configurações da câmera, por padrão, deveria ser isso. Mas você pode brincar
com isso, você pode expandir isso se
quiser um pouco mais. Então o que vamos
fazer é acabar com isso. E eu vou trazer um nó chamado spawn sound attach. Agora poderíamos simplesmente
gerar um som aqui, mas só para mostrar algumas funcionalidades
diferentes, vamos gerar um
som e depois anexá-lo. Anexá-lo onde? Bem, vamos conectá-lo
ao nosso componente da cápsula aqui. Mais uma vez, sei
que não precisamos fazer isso. Poderíamos simplesmente tocar um som, mas vamos seguir em frente e
gerar e anexar esse som. Que som queremos aqui? Vamos começar com uma explosão, digite explosão
a até explosão Q.
Embora qualquer uma delas realmente
funcione bem. E diminuindo
um pouco o zoom aqui. Vamos sair daqui e fazer um emissor de
spawn no local. Esse é o antigo sistema de partículas. Se você quiser usar um sistema de partículas do
Niágara, você pode fazer um
sistema de desova no local. A razão pela qual estou
fazendo o Spawn Emitter é porque eu sei que tenho o
efeito de partícula de explosão aqui. Mas, mais uma vez, você também pode usar no sistema de partículas do
Niágara. E, na verdade, eu não
queria fazer o
emissor de spawn no local, vamos fazer um
emissor de spawn conectado. Mais uma vez, apenas para
mostrar spawning mid ou attach, podemos usar
diferentes nós de função aqui. Fenda naquela explosão. Aí está. Onde queremos
colocar essa explosão? Bem, eu posso estender isso do meu componente da cápsula assim. Clique duas vezes nesse fio
para abrir um nó de redirecionamento. E isso
deveria ser o suficiente. Agora, esses três
nós de função são algo que eu transformaria em
sua própria função. Eu os colocaria
em uma função. Sim, você pode
fazer com que as funções constituam outra função. E a razão pela qual eu
diria que esses três são válidos
para reduzir sua própria função. Porque há um monte
de efeitos ali mesmo. Essencialmente, como os efeitos de dano de
um jogador. Você vai tocar
um movimento de câmera. Você terá
um som de explosão e tocará efeitos de partículas de
explosão. Então, todos eles andam juntos. Faz sentido
dividi-los em um único nó. Agora, quando entrarmos em
colapso em uma função, vou deixar
essas duas de fora e você verá o porquê
daqui a pouco. Então, vou clicar com o botão esquerdo arrastar para destacar apenas
esses três nós. Em seguida, vou
clicar com o botão direito em qualquer um deles e vou entrar em colapso
para funcionar. Então, isso trará
um nó de função como
esse como uma nova função. E vamos dar um novo nome a isso. Então, na área de funções em que ele criou isso para nós, vamos pressionar F2 nisso, e vou chamar isso de
simplesmente dano ao jogador. O jogador danificou f x. Isso parece muito bom. Agora você pode ver
no lado direito que já foram criadas nossas entradas
para esse nó de função, mas temos algumas
aqui que são redundantes. Então, eu posso realmente simplificar
isso um pouco. Então, deixe-me expandir um pouco
meu painel de detalhes
aqui. Eu me conectei ao componente e anexei um componente também. Mas eles estão conectados
aos mesmos componentes. Então, eu posso realmente
eliminar um desses. Isso vai funcionar muito bem. Agora, você vai pegar esse
fio vermelho e isso vai
ficar horrível. Então, basta clicar com o botão direito do mouse sobre
isso, atualizar o nó, ele vai se livrar disso. Podemos nos livrar
desse cara aqui mesmo. Se você quisesse, você
poderia renomear suas entradas mas epicentro e anexado
ao componente ou muito bem, eu poderia
deletar isso, você sabe, simplificar isso um pouco mais, fazer isso parecer um
pouco limpador. Algo parecido com isso. Se eu mergulhar nesse
nó de função, observe o que estamos acontecendo. Eu tenho os componentes da minha cápsula. A localização mundial do componente
católico e conectando-o ao lado
de entrada da minha função. Dentro da minha função. Eles estão sendo
passados como o epicentro e os dois componentes conectados para esse som e o emissor. Agora, ele realmente se
livrou porque eu
excluí a entrada inferior, os dois componentes conectados realmente precisam
conectar esse backup. Mas, novamente, o mesmo componente
anexado funciona
para ambos. Então você pode trazer alguns nós de
redirecionamento aqui para limpar isso, assim. E, na verdade,
vou fazer isso, mantenha pressionada a tecla Alt, clique com o botão esquerdo. Essa é uma configuração válida como essa. Tudo bem, compile e salve isso. Voltando ao meu gráfico de eventos, que parece bonito e limpo, vamos entrar e jogar
e ver como isso fica. Então eu posso estar
correndo por aqui. Na verdade, deixe-me definir
minha opção de depuração para meu personagem lá para que você
possa ver isso disparando. Tudo bem, então pressionando F2, boom, você viu a câmera tremer um
pouco, meio que
um pouco de efeito de zoom. Para que eu possa me mover
e pressionar F2. E agora o que você poderia
fazer é, se
quiser,
voltar para a função que acabou de criar aqui. Você pode mudar seu som, você pode mudar
sua explosão. Vamos usar a chama
por enquanto, certo? Chama, lança-chamas. Na verdade, não é lança-chamas. Eu quero acender fogueiras. Aquele que eu quero usar
com algo como um incêndio em vez de explosão
clicando em jogar aqui. Quando você pressiona F2. A razão pela qual escolhi incêndios, porque lembre-se do
que
estávamos fazendo com esse nó de
função específico é que
respondemos ao emissor
e o conectamos. Então essa é a
diferença entre
apenas gerar um som e gerar
um som e anexá-lo. Eu queria mostrar
isso só para mostrar uma coisinha extra. Tudo bem, de volta ao nosso gráfico de
eventos aqui, o que
você poderia fazer se não quisesse e não quisesse manter tudo
reduzido a uma função. Você pode clicar com o botão direito do mouse sobre isso e expandir
o nó assim. E então isso vai te levar de volta
para onde você tinha as coisas. Você queria ver o
que está tudo lá dentro. Vou pressionar o
Control Z para desfazer isso porque gosto que tudo tenha se
transformado em uma função. Agora, apenas algumas
coisas que eu queria
mencionar antes de encerrarmos este vídeo, deixe-me mergulhar de volta na função danificada do
meu player aqui. Vou selecionar esses nós, controlar C e controlar V. Você não pode, você não pode ter um nó latente em um
colapso da função. O que vai acontecer é
irreal, vou gritar com você. Então, se eu estiver trazendo
um nó de atraso, mantendo pressionado o botão esquerdo. Então, digamos que eu
quisesse reunir todos os quatro
em uma função. Vou
destacá-los com o botão direito do mouse, Recolher para funcionar. Vai gritar comigo
e dizer: Não podemos fazer isso. Mostra o registro de mensagens. Vamos mostrar a mensagem
longa e ela diz: Ei, atraso não pode ser colocado
no gráfico da função. Da mesma forma, se eu me
livrar do atraso, vamos trazer um nó de evento. Vamos fazer F oito. Claro. Tente trazer um evento de entrada ou qualquer
evento para sua função, como este clique com o botão direito do mouse,
Collapse to function. Você também receberá
outra mensagem dizendo:
Ei, você também não pode ter um nó de
evento lá. Então, só para sua informação, quando você está
tentando entrar em colapso para funcionar. Então, pessoal, aí está. Recolhendo para funcionar,
é altamente recomendado se for uma coleção de nós que se une e for apenas um
script que você repete repetidamente em várias partes do seu gráfico porque isso
bastará para oferecer este, nos veremos no próximo.
62. Funções puras e impuras: Olá e bem vindo de volta. Neste vídeo, nosso objetivo
é identificar e entender as diferenças entre funções puras
e impuras. Também mostraremos como você
pode designar isso para tornar uma função
pura ou impura. Agora, para facilitar
essa discussão, vou trabalhar dentro
do meu personagem em terceira pessoa. Então, se você quiser
jogar em casa, é
aqui que eu sugiro que você tenha. E mais uma vez, você
pode entrar no seu ThirdPersonCharacter
entrando abaixo desse diretório e clicando duas vezes em seu personagem em
terceira pessoa. Tudo bem, vamos falar sobre
algumas diferenças entre nossas funções puras e
impuras. Bem, para começar, vamos falar
sobre as funções puras. Essas são as funções de
cor verde e aqui estão alguns
exemplos aqui. Geralmente são usadas como funções
getter que
produzem apenas alguns dados. Então essa é uma das chaves
com funções puras. Eles não têm nenhum
pino de entrada ou saída de execução. Então, se você notar nossa
dívida vezes em segundos, apenas
mostraremos
nosso tempo em segundos obteremos a localização real
produzirá apenas as coordenadas da soma x, y e z. Não há necessidade de
pinos de entrada ou saída de execução para obter o valor, nesse caso, de nossa
localização ou tempo reais em segundos. Agora, quando eles funcionam? Como não temos
pinos de execução que passem por eles no lado da entrada
ou do lado da saída. Quando eles correm? Bem, eles são executados quando o valor de
retorno é usado. Então, só para demonstrar isso, recebi um
carrapato de evento
que vai decolar cada quadro. Encaixamos isso em um nó de
função impura de cadeia de impressão. Vamos conectar isso aqui. Um valor flutuante em uma string. Ele vai converter
esse flutuador em uma string. E o que acontecerá
aqui é que cada quadro vai disparar até que essa sequência de impressão imprima
algo na tela. Quando isso acontecer, ele
voltará por aqui para obter
nosso tempo em segundos. Isso é executado, ele é executado quando seu valor de retorno é chamado. Então, deixe-me ir
em frente e jogar aqui. Você pode ver como isso está
retornando nosso tempo de jogo em segundos e está
aumentando a partir de quando começamos a jogar. Agora, outra coisa a se observar sobre funções
puras é que
elas prometem não
modificar o estado ou os membros de uma classe-alvo de nenhuma forma. Em nosso exemplo, aqui
estará nossa localização para obter o ator. O alvo aqui é um ator. E como estamos dentro do nosso projeto de
personagem em terceira pessoa, o alvo aqui sendo eu mesmo, seria nosso
personagem de terceira pessoa. O que você notaria com esse nó de função pura é não mudará em nada o
estado desse ator. Ele simplesmente retornará a localização
do nosso
ThirdPersonCharacter. Compare isso com nossa função
impura de localização do ator definido. Não, esse azul. Este pode mudar o
estado do nosso alvo, nosso ator ou
personagem em terceira pessoa aqui. E isso pode mudar o estado
alterando a localização dele. Então, essa também é uma das principais
diferenças. Então, com uma função pura, você faz uma pergunta, qual é a localização de um ator, por exemplo, e obtém uma resposta e a localização
XYZ nesse caso. Agora, só para mostrar algumas
dessas funções puras, gerando alguns dados que são solicitados. Você já viu os
usuários ganharem tempo em segundos. Deixe-me simplesmente conectar
isso, obter a localização real. Novamente, isso vai
disparar todos os quadros. E como eu vou
me mudar, você
verá essa atualização. Conseguir a localização do meu ator,
o ThirdPersonCharacter. Essas são as coordenadas em que o ThirdPersonCharacter está
atualmente
no mundo. Então, eu poderia simplesmente exibir o nome
de exibição do controlador do nosso player. Assim. Mais uma vez, nosso
controlador de jogador é como as cordas de marionetes que controlam
nosso manequim aqui. O controlador do player,
apenas para relembrar aqui, está configurado nas configurações
do seu projeto. Isso é um pouco
tangente em mapas e modos. Portanto, o controlador do player que
configuramos em nossos mapas e
modos e as configurações do
projeto é aquele controlador do bp player. Então, estava apenas
emitindo esse nome. Mais uma vez, com uma função pura, você faz uma pergunta. O que é um ator
é a localização, por exemplo, e você recebe uma resposta. E agora voltamos nossa atenção
para as funções impuras, que são as funções de
cor azul. Uma coisa que você notará
sobre eles é que eles têm execução em pinos e pinos. E isso significa que, como eles
têm uma execução em pinos, você deve executá-la explicitamente conectando algum fio a ela. Quer você tenha ou não
algo saindo do outro lado, isso é
totalmente opcional. Mas para que isso
faça alguma coisa, você precisa ter algum
fio fluindo para dentro dele. Outra diferença entre
uma função impura versus a função pura. E acabei de me deparar com
isso há pouco, é que uma
função impura pode, mas
não precisa, modificar
o estado de uma classe. Portanto, no caso da localização do nosso ator
definido aqui, isso poderia modificar o estado. Do nosso alvo, nosso eu
aqui é ThirdPersonCharacter, e isso modificaria nosso estado,
dando-lhe uma nova localização. Novamente, essa função
é impura porque muda o estado que é
a localização da classe. Nesse caso, nosso personagem em
terceira pessoa no mundo. Então, agora a questão é:
com as funções criadas, como torná-las
puras ou impuras? Como você designa isso? Bem, com a função, selecione-a aqui e
eu vou selecionar nossa função de dano do jogador. Se você selecioná-lo
no painel Detalhes, você tem uma caixa de seleção
especificando se essa será uma função impura ou
pura por padrão Se eu arrastar e soltar isso, você poderá vê-la como
de cor azul. É uma função impura. No entanto, se eu
marcasse essa caixa, eu poderia transformá-la em
uma função pura. Então essa é a versão impura. Deixe-me duplicar
isso rapidamente para que eu clique com o botão direito do mouse
neste player. dano afeta a função. Vou duplicá-lo. O controle D é a
tecla de atalho para isso. E vou chamar
esse jogador de FX danificado. E eu vou
colocar um espaço aqui e chamar isso de puro. Ok, e você pode ver que
abriu uma guia totalmente nova aqui. O que eu vou fazer é com
essa função selecionada, vou selecionar a
opção pura aqui. Ok? Então, agora parece que nada
aconteceu aqui em nosso próprio gráfico de
funções. poderia encerrar isso, mas vou voltar
ao nosso gráfico de eventos aqui e arrastar e soltar esse cara
no gráfico. Mais uma vez, as funções puras são verdes versus nossas
funções impuras são azuis. Observe que este não tem pinos de
execução em nenhum dos lados, enquanto a
função impura tem. Agora, essa função
aqui em cima é inútil para nós da maneira que a
projetamos, porque não temos como chamá-la. E não gera
nenhum tipo de dado. Portanto, essa não é uma ótima função para se transformar em uma função pura. Um não serve para nada
neste fórum. Então, vou deletar isso. Na verdade, vou excluir essa função, não preciso dela. E vou
tentar dar um exemplo em que isso
possa fazer sentido. Para que isso
demonstre, seja demonstrado, vou duplicar nossa
função de modificação de saúde aqui. A razão pela qual vamos
modificar nossa função de saúde aqui é porque você
se lembra de que, dentro daqui, deixe-me
clicar duas vezes sobre isso. Estávamos retornando um valor. Portanto, esse poderia ser um
candidato em que talvez
queiramos transformar isso em uma função pura. Mas eu não vou
destruir esse. Vou simplesmente
clicar com o botão direito do mouse sobre isso. E vamos duplicar
isso e eu chamarei isso minha saúde Modificar menos. E o que eu vou fazer aqui é,
no painel Detalhes, marcar essa caixa para torná-la pura. Também vou modificar algumas
coisas sobre isso. Agora, eu tenho essa configuração para passar isso por referência
no vídeo anterior. Vou desmarcar isso
e vou
simplificar um pouco esse gráfico
aqui. Então, vou me livrar desse nó
de incremento assim. Vou colocar
isso em nossa filial. Vamos pegar nosso
calcanhar ou uma montanha danificada
, colocar isso aqui. Tudo parece bom. Aqui mesmo. Vamos conectar isso
aqui e estamos meio que nos atrasando do
jeito que tínhamos originalmente. Então essa será
nossa função pura. Estou bem compilado nisso. Vamos voltar ao
nosso gráfico de eventos. E vamos, vamos trazer, eu tenho minha chave F2 aqui. Eu só vou roubar
esse nó de eventos aqui mesmo. O que eu vou fazer é
trazer nossa saúde modificada, pura pura função assim. E observe que
não há pinos de entrada, pinos de entrada de
execução ou de saída. E eu vou imprimir uma corda. Então, eu vou roubar
esse nó de string de impressão. Já está aqui. Quando pressiono F2, vou
imprimir algo na tela. Vou conectar isso, vou converter minha saúde
atual em uma string. E isso vai
modificar um pouco de saúde. Preciso alimentar isso com alguma quantidade de
saúde ou dano pela qual
queremos modificá-lo. Então, vamos ajudar a adicionar. Atualmente, está definido como um. Qual é a nossa saúde atualmente? É às dez. Então, tudo bem.
Deixe-me acrescentar minha saúde. Vou conectá-lo
à compilação deles. Opa, eu não
queria fazer isso. Vamos jogar aqui. E eu não estou
carregando o medidor no momento, eu realmente não me
importo com isso. Então, estou
carregando a impressão impressa que veremos
na tela. Então, pressionando F2, veja exatamente onde está o
cursor do meu mouse, 11121314. Novamente, isso é configurado para simplesmente gerar nossa saúde
atual. Não precisamos inserir ou retirar a
execução dela. Então, isso simplifica um pouco
nosso gráfico. E, de fato, essa é
uma das razões pelas quais você gostaria de
usar uma função pura. Isso simplesmente torna um gráfico
mais fácil e limpo de ler. Você tem menos
fios de execução para conectar. Além disso, eles sempre retornam os mesmos resultados previsíveis, desde
que qualquer entrada, neste caso, nossa saúde a ser adicionada, a mesma, você obterá o mesmo resultado previsível. Mas a maior razão para usar uma função pura em vez de uma impura. O maior motivo pelo qual
você gostaria de
converter uma em uma função
pura são os benefícios do
Compiler, garantindo código
mais otimizado nos
bastidores. Não vou aborrecê-lo
com os detalhes, mas você pode
pesquisar isso on-line se quiser detalhes interessantes e chatos. Tudo bem pessoal, isso serve para
oferecer essa, a diferença é entre funções
puras e impuras. Nos vemos no próximo vídeo.
63. Biblioteca de funções: Olá e bem vindos de volta a todos. Bem, até esse ponto em
nossa discussão sobre funções, aprendemos como criar algumas funções dentro
de um plano. E tudo bem
se você tiver uma referência ao plano no qual
a função foi criada. No entanto, o que você faz
se quiser criar uma função e torná-la acessível em todos
os seus projetos. O que você pode fazer então? Você não quer ter uma referência
específica
a um plano. Você só quer
fazer com que seja uma
função de uso geral que esteja
disponível em qualquer lugar. Bem, nesse caso,
você deseja criar algo conhecido como biblioteca
de funções. Nosso objetivo neste artigo é
aprender como fazer isso
no que uma
biblioteca de funções é. A biblioteca de funções é um
local para armazenar funções que podem ser acessadas
a partir de qualquer outro modelo. Tudo bem, aqui em
nosso navegador de conteúdo, vamos criar
nossa biblioteca de funções. E acho que uma pasta
Blueprints
na categoria de scripts
faria sentido para nós. Então, vamos clicar com o botão direito do mouse
em algum espaço vazio. Na categoria Plantas, temos esse submenu
em, no menu suspenso. Diz biblioteca de
funções blueprint. Esse é o que queremos
seguir em frente e clicar nele. Vamos dar um nome a isso. Vou chamar isso de minhas funções de
sublinhado e vou usar
tudo em maiúsculas apenas para torná-lo muito desagradável. E então eu vou clicar duas vezes
sobre isso para abri-lo. Agora, depois de fazermos
isso, ele solicitará que
criemos uma função imediatamente. E tem imediatamente uma aba
com esse nome correspondente. Para nós, vou chamar
essa função de que estamos prestes a criar material de malha de mudança. E essa função funcionará
exatamente como o nome sugere. Agora, vou adicionar algumas entradas ao nosso nó
de entrada aqui para que
possamos selecioná-las ou selecionar a função em si
permitirá que você as faça. Então, a primeira entrada
que vou
adicionar será chamada de ator. E vamos mudar
o tipo de entrada aqui para ser simplesmente um ator. Então, em tipos de objetos, eu simplesmente fiz uma
busca por ator. Em tipos de objeto, ator, queremos uma referência de
objeto ator. E então nossa segunda
entrada que queremos aqui, criar outra, será chamada de material. E vamos
mudar esse tipo para simplesmente digitar o material. E sob o
material de tipos de objeto no menu suspenso, vamos
transformá-lo em uma referência de objeto. Tudo bem, então
essas serão nossas duas entradas. Vamos ter
uma saída aqui. Então, vou clicar
nesse botão de adição. Ao fazer isso, adicionamos imediatamente um nó de
retorno. Vamos chamar essa saída de ponto de interrogação de alteração
bem-sucedida. E então vamos dar a
isso um tipo de booleano. Então, vamos mostrar
na outra extremidade desse nó de
função se
alteramos ou não com sucesso
o material de nossa malha. Então, crie um
pouco de espaço aqui vamos adicionar
alguns nós intermediários. A primeira coisa que
vamos fazer é ir em frente e
quebrar esse fio aqui. Vou manter pressionada a tecla
Alt e clicar com o botão esquerdo. Vamos tirar
nossa opinião de ator
e
descobrir se nosso ator é
um ator de malha estática. Então, vamos
escalar para o ator Static Mesh. Então, essencialmente
fazendo a pergunta, ei ator, que estamos
conectando a esse nó de função, você é um ator de malha estática? E se sim, queremos fazer
algo e, se não, queremos fazer outra coisa. Agora, o que
queremos fazer em primeiro lugar
é alternar
uma variável, é alternar seja
ela verdadeira ou com base no fato de essa conversão
falhar ou se for verdade que
é um ator de malha estática. Então, precisamos criar
uma variável aqui. Temos uma seção
chamada variáveis locais. Agora,
falaremos
mais sobre o que é
uma variável local no próximo vídeo, muito mais no próximo vídeo. Então, basta seguir em frente
agora e, em seguida, chegaremos
às diferenças entre variáveis
locais e de classe. No próximo vídeo, vamos
criar uma variável aqui, uma variável local. Esse vai
ser chamado de sucesso. Full, mude o ponto de interro E eu apertei a tecla errada lá. Então, deixe-me tentar isso de novo. Sucesso Vou chamar isso de ponto de
interrogação de mudança de sucesso ,
isso é bom o suficiente. E eu vou arrastar e
soltar isso em cima disso,
vou colocar o pino de execução, arrastar e soltar
na falha de lançamento. Queremos isso duas vezes. Então, se de fato for um ator de malha estática, ele sairá desse fio de execução da
exposição. E vamos
dizer que sim, o sucesso, nós o mudamos com sucesso. E se falhar,
diremos que não, não o
alteramos com sucesso. Então, isso vai ser definido como falso. Em seguida, vamos
simplesmente sair daqui e digitar play sound 2D. Vamos tocar um efeito sonoro de
confirmação sonora
ou um efeito sonoro de falha. Pois aqui em cima, se for
bem-sucedido na mudança, chamaremos a compilação de
som de sucesso. Isso é um que estamos procurando. Esse está nas pastas do
motor. Então, se você não vê que
está jogando junto, você pode clicar nessa
pequena engrenagem ativar o conteúdo do motor. Então, vamos tocar esse som
pressionando Control C, Control V para colar
isso aqui embaixo. Se essa conversão falhar,
falharemos ,
falharemos na compilação. Qualquer um deles
funcionará bem. Então precisamos fazer um
pouco de trabalho aqui embaixo. Então, o que queremos fazer
aqui é pegar nosso ator Static Mesh
e estamos procurando os componentes de malha estática. Portanto, os atores de malha estática consistem em um componente
de malha estática. É isso que faz
dele uma malha estática. E a partir disso,
vamos arrastar e digitar o material definido. Há um nodo que
estamos procurando. E o material para o qual queremos
alterá-lo será o que
inserirmos nessa função. Então, vamos
arrastar para cá, vou conectá-lo aqui, mas vou
clicar duas vezes nesse fio para trazer um nó de rerota. Ok, estamos quase terminando
aqui, estamos quase terminando. Então, o que vamos fazer aqui seguir é
pegar esse resultado. Vamos inserir isso em nosso material definido porque, se determinarmos que
é um ator de malha estática, queremos jogar isso e, de
fato, mudar o material. Vamos conectar esse
backup aqui quando o elenco falhar. Não é um ator de malha estática. Vamos passar direto por aqui e vamos
voltar direto para
o nodo retornado. Não queremos mudar
o material nesse caso. Agora, para essa
mudança bem-sucedida da variável booleana, bem, podemos simplesmente inserir
o resultado disso. Estamos configurando isso aqui
ou aqui. O resultado disso é
que podemos obtê-lo e simplesmente conectá-lo a ele. Então essa
será nossa função,
nossa função de empréstimo que
existirá e será minha biblioteca de funções. Deixe-me compilar
isso e salvar imediatamente. Em seguida, vamos ao nosso ThirdPersonCharacter
Blueprint, porque temos algum trabalho a fazer
dentro dele para exibir essa função. Então, se você esqueceu onde está, os planos em terceira pessoa
do conteúdo, clique duas vezes neles para abri-los dentro do nosso
ThirdPersonCharacter. Depois de
acessar o Event Graph, clique com o botão direito em algum espaço
vazio e simplesmente digite minhas funções. E você pode ver que, quando
começamos a
digitá-lo, ele mostra nossa biblioteca de funções na
seção de classes. Então, sob a classe, minhas funções, biblioteca agora
temos acesso à
função que criamos. Ele está disponível dentro
desta planta e de qualquer outra planta. Fossa, clique aqui, podemos ver como
é a nossa função
atualmente. Ele pega um fio de execução no lado da entrada,
ele pode emitir um. Pode ser preciso um ator, pode pegar um material e pode mostrar se alteramos ou
não com sucesso o material em um ator de entrada voltará a isso
em pouco tempo. Mas, por enquanto, exclua isso. Vamos até nossa guia
de janela de visualização e adicionaremos um
novo componente aqui. Então, vamos selecionar
nosso componente de cápsula. E abaixo disso,
vamos adicionar um componente. E vamos adicionar
um colisor de esferas, colisão de
esferas. Agora, isso vai
funcionar como uma espécie de mão invisível, se você quiser. Então vou dar um nome a isso
e chamá-lo de mão simulada. E eu vou
colocá-lo um pouco na frente do nosso personagem aqui. Então, vou
mudar a localização x para ser, digamos 60. E eu vou mudar a
escala universalmente em X, Y e Z 2,5, algo um pouco menor porque está ligado ao
nosso componente católico. Quando girarmos nosso
personagem, ele também
girará. O que vamos fazer
é
verificar se isso está sobrepondo algo e, em seguida,
vamos mudar o que quer que esteja sobreposto,
que será, se estiver sobreposto, um cadeira, vamos transformar essa malha
estática em uma parte dourada. Vamos mudar o
material dessa malha estática. Mais uma propriedade que
eu quero configurar aqui está na seção de
renderização Quero desmarcar a opção oculta
nos jogos para que possamos ver de onde isso
acontece no mundo. Tudo bem, então com
tudo configurado, podemos salvar isso voltar ao seu nível aqui. Vamos colocar algumas malhas
estáticas em nosso nível. Agora, tenho alguns itens
específicos em
mente na pasta de conteúdo do
agitador. Realmente, qualquer
medida estática serve. Mas embaixo da pasta Props, vou colocar uma cadeira
por aí um pouco. Eu vou colocar um
desses caras girar isso
um pouco e eu vou colocar, tal um cilindro básico C. Podemos encontrar um
desses aqui embaixo, ou a guia de atores de lugar, mas eu sou vão ficar
logo abaixo das formas. Vamos fazer um cilindro. E eu vou
ampliá-lo um pouco assim. Com todos os três selecionados, vou manter pressionada a
tecla Control e clicar com o botão esquerdo. Então, todos
os três são selecionados. Quero definir
algo em cada um
deles , para garantir que eles gerem eventos de sobreposição que
possamos
detectar que os estamos sobrepondo com nossa mão simulada
entre aspas e sem aspas. Então, com todos os selecionados, posso simplesmente digitar
na barra de pesquisa aqui. Serapilheira. O que eu estou procurando é
gerar eventos de sobreposição. Então vá em frente e
verifique isso novamente, verifique se você selecionou
todos os três. E então o que
vamos fazer é
entrar no nosso Projeto de
Personagem em terceira pessoa. Então, volte para lá. Personagem de terceira pessoa, vá
até o Event Graph. E queremos fazer alguma coisa, mas nossa
mão simulada está sobreposta, então encontre algum espaço vazio. E com a mão simulada selecionada aqui, você pode
clicar com o botão direito nela. Vamos adicionar
um evento para quando
começarmos a sobrepor
esse componente. Vou entrar no nosso gráfico
até aqui porque ele
quer, tudo bem. Então, o que vamos fazer é
sair do nosso outro ator, vamos nos arrastar
e mudar o material da malha. E eu posso simplesmente digitar a
mudança ou começar a
digitar a mudança. E é inteligente o suficiente
saber que, ei, você
está tentando
encontrar aquela função de
material de malha de mudança que vive dentro de sua biblioteca de funções. Sim, funciona. Agora note que isso pode resultar, essa
mão simulada era algo sobreposto que ela pode
produzir com outro ator. E, nesse caso
, ele produzirá uma referência de objeto ator. Essa entrada do ator no material da malha de
mudança está procurando obter uma referência de objeto de
ator. Isso não é conveniente? Então, vamos
detectar se ele está se sobrepondo a algum outro ator. E então vamos
mudar o material. Vou mudar o
material para simplesmente ser ouro. O ouro vive no conteúdo de estrelas R. E o que faremos aqui é
trazer um nó de ramificação. Vou digitar branch. Como alternativa, se você excluir isso e arrastar para fora daqui, essa é uma saída booleana. Se eu digitar ramificação aqui, ele conectará os dois fios ao mesmo tempo. É muito útil. Então, vamos simplesmente imprimir uma string. Vou trazer alguns
desses Control C, Control V. E esses serão nossos roteiros. Então, aqui em cima, se isso
for bem-sucedido, vamos
imprimir a frio. Aqui. Vamos
digitar sem mudanças. Tudo bem, vá em frente,
compile e salve isso. Vamos dar a isso um
dramaturgo de presente. Então, clicando no botão R plus, definirei nosso objeto de
depuração nosso ThirdPersonCharacter
que surgiu e o expandiu levemente. Tudo bem, se eu olhar na
frente do meu personagem, há aquela esfera vermelha, essa é minha mão simulada. Você pode ver que gira, gira junto com meu personagem. Então, quando eu sobreponho a cadeira, você vê que ela mudou muito bem
o material. Mudei o material lá, e nosso cilindro
o trocou lá também. Essa é uma boa
função global, se você quiser. Podemos usá-lo dentro do nosso
ThirdPersonCharacter aqui. Mas também vamos mostrar
como você pode usar isso dentro do seu Plano de Nível. Afinal, qual é
o objetivo de criar uma biblioteca de funções
se você não consegue acessar as funções dentro dela
de qualquer lugar. Voltando para nossa guia do mapa de
testes de nível aqui. Vamos abrir o
Level Blueprint e eu vou apenas
trazer uma chave de entrada. Qualquer chave de entrada fará isso. Estou clicando com o botão direito
em algum espaço vazio. Vamos tentar a chave sete. E vai pensar que estou
usando a tecla sete para qualquer outra coisa, aqui estou eu sei? A propósito, se você clicar embaixo grama aqui e
expandir a grama para fora, ela mostrará quais
eventos diferentes você tem lá. Então, para a chave sete, vou sair daqui fazer uma busca por
mudar o material da malha. E mais uma vez, porque
essa função existe em nossa biblioteca de
funções criada e
podemos encontrá-la no
Level Blueprint. Claro. E eu preciso fornecer
um ator aqui. Então, vamos escolher
um dos nossos atores. Vou me
certificar de que selecionei meu cilindro aqui. Voltando ao
meu Plano de Nível, mantendo pressionado o botão esquerdo do mouse. Vamos colocar isso aí. E eu vou mudar
o material aqui. Vamos pegar um paralelepípedo. Algo paralelepípedo. Tudo bem, compile, salve. Vamos jogar. Defina nosso objeto
de depuração em nosso nível. Traga de volta nosso mapa. E, claro, eu posso
tocar nesses dois. Eles ainda vão
trocar o ouro. Agora, se eu tocar no
cilindro aqui, isso se transformaria em ouro
porque isso é tudo o que está configurado no meu Projeto de
Personagem. Mas se eu pressionar a tecla
sete aqui, podemos ver que vamos
transformá-la em paralelepípedos. Então, uma ótima função global
que criamos lá. Tudo bem, vamos finalizar este vídeo falando
sobre os prós e os contras das funções em
uma biblioteca de funções. Bem, os profissionais
incluem que você pode acessar essa função de
dentro de qualquer projeto. É uma ótima economia de tempo. Se é uma função que você pode
usar em muitos lugares, você sabe, você não precisa
escrever o mesmo script em vários lugares, várias vezes,
esse tipo de coisa. Agora, os contras, os contras,
incluiriam ter mais dificuldade em referenciar dados específicos do
projeto, por exemplo, meu plano de
personagem em terceira pessoa. Se eu adicionar alguma função, como, digamos talvez uma
função de saúde modificada que era muito dependente de algumas variáveis e vivia dentro daqui. Bem, esse tipo de
função ficará
melhor dentro desse plano
específico. Ou se eu tivesse alguma
função que fosse muito dependente
de alguns dos componentes dentro de um determinado projeto. Essa função
estaria melhor em uma classe Blueprint em si do
que em uma biblioteca de
funções. Tudo bem pessoal, isso
vai fazer tudo por este nesta discussão sobre bibliotecas
de funções. Vejo todos vocês no próximo vídeo.
64. Variáveis locais: Bem-vinda. Neste vídeo, nosso
objetivo é se
familiarizar com o conceito
de variáveis locais. Agora, neste vídeo, vamos detalhar o que são variáveis
locais, como elas diferem das variáveis de
classe, como podemos criá-las e usá-las e quais tipos de coisas
você precisa saber
sobre sua acessibilidade
dentro de projetos. Agora, no último vídeo,
usamos uma variável local, chamada Mudança de sucesso, uma variável local booleana. E eu mencionei que
voltaríamos a ele em um vídeo futuro, que é esse vídeo futuro. Agora, observe algo
sobre variáveis locais. Só podemos criar variáveis
locais aqui
dentro de funções, dentro da biblioteca de funções,
a biblioteca de funções blueprint. Não podemos criar variáveis
de classe. Nós só temos uma seção de
variável local. Então, do que diabos
estamos falando aqui? Variáveis de classe versus variáveis
locais? Bem, para ajudar a facilitar
essa discussão, eu tenho meu ThirdPersonCharacter
Blueprint aberto. Pule até aqui. E se examinarmos nosso painel ThirdPersonCharacter
Blueprint, temos uma seção de variáveis. Essas são variáveis que
pertencem à nossa classe de caracteres, então podemos chamá-las de variáveis de
classe. Mas você notará algo aqui no painel My Blueprint. Não vemos variáveis
locais aqui
na biblioteca de funções, vemos uma categoria
chamada variáveis locais. Onde está em um plano de
classe, vemos apenas uma seção variável. Bem, para
ver as variáveis locais, você precisa ter uma função selecionada ou seu script de
construção também. Então, se eu selecionar minha função Modificar
saúde aqui, vamos clicar
duas vezes nela para abri-la. Você deve ter notado que,
assim que fiz isso, agora
tenho acesso a uma seção de variáveis locais
aqui embaixo. Se eu sair daqui, volte para o meu gráfico de eventos. Observe que as
variáveis locais desaparecerão. Não está mais lá. Tudo bem, então vamos voltar à nossa função de modificação de saúde. Tudo bem, agora vamos falar sobre
algumas das diferenças entre variáveis de classe
e variáveis locais. Bem, para começar,
quando você está criando uma variável aqui
no painel Meu Blueprint, você está criando
uma variável de classe, uma que pertence a
essa classe principal. Agora, qualquer variável que você
queira obter ou definir de outro blueprint deve
ser uma variável de classe. Agora, só para dar
um exemplo disso,
digamos que em seu Plano de Nível, você tivesse uma referência ao seu ThirdPersonCharacter
e quisesse
modificar a variável de saúde do seu
personagem em terceira pessoa. Talvez haja uma zona
dentro do nível que cause dano ou talvez cure o
ThirdPersonCharacter. Bem, nesse caso,
para acessar nosso
ThirdPersonCharacter é uma variável de saúde de dentro
do Level Blueprint. Você gostaria de ter certeza de
que essa variável de saúde existia como uma variável de classe. Agora, quanto às variáveis locais, elas podem ser criadas dentro
de um gráfico de funções. As variáveis locais só são visíveis para a função na
qual foram criadas e não para outras
funções ou para o gráfico de eventos. Agora vamos criar um aqui dentro de nossa função de modificação
de saúde. Agora eu poderia criar um
clicando nesse botão de adição logo aqui na categoria de
variáveis locais. No entanto, vou criar um clicando com o botão direito do mouse em um alfinete. Enquanto você estiver
tentando promover
para uma variável dentro
de uma função, você tem a opção de
promover para uma variável local. Então, vou clicar com o botão
direito aqui embaixo minha braçadeira Tmax. E, ao clicar com o botão direito do mouse,
vamos promover uma variável local que criará essa
variável aqui. Então, vamos chamar isso de
minha saúde máxima. E o que você
notará agora é que essa variável local não existe em nenhum outro gráfico de
função aqui, se eu entrar na função fx
danificada pelo meu player, clicando duas vezes sobre isso, aquele local a variável
não pode ser encontrada. Da mesma forma, se eu clicasse com o botão direito do mouse
dentro da função
danificada do jogador e
procurasse a vida máxima. Não está disponível aqui. Se eu acessar meu
gráfico de eventos e pesquisar por ele, não
vejo nenhuma variável local aqui
embaixo e
nem clique com o botão direito do mouse, max, health também não está aqui. Na verdade, se eu desmarcar a opção
sensível ao contexto, ela não aparecerá. Essa
variável de saúde máxima dentro da função de integridade de
modificação do Maya é
local apenas para essa função. E se você não a
vê mais aqui, você pode clicar nessa
pequena seta suspensa e ela
mostrará onde ela está. Mais uma vez. Agora, neste momento, você
pode estar se perguntando qual é o objetivo das variáveis
locais. Por que eu ainda preciso deles? Por que posso criar todas as variáveis de
classe e usar essas variáveis locais para
ajudar a reduzir a confusão de coisas que são relevantes
apenas no
contexto de uma função. Você não quer
preencher uma lista enorme variáveis
de classe aqui quando algumas podem, na verdade, ser necessárias apenas
dentro de uma determinada função. Portanto, por motivos
organizacionais, é uma boa ideia simplesmente criar
uma variável local
para ajudar a manter
as coisas organizadas e limpas. Em segundo lugar, também ajuda a se proteger
contra seus próprios erros. Eu tenho duas variáveis aqui. Eu tenho saúde e
saúde máxima que são muito semelhantes. Agora, talvez eu queira
garantir que, ei, eu nunca possa modificar
minha saúde máxima. Ele só estará
acessível a partir dessa função. Bem, esse é um bom
candidato para
transformar isso em uma variável local
para garantir que eu não
modifique acidentalmente essa variável de dentro de outro plano. Tudo bem, vamos mostrar isso um pouco mais, criando uma função totalmente nova
para iniciantes aqui dentro do nosso
ThirdPersonCharacter. Então, na categoria de funções, vamos adicionar
uma nova função. Vou chamar isso de turbo run, que fará exatamente o que você
acha que vai fazer. Agora, dentro daqui, o que
vamos fazer é trazer qualquer referência ao nosso Componente de Movimento de
Personagem. Dentro do nosso componente de
movimento do personagem, temos acesso a um parâmetro
chamado velocidade máxima de caminhada. Queremos fazer algo
com nossa velocidade máxima de caminhada. Então, está
secando aqui e trazendo uma referência à nossa velocidade
máxima de caminhada. Vamos obter esse valor,
que por padrão
aqui começa em 500. Então o que vamos fazer é arrastar um aqui, apertar o botão de mais, vamos adicionar
algo a ele. Em seguida, vamos definir
nossa velocidade máxima de caminhada. Então, saindo do movimento do nosso
personagem mais uma vez, defina a velocidade máxima de caminhada. Nós vamos fazer
isso e assim. Então, agora queremos adicionar uma variável
local
para determinar quanto aumento
de velocidade
queremos dar ao nosso personagem
quando corremos terrivelmente. Então é isso que eu vou fazer. Vou adicionar o valor
aqui, anos 2000. E então vou
clicar com o botão direito do mouse nesse pino. Vamos
transformar isso em uma variável local, então vamos promover isso. E vamos ver
isso povoado aqui embaixo. Vamos dar a ele um nome
chamado turbo speed boost. E agora você pode ver que, como o
promovemos com esse valor
já definido, ele também vai definir esse valor
ali mesmo. Então esse é um pequeno
truque útil que eu gosto muito. Tudo bem, vamos compilar isso. Certifique-se de que tudo esteja
parecendo, Skippy. Então, vamos pular para o
nosso gráfico de eventos. E eu vou encontrar
algum espaço vazio aqui. E vamos trazer eventos
de contribuição. Vamos ver o que
temos disponível aqui. Agora temos acesso a
muitas coisas diferentes. Vou clicar com o botão direito do mouse.
Nós faremos as duas chaves. Claro. Vamos fazer a entrada
ou realmente digitar o
teclado para lá. Trazendo duas chaves. Fora disso, vamos arrastar e soltar nossa execução de terminal. E se soltarmos a chave, o que queremos fazer é
trazer nosso
Componente
de Movimento de Personagem assim. E então vamos sair
daqui,
fazer outra série, máxima, velocidade de caminhada. Lembre-se de que o
valor padrão era 500, então vamos voltar para 500 assim que
liberarmos as duas chaves. Então esse será o
nosso script de execução do Turbo. Então, observe que a função de
execução é terrível aqui. Ele tem essa
variável local dentro dele. Podemos clicar duas vezes
sobre isso, para
entrar nessa função. Temos essa velocidade turbo,
impulso, variável local. Tudo bem, agora vamos
jogar isso. Vou compilar aqui,
salvar e jogar, definir nosso debug. Objeto ao nosso
ThirdPersonCharacter. Podemos correr muito bem e com
boa aparência. No entanto, quando
pressiono as duas teclas, ampliamos muito bem. Somos péssimos correndo
e eu a
solto e diminuo a velocidade. Para resumir aqui, você pode pesquisar e encontrar
variáveis locais de dentro
do gráfico em que elas foram
criadas são terríveis. Execute aqui poderíamos pesquisar e
encontrar essa variável local. Você não pode pesquisar e
encontrar variáveis locais
no gráfico de eventos do esquema em que
foram criadas. Então, no
gráfico de eventos aqui, não
podemos encontrar essa variável
local. Você também não pode
pesquisar e descobrir essa variável local é uma variável local turbo
run aqui. Você não pode encontrar isso se você procurá-lo dentro de
outro loop, outro plano, mesmo que
você tenha uma referência ao nosso ThirdPersonCharacter
aqui, você não pode encontrar uma referência a isso. Agora, uma última nota
sobre variáveis de classe. É importante notar que,
se você clicar no botão de
padrões dessa classe dentro
de qualquer Blueprint. Qualquer classe do Blueprint,
você tem acesso, desculpe, não a Class
Settings, classe padrão. Você tem acesso a todas as
suas várias variáveis de classe. Aqui estão eles logo
no painel Meu Blueprint. saúde pode pular, etc. Em nosso painel de detalhes, também
podemos encontrá-los todos
aqui. Observe que, se você
mudar isso aqui, digamos que deveríamos mudar
nossa saúde de dez para, digamos, 100, Enter. E agora eu deveria selecionar
minha variável de saúde aqui. Ele atualizará
esse valor padrão. Portanto, não importa
onde você o altere. Você pode alterar seus
valores de variáveis a partir daqui ou na seção de padrões da classe pensei em apontar
isso também, certo? Isso fará tudo
para este vídeo. Nos vemos na próxima.
65. Funções Coisas a saber: Bem vindo de volta. Neste vídeo, nosso objetivo é abordar
algumas coisas realmente boas sobre como
trabalhar
com funções. Agora, essas são
coisas que não necessariamente justificavam
um vídeo completo, mas certamente deveriam
ser abordadas ao discutir o
tópico das funções. Para este vídeo,
vou
abrir uma variedade de projetos, planos de nível
ThirdPersonCharacter, similares. Então, vou começar meu conteúdo do ThirdPersonCharacter
Blueprint, blueprints em
terceira pessoa. A primeira coisa
que abordaremos aqui é como depurar uma função. Agora, isso será algo para o qual, mais tarde
no curso ,
vou dedicar
um módulo inteiro, mas vale a pena
mencionar aqui também. Então, aqui eu tenho um roteiro
muito simples. Quando eu pressiono as duas teclas, vou fazer meu
personagem correr terrivelmente. E quando eu
soltá-lo, vou
voltar à minha velocidade
normal de movimento. Agora você pode ver que adicionei
um comentário a esse nó
clicando com o botão direito do mouse e
adicionando um comentário ao nó que, se eu pressionar
F9, F9 funcionará como um botão aqui e você poderá ver como isso altera
essa dica de ferramenta. Posso adicionar o que é conhecido como
ponto de interrupção, que
permitirá que o código pare
aqui neste momento, assim que chegarmos a esse
ponto na cadeia de execução. Então você pode imaginar que se você tivesse um monte de
nós conectados juntos, isso congelaria o jogo
assim que você chegasse a esse ponto. Agora, por
que você gostaria de fazer isso? Bem, às vezes você pode ter algumas consequências
inesperadas em seus roteiros. Algo está acontecendo
que você não pretendia que
acontecesse, seja o que for. E você precisa congelar o jogo, examinar o código, percorrer seu script para
descobrir o que está acontecendo. Esse é o uso de um ponto de interrupção. E vou
mostrar brevemente como isso pode
congelar seu jogo. Então, vou pressionar
o botão play aqui. Observe que eu tenho meus
pontos de interrupção aqui. Você também pode clicar com o botão direito do mouse
e remover um ponto de interrupção, desabilitar o ponto ou alternar esse ponto de interrupção,
ativá-lo ou desativá-lo. Aqui vamos nós. Planeta. Vou configurar meu objeto de
depuração para ser meu ThirdPersonCharacter
e
trazê-lo para minha janela de jogo novamente. Então, assim que eu
pressionar as duas teclas, ele vai imediatamente para o script e congelar
o jogo aqui. Agora, a partir daqui, com esse nó selecionado e você pode ver aquela flecha vermelha
gigante
dizendo, sim, esse é o cara que
estamos tentando selecionar. Você tem uma série de
botões aqui que
permitem que você decida
o que você gostaria de fazer. A partir daqui, você pode localizar o nó atualmente ativo,
que ele é atualmente. Podemos entrar nesse nó
e o que isso vai fazer é me levar para dentro
da própria função. Deixe-me voltar
ao meu gráfico de eventos. Eu poderia passar por cima, ou
seja, se eu tivesse
mais alguns nós aqui, isso poderia me impedir de
passar para o próximo. E então este
aqui é para sair
desse nó para ser executado
no gráfico principal. Então, novamente, tenho uma seção
inteira de vídeos em breve que
falaremos sobre isso, mas pontos de interrupção, você pode
adicioná-los a qualquer nó. Vou parar este
ano simplesmente clicando
no nó e ativando
e desativando com a tecla F9. Tudo bem, a seguir, para
qualquer uma das suas funções que você criou
no painel Detalhes, você pode
adicionar algumas palavras-chave. E o que isso permite que
você faça é clicar mouse em
algum espaço vazio aqui, se você pesquisar qualquer uma
de suas palavras-chave aqui, ele encontrará a função
que você está procurando. Então, poderíamos fazer
algo maluco aqui. Vou adicionar palavras-chave
aqui, como roxo. E vou
separá-los com
uma máquina de lavar louça com vírgula e vírgula. E se você entender essa piada
e de onde ela veio, tirei meu chapéu para você. Compilar e salvar. E agora, se você fizer uma busca
por clicar com o botão direito do mouse em roxo, ele encontrará a função terrible run. Macaco, encontre essa função, bem
como a máquina de lavar louça. E eu apenas digito o prato
e ele já o encontra. Agora, observe que isso
funciona não apenas dentro do plano em
que a função foi criada, mas se eu passar para o meu plano de nível de mapa de
teste de nível, contanto que você tenha uma referência a esse plano aqui, Eu posso falar com meu
ThirdPersonCharacter Blueprint. Eu posso sair daqui. Digite em roxo, encontra essa
função macaco ou lava-louças. Então aí está. Palavras-chave. É
assim que você pode encontrar uma função usando qualquer palavra-chave
ou palavras de sua escolha. Em seguida, vamos explorar esse campo de título de nó
compacto que você tem
disponível para qualquer uma das funções
que você criou. O que isso permite que você faça é
simplificar um pouco seu Node. Eu não uso muito isso, mas talvez alguns de vocês
gostem de trabalhar dessa maneira. Então, vou mudar o título do
meu nó aqui para algo diferente de efeitos danificados pelo
jogador. Vou simplificar e
simplesmente colocar o player FX. E assim que eu clicar em enter, esse título vai
se despedir, assim
como todos
esses rótulos. Então, vamos lá, pressionando Enter. Você pode ver agora que eu transformei esse nó em uma versão
simplificada. Player effects agora é o
título de nó compacto desse nó. E todas aquelas
etiquetas de alfinetes desapareceram. Agora você ainda pode ver
quais tipos de dados esses pinos estão procurando
simplesmente passando o mouse sobre eles. Isso vai
procurar um objeto, um vetor e
componentes coletores, respectivamente. Talvez alguns de vocês
prefiram trabalhar dessa maneira. Eu, no entanto, não, mas pensei que isso iria
jogá-lo fora de qualquer maneira. Em seguida, quero falar sobre o que esse campo especificador de acesso faz para uma função
que criamos. No entanto, para fazer isso, preciso criar
uma classe infantil do nosso ThirdPersonCharacter aqui para realmente fazer essa justiça. Agora, a herança de classe
é um assunto sobre o qual
falarei mais tarde no curso. No entanto, novamente, para
mostrar esse especificador de acesso, preciso fazer isso agora. Então, de volta aqui no meu navegador de
conteúdo, vou clicar com o botão direito do mouse no meu ThirdPersonCharacter e
vou criar uma classe
Child Blueprint. E vou deixar esse nome
apenas apertar Enter. E o que vou fazer então é voltar
ao meu ThirdPersonCharacter e falar sobre esse especificador de acesso. Portanto, temos três configurações
diferentes aqui:
pública, protegida e privada. Então, isso determina
quais esquemas podem obter acesso a uma função. Nesse caso, nossa função de saúde
modificada,
pública, é uma configuração padrão. Qualquer outro objeto pode chamar essa função, desde que
tenhamos uma referência a ela, o que significa que eu posso usar essa função de
modificação de saúde aqui dentro desse modelo
que criamos com ele. Eu também poderia acessá-lo de
nosso Plano de Nível novamente, contanto
que você tenha uma referência ao seu personagem de terceira pessoa, eu posso encontrar meu Deus, se a saúde dela estiver lá. Voltando para meu
ThirdPersonCharacter. Vamos agora mudar r, modificar a saúde de um
público muito protegido. Agora, isso significa que a função
só pode ser chamada pelo blueprint
atual, ou
seja, nosso
ThirdPersonCharacter Blueprint, bem
como quaisquer blueprints derivados do blueprint
atual. Então, posso encontrá-lo aqui? Sim, eu posso arrastar e soltar. Eu posso acessá-lo lá. Faça uso dela lá. Se eu pular para o meu filho
ThirdPersonCharacter e pular para
o Event Graph, mouse e fizer
uma pesquisa para modificar a saúde. Existe essa função. Eu também posso encontrá-lo aqui. Isso mostra que nossa classe
principal aqui é nosso bp ThirdPersonCharacter. Então, sim, você pode usá-lo dentro do esquema original
que você criou. Você o criou em
nossa classe infantil. Por fim, vamos voltar ao
nosso bp ThirdPersonCharacter. Selecione nossa saúde modificada. E vamos mudar isso de
protegido para privado. Agora, isso significa que a
função só pode ser chamada de dentro do esquema
atual. Então, sim, eu poderia arrastar
e soltar isso aqui. Eu poderia chamar essa função. No entanto, se eu fosse ao meu mapa de teste de nível,
arrastado para fora daqui, fizesse uma busca por
MOD se phi health, eu só consigo encontrar
essa função pura. Porque se eu olhar para trás no
meu ThirdPersonCharacter, lembre-se de que atualmente tenho duas versões da função
Modificar saúde. O Modify health
pure está atualmente configurado para acessar o especificador público, o que significa que eu posso encontrá-lo
no Level Blueprint. No entanto, modificar a saúde
atualmente é rotulado como privado, o que significa que
não consigo encontrá-lo aqui. Modificar a saúde? Não. Agora, se eu acessar o projeto do meu
filho, você pode ver que ele ainda
está aqui e é
porque ainda
estava aqui antes de eu
alterar esse
especificador de acesso para privado. No entanto, se eu
voltar para o meu filho,
exclua isso, clique com o botão direito do mouse, faça uma pesquisa para modificar a saúde. Não consigo mais encontrá-lo. Então, apenas um pedacinho de
uma mesa lá também. Então, o especificador de acesso, você tem público,
protegido e privado. Agora, a seguir,
vou mostrar o que essa caixa de seleção de chamada no
editor faz. Mas para fazer isso,
vou criar uma função totalmente nova aqui. Vou clicar
nesse botão de adição. E eu vou chamar
isso de meu Super Salto. Dentro dessa função
que estou criando. Vou apenas usar o personagem de lançamento do
tipo In. E a única coisa que
vou fazer aqui é mudar nossa velocidade z para 2000. Agora você notará que nossa
função aqui é idêntica apenas
a essa função de
caractere de inicialização em si. Mas para mostrar essa
chamada na caixa de seleção do editor, eu queria fazer
algo super simples. Então, com essa função criada, selecione
e clique na caixa de seleção
desta chamada no editor, o que isso nos permite fazer, compilar e salvar aqui também. Vamos voltar ao
nosso editor de níveis. Vou me certificar com
meus três pontos selecionados aqui. Vou jogar em uma janela de visualização
selecionada. Vou clicar em Jogar. Agora comigo jogando na
minha janela de exibição selecionada. Vou selecionar meu
ThirdPersonCharacter. E eu poderia fazer uma
busca por Super Jump. E podemos ver,
na categoria padrão, que
eu tenho esse botão de super salto. Se eu clicar nisso, ele
simplesmente chamará essa função. Agora você notará que
no próprio BP ThirdPersonCharacter, eu só criei essa função. Não tenho nenhuma chave de entrada para
realmente chamar essa função, mas essa é uma ótima
maneira de simplesmente testar a funcionalidade
sem nenhuma tecla de entrada ou qualquer coisa desse tipo. Você pode simplesmente testar para ver
o que ele faz imediatamente. Agora, há uma
pequena pegadinha aqui que você deve
conhecer e que é. Note que meu Super Jump, deixe-me parar de jogar aqui. Observe que minha função
aqui não tem nenhuma entrada ou saída. Se eu fosse selecionar algo
como efeitos danificados pelo jogador, você pode ver que eu
tenho algumas entradas aqui. Eu não tenho nenhuma
saída neste, mas eu poderia retornar algo. Vamos clicar sobre isso
e retornar. E poderíamos devolver o emissor de
spawn conectado. Vamos arrastar e
soltar isso desse jeito. Agora, se eu sofresse a função que afeta o
dano do meu jogador, vou
clicar nesta chamada, caixa de seleção do
editor compilar, salvar. Vamos voltar
aqui e jogar. Para selecionar meu
ThirdPersonCharacter, role para baixo. Vou encontrar esses botões mais
uma vez, lá vamos nós. Na categoria padrão, posso encontrar meu botão do Editor de
Chamadas do Super Jump. No entanto, não encontro
o mesmo botão para os efeitos de dano do jogador embora eu tenha
essa caixa marcada. Agora, por que isso? Bem, eu não
sei a
resposta exata para isso, mas suponho que seja
porque seria muito difícil
chamar manualmente uma função que depende de
alguns dados que precisam ser inseridos na função
em si mesmo, a fim de funcionar corretamente. Agora, a seguir, quero
ressaltar que, para qualquer uma das funções criadas
no painel Meu Blueprint, se você clicar com o botão direito do mouse nelas, terá a opção de
converter função em evento. O que
diabos isso significa? Bem, vamos mergulhar em nossa terrível corrida,
uma função aqui. E eu posso fazer isso simplesmente
clicando duas vezes nele. Isso abrirá esse gráfico de
funções. E observe que essa
função está simplesmente
medindo a velocidade
máxima de caminhada dos meus personagens Essa é a rapidez com que eles estão se movendo. Isso adicionará um pouco
de reforço e adicionará isso para criar
nossa nova Velocidade de Caminhada, nossa nova velocidade de movimento. Portanto, observe essa configuração aqui. Vou voltar
para o meu gráfico de eventos. E o que vou
fazer é clicar com o
botão direito do mouse no meu
terminal, executar uma função. Vamos converter
isso em um evento. E quando eu fizer isso, basicamente
divulgará todo código
que estava dentro dessa função que
modificou meus personagens,
max, walk, speed e, em todos os lugares, no próprio gráfico de
eventos. Agora observe que nossa terrível função de
execução não
existe mais aqui em nossa área de
função. Em vez disso, vemos um evento personalizado chamado turbo run, com
o mesmo nome. Agora, isso precisa ser chamado para que esse script seja executado. Então, algo a ser destacado aqui, você não pode fazer isso se a
função tiver saídas. E com isso quero dizer,
vamos clicar duas vezes em nossa
função de modificação de saúde aqui. Essa função
tem uma saída. Então, se eu tentar
clicar com o botão direito do mouse sobre isso, ao converter essa
função
em um evento, você receberá um aviso
dizendo que você não pode fazer isso. Então, pensei em salientar isso enquanto estivermos aqui também. Agora, por que você
faria algo assim? Por que você converteria uma de suas funções
em um evento? Bem, talvez seja
mais fácil para você ler seu roteiro
dessa maneira simplificada. Ou talvez você tenha decidido que isso é melhor como um script único em vez de uma função que
você mesmo poderia querer usar em vários lugares. Agora, mais algumas
coisas aqui. Antes de encerrarmos este vídeo. Lembre-se de que você deve compilar isso para pressionar este
botão aqui em cima. Você deve compilar para acessar novas funções
de outros diagramas. Se você adicionou uma nova
função aqui, você criou uma nova
e gostaria de
acessá-la a partir, digamos, do
seu Plano de Nível. Você precisa compilar primeiro
antes de fazer isso. Outra coisa que vale
a pena mencionar aqui é que você pode ter funções dentro de outras
funções que você cria. Então eu mostrei isso aqui
tendo uma função
que criei chamada Super jump e tendo essa função dentro
dessa função. E por último, mas não
menos importante, para funções, você não pode ter
nós latentes dentro daqui. E com isso, quero dizer, estou falando sobre nós de atraso
clicando com o botão direito do mouse. E eu vou apenas fazer
uma busca por atraso aqui. Parece que nem consigo ser adicionado aqui. Entretanto, no Event Graph,
você clica com o botão direito do mouse Você pode encontrar um atraso ou um atraso
recuperável. Você também não pode adicionar um nó
conhecido como nó da linha do tempo. Coisas tão importantes para
lembrar lá para as funções, certo pessoal, isso vai
fazer tudo neste vídeo. Coisas boas para saber. Nos
vemos na próxima.
66. Visão geral de macros: Tudo bem, nos próximos
vídeos aqui, vamos voltar nossa atenção
para o tópico de macros. E, especificamente, neste vídeo, nossos objetivos são aprender
o que são macros discutir como elas são semelhantes
ou diferentes às funções. Também vamos
explorar algumas macros
comuns pré-existentes
e como elas são construídas. E, por fim,
falaremos sobre onde podemos encontrar macros nos blueprints. Então, primeiro de tudo,
o que é uma macro? Bem, uma macro é
essencialmente uma coleção de nós que faz algo semelhante a uma função
nesse sentido. E eu tenho algumas macros
aqui na minha frente, dentro do meu plano de níveis. Agora, o unreal vem
com uma série de macros prontas
que você pode usar. É a partir das macros padrão
no conteúdo do mecanismo, que mostrarei em um
pouco aqui, você pode criar suas próprias macros dentro de uma classe de Blueprint, um plano de nível ou uma macro de
esquema biblioteca. E, novamente, nos
próximos vídeos, mostraremos como fazer tudo isso. Então, primeiro de tudo, vamos
explorar algumas macros comuns. E, como você viu antes, você
tem alguns nós macro. Uma é a macro flutuante de comparação, a outra está
em, é uma macro válida. Há pouco tempo, mencionei que uma macro é
essencialmente uma coleção de nós que faz algo
semelhante a uma função. E podemos ver isso
clicando duas vezes em qualquer uma das nossas macros aqui. E vou apenas clicar duas vezes
no botão de comparação aqui. Ao fazer isso,
vou
abrir uma nova guia chamada Macros
padrão. Esta é uma biblioteca de macros
que consiste
em várias macros que já
existem aqui no Unreal. E observe que também abrimos uma guia Flutuante de comparação dentro
dessa biblioteca de macros. E isso mostra todos os
nós conectados juntos para criar essa macro flutuante de comparação. No lado direito,
podemos ver que, se
selecionarmos nossa entrada aqui, podemos ver que esse flutuador de comparação de
macros específico
pertence à categoria de
flutuação matemática. Então, se eu fosse detalhar aqui nossa coleção de macros, math float, podemos ver que
existe nossa macro de comparação flutuante. Agora você pode expandir tudo isso para ver todas as macros diferentes que existem nessa biblioteca de macros. Agora, a razão pela qual estou apontando isso é porque
se eu
voltasse ao meu plano de nível
ou a qualquer outro plano aqui. E simplesmente clique com o botão direito e
algum espaço vazio e eu vou fazer uma pesquisa agora por compare float. Podemos ver que é a categoria em que essa macro
específica é encontrada, a categoria matemática flutuante,
conforme especificada aqui. Carros alegóricos matemáticos. Agora, vamos ver rapidamente
algumas semelhanças e diferenças de macro
e
funções aqui. Portanto, começando com
as semelhanças, as duas macros nas funções
economizam tempo, pois podem armazenar
sequências de
nós comumente usadas , completas com
entradas e saídas para execução
e transferência de dados. Então, em vez de colocar essa sequência de nós em vários lugares em
todo o gráfico, você pode simplesmente criar
uma única macro ou uma função pode fazer o mesmo. E isso economizará
seu tempo porque você está condensando esses nós em
semelhanças uns com os outros. Você pode editar a
funcionalidade de uma macro ou função em um local
central, um gráfico. Aqui temos nosso
próprio gráfico flutuante de comparação. Você pode editar a funcionalidade
aqui e ela propagará essa alteração para qualquer
outra macro que você tenha colocado em qualquer
outro blueprint. Outra semelhança é
que eles são reutilizáveis. Você pode reutilizar essa macro
em vários outros planos. Você pode tê-lo em
vários planos. Você pode usar a mesma macro
dentro do mesmo esquema. Além disso, macros e
funções permitem variáveis
locais e temos um vídeo inteiro falando
sobre variáveis locais. Mas, essencialmente, uma
variável local é uma variável que é apenas referenciada e usada por
essa função individual
ou, nesse caso, por uma macro. Agora, a diferença
é que as macros podem ter vários pinos
de execução de entrada e saída. E podemos ver isso aqui em
nossa macro de comparação flutuante. Se eu selecionar esse nó de entrada
aqui, confira isso. Temos uma entrada de execução, mas temos três pinos de saída de
execução. E se isso não estiver claro o suficiente aqui a partir de nossas entradas e saídas, vamos dar uma olhada
no nó final, em nosso
Plano de Nível, conferir. Temos uma
entrada de execução e três saídas. propósito, agora você pode
nomeá-los. Então, se eu voltar às nossas macros
padrão aqui, você pode inserir o nome
que esse nome não precisa ser exato. Você pode colocá-lo como um símbolo, símbolos e letras, o que
quiser colocar lá. Outra diferença,
e isso é fundamental, isso é que as macros
qi podem ter nós
latentes nelas,
enquanto as funções não podem. Então, quando estou falando
sobre aqui, mais uma vez
, voltando para o meu Plano de
Nível, deixe-me rolar para a direita aqui. Estou apenas no meu Event Graph, então não estou dentro de nenhuma macro
ou gráfico de função em si. Esses tipos de nós aqui, nós
latentes, aqueles com
esse pequeno ícone de relógio. Se eu passar o mouse sobre esse nó, essa função de atraso, até diz
na ponta da ferramenta na
parte superior que é um nó latente. É isso que esse ícone de
relógio significa. Esse é um nó sensível ao tempo. Qualquer nó tardio como esse ou um nó de linha do tempo. Qualquer coisa relacionada a lidar com o tempo, você não pode
colocá-los em funções. No entanto, macros, está tudo bem. Por fim, as macros não podem ser
chamadas a partir de outros projetos. Como uma função pode. Só para
demonstrar isso rapidamente. Se eu fosse falar sobre meu personagem em
terceira pessoa aqui, eu só vou criar
uma macro temporária rápida. Vou chamar isso de meu temporário. Vou chamá-lo de macro temp. Que tal aquela temperatura macro? Eu vou compilar isso. E então, no meu Plano de Nível, se eu encontrar, eu tenho minhas quatro chaves, se eu fosse me arrastar para fora
disso e eu fizesse uma busca agora por macro, não
consigo encontrá-la. Não consigo encontrar isso, mas
consegui encontrar algo como minha função de super salto. Super salto. Aí está. Portanto, você não pode chamar
macros que
residem em outros blueprints
a partir de outro blueprint. Tudo bem, então onde vocês podem
encontrar macros no unreal? Bem, há uma biblioteca de
macros existente aqui. Temos nossas macros padrão. Bem, onde isso existe
em nosso navegador de conteúdo? Se eu voltar para
nossa guia de nível aqui, você precisa ter
certeza de ter o conteúdo do
seu mecanismo de exibição verificado aqui. E acabei de acessar
Configurações para mostrar conteúdo do mecanismo. E aqui está o caminho na do blueprint do
Editor de Conteúdo, com todos os mecanismos pasta de
recursos
do blueprint do
Editor de Conteúdo, com todos os mecanismos, ali mesmo. E aqui estão suas macros
padrão. E você pode ver
na dica de ferramenta que o tipo de plano
é uma biblioteca de macros. Ao clicar duas vezes sobre
isso, ele
voltará para a guia. Aqui está um monte de macros
diferentes que estão
disponíveis em qualquer modelo. Onde mais você pode
encontrar algumas macros? Bem, eu tenho alguns disponíveis
aqui no meu plano de níveis. Se eu pular
para o
gráfico de tipos de nós nos olhos, amplie meus nós de controle de
fluxo aqui. Todos esses são nós de
controle de fluxo. Teremos
uma seção inteira do curso dedicada
aos empréstimos de controle de fluxo, mas todas essas são macros. Então, você notará que as
macros têm esse cabeçalho cinza. Essa é uma maneira fácil
de identificar uma macro. Tem esse cabeçalho cinza. E só para provar que
são macros, se eu clicar duas vezes
em qualquer uma delas, deixe-me clicar duas vezes
no meu portão aqui. O que você sabe? Isso me leva de volta às
minhas macros padrão. Isso é realmente uma macro. O que mais podemos encontrar macros? Bem, você pode criar
suas próprias macros, e eu posso mostrar isso aqui em nosso
ThirdPersonCharacter. Nós criamos uma macro temporária. claro que isso está
vazio no momento, mas tem uma seção para
macros que é o Level Blueprint. Tem uma seção para macros para que você possa criá-las aqui. Qualquer outro plano,
você pode criar macros nas quais
faremos realmente o próximo vídeo. Então, pessoal, isso vai
fazer tudo
isso em nossa
visão geral das macros, nos vemos no próximo vídeo.
67. Criar Macros: Bem-vindo. Nosso objetivo neste vídeo
é aprender onde e como criar uma macro e ajudar
a identificar melhor
as diferenças entre
funções e macros. Vamos
criar nossa macro forma que seja impossível duplicar uma função, porque
incluiremos alguns
nós tardios dentro de nossa macro, além de ter um múltiplo
pinos de saída de execução, o que, novamente, uma
função não pode fazer. Vamos trabalhar aqui dentro do nosso bp ThirdPersonCharacter. Então, há o
caminho para descobrir isso, assim
como nosso plano de níveis. Então, tenha esses dois à mão. Vamos começar com nosso ThirdPersonCharacter. Agora, dentro daqui,
basta ir até o painel Meu Blueprint e,
na seção macro,
clicar no botão Mais. E vamos criar
uma macro chamada on fire. Que ótimo nome
que vai deixar
você animado com o que está por vir. Tudo bem, agora selecione
seu nó de entrada aqui. Crie um pequeno espaço
entre os dois aqui. E com qualquer um deles sendo selecionado, adicionarei algumas
entradas a isso no painel Detalhes, clicando no botão de adição. Agora vou adicionar
uma série de pinos. O primeiro,
vou simplesmente
ligar e pressionar Enter. Agora podemos definir o tipo de pino
que queremos para uma entrada. Se clicarmos aqui, temos várias variáveis entre as
quais podemos escolher, bem
como uma caneta de execução. Você não tinha essa opção
dentro de uma função. Vamos adicionar mais
alguns aqui. Então, clique nesse botão de adição novamente. Vamos chamar isso de
um efeito, um atraso. E isso vai ser um carro alegórico. E clicar nesse botão de
adição novamente, isso fará com que seja
adiado. E então o botão de adição novamente, e vamos chamar
esse efeito de três de atraso. Esses serão carros alegóricos. Em seguida, vamos
adicionar algumas saídas aqui. Vamos adicionar
três deles. O primeiro
será chamado de efeito de desova um, e isso
será uma saída de execução pinos de saída nele. Finalmente, entendi que
vamos adicionar mais dois. Ambos serão
executados agora também. E eles também serão
chamados de Controle C, Controle V, efeito de desova. E efeito de desova três. Certo? Agora, com
isso resolvido, vamos colocar os nós que
ficarão entre aqui, nós realmente não precisamos
de muito espaço. Então, fora do nosso pino aqui, vamos arrastar para fora e
trazer um nó de sequência. Esse nó sairá desses pinos sequencialmente. Podemos adicionar vários
pinos aqui. Eu só preciso adicionar um terceiro. Então, assim que entrarmos nisso, dispararemos
primeiro, segundo e terceiro em uma sucessão tão
rápida que
parecerá instantânea. Também
adicionaremos três nós de atraso. Portanto, se você pressionar a tecla
D e clicar com o botão esquerdo, poderá atrasar
os nós que pressionam d
e clicam com o botão esquerdo. E vamos
conectá-los assim, 12.3. E a quantidade de
atraso é boa
vinda de fora da nossa macro aqui. O que quer que seja
conectado ao nosso retardo ou
podemos configurá-lo com força dentro do
próprio nó . Então,
vamos fazer isso. E então, a partir
dessas conclusões, vamos
conectá-las às nossas saídas assim. Então, uma macro muito simples, vamos analisá-la
em alguns atrasos. Em seguida, eliminaremos
sequencialmente 12,3 desses atrasos e
, em seguida, produziremos. Então, só para mostrar essa macro em particular como
será
essa macro em particular
no Event Graph. Vamos colocar um
desses aqui, arrastar e soltar nossa macro. Esse é o look final. Então, isso aqui se
traduz em um nó macro, ,
um nó de cabeça cinza
que se parece com este. Temos nossos três pinos de saída. São para pinos de entrada três flutuadores
em uma execução em caneta. Agora, vale
ressaltar aqui que, como
nossa macro tem alguns
nós de latência dentro dela, esses são nossos nós de atraso. Vemos aquele pequeno ícone de relógio, aquele ícone latente
aqui na própria macro. Pensei em apontar isso. Tudo bem, vamos criar
nosso script aqui, usando nossa macro. Então, vou
começar com um evento personalizado. Então clique com o botão direito
Vamos trazer eventos personalizados para
pesquisar eventos personalizados,
adicionar um evento personalizado .
Vou nomear esse jogador, pega pontos de exclamação de fogo. E vou
inserir isso diretamente em nossa macro on fire. E agora eu poderia inserir algumas variáveis
flutuantes a isso. Eu gostei da flexibilidade
dessa macro dessa forma. No entanto, no
interesse do tempo, vou apenas
inserir alguns números. Vou codificar
isso, se você quiser. Então 0,2 será
nosso efeito de atraso 1. Nosso próximo efeito
será de 4 s. No nosso próximo será de 6 s. Então, eu estava apenas clicando na aba para
ir para o próximo campo lá. Em seguida, o que vamos
fazer é, a partir de cada um deles,
geraremos efeitos. Então, arraste isso e digite
o ator spawn da aula. Agora, na verdade, vamos
usar três desses nós. Então, deixe-me trazer
tudo isso aqui um pouco. Então, crie um ator do nó de
classe
Controle C, Controle V e Controle V. Para enquadrar isso
para todos vocês aqui. E o primeiro ator
que vamos aparecer será um pouco de fumaça. Essa é a fumaça do efeito blueprint. Podemos encontrar isso no pacote de conteúdo
inicial. Novamente, você pode usar
o que quiser aqui, mas eu vou fumar primeiro. No segundo,
vou adicionar faíscas, que também está no pacote de conteúdo
inicial. E o último será fogo. Então, sim, fumaça, faíscas
e depois fogo. Agora precisamos inserir
uma transformação de spawn. Então, vou pegar
nosso componente de cápsula e pular para
nossa janela de visualização aqui, nosso componente de cápsula é uma coisa que envolve
nosso personagem, então ele vai gerá-lo
bem no meio aqui. Então, vamos voltar
ao nosso gráfico de eventos. Vou trazer
uma referência à arte do Capsule
Component que sai disso. Queremos transformar o
mundo. E podemos inserir isso em todos os três atores de desova das anotações
da aula. Tudo bem, vamos
cruzar um pouco o fio, mas espero não tornar
isso tão ruim para você. Agora, isso não é suficiente
porque estamos gerando eles, mas queremos
anexá-los a algo. Então, vou tirar
nosso ator de spawn da sala de aula. Observe aqui o
valor de retorno e eu vou dizer anexar ao ator, desculpe, anexei dois componentes. O que estou procurando aqui,
anexado aos componentes. Tudo bem. Agora, o pai aqui será nosso componente da cápsula. Então, vou tentar usar
uma configuração como essa. Vou arrastar
esse caminho até aqui, mas vou clicar duas vezes nesse fio para ficar assim. Agora estão as regras aqui. Eu quero configurá-los para se
ajustarem a alvos
assim, assim e assim. Tudo bem, e eu vou para o
Controle C e o Controle V, esses três nós como este. Então, por que esse cara e esse
cara estão assim, opa. Isso no alvo, os pais lá dentro. Isso vai para lá, isso vai para lá. E podemos pegar isso, o componente da
cápsula e colocá-lo ali mesmo. Então, essencialmente, o que
todo esse roteiro deve fazer é sobre eles fornecidos no início desse evento
personalizado. Vamos entrar
aqui e vamos atrasar esses valores mais uma vez, clicando duas vezes nessa macro. Vamos fazer cada uma
delas quando estiverem atrasadas, para que possamos gerar
o efeito dado. Então, vamos aparecer na fumaça
do que nas faíscas, do que no fogo, e vamos anexá-la
finalmente ao nosso personagem. Vamos compilar isso e salvar. Tudo bem, essa é a
maior parte do trabalho, mas temos um
pouco mais de trabalho a fazer. Então, vamos voltar
ao nosso nível aqui. E vamos colocar
algumas coisas fazer com que
pareça uma zona perigosa. Então, vou colocar
gatilhos esféricos. Então, eu tenho meu painel de atores
locais. Você pode encontrar isso
entrando aqui embaixo, coloque o painel de atores para que
você possa colocar este painel. E nossa ideia aqui
na categoria básica. Vou colocar uma
esfera de gatilho no meu nível. Assim. Vou definir o raio da
esfera no
meu painel de detalhes para
ser 200 assim, algo um pouco grande. E então, na
pasta de conteúdo inicial , aqui,
vou ver as partículas. E eu vou
apenas arrastar e soltar meu P fire bem em cima
dos gatilhos medo aqui no meu outliner para que
ele fique preso a, bem, na verdade não
vai conectá-lo lá, mas Eu posso arrastar e soltar aqui. E então eu posso arrastá-lo
e soltá-lo em cima dos meus gatilhos, com medo
de prendê-lo. E a razão pela qual isso é bom para anexá-lo. Isso é só para sua informação. Se eu mover a esfera, o fogo vem junto com ela, mas eu posso mover o fogo forma independente para
que fique bem acima do topo. Eu só estou procurando
por algo que parece um pouco perigoso aqui. Vamos definir a escala do nosso
fogo aqui para ser, sei lá, três vezes maior. Cinco vezes essa baía. Sim. Algo meio
perigoso. Tudo bem Volte e selecione
sua esfera de gatilho porque vamos fazer uso dela dentro do
nosso Plano de Nível. Eu tenho minha guia Level
Blueprint aqui. Vou clicar com o botão direito do mouse com a esfera no gatilho selecionada. Faremos algo quando começarmos a sobrepor isso. Você já me viu fazer
isso várias vezes. Então, o que vamos fazer é nos afastar
do outro ator. Vamos
descobrir quem é. Então, vamos
sair dessa cena, fazer Cast to ThirdPersonCharacter. Basicamente, estamos fazendo
a pergunta aqui. Quando algo se sobrepõe a
essa esfera de gatilho, diremos: Ei, vamos descobrir o que é o
outro ator. Se for um ThirdPersonCharacter, então vamos fazer alguma coisa. Bem, o que queremos
fazer aqui é ligar. Queremos chamar esse
evento personalizado de jogador pega fogo. Agora, a razão pela qual
temos essa configuração, a maneira que fazemos
é porque não podemos chamar essa macro do
nosso Plano de Nível, mesmo que ela seja
compilada e tenhamos nossa macro vivendo aqui dentro
do nosso personagem de terceira pessoa. Eu não posso simplesmente incendiar. Ele faz uma busca por um
jogador que pega fogo. Esses são nossos eventos personalizados, mas não podemos chamar essa macro diretamente
de outro Blueprint. Então essa é uma das
diferenças entre macros e funções. Então, aqui está nossa ligação
para esses eventos personalizados. Eu vou compilar isso. Parece bom. Então, isso vai dizer em
nosso ThirdPersonCharacter, isso para disparar. Tudo bem, vamos dar
uma peça de teatro, um momento da verdade. Clicando em play. Vou
tentar minimizar
isso um pouco para que você possa ver esses scripts sendo disparados aqui. Faremos com que nosso ThirdPersonCharacter
apareça, e esse será nosso objeto de
depuração lá. Uma vez que nos sobrepomos, essa fumaça corta, ela fica presa a nós. Agora estamos acendendo área
da virilha e
agora estamos pegando fogo. Então, de fato, isso
funcionou foi projetado. Portanto, vale ressaltar
aqui que criamos uma macro. Não poderíamos chamar essa macro ou diretamente do nosso plano de
níveis. Dentro dessa macro, no entanto, pudemos
usar o nó de atraso, alguns nós latentes, que estão disponíveis para você
usar em uma macro. Além disso, o que tornou essa macro diferente e especial
de uma função é que poderíamos ter vários pinos de saída de
execução. Você também pode ter várias
execuções em canetas. Nesse caso, acabamos de executar
vários pinos de saída, mas você pode tê-los em
qualquer extremidade da macro. Tudo bem pessoal,
isso é tudo, para criar uma macro, veremos
todos vocês no próximo vídeo.
68. Colapso para a macro: Bem vindo de volta. Neste vídeo, nosso objetivo é
aprender como melhorar
nossas vidas
reunindo uma coleção
de nós em um único nó macro. Agora, essa é uma
daquelas ações do
tipo qualidade de vida que você pode realizar para que um
determinado script aconteça usando um nó. Não muitos. Agora vamos mostrar isso. Antes de você criar um script para
simular um lançamento de moeda, o que significa que teremos dois
resultados possíveis, cara ou coroa. E então vamos
reduzir
essa funcionalidade em uma macro que pode ser usada em qualquer lugar dentro
do nosso ThirdPersonCharacter? Sim, mais uma vez, estou dentro do meu
ThirdPersonCharacter Blueprint. Eu preparei um
roteiro com antecedência, e este é meu roteiro de lançamento de moedas com
aspas e sem aspas. Essencialmente, o que estou
fazendo é lançar meu personagem para
simular um lançamento de moeda. Vamos lançar
nosso personagem
no ar como se jogássemos
uma moeda no ar. Estamos apenas lançando
850 na direção z. Em seguida, vamos
tocar um som apenas para coincidir com o
lançamento do nosso personagem. Esse efeito sonoro pode ser
encontrado no conteúdo do seu motor. A propósito, se você
não souber como
ativar o conteúdo do seu mecanismo, disponibilize essas pastas para você. De volta aqui no Navegador
de conteúdo , na seção Configurações, você pode apenas garantir que o conteúdo
do mecanismo de exibição esteja ativado. Você deve ser capaz de
encontrar esse efeito sonoro. Então vamos atrasar em 2 s. Essa será a duração
do nosso lançamento de moedas aqui. Então trouxemos um
nó de ramificação. E o que estamos fazendo aqui
é definir uma condição, ou condição é que teremos
um número inteiro aleatório, um
ou dois,
esse é o nosso intervalo. E se for igual a um, então será igual à verdade. E vamos
tocar o som de sucesso se acabar sendo dois. E, novamente, isso
só pode ser um ou dois, então eles não são iguais porque dois não seriam iguais a um, então seria falso. E reproduzíamos o som que falhou na
compilação, que seria nosso S de x com falha. E esses dois
efeitos sonoros podem ser encontrados nas mesmas pastas de conteúdo. Tudo bem, então queremos
converter isso em uma macro,
reduzi-la em uma macro. Agora, uma coisa que você deve saber
é que, ao tentar fazer isso, queremos apenas colocar
esses nós aqui para que você possa clicar com o botão esquerdo e arrastar se acidentalmente tentar trazer seus eventos de entrada, como
eu entendi. Aqui, deixe-me mostrar o
que acontece. Clique com o botão esquerdo e arraste. E agora, se eu clicar com o botão direito em qualquer um dos meus nós selecionados aqui, temos a opção de
Recolher para Macro. Então, ao tentar fazer essa largura, aquela chave de evento aqui, receberemos um
aviso dizendo que o Collapse to Macro falha; se
mostrarmos o registro de mensagens, ele dirá que você não pode colocar esses cinco insira aqui, então vamos nos livrar disso
desta vez. Vamos clicar com o botão esquerdo
e arrastar esses nós, deixando as cinco
entradas de fora. Botão direito. Vamos entrar
em colapso para uma macro. E podemos ver
na seção macro que agora temos a capacidade de
dar um nome a essa macro. Então, vou virar minha
página e vamos
chamar isso de lançamento de moedas. Sim, seguindo
minhas notas, jogo de moeda. Você pode ver que
isso está conectado, mas precisamos trabalhar
um pouco
dentro de nossa macro que possamos clicar duas vezes
nela aqui. E como é a nossa macro
atualmente. Mas queremos trabalhar um
pouco mais aqui. Então, simplificamos
um pouco nossa vida condensando esses nós em um nó
em nosso gráfico de eventos aqui. Mas eu ainda quero
modificar algumas coisas. Então, primeiro, vou
selecionar meu nó de entrada aqui. E eu quero definir meu nome de
entrada aqui em vez de execuções para ser
simplesmente n. Então eu, meu nó de saída, vou
adicionar algumas saídas. Além disso, vou
chamar isso de cabeça. E vamos definir isso
como um pino de saída de execução. Em seguida, clicaremos no botão
Mais uma vez. Vamos chamar
isso de cauda. E isso também estará
em execução no PIM. E, novamente, se isso
resultar em uma verdade, essas
serão essencialmente nossas cabeças. Então, vamos conectar
isso em nossas cabeças. E se isso acabar sendo falso, temos dois aqui, não
é igual a um. Isso vai ser nosso rabo. Então, se voltarmos ao
nosso gráfico de eventos agora, podemos ver que nossa macro
de lançamento de moedas foi atualizada. Observe que temos uma execução
em pin e duas em saída. Além disso. Temos esse ícone latente aqui para indicar isso
dentro dessa macro. E mais uma vez, você
pode clicar
duas vezes nela para abrir sua macro. Temos um nó latente
dentro daqui, sim, nós do
LinkedIn, como atrasos, podem existir dentro de uma macro. Eles não podem existir
dentro de uma função. Tudo bem, vamos voltar
para nossa guia Event Graph aqui. E eu quero estender nosso script para fora
de cada um desses pinos aqui. Vamos dizer que
se nosso jogo de moedas aqui acabar sendo cabeças, o que vamos fazer
é melhorar a
saúde do
nosso personagem. Antes das filmagens deste vídeo, pegaram nossa variável de saúde
aqui e lembro ela
está conectada ao nosso
capô ou medidor de saúde. E eu defini para 0,1,
o que significa que vamos
começar com 10% de saúde. Vou manter pressionada
a tecla Alt,
clicar com o botão esquerdo e arrastar
para trazer um setter. E eu vou
definir isso para 1,0. Teremos saúde total
se obtivermos resultados positivos. E o que vamos
fazer do nada, vamos matar a personagem
dela porque
isso parece divertido. Então, vamos
trazer nossa malha, uma referência à nossa malha. Então pegue seu
componente de malha aqui. Fora disso,
vamos nos aprofundar, temos uma opção chamada
definir simular física. O alvo para isso será nosso componente primitivo, ou
seja, nossa malha aqui. E tudo o que precisamos fazer
aqui é definir isso como verdade. E eu vou deixar você em suspense sobre o que isso vai fazer. Tudo bem, vá em frente e
compile aqui e salve. E vamos
jogar isso. Então, jogando, deixe-me definir meu objeto de depuração para
ser nosso personagem, trazendo nosso personagem de volta. Então você pode ver que estou começando
com 10% mais saudável. Se eu pressionar a
tecla cinco, mais uma vez, ela entrará em nossa
macro e determinará se obteremos resultados
positivos ou negativos. Então, aqui vamos, cinco
chaves. Eu tenho saúde total. Isso me fez pular imediatamente, depois me deixou com saúde total. Porque o salto, se você quiser, o lançamento do nosso personagem, esse é o nosso lançamento de moedas
no começo dele. Deixe-me tentar de novo. Cinco teclas, pule imediatamente para segundos depois, obtemos saúde
total mais uma vez, vamos continuar até
obtermos o resultado das caudas aqui. Então pule 2 s depois, vamos descobrir o
resultado e simular a física. Ele caiu no chão, deixando sua espada para trás. E aí está. Se você tiver uma coleção
de nós que
deseja condensar
em um único nó. E talvez tenha uma nota
tardia que não consta nela. Ou você precisa ter alguns pinos de
entrada ou saída de execução múltipla. Considere
convertê-la em uma macro, reduzindo-a em uma macro. Talvez você precise
fazer um pequeno trabalho de correção, como
fizemos aqui com nosso nome de entrada e adicionando
algumas saídas aqui. Mas essa é uma maneira muito útil
de simplificar seus gráficos, pessoal, isso vai fazer
tudo neste vídeo. Nos vemos na próxima.
69. Biblioteca de macro: Olá. Neste vídeo, nosso
objetivo é mostrar como podemos criar macros de adição dentro de nossa própria biblioteca de macros
criada. Então, o que é uma biblioteca de macros? Bem, é semelhante a uma biblioteca de funções que
criamos na última
seção de vídeos, na medida em que é um local
centralizado para armazenar macros
criadas por nós. Agora, quais são as grandes
diferenças, entre uma biblioteca de funções e
uma biblioteca de macros? Essas
macros
só podem ser acessadas a partir de
esquemas que compartilham a mesma classe principal,
uma biblioteca de macros. Agora, isso parece um
pouco confuso aqui. Fique comigo enquanto
criamos nossa biblioteca de macros. Tudo bem, então aqui estou eu dentro da minha pasta
de scripts Blueprints no meu navegador de conteúdo. Vou criar minha biblioteca de
macros aqui mesmo. Então, vamos prosseguir
e clicar com o botão direito do mouse. E vamos
ver as plantas em,
no pequeno menu de folhetos. Temos a biblioteca de
macros blueprint. Então, vamos
escolher isso. E agora vamos ver se ele
vai nos pedir que escolhamos uma classe
para pais. Então, vamos escolher uma
classe principal de personagem que
seja semelhante à nossa personagem em
terceira pessoa. Nosso ThirdPersonCharacter
é da classe de personagens. Tudo bem, então vamos
clicar nisso. E ele vai nos
pedir que nomeiemos isso e eu vou
chamá-lo meu personagem sublinhado. Eu farei todas as letras maiúsculas. Por que não macros de
sublinhado de caracteres? E então vamos em frente e clique duas vezes nele
para abri-lo. E agora, algo que você
notará aqui é que dentro de nossa
biblioteca de macros aqui novamente, nossa classe principal é personagem. Temos a capacidade de acessar e usar qualquer variável que seja nativa dessa classe e todas
elas estão listadas abaixo. Então, em caráter,
temos uma malha, movimento de
personagens, etc., muitas categorias diferentes. Agora, vamos comparar isso com
nosso personagem de terceira pessoa, que é a classe principal do personagem no painel
Meu Blueprint. Se estivermos em variáveis, certifique-se de que, ao
clicar nesse
ícone de engrenagem , você mostre as variáveis
herdadas. Confira isso. Na
categoria de personagem, você tem malha, movimento de
personagem, etc. Essas são todas as mesmas
variáveis que são nativas dessa classe,
a classe de caracteres. Assim, você pode encontrá-los aqui dentro de nosso ThirdPersonCharacter e aqui em nossa biblioteca de macros, nossa biblioteca de macros de personagens, também
temos acesso a eles. Ok, vamos continuar e
criar nossa macro aqui dentro da nossa biblioteca de
macros de personagens. Agora, uma vez que abrimos
essa biblioteca de macros, ela tinha uma macro
criada para nós aqui. Você pode ver a guia
aqui. Vamos seguir em frente e
dar um novo nome a isso. Então, vou
clicar nisso, pressionar F2 e vou chamar
isso de mudança de velocidade máxima. E é exatamente
isso que essa macro fará alteraremos as velocidades máximas de
movimento de
nossos personagens. Então, vou criar um
pequeno espaço aqui entre nossa entrada e nosso nó
de saída aqui. Então, vamos criar algumas entradas e saídas
para essa macro, vou criar
uma entrada aqui, clicando neste
botão de adição aqui embaixo. E o primeiro simplesmente
será chamado. Isso vai ser
uma execução em caneta. E então eu vou
criar mais um. E essa vai
ser chamada de nova velocidade. Vamos alimentar
isso com um novo valor de velocidade, e este será um flutuador. E para nossos resultados, tenho alguns em mente aqui. Vamos clicar nisso uma vez e
chamaremos esse de andar. Isso vai ser executado
a céu aberto. E então vamos
criar mais dois mais, mais. O
próximo será executado
e o próximo se chamará
sprinting. E esses são todos pinos de saída de
execução. Tudo bem, então o que
vamos fazer aqui é arrastar nosso Componente de
Movimento de Personagem novamente, um dos benefícios
de criarmos,
neste caso, uma biblioteca de
macros de personagens é que temos acesso a todas as variáveis de
caracteres nativos, incluindo nosso Componente de
Movimento de Personagens. Vamos arrastar
isso em nosso gráfico. Nós vamos conseguir
isso. Agora você notará algo aqui quando eu
arrastar isso para cá. E eu acabei de lançar, só
podemos obter variáveis aqui dentro da nossa biblioteca de
macros. E isso vale para qualquer um deles. Se eu fosse fazer isso, estava pulando
e tentando arrastar isso para dentro. Não podemos definir nenhuma variável aqui dentro da nossa biblioteca de
macros. Uma coisa importante a ser observada
com uma biblioteca de macros é que você só pode obter
essas variáveis, não pode defini-las. Mas tudo bem. Bem, o que vamos
fazer aqui é
entrar no nosso Componente de
Movimento de Personagem. E vamos digitar
set max, walk, speed. Agora, essa variável está
dentro do nosso Componente de
Movimento do Personagem. E só para levar isso para
casa um pouco, eu tenho meu ThirdPersonCharacter
aqui. Se eu selecionar o componente de
movimento do meu personagem, tenho uma
variável de velocidade máxima de caminhada que fica dentro desse componente de
movimento do personagem. Ok, então vamos
alimentar isso com uma nova velocidade. Assim. Então, a partir disso,
vou arrastar e trazer um nó de ramificação. E então eu vou
sair daqui. E eu tenho vários nós de
comparação que
eu quero incluir. Então eu vou fazer um valor
menor ou igual a um. Vou
arrastar um aqui novamente, e vou fazer um maior
que, apenas maior que. Em seguida, vou me
arrastar mais uma vez e vou fazer
um loop menor ou igual a pequenos loops menores ou iguais ou apenas menos
iguais, como é chamado. Para os valores
desses, vou inserir 200 para este, não para o plugin, vou apenas codificá-lo. 200 por isso. Vamos fazer
mais de 200 para isso e 1.200 para isso. E nós vamos ler, eu vou ler tudo isso
para você em apenas um momento. Como vamos
interpretar tudo isso. Em apenas um momento.
Vou trazer outro nó de ramificação mantendo
pressionada a tecla B clicando com o botão esquerdo. E eu vou colocar esse
verdadeiro em nossa caminhada, o falso que eu vou arrastar
e então você ouve o termo, eu vou
arrastá-los aqui e o falso eu vou
arrastar para aqui. E, novamente, vou interpretar tudo
isso para você aqui em apenas um momento fora daqui. E eu vou arrastar até aqui
e trazê-lo para dentro e nodo, vai ser um booleano AND. E booleano ali mesmo. Conectando isso aqui. Estamos conectando isso
aqui e isso aqui. Tudo bem, Sr. Laundry, você
passou por isso muito rápido. Em que tudo isso se
traduz? Tudo bem, então é
assim que vai funcionar. Vamos alimentar essa macro com uma nova
velocidade. Assim, podemos alterar, definir a velocidade
máxima de movimento de nossos personagens. Se for menor
ou igual a 200, se isso for verdade, vamos produzir caminhada. Então, vamos
continuar saindo da nossa macro e fazendo alguma coisa quando detectarmos que
estamos andando. Agora, se detectarmos que
estamos indo a uma velocidade
maior que 200 e
menor ou igual a esse
valor aqui, 1.200. Se isso for verdade,
então seremos considerados corredores. No entanto, se isso for
falso,
seremos considerados corredores, que significa que estamos atingindo uma
velocidade maior que 1.200. Agora vamos usar essa macro
dentro do nosso
ThirdPersonCharacter Blueprint. Uma nota rápida aqui,
não há necessidade de compilar aqui. Você não precisa compilar
dentro de uma biblioteca de macros. Na verdade, está acinzentado, mas podemos ir em frente e guardar isso. E em nosso bp
ThirdPersonCharacter, podemos clicar com o
botão direito do mouse sobre isso. E podemos fazer uma busca
para alterar a velocidade máxima. E aí está. Há nossa macro
que acabamos de criar dentro da nossa biblioteca de macros. E vamos criar nossos scripts
para fazer uso disso. Então, vamos adicionar uma chave de entrada
logo na frente disso. Estou usando a
tecla cinco e a
excluí entre os vídeos. Parece que eu não o tenho em
nenhum lugar do meu gráfico no momento, vamos fazer a entrada de cinco
Kishore cinco. Então, o que vamos fazer aqui é ao pressionar a tecla cinco, vamos mudar o máximo, o
movimento e a velocidade de
nossos personagens . Para o que queremos mudar isso? Bem, vamos clicar com o botão direito do mouse em algum espaço vazio
e eu vou fazer flutuação
aleatória no alcance. Então, podemos conectar esse cara
à nossa nova velocidade. Então, toda vez que
pressionamos a tecla cinco, podemos escolher um valor, e eu vou escolher
um valor, 1-2 mil. Então, toda vez que você pressionar a tecla
cinco nos dará algum valor dentro desse intervalo. Quando
soltarmos essa tecla, vamos querer ajustar a velocidade de movimento do nosso
personagem vamos querer ajustar a velocidade de movimento do nosso
personagem para o que ela é normalmente. Então, se arrastarmos e soltarmos nosso Componente de
Movimento do Personagem em nosso gráfico e
vermos a
velocidade máxima de caminhada de nossos personagens agora, é 500. Então, se nos arrastarmos até aqui, podemos definir a velocidade máxima de caminhada. Então, quando lançarmos isso, vamos ajustar nossa velocidade máxima de
caminhada de volta para 500. Então, pressionar
vai configurá-lo para esse novo valor, liberando
ele vai retorná-lo. E tudo o que vamos fazer
com cada um deles, podemos fazer algo mais. Quero dizer, eu poderia tocar um efeito de
partícula ou qualquer outra coisa. Eu só vou imprimir uma
corda na tela. Então, vamos
fazer várias impressões. Strings é, antes de
tudo, apenas dizer
andar e pressionar
Control C, Control V. Control V. Você pode adivinhar o que
vou
inserir em cada um desses campos. Isso vai dizer correr. E este vai
dizer corrida. Sprint, sprint ing. Não que
isso importe muito. Vamos compilar isso. Vamos salvar e continuar jogando essa
configuração, nosso objeto de depuração, personagem
enorme ou em terceira pessoa, para que possamos ver esse script disparando no
lado esquerdo aqui. Tudo bem, então eu estou apenas
andando, andando, andando. Ao pressionar a tecla cinco, olhe no canto superior esquerdo
abaixo da palavra Super-herói. Então, cinco, correndo. Enviando de volta para cinco. Correr não parece
muito mais rápido. Cinco, correndo. Cinco correndo. Agora, a corrida tem o
maior alcance, 200-1200. Eu queria fazê-lo andar, então eles estão correndo, pressionando
F5 novamente e correndo. Novamente. Correr pode estar
bem perto de correr. Correndo,
corra um pouco agora, deve estar
pouco acima de 200. Correndo, correndo. Vamos dar uma volta aqui. Vou continuar
até começar a andar. Lá vamos caminhando. Então, podemos ver que essa
macro está realmente funcionando. Tudo bem, agora é
importante observar aqui que conseguimos encontrar e usar essa macro aqui dentro de
nosso personagem de terceira pessoa
porque ambas são ThirdPersonCharacter e
nossa biblioteca de macros compartilha a mesma classe de pais. Se, obviamente, vá para o
nosso Plano de Nível. Vamos abrir nosso plano
de níveis aqui. E mesmo que eu tenha alguma referência ao
nosso personagem aqui, vamos fazer um evento para
começar a jogar, com certeza. Até mesmo comece a jogar. E nós deveríamos ter o personagem
do jogador. E então, você sabe, Cast to ThirdPersonCharacter,
algo assim. E deveríamos
tentar descobrir aquela mudança velocidade
máxima arrastada para fora
daqui, mudou Max. Você não pode encontrar essa macro aqui dentro do seu plano de
níveis. Você não pode simplesmente clicar com o botão direito do mouse em algum espaço vazio e encontrar a velocidade
máxima de alteração porque ela não
tem nenhuma classe principal, porque esta é uma planta de
nível, mas mesmo dentro
de outra classe, mas um modelo como
nosso exemplo de captação, esse tem a
classe principal de atores. Então, se eu
clicasse com o botão direito aqui e alterasse a velocidade máxima, também não
consigo encontrá-la
dentro daqui. Portanto, é
importante observar
isso porque essa macro foi criada dentro de uma biblioteca de macros com a classe
principal de caracteres. Só podemos encontrar e usar isso em qualquer outro projeto que
compartilhe a mesma classe principal. Então, dada a nuance
por trás de uma biblioteca
de macros, a necessidade de definir
uma classe principal, quais seriam os benefícios
de usar uma biblioteca de macros? Bem, considere que talvez você tenha um jogo de luta e tenha uma série de
personagens que você pode jogar, pois talvez você
queira ter algumas macros que todos os personagens
possam compartilhar e usar. Algo como escolher
entre um tante aleatório ou talvez uma mudança de roupa,
esse tipo de coisa. Quero dizer, aqui,
tudo o que estou fazendo é escolher um flutuador
aleatório de alcance, e então eu estou decidindo se estou andando, correndo ou correndo. Talvez pudéssemos alimentar isso com
um número inteiro aleatório
com base no número inteiro
escolhido. Poderíamos jogar de forma aleatória ensinada
algo dessa natureza. Agora, se você quiser contornar essa limitação
da biblioteca de
macros, há um pequeno truque aqui que você pode fazer para garantir que suas
macros estejam disponíveis em qualquer lugar. E isso é para garantir que
sua classe principal para sua biblioteca de macros seja
da classe de objeto. Agora, para ir para casa nesse ponto, deixe-me clicar com o botão direito do mouse
em algum espaço vazio aqui e eu vou trazer,
digamos, um nó de portão. E a razão pela qual estou
fazendo isso é para que eu possa clicar duas vezes sobre isso e me levar
rapidamente à nossa biblioteca de macros
padrão. Apenas navegando até aqui, podemos descobrir onde está
em nosso navegador de conteúdo. Ele está na pasta de
recursos do blueprint do Engine Content Editor. Mais uma vez, para ver isso, você pode se certificar de que o conteúdo do mecanismo de exibição está
ativado. E se acessarmos nossa biblioteca de macros
padrão, podemos ver que nossa
classe principal aqui é objeto. Agora, voltando ao nosso navegador de
conteúdo aqui, se eu clicasse com o botão direito do mouse
em alguns espaços vazios, se quiséssemos criar
uma nova biblioteca de macros,
esquemas, biblioteca de
macros de diagramas. Confira isso
aqui na seção de todas as aulas. Você pode ver que todas as outras
classes herdam do objeto. Então, se você criar uma biblioteca de macros
padrão que tenha a
classe principal de objeto, qualquer outra classe poderá usá-la. É por isso que você pode
encontrar nós como nó do
portão em qualquer
outro modelo. Tudo bem pessoal, vai
fazer tudo por este. Nos vemos
no próximo vídeo.
70. Matriz: Bem-vindos de volta a todos Nesta seção do curso, voltaremos ao tópico de variáveis porque, até
esse ponto do curso, falamos apenas sobre um
único contêiner de variável. E, em particular, o que
estamos falando aqui é com um tipo de variável selecionado, você tem no
lado direito aqui a capacidade de escolher
o tipo de contêiner. Nós criamos apenas variáveis
únicas. Não falamos sobre
matrizes, conjuntos ou mapas. Então é disso que trata esta seção
do curso,
falando sobre esses diferentes tipos de contêineres
variáveis. Em particular, neste curso, aprenderemos
o que é uma matriz. Mostraremos como
criar alguns e depois dar um exemplo de como
eles podem ser usados. Então, primeiro, o que é uma matriz? Uma matriz é um
contêiner variável que pode armazenar uma coleção de valores
de algum tipo de dados. Agora, termos mais práticos em matriz são uma lista de coisas
semelhantes. Pode ser uma matriz
de valores flutuantes, pode ser uma matriz de textos, sons, objetos, etc. Agora, cada
entrada na lista tem um índice inteiro associado ou o que é conhecido como
chave associado a ele. Isso significa que podemos procurar uma determinada entrada na lista
se quisermos ou precisarmos. Tudo bem, aqui estou eu dentro do meu ThirdPersonacter
Blueprint. Então, vamos criar nossa
primeira matriz. E vamos começar
acessando o painel
My Blueprint. Vamos criar
uma nova variável, clicando nesse botão de adição, vou chamar essa frase
de efeito. E o tipo aqui será uma variável de texto. E então,
no painel Detalhes, podemos
definir o tipo de contêiner, qual vou
clicar nesse menu suspenso e escolher uma matriz. Agora eu preciso compilar
meu plano. E quando eu fizer isso, isso
me permitirá
adicionar um número X de
itens à minha lista. Lembre-se de que uma matriz é
essencialmente uma lista e você pode determinar quantos
itens existem nessa lista. Vou clicar
nesse botão Plus aqui embaixo, três vezes 12,3. E meu primeiro slogan
será, ei, ei. Meu segundo vai
ser High Diddley Bow. E o meu próximo será
libertado, os cães de caça. Agora, observe que as variáveis de matriz ou tipos de
contêiner
designados por essas grades de
três por três cores mostram que
não são variáveis únicas padrão. E você pode ver isso representado
não apenas
aqui, mas no painel
Meu Blueprint na seção de variáveis, você vê aquele ícone de waffle de
três por três que indica que essa
variável é uma matriz, uma matriz de variáveis de texto. Agora, algo que vale a pena
mencionar aqui é que você pode reordenar seus valores dentro dessa matriz
clicando
aqui e arrastando um acima, ou arrastando para baixo, assim. Além disso, no
lado direito, você tem a opção de clicar
nessa pequena seta suspensa, inserir, excluir ou
duplicar uma entrada. Então, vou
inserir apenas para mostrar isso e, em seguida, vamos excluí-lo
rapidamente. Tudo bem, agora vamos
usar essa matriz. Então, vou trazer
uma chave do evento aqui. Clique com botão direito Eu vou fazer as cinco teclas. E então o que eu vou
fazer é
trazer meus bordões. Então, eu quero ir, então
vou manter pressionada a tecla Control,
clicar com
o botão esquerdo e arrastar. Isso vai me dar uma surpresinha. E depois disso,
quero arrastar até aqui e digitar gets, quero obter uma referência aqui. Desculpe, mas eu
quero uma cópia. E o que eu
quero tirar disso? Bem, eu posso escolher qual entrada nessa
matriz, 01 ou duas. E, novamente, essa é
uma lista baseada em zero. Começará
contando em zero qual dessas entradas eu
gostaria de retornar. Então, qualquer número que eu
digitar aqui,
corresponderá à entrada
que eu quero retornar. E eu vou escolher
algo aleatório aqui. Então, vou arrastar para trás
e digitar um número inteiro
aleatório em um intervalo. E eu vou dizer 0-2, porque esse é o meu intervalo, 0-2. Se fôssemos acima
para dizer que o colocamos em um intervalo de 0 a 3 e
retornamos o número três, obteríamos apenas um resultado nulo e nenhuma flecha seria lançada. Acabamos de obter um resultado nulo. Vou arrastar até
aqui, digitar o texto impresso. E vamos colocar
isso aqui. Então, vamos
jogar isso rapidamente. Deixe-me compilar isso,
ter certeza de que está tudo bem. E eu clico nas minhas opções de
jogo aqui. Não quero simular, estou em um avião e em uma
nova janela do editor. Vou definir isso como meus objetos de depuração para que
possamos ver esse script sendo acionado. E não para OBS. Aqui vamos nós. Quando eu pressiono a tecla cinco. Oi, Diddly. Olá. Oi diddly Hill, realmente parece. Você pode ver que, como sou
spam, as cinco chaves, estou recebendo uma dessas opções
diferentes aleatoriamente. Agora, veja isso. Atualmente, temos três
frases de efeito em nossa matriz. No entanto, novamente,
isso é uma variável. Não precisamos manter esses
três elementos aqui. Nós poderíamos trocá-los. Vamos tentar algo assim. Eu vou trazer
uma chave de quatro. Para entradas. Nós fazemos para teclado, aqui estão minhas quatro teclas. O que vou
fazer é definir meu slogan. Vou manter pressionada a tecla
Alt, clicar com o botão esquerdo e arrastar. Vamos colocar isso
neste alfinete para trazer uma incubadora. E o que eu vou fazer
com isso é arrastar para trás e digitar
make array. Então, neste nó, vou
adicionar três pinos. O que eu vou fazer é
definir com precisão quais serão os três elementos
nesta corrida? Eu vou colocar a massa. E na minha segunda entrada aqui vou colocá-la em Smithers. E o terceiro
será os meses de Nelson. Haha. Então, confira o que
estamos acontecendo aqui. Deixe-me encolher um pouco
isso,
colocar aqui. Ao clicar na configuração de reprodução, isso pode já ter
isso como meu objeto de depuração. Está tudo muito
bem. Então, se eu começar pressionando a tecla cinco
e enviando spam, você verá as
entradas originais na minha matriz. Agora vou pressionar
a tecla F4 e ela sobrescreverá
essas entradas. Então, vou
pressioná-lo apenas uma vez. Veja esse fogo se apagar, booms. Isso disparou. Então, agora, quando
pressiono a tecla cinco, as entradas, os elementos dessa matriz
foram alterados. Então, ele lerá
assim as novas entradas que
acabei de colocar aqui, eu troquei, eu mudo o
conteúdo dessa matriz. Tudo bem, vamos tentar criar
algumas outras matrizes. Então, vamos criar mais uma aqui
no painel Meu Blueprint
em variáveis, clicando nesse botão de adição, vou chamá-la de minha matriz de som. Agora vou mudar
o tipo de variável aqui para arquivos de ondas
sonoras, ondas sonoras. Então, em ondas sonoras
de tipos de objetos, queremos escolher a referência do
objeto. Já é do tipo de contêiner de
variável de matriz. Então, está tudo bem. E eu vou criar mais
uma variável aqui, clicando no botão de adição. E este será
meu conjunto de atores. E eu vou mudar
o tipo aqui para ser da variedade de atores em tipos de
objeto, ator a referência de objeto. Ok, agora vou
compilar esses dois. E para minha matriz de som, vou inserir
três deles, então 12.3. E aqui eu posso
inserir alguns sons. Eu vou com quaisquer três. Eu tenho uma janela dupla fechar qualquer três,
faremos tudo isso, por exemplo,
saquê . Se o sublinhado estiver perto
o suficiente para o meu terceiro, eu simplesmente vou fechar a
interface do usuário flutuante. Então você pode imaginar, digamos que eu tenha uma série de ruídos de buzina de carro. Você quer que uma
tecla incrível no teclado
faça a buzina do seu carro tocar. Essas podem ser três
variações diferentes desse som. Talvez você só queira
escolher um aleatoriamente. Ok, então está tudo bem o suficiente para
minha matriz real. Eu vou fazer 12.3. No entanto, vou
deixá-los vazios agora. Vou compilar isso
e salvar mais uma coisa. Esqueci de marcar essa
caixa de instância editável, então certifique-se de
marcar isso também. Vá em frente, compile
e economize mais uma vez. O que vou fazer é,
quando jogar este jogo, definir quais objetos farão
parte dessa matriz de atores. Portanto, observe que essa matriz
atualmente está vazia. Então, o que eu vou fazer é
voltar ao meu nível aqui. Vou adicionar três objetos.
Realmente não importa. Vou fazer apenas um cubo, uma esfera e um cilindro. Assim. Ok, coloquei esses
três aqui. Vamos voltar ao nosso personagem em
terceira pessoa. Vou trocar
nossas matrizes aqui, apenas modificar um pouco nossos
scripts aqui. Então, aqui, sob os bordões, vamos nos livrar
dessas quatro ou cinco chaves. Vou colocar minha matriz de
som mantendo pressionada a tecla Control, clique com o botão esquerdo e arraste. Vamos arrastar
um aqui, digite,
nós queremos obter uma
cópia, conectá-los. Então, na verdade, eu não
quero imprimir texto aqui. Eu quero tocar um som. Reproduza o som. Desculpe, em vez disso, vamos
sair daqui e digitar play sound 2D, assim. E quando eu pressionar minhas quatro teclas, excluí-las aqui, vou pegar meu ator, levantar uma tecla de controle
pressionada. Clique com o botão esquerdo para trazer uma
referência para esse fim, vou arrastar esse
tipo em gets, vamos obter uma referência. Cópia, em vez de não ser uma referência. Eu sempre estrago tudo isso. Eu farei um número inteiro aleatório
no intervalo para isso. Então Controle C, controle V. Agora o que eu vou fazer aqui é arrastar isso e vamos simplesmente destruir um ator. Então, quando eu pressiono a tecla quatro, vou destruir
uma dessas agora novamente, atualmente
é
uma matriz vazia. Então, vamos compilar isso. Esse roteiro vai
ficar bem aqui. Eu vou seguir em frente
e pular para o meu nível. Não vamos ver
esses roteiros sendo disparados. Mas se você precisar voltar
aqui e referenciá-los, está tudo bem. Ok, vamos lá. Tudo bem, agora com meu
personagem no meu nível, eu posso vê-lo preenchido
aqui no esboço. Vou
selecionar meu ThirdPersonCharacter. E agora eu preciso definir os três elementos
da minha matriz de atores. Então, vou fazer uma
busca aqui com meu ThirdPersonCharacter
selecionado. Faça uma busca pela matriz de atores. E note que eu
não tenho nada definido aqui ainda. Então, vou clicar
nessas setas suspensas e
defini-las como cubo,
cilindro e esfera, respectivamente. Então, cube o cilindro
para o próximo. A esfera está em algum lugar aqui. Há uma esfera. Ok? E deixe-me abrir minha janela de
jogo mais uma vez. Tudo bem, então pressionando
a tecla cinco primeiro, vamos ouvir alguns sons. Tudo bem. Tudo bem, e agora meus relógios de
quatro chaves, eles desaparecem quando são selecionados. Os quadrados sumiram os cilindros? Eu pressiono a tecla F4 novamente, nada desaparece também, devo ter selecionado esse elemento novamente. A esfera desapareceu e,
finalmente, o quadrado desapareceu. Assim, você pode ver essas
várias matrizes funcionando. Agora, a razão pela qual estou
recebendo esse erro é porque ele estava tentando
destruir alguns atores. Aí está eu pressionando
minhas quatro teclas aqui. Estava tentando escolher um número inteiro e um intervalo
aleatórios, apenas tentando escolher
um desses três. Agora, o primeiro a ser
destruído foi o cilindro, que eu acredito que
também eram elementos . Eu posso estar errado nisso. Uma vez que isso seja destruído e escolha o mesmo número novamente, ele vai gerar
aquele erro quando eu parei de jogar
dizendo como, Ei, eu estou tentando destruir você ator, mas você já
foi destruído. Mas, novamente, tudo isso é
para fins acadêmicos. Tudo bem, só falta um
pouco mais. Antes de encerrarmos isso, eu queria ressaltar
isso para qualquer matriz, e vamos trazer nossos
bordões aqui. Qualquer uma delas terá as mesmas opções disponíveis
para você, se você bebeu disso e estiver
na seção de utilitários, matriz de
utilitários, você tem um monte de opções diferentes que você pode ser usado para modificar
para editar sua matriz. Você pode adicionar a isso. Você pode arrastar para fora
disso e digitar com clareza. Você pode limpar sua matriz. Então, poderíamos adicionar outro
elemento à nossa matriz aqui. Este limparia completamente
a matriz. Você pode acrescentar a matriz que deve usar uma
matriz de frases de efeito. Talvez você tenha um segundo raio
de frases de efeito e
possa combiná-las. Você poderia, eu comecei aleatoriamente. Você pode escolher
uma entrada aleatória da sua matriz e
também retornar o índice. Então, isso
escolheria uma entrada aleatória que retornaria o índice. Portanto, com qualquer matriz, você tem várias opções
com as
quais pode modificar essa matriz alguma
forma, forma ou forma. E, novamente, você pode encontrá-los aqui
embaixo, matriz de utilitários. Você também tem muito mais deles
disponíveis para você. Tudo bem, obrigado a saber
antes de encerrarmos isso, os valores dentro de uma
matriz, mais uma vez, são valores de
índice com base em zero, o que
significa que o primeiro
índice é zero, não um. As matrizes são uma ótima maneira de armazenar uma lista desses
mesmos tipos de dados. Onde você usaria isso? Bem, eu tinha uma variedade de
frutas que eu criei em um jogo no estilo Pac-Man que eu
criei no Unreal há algum tempo. Outra coisa a se observar sobre
matrizes é que você pode pegar uma entrada específica de uma
lista obtendo uma cópia, como estamos fazendo aqui. Ou você pode obter uma
entrada aérea ou aleatória, como estamos fazendo aqui. Então, se você quiser
obter uma cópia específica, você pode simplesmente quebrar
esse fio e dizer:
Ei, eu quero o elemento zero. A abordagem aleatória
faria algo assim. Agora, mais tarde, quando falarmos
sobre controle de fluxo nós mostrarão como
examinar cada entrada na matriz
usando um loop
for ou while para fazer algo
com cada entrada na lista ou para dirigir. alguma lógica
baseada em while given, enquanto uma determinada entrada
na lista é encontrada. Certo pessoal, isso vai
fazer tudo por este. Nos vemos
no próximo vídeo.
71. Conjunto: Bem-vindo. Neste vídeo, nosso objetivo é aprender o que é um contêiner de variável
definido. Mostre como criar um
e, em seguida, dê um exemplo
de como eles podem ser usados. Então, primeiro de tudo, vamos definir o que é um conjunto par. Bem, um conjunto é como uma matriz, pois é
um contêiner variável que pode armazenar uma coleção de valores do mesmo tipo de dados. Aqui, em meus tipos de variáveis. À direita, tenho
diferentes tipos de contêineres, conjunto de matriz
única ou mapa. Então, estamos falando sobre ambientado
neste vídeo, por exemplo, poderíamos ter um conjunto de tesouros
escondidos que
você deve encontrar em uma
coleção de tesouros escondidos de níveis. Agora, uma das
coisas únicas sobre um conjunto é que todas as entradas em um contêiner de conjunto devem ser
exclusivas, sem duplicatas. Vamos abordar mais algumas
das diferenças entre matrizes e conjuntos em
um pouquinho aqui Vou
criar algumas variáveis aqui dentro
do
meu plano de níveis. Mas neste exemplo, você também pode fazer isso em seu
ThirdPersonCharacter. Você esqueceu como abrir seu Plano de Nível
ali mesmo. Projeto de nível aberto.
E vamos entrar em nosso painel My Blueprint e
criar algumas variáveis. Clicando nesse botão de adição. Uma vez, vou criar
um chamado tesouro escondido, tudo, vou mudar
o tipo aqui para ser um nome. Vamos inserir alguns nomes para alguns tesouros
escondidos. E então,
no painel Detalhes, vou mudar o tipo de
contêiner aqui de único para conjunto. Em seguida, vou clicar com
o botão direito do mouse sobre isso e vou
duplicá-lo. Você pode ver a tecla de atalho
para esse controle mais D. E isso será
chamado de tesouros escondidos. Encontrado. E depois de compilar, posso adicionar algumas entradas aqui, alguns elementos de conjunto diferentes. Então, vamos começar com todos os tesouros
escondidos. Vou clicar
nesse botão de adição uma vez. E se você tentar clicar
nele pela segunda vez, vai dizer que você não
pode adicionar outro
até adicionar um pouco,
uma entrada aqui. Então eu vou chamar
essa estátua dourada. Ao clicar no botão de
adição novamente, chamarei esse de colar. O motivo pelo qual você não pode adicionar
outro quando ele diz nenhum é porque ele tentaria criar uma entrada duplicada que também
diria nenhuma. Portanto, lembre-se de que os conjuntos
não podem ter duplicatas. Clicando nesse botão de adição novamente. Chamaremos isso de cerâmica antiga. Cerâmica. Cerâmica. Claro. Cerâmica antiga. Ao clicar no botão de adição novamente, chamaremos esse
pergaminho de sabedoria. E clicando no botão de
adição novamente, vamos chamar
isso de brasão de guerreiro. Tudo bem, então agora vou colocar alguns tesouros escondidos
encontrados aqui. E, na verdade, você sabe o que? Na verdade, quero ter algumas entradas
duplicadas aqui. Então, vou deletar
esse. E eu vou te dizer por que
vamos excluir isso para garantir que nossos nomes sejam
escritos exatamente da mesma forma. Então, vou
clicar com o botão direito do mouse sobre isso. Vamos duplicar
isso. Mais uma vez. Eu chamo isso de encontrado, e vou
compilar isso em. Depois de compilá-lo, posso
ver todas as mesmas entradas. Vamos deletar
alguns dos meus aqui, então vou deletar o colar
clicando aqui. Excluir manterá a estátua dourada. Vamos também manter o pergaminho
de sabedoria. Não importa, realmente não
importa quais mantemos, mas apenas mantenha alguns
deles ali. Agora, observe que certos
tipos de variáveis não podem usar conjuntos. Se eu selecionasse minha variável
booleana, digamos, aqui e
passasse para os tipos de
contêineres. Não consigo definir um conjunto para isso. Também posso fazer isso para
uma tecnologia variável de texto, um rotador ou uma transformação. Todos os outros podem ser
definidos como um tipo de contêiner definido. Só pensei em jogar
isso aqui também. Agora, se eu arrastar uma
referência a um dos meus conjuntos aqui e depois tirá-la
dela, libero algum
espaço vazio abaixo da seção do conjunto de utilitários. Você vê que eu tenho um
monte de funções diferentes disponíveis para manipular
os dados de alguma
forma, forma ou formar muitas
funções específicas de conjuntos. O que vou fazer
aqui é acelerar o vídeo rapidamente
depois de adicioná-los e
falar rapidamente sobre algumas
das diferentes opções
disponíveis para você. Tudo bem, e aqui estão algumas
dessas funções sobre as quais eu estava falando e
que são específicas para definir. Você pode adicionar um elemento a ele. Você pode remover um elemento dele. Você tem algumas comparações entre dois
conjuntos diferentes, esse tipo de coisa. Agora, uma coisa que vale
a pena notar aqui, se você fosse apenas clicar com
o botão direito do mouse e algum espaço vazio, como eu algum espaço vazio, como eu
fiz com esse nó aqui fazendo uma busca
por um nó de união. Tem ótimos pinos
de entrada e saída. Essas são
entradas e saídas curinga, o que
significa que qualquer
tipo de dados é conectado primeiro a uma entrada
ou saída, esse é o tipo de dados, o resto da entrada ou saída assume. E só para demonstrar isso, eles estão cinza
agora, se eu inserisse isso
para dizer este primeiro, você pode ver que
todos eles ficam roxos para representar o tipo de
variável de nome. Ali. Para excluir isso e colocar
um no lado da saída, ele mudará o
lado da entrada para a mesma cor, o mesmo tipo também. Tudo bem, aqui no meu plano de
níveis, comecei a criar
um script mostrando um exemplo prático de como os
conjuntos podem ser usados em um jogo. Então, quando eu pressiono as três teclas, o que eu vou fazer é
descobrir a diferença entre dois conjuntos diferentes. Meu conjunto principal conterá todos os tesouros que eu preciso encontrar em um determinado nível. Meu conjunto de baixo vai
me dar os tesouros que
eu encontrei até agora. O que essa
nota de diferença vai fazer é produzir
todas as. Não encontrei a diferença entre um conjunto e outro. Então, eu não posso simplesmente sair
daqui e digitar uma sequência de impressão. Então eu não posso, isso não vai
imprimir os nomes de todos os itens
do conjunto que não foram encontrados
no momento. Então, o que eu preciso fazer aqui
é arrastado para fora daqui. Isso me dará que o
tesouro resultante não foi encontrado. E eu vou
digitar em duas matrizes. O que isso
me permitirá fazer é gerar uma matriz de todos esses
diferentes itens do conjunto. A diferença
entre esses dois. E com isso, eu posso
sair daqui e trazer um para cada loop. Agora, ainda não falamos sobre os nós de controle de fluxo que serão
exibidos na próxima seção. Mas o que esse
nó de controle de fluxo me permitirá
fazer é examinar cada
item dessa matriz, cada item dessa lista
e, em seguida, enviá-los
para a tela aqui. E os enviará
para
a tela por meio de
uma sequência de impressão. Então, para cada item dessa matriz, vamos pegar
isso e converter esse nome em uma string para que
possamos produzir. Vamos compilar aqui,
garantir que nosso script tenha uma boa aparência. Salve isso. Nós vamos jogar. Você pode definir seu objeto de depuração seu mapa de teste lá, caso
ainda não tenha feito isso. E agora, se eu pressionar
essas três teclas, você pode ver que esses são os três
itens que ainda não encontrei. Estou apenas enviando spam
com três chaves. Essa é a diferença entre meus conjuntos completos e meus conjuntos encontrados. Tudo bem, então agora vamos
tentar outra coisa aqui. Vou trazer
o teclado VY, a tecla V, não sei. E com isso,
vou trazer uma referência aos meus tesouros
escondidos encontrados. Vou sair daqui e digitar AD. Certifique-se de escolher
a função de adição nessas categorias definidas aqui. E vamos adicionar um colar. Vamos dizer que
encontramos o colar agora. Então, vamos adicionar isso à nossa lista de tesoureiros vinculados. Então, essencialmente, isso
seria ouro, estátua, pergaminho de sabedoria
e depois colar. Então compile, salve. Agora, quando eu jogo, quando eu pressiono a
tecla três, ele vai dizer, ei, você está perdendo essas três, mas agora eu vou pressionar
a tecla V. Vamos
dizer, sim, encontramos o colar agora, a chave V. Ok, então isso foi adicionado
à minha lista de milhares. Agora, quando eu pressiono as três teclas, vai dizer que essas
são as duas que faltam. Encontramos o colar. Tudo bem, vamos terminar este vídeo falando sobre algumas
das semelhanças e diferenças
entre matrizes e conjuntos, começando com algumas semelhanças. Bem, tanto as matrizes quanto os conjuntos armazenam uma coleção
de valores do mesmo tipo. Ambos permitem que você adicione
e remova elementos, e você me viu fazendo isso
ao longo dos dois
últimos vídeos. Quanto às diferenças, a
ordem dos elementos é a diferença nas matrizes. Você
tem uma lista ordenada. Os conjuntos são
considerados não ordenados. Agora, quanto à exclusividade
dos elementos, as matrizes podem ter itens duplicados. Os conjuntos não podem ter duplicatas, e essa é uma
das principais diferenças entre matrizes e conjuntos. Os conjuntos não podem ter duplicatas. matrizes podem, quanto às diferenças
funcionais, pesquisar e obter um elemento individual por meio uma pesquisa de índice porque
estão ordenadas. E só para mostrar
isso rapidamente, tenho uma série de atores de
pickup aqui. Se eu arrastar e soltar
isso e conseguir isso, eu posso arrastar para fora daqui e obter, eu posso obter um
item individual dentro dessa matriz, qualquer número aqui, novamente, começando com a lista zero, eu atualmente
não tem nada nessa matriz. Mas sim, você pode obter determinados elementos
especificados por um índice. Agora, quanto aos conjuntos,
eles não podem
pesquisar ou obter um elemento individual. No entanto, os conjuntos são ótimos comparações
entre listas,
como você acabou de me ver fazendo fazer comparações
entre listas,
como você acabou de me ver fazendo com
esses tesouros escondidos, todas as listas e meus tesouros
escondidos, conjunto
ilimitado ou uma matriz,
o que você deveria ir com? Bem, eu escolheria um conjunto se o pedido não fosse
nada importante. exclusividade dos elementos
é um requisito. Por outro lado,
opte por uma matriz se a ordem for importante, mas elementos duplicados, o que não é
muito
possível. Agora, os conjuntos também têm o benefício de um pouco mais de
desempenho do que os conjuntos. Portanto, isso também pode
ser algo a ter em mente. Mas, novamente, as matrizes são
ótimas se você precisar pesquisar um
item individual dentro dessa lista. Os conjuntos são ótimos se
você precisar comparar um conjunto com outro
conjunto, esse tipo de coisa. Tudo bem pessoal, isso vai bastar
, ofereçam este vídeo. Nos vemos na próxima.
72. Mapa HiRez: Bem-vinda. Neste vídeo, nosso
objetivo é explorar o que são
contêineres de variáveis de mapa, como criá-los
e como podemos usá-los em um projeto de jogo. Agora, ver vai acreditar
que isso
vai ser mais fácil de demonstrar
do que falar. Então, vamos começar
a criar um. Agora, vamos criar
esse contêiner de variável de mapa dentro do nosso controlador bp player. Esse é um ativo que
criamos durante nosso evento. Comece o cursor sobre o vídeo. Se você quiser voltar e
revisar isso quando puder. Se você não sabe como
criar um controle de player, vou lhe dar
uma introdução rápida, uma rápida atualização aqui. Você faz isso clicando com o botão direito do mouse, indo na classe Blueprint, deseja criar um controlador de
jogador. E então você
o chamaria assim de controlador
do bp player. Mas depois de fazer isso, você precisa associar
isso como controlador de jogador
ativo para o projeto em que
está trabalhando. E você pode fazer isso
em suas configurações. Configurações do projeto em mapas e modos. Aqui é onde você pode se encaixar nessa classe de controlador de jogador. Agora,
teremos alguns vídeos mais adiante no curso, nos
quais falamos especificamente sobre
esses projetos
conhecidos como esquemas do Framework. Mas há uma
razão específica pela qual eu quero mostrar esse contêiner de variável de mapa
usando um controlador bp player, meu
modelo de controlador de jogador aqui. E isso ocorre porque um blueprint de controlador de jogador
está associado, no nosso caso, ao
ThirdPersonCharacter. Agora, em um jogo real, seu personagem pode morrer
e, quando responder, todas as variáveis dentro do projeto do personagem do jogador seriam redefinidas para seus valores
padrão. Agora, algo como na variável de
inventário, onde contém o
nome de um item e quantos você tem
desse item, seria melhor armazenado em um modelo de controlador de jogador porque se seu personagem morre, seu personagem morre
nessas variáveis são reiniciadas em um controle de jogador
que permanece vivo, por assim dizer, ele permanece persistente durante toda a sessão de
jogo. Assim, se seu personagem morresse, esses valores não seriam
eliminados dentro do controle
do jogador. Tudo bem, então, com o
controlador do jogador criado e definido dentro das
configurações do seu projeto em mapas e modos. Classe de controlador de jogador. Vamos mergulhar dentro daqui. E se você tiver essa
pequena janela que diz:
Ei, isso é apenas um
dado, apenas um plano. Podemos clicar aqui para abrir o editor de diagramas completo
e ver o que queremos ver. Tudo bem, a primeira coisa a fazer
aqui é criar uma variável. Agora, na verdade, antes de fazer isso, quero limpar todas
essas variáveis herdadas apenas para simplificar esta seção
do painel My Blueprint, todas
elas são herdadas da nossa classe principal do
player variedade de controladores. Então, eu posso dar um oi a eles
clicando neste ícone de engrenagem. Desmarcar para mostrar variáveis
herdadas e
isso simplificará um pouco isso. Então, vamos adicionar
nossa variável desejada aqui. Vou dar um nome a esse
inventário porque é uma boa coisa para armazenar em um plano de
controlador de jogador. Mais uma vez, um
personagem do jogador pode morrer e responder e as variáveis de morte e resposta dentro de
um controlador de jogador persistirão durante toda a
sua sessão de jogo, o controlador do jogador
não morre. Pense nisso como
as cordas de marionetes controlam a
marionete que podem ser derrubadas da corda
repetidamente. Tudo bem, com isso selecionado
no painel Detalhes, vamos mudar
nosso tipo de variável aqui,
booleana para string e, em seguida, nosso contêiner de
variável de
uma única para um mapa. Agora, isso me permite adicionar
um tipo de dados secundário aqui. Então, eu quero ter uma sequência de caracteres para os nomes dos meus itens de inventário. E então eu vou
ter um número inteiro para dizer quantos desses
itens eu tenho. Então eu poderia ter coisas como poção de
saúde, três dessas,
cara, uma poção, três
desses capacetes de couro, uma não protegeria um, etc., etc. Agora, para adicionar elementos a
esse tipo de variável, vou clicar em Compilar aqui. E podemos ver
em nosso painel de detalhes que podemos adicionar elementos. Vou clicar
nesse botão de adição uma vez. Se eu tentar clicar novamente, ele vai me dizer que
não, você não pode fazer isso. Agora com uma variável de mapa. É um contêiner que
armazena uma coleção de pares de
valores-chave as chaves e os valores podem ser
de diferentes tipos de dados. Mais uma vez, nesse caso, minha chave será
a string. O nome das chaves do meu
item de inventário deve ser exclusivo. Então, para minha primeira aqui, vou chamar
isso de poção de saúde. E eu direi. Eu tenho três
desses por padrão. Então, a
poção de saúde será minha chave, e aqui estará meu valor representado
por um número inteiro. Eles não precisam ser exclusivos. Eles podem ser os mesmos, e eu vou representar isso aqui adicionando outro elemento aqui. Portanto, as chaves, no meu caso, as cordas, precisam ser únicas. Vou fazer com que isso
seja um homem, uma poção. E eu vou definir três como um valor
padrão para isso. E vamos adicionar mais algumas aqui só por diversão. Vou acrescentar com certeza. Capacetes de couro. Nós temos um desses. E clicando em mais aqui, eu tenho um escudo de madeira
e eu tenho um desses. Tudo bem, agora eu
tenho minha coleção de pares de valores-chave dentro
deste contêiner de mapas. Agora, os mapas são ótimos porque
suportam pesquisas e
recuperação eficientes desses valores com o uso dessas chaves
associadas. Tudo bem, agora eu quero criar mais
uma variável aqui, e isso entrará em jogo
um pouco mais adiante. Então, vou clicar nesse botão de
adição e vou dar um
nome a esse item para usar. E eu quero que isso seja
do tipo variável string. Antes de realmente definir isso
como um tipo de variável de string, vou
defini-lo temporariamente como um booleano. Agora, algo a ser observado
aqui é que você não pode ter certas variáveis como mapas. Então, se eu tentasse dizer, Ei, tipo
variável booleano, eu quero
ter você dentro de um mapa. Você não pode fazer isso. Portanto, certos
tipos de variáveis não podem usar mapas. Eles incluem variáveis booleanas, de texto ,
rotador e de
transformação. Então eu pensei em jogar
isso lá fora agora. Esses não podem ser, não podem usar
o contêiner da variável de mapa. Tudo bem, agora
eu realmente quero mudar esse tipo de dados aqui de
booleano para uma string. E vamos compilar isso para que possamos definir
um valor padrão. E isso vai ser
o oceano de maná. Então, como o nome sugere, esse
será nosso objetivo usar um homem de poção
que entrará em ação aqui no futuro. A seguir, queremos criar um novo modelo de classe de ator. Então, volte ao
seu navegador de conteúdo. Vou colocar isso na pasta Scripting Blueprints. Vamos colocá-lo
lá dentro. Então, vou clicar com o botão direito do mouse
em algum espaço vazio, vamos criar
uma nova classe de blueprint. Será do
tipo ator
e vamos nomear essa poção sublinhada da BP. E então vamos
clicar duas vezes nesse cara para abri-lo. E primeiro, vamos adicionar alguns componentes e
depois definir alguns detalhes. Então, o primeiro componente
que eu quero adicionar são os componentes de uma esfera. Não esse tipo de esfera,
mas sim um colisor de esferas,
colisão de esferas. É isso que estou procurando. E eu vou definir o raio da esfera
aqui para 70. E então, com os componentes da
lança selecionados dentro dela, em vez disso, vou adicionar um cilindro. E então vou digitar cilindro e encontraremos
um cilindro de formas básicas. E eu tenho algumas configurações
que quero definir para isso. Vou mudar a
escala para ser desbloqueada,
então desbloqueie-a e
vamos defini-la como 0,25, 0,2, 5,0, 0,5. Então eu vou inclinar isso. Vamos
rotacioná-lo um pouco. Então, aqui nos fios girando está
isso para menos 30. E também vou fazer com que
esse material seja algo como o que eu tenho
vértice, algo vermelho. Vamos continuar com isso. Agora parece um homem muito parecido. Claro. Em seguida, adicionaremos uma variável dentro do
nosso Blueprint bp. Então, clique abaixo desse botão de adição para a seção de variáveis. Vamos chamar esse
item para usar também. Vamos mudar o
tipo aqui para uma string. Vamos
compilar para que
possamos definir um valor padrão. E desta vez eu vou digitar
a poção Amana. Vou fazer isso em letras minúsculas, mas só estou fazendo isso para seja
diferente de como
chamamos isso de valor padrão dentro do nosso controlador bp
player. Lá, usamos letras maiúsculas
para o início de nossas palavras de maná e poção
apenas para mostrar que podemos, porque os invólucros não importarão
para o nosso mapa aqui. Então, vamos compilar
e salvar isso imediatamente. Agora, antes de
prosseguirmos aqui, eu queria mostrar em nosso
controlador bp player que, para
nossa variável de mapa aqui,
vou manter pressionada a tecla Control e clicar com o botão esquerdo do mouse e
arrastar para o nosso gráfico de eventos. Se sairmos desta versão, se eu entrar no mapa de Utilitários, teremos acesso a
uma série de funções que podem manipular
nossos dados de mapa de alguma forma. Em muitos aspectos,
isso é semelhante às
nossas matrizes e aos tipos de
contêineres definidos. E eu vou apenas
adicionar alguns deles aqui. Então, vou trazer
um anúncio que nos permite adicionar
ao nosso mapa. Arrastando isso, também
há outro
para encontrar um determinado item. Arrastando isso, posso remover um elemento do nosso dragão
do mapa novamente, posso encontrar um que contenha, mais
uma vez, eu posso arrastar para fora. Eu posso pesquisar
apenas as chaves que existem neste mapa, ou
seja, esses caras, eu posso arrastar
isso e trazer uma função que encontre apenas os valores desse mapa. Portanto, há muitas funções
diferentes que podem manipular ou fornecer
informações sobre seu mapa aqui. Tudo bem, em seguida,
voltaremos à nossa menopausa da pressão arterial para que
possamos adicionar um script para adicionar
ao nosso inventário, aqui
vamos adicionar ao nosso inventário de poções de Amanda quando pegarmos uma poção para um homem. Então, voltando ao
nosso BPMN de movimento, queremos fazer algo quando
estamos sobrepondo essa esfera. Então, vá para o seu gráfico de eventos, vamos clicar com o botão direito do mouse
em nosso colisor de esferas. Vamos adicionar
um evento para quando começarmos a sobrepor isso. E só queremos que algo
aconteça quando nossos
outros atores que se sobrepõem a essa esfera são
o ThirdPersonCharacter. Então, no lançamento,
faremos uma busca por Cast to
ThirdPersonCharacter. E se for um
ThirdPersonCharacter, podemos estender nosso script aqui. Em seguida, o que queremos fazer
é conversar com nossa variável de inventário aqui dentro do nosso controlador bp
player. Então, como podemos fazer isso? Bem, de volta aqui dentro
do nosso bp man of motion, vou clicar com o botão direito do mouse
em
algum espaço vazio e digitar get player controller. E então, um erro que muitos
cometem é que eles pensam que,
bem, agora eu tenho essa função de controle de
jogador. Eu posso simplesmente sair
daqui e fazer uma busca por
inventário para encontrar essa variável. E não, você não pode, porque precisamos descobrir qual controlador de jogador
queremos falar com você. O projeto pode ter muitos
controladores de jogadores. Portanto, este é o ponto de partida para identificar com qual
controlador de jogador queremos conversar. Então, arrastando daqui, podemos transmitir para o nosso controlador de
player, nosso
controlador de player bp, a fim de
acessar as informações
dentro dele. Agora vou simplificar um pouco
esse nó aqui. Eu tenho alguns pinos de execução
aqui e aqui. Se eu clicar com o botão direito do mouse nesse nó, posso simplificar esse nó
até o que é conhecido como fundição pura. Eu sei que isso
não vai falhar porque eu tenho um projeto para um
jogador. Eu sei que configurei meu controlador
bp player como o controlador de player que meu projeto está usando aqui
nas configurações do meu projeto. Portanto, neste caso em particular, há problema em não verificar se tive sucesso
nessa casta ou não. Eu sei que
vai ter sucesso. Vou clicar com o botão direito do mouse
em converter para conversão pura. Isso eliminará
esses pinos de execução, mas ainda consigo
entrar nele assim. E acesse meu inventário, o que é muito fofo. Então, aí está meu mapa. próximo que
eu quero fazer é sair
daqui e fazer uma busca para encontrar. E o que esse nó me permite
fazer é encontrar uma determinada chave, determinado valor, dada uma chave de entrada. Então, a chave que eu quero procurar aqui é o homem, uma poção. Então, vou arrastar e
soltar isso na minha entrada. Essa é a chave que
eu vou
procurar dentro deste mapa. E isso vai gerar
o valor disso. Mas eu quero incrementar isso. Quero incrementar isso toda
vez que sobrepusemos isso. Então, vamos começar com três poções de Amanda. Quando eu sobreponho
isso, quero que você simplesmente incremente esse valor. Então eu vou
sair daqui. Isso vai revelar
meu valor de três. Arrastando isso, vou digitar em incrementos. Portanto, esse nó aqui vai incrementar
automaticamente esse 3-4. Nesse caso. Vou passar isso
por aqui desse jeito. Mas não basta
incrementar isso. Eu ainda preciso adicionar
tudo isso de volta ao meu mapa aqui. Então, o que vou fazer é sair
do meu
inventário mais uma vez, digitar o anúncio, entrar no mapa de
utilitários, adicionar. Então eu vou fazer isso. Queremos adicionar às
nossas poções de maná. E o que queremos acrescentar?
Esse valor é atualizado. A quantidade será
inserida aqui embaixo. Então, isso vai definir uma nova quantidade para
nossas poções de maná. E então o que eu vou
fazer é sair daqui. Queremos
imprimir isso na tela para que
possamos realmente
ver isso funcionando. E eu vou arrastar
esse tipo
para trás , acrescentar. Vamos imprimir alguns
textos na tela. Então, a primeira coisa que
vamos
imprimir é o nome do item, neste caso um homem, uma poção. Então eu vou colocar
um espaço igual a espaço. E a terceira coisa que
quero incluir aqui é que os valores são valores
atualizados. Se eu arrastar isso para baixo
a partir da saída de nossos incrementos, poderemos gerar esse valor. Então, isso mostrará como homem uma poção é igual à quantidade
atualizada. E por último, mas não menos importante, queremos destruir esse ator. Então, saindo daqui,
vamos digitar Destroy Actor. Isso. Vamos compilar os scripts e salvar. Agora. Tudo isso é muito bom, mas ainda não adicionamos nenhuma proporção de homens
ao nosso nível. Então, vamos fazer
isso rapidamente voltando
para nossa guia de nível. Arraste e solte apenas alguns
deles aqui desse jeito, e arraste e arraste. E aqui vamos nós. Mais uma vez, lembre-se de que estamos começando com três homens por poção. Então olhe para o
canto superior esquerdo aqui, e agora temos 45,6. Eu diria que isso
está funcionando muito bem. Agora, no interesse do tempo, voltaremos ao
nosso controlador bp player onde configurei um script para diminuir
do nosso inventário. Essa é praticamente a mesma
configuração que eu tenho no meu homem, uma planta de poção. No entanto, a única diferença
aqui é que estou diminuindo do nosso inventário
em vez de incrementá-lo. Mais uma vez, estou
usando minha chave aqui, minha chave de poção Amana, embora eu esteja usando um M
maiúsculo, um P maiúsculo, ainda está falando com esse homem, uma chave de poção aqui. Então esse é o que eu estou encontrando. E então eu estou simplesmente diminuindo partir disso e, em seguida, adicionando isso diminuiu uma montanha de volta aos meus valores de estoque atualizados. Então, estamos usando a chave
para ajustar o valor. Então, apenas mostre isso. Eu tenho esse controlador BP
definido como meu objeto de depuração aqui. Então, estou começando
com três 456. E eu deveria ter alguma
fonte vermelha para diminuir isso, vou pressionar 7543, et cetera, etc. Então aí está. Um contêiner de variável de mapa
para pares de chaves e valores. Procure pela tecla
e, em seguida, você pode incrementar
ou diminuir o valor. É ótimo para algo como
inventário, como esse. Tudo bem pessoal, isso
serve para oferecer este. Nos vemos na próxima.
73. Enum HiRez: Bem-vindo. Neste vídeo, nosso objetivo
é aprender sobre enums, que é a abreviação de
uma enumeração. Esse é outro tipo de
lista que podemos criar e usar para ajudar a orientar a lógica
em nossos scripts de blueprint. Na verdade, é uma das minhas variáveis favoritas
para criar e usar. Então, o que é uma enumeração? enumeração é um tipo de dados que consiste em um conjunto
de valores nomeados. É uma lista de
rótulos, por assim dizer. Agora, isso é algo
que vamos
criar aqui em nosso navegador de
conteúdo. E então vamos
usá-lo dentro
do nosso ThirdPersonCharacter
Blueprint. Então, na sua pasta de scripts
Blueprints, esse será
um lugar sensato para criar uma enumeração. E se clicarmos com o botão direito do mouse
e algum espaço vazio, temos essa categoria de
plantas. E em nosso pequeno menu suspenso,
temos a capacidade de criar uma enumeração, diz na
dica de ferramenta, e a enumeração é uma lista de valores nomeados. Vá em frente e clique aqui, e vamos dar
um nome a ele imediatamente. Vou chamar isso de estado de saúde
sublinhado E. Agora eu sempre gosto de nomear minhas enumerações criativas
com sublinhado E. Mas, novamente, você pode usar uma convenção de nomenclatura
de sua escolha. E então eu vou clicar duas vezes
sobre isso para abri-lo. Agora, dentro daqui,
vamos clicar nesse botão de
adição de enumerador uma, duas, três vezes
para permitir que adicionemos alguns rótulos dentro daqui
que possamos usar. Então, vou
sobrescrever cada um deles. O primeiro se
chamará Super. O segundo vai
se chamar, ok, você pode fazer esses rótulos,
o que você quer? E meu terceiro aqui
será chamado de ferido gravemente. Então, esses serão
essencialmente meus três
estados de saúde distintos que
vou usar para conduzir alguma lógica dentro do meu projeto de
personagem em terceira pessoa. Eu vou salvar isso
e então eu posso encerrar isso,
não preciso mais dele. E vou entrar no
meu
Projeto de Personagem em Terceira Pessoa. Se você esqueceu onde
está
na pasta Blueprints em terceira pessoa, clique duas vezes nesse
cara para abri-lo. Uma vez dentro daqui,
vamos criar uma variável. Então, vou criar uma variável
simplesmente clicando neste botão de adição. Gosto de fazer isso de
várias maneiras para mostrar maneiras
diferentes de
criar variáveis. E eu vou chamar isso de estado de saúde sublinhado
E. Vou nomear isso exatamente da
mesma forma que nomeei minha enumeração. Vou clicar em Enter aqui. Agora, no painel Detalhes, vou alterar
o tipo de variável. Agora, embora eu tenha nomeado
isso exatamente da mesma forma que a minha enumeração
que acabei de criar, eu poderia ter batizado isso como eu
quisesse. No entanto, quero mapear isso para ficar sob o tipo de variável. Meu E sublinha a saúde, opa, E sublinha a enumeração
do estado de saúde. Aí está, ali mesmo. Então, estou dizendo a essa
variável que estou criando, que eu quero ser desse tipo. Agora, quando clico em Compilar aqui, posso ver que posso alterar valor
padrão do
meu estado de saúde para super, ok ou mal. E como essa é uma
variável, eu posso mudá-la. Eu posso mudar de
super dois, ok
ou mal, e depois usar esse
status para impulsionar alguma lógica. Tudo bem, então
vamos criar nosso roteiro inicial aqui. Vou começar
criando eventos personalizados. Vou clicar com o botão direito do mouse
em algum espaço vazio, digitar personalizado, vamos adicionar
um evento personalizado que é um evento que
podemos nomear e chamá-lo
quando e onde quisermos. E eu vou aumentar o zoom aqui
porque estou muito longe. Vou chamar isso de
atualiza o estado de saúde. E então eu vou trazer minha variável de enumeração aqui,
mantendo pressionada a tecla Control, clicando com o botão esquerdo e arrastando. E o que podemos fazer com
esse cara é sair
disso e
trazer um nó de comutação. Se eu começar a
digitar switch, isso
trará um nó de
switch que me permitirá alternar com base no valor
dessa enumeração. Então, aqui vamos, ative
o status de eHealth. Você pode ver os
pinos de saída aqui,
digamos “super”, “ok” ou “machucados” gravemente. Esses são os
rótulos exatos que eu tenho aqui dentro dessa
enumeração, muito bem. Ou ela mal, se eu inserisse uma enumeração diferente aqui, diria
que
ligue o que quer que fosse. E teria
pinos de saída correspondentes a quaisquer rótulos que estivessem dentro
dessa enumeração. Agora, isso é ótimo
porque,
dependendo do valor dessa variável, ela será acionada a partir
de pinos diferentes aqui. E o que isso nos permitirá
fazer é ajustar algo, neste caso, sobre
nosso personagem. O que vou fazer é
ajustar a velocidade de movimento do
nosso personagem com base em nosso estado de saúde, seja ele super
bom ou gravemente ferido. Então, vou trazer o componente de movimento do meu
personagem. Arraste e solte aqui. Dentro do componente de
movimento do meu personagem, tenho esse parâmetro
chamado velocidade máxima de caminhada. É isso que controla a
rapidez com que meu personagem pode se mover no nível que vou
arrastar para fora daqui e digitar a velocidade máxima de caminhada. Quero poder
definir minha velocidade máxima de caminhada. E eu vou
duplicar esse Controle C, Controle V, Controle V. E eu posso conectar esse mesmo Componente de Movimento de
Personagem em todos os três. Não importa se
você tem um desses. Ou eu poderia arrastar e soltar meu personagem movendo
os componentes separadamente. Eu poderia ter três desses e conectá-los separadamente
em cada um dos alvos, não
importa como você
faça isso. Eu vou fazer isso,
assim, e assim, deixe-me clicar duas vezes nele para trazer um nó de redirecionamento. E agora vou definir minha velocidade máxima de caminhada com
base em se minha saúde está muito
boa ou doendo gravemente. Se for ótimo, vou dizer que minha saúde vai
me permitir andar na
velocidade máxima dos anos 2000? É isso. OK. Eu direi que está de volta no
meu padrão de 500. Se eu me machucar gravemente, vou ajustá-lo para 100. Agora mesmo. Está tudo muito bem. Mas não estamos chamando esse evento
personalizado em lugar nenhum. Precisamos de uma maneira de chamar
e desligar esse evento personalizado para que possamos definir nossos
desejos máximos com
base no valor dessa enumeração. Precisamos agora de uma maneira de mudar esse status
de definir isso. Então é isso que esse
próximo roteiro vai ser. Tudo bem, então vou
começar com um evento de entrada. Vou clicar com o botão direito do mouse em
algum espaço vazio e farei uma busca pelo teclado h porque
usaremos esse evento de entrada
para modificar nossa saúde. E apenas alguns ajustes
que precisamos fazer aqui partir de coisas que
mudamos nos vídeos anteriores. Selecione sua variável
flutuante de saúde aqui, vamos
alterá-la de volta para 1,0, o que será igual a 100%. E então, com nossa função de saúde
modificada, foi criada em
nossa seção de funções do curso, quando estávamos começando a criar uma função Você pode descobrir como
fizemos isso lá. Também vou fazer
algumas modificações porque
nessa
seção do curso modificamos nossa função de
saúde modificada. Vou clicar com o botão esquerdo
e arrastar isso cima da nossa
tecla de pressão aqui. Recebemos essa entrada
como referência passada. Definimos isso como um
passe por referência. Em algum momento,
vamos desfazer isso. Então, com esse nó selecionado
na seção de entrada, você pode verificar isso,
porque queremos inserir algo, eles estão
codificados, por assim dizer. E eu também preciso modificar algumas
coisas sobre essa função. Então, vou clicar duas vezes
sobre isso para abri-lo. Atualmente, temos esse incremento lá. Eu vou deletar isso. Então, o que queremos
fazer aqui é que
temos um valor de saúde que vamos colocar
aqui de volta em nossa função. Vamos dizer que toda
vez que pressionarmos isso, diminuiremos zero ponto um,
essencialmente 10% de saúde. Então, essa será nossa entrada clicando duas
vezes aqui. Quando isso acontecer,
vamos
subtrair isso, ou melhor, vamos adicionar isso ao
nosso valor atual de Saúde. Mesmo que seja
um número negativo, vamos adicionar esse número negativo
à nossa saúde atual. Então, vamos
considerar esse negativo 0,1. Vamos
adicioná-lo a esse valor,
que será igual a 0,9 ou 90%. E nós vamos produzir
isso. Vamos conectar
isso assim. Ainda podemos afirmar que,
se isso for maior do que, se for maior que zero, tocaremos um efeito sonoro
positivo. Se for menor que zero, vamos tocar um efeito sonoro
negativo. Então, está tudo bem. Portanto, certifique-se de que você está modificando função de
saúde está atualizada
para ter essa aparência. Vou compilar
isso imediatamente. E voltando ao nosso gráfico de eventos, vamos
continuar avançando aqui. Então, vamos dizer se nossa saúde
atual saindo
daqui é maior ou igual a 0,75. Essencialmente, se tivermos três quartos de
saúde ou mais, vamos trazer
qualquer ramo. Isso é verdade. Vamos definir nosso estado de
saúde aqui. Então, vamos arrastar
e soltar isso na verdade para colocar qualquer centro. Vamos dizer que
se sua saúde é de três quartos ou mais, sua saúde agora está
rotulada como super. Se isso for falso, vamos trazer outro nó
de ramificação. E vamos fazer
outra avaliação aqui. Então, saindo daqui,
vamos fazer uma busca por outro
maior ou igual a. Então, se for
maior ou igual a 0,26. Então, essencialmente 26%. Se estiver entre esses
dois intervalos, 26 a 75%. Se isso for verdade, vamos
controlar C e controlar V
nesse cara algumas vezes. Então isso é verdade. Está entre
essa faixa de 26,75% de saúde. Vamos dizer que
sua saúde está bem. E se for falso, você tem 25% ou menos de saúde. Vamos dizer que você está ferido. Mal. Então, está
tudo bem. Obviamente, você vê que
isso não está conectado. E a razão pela qual isso ainda não está
conectado é
porque eu
quero colocar uma corda de impressão aqui. Vamos imprimir
cordas para que possamos realmente ver nossa
saúde atual expelida na tela. Então, vou
converter esse flutuador
em uma string
conectando-o assim. Está tudo muito bem. No entanto, sempre que estou trocando o valor da minha variável de
estado de saúde aqui, estamos fazendo com que isso pareça aumentar nossa velocidade
máxima de caminhada, mas ainda não estamos considerando as vantagens
do cliente. Então, na verdade, temos que
terminar essa parte conforme necessário, chamando onde esse evento
personalizado deve ser iniciado. E podemos fazer isso
clicando com o botão direito do mouse em algum espaço vazio e digitando as datas de atualização. Aí está, a função de chamada
atualiza o estado de saúde. Esse é o nome exato disso. Nós vamos chamar isso. Isso exigirá que esse evento
personalizado seja acionado. Então vamos ver tudo bem. Para que esse estado de saúde
foi atualizado? Muito bem. Ou mal, dependendo do
que está configurado agora,
vamos impulsionar a velocidade de movimento do nosso
personagem. Então, vamos compilar
isso, para garantir que tudo esteja ótimo. Esqueça de salvá-lo. Eu vou meio que esconder
isso aqui. Vamos jogar esse nosso objeto de depuração como nosso
ThirdPersonCharacter e realmente
selecionar os componentes
móveis do meu personagem. Portanto, nossa velocidade de
caminhada padrão começará em 500. Embora nosso estado de saúde esteja definido
por padrão como Super, não
estamos avaliando isso ainda não
estamos avaliando isso para determinar nossa velocidade
máxima de caminhada. Então saiba que quando eu começar a me
mover por aqui, estaremos nos movendo
em nossa velocidade de 500. Então, trazendo isso de volta. Ok, você pode ver
que eu estou me movendo velocidade de
aproximadamente 500. Vou pressionar
minha tecla H aqui. Agora com 90% de saúde, o que ainda é ótimo, então minha velocidade máxima de caminhada
agora será de 2000. Você pode me ver me
movendo muito mais rápido. Vou pressionar a tecla
H novamente até 80% de saúde, 70% de saúde. Agora estou nessa faixa correta, então será
reduzido para 500. Eu ainda não estou bem, alcance. Então, deixe-me continuar pressionando
a tecla H aqui para esgotar minha saúde agora para 20% de saúde. Então agora estou gravemente ferido. Então isso é o mais rápido que eu
posso correr, por assim dizer. Esse é um ótimo uso de
uma variável de enumeração, determinando seu
estado de saúde e, em seguida, você pode modificar algo
sobre seu personagem. Então, com isso, quais são alguns
outros usos que você pode imaginar? Bem, deixe-me jogar
alguns deles lá fora. E se você tivesse uma enumeração
de armas diferentes. E dependendo da
arma que você equipou,
digamos, uma espada, uma adaga, um bot, sua velocidade de movimento ou até mesmo seus
ataques disponíveis podem muito bem. E quanto a qualquer NUM para
diferentes classes de caracteres? Feito de guerreiro, etc. e dependendo da classe de seu
personagem, certas armas podem ou
não estar disponíveis para você. Ou que tal uma enumeração para diferentes estados ou eventos do jogo? Pense em um jogo
como Rocket League. Você pode ter uma enumeração
de coisas como jogabilidade, gols marcados, intervalo, etc. E, dependendo da configuração
dessa enumeração, você pode fazer com que coisas
diferentes aconteçam, como mostrar um cena de um gol após um gol para marcar. Tudo bem pessoal,
isso é suficiente para oferecer este vídeo, nos vemos no próximo.
74. Estruturas: Bem-vindo. Neste vídeo, nosso objetivo é aprender e
demonstrar o uso
do tipo de variável de
estrutura muito útil. Agora, esse é um tipo
de variável que eu crio o tempo
todo em meus
próprios projetos de jogos. Com um traçado, você
pode armazenar vários tipos de dados relacionados
à mesma coisa em
um único contêiner. Então, vamos seguir em frente e
criar uma variável de estrutura. Aqui, na minha pasta de scripts
Blueprints, vou clicar com
o botão direito do mouse em
algum espaço vazio vou clicar com
o botão direito do mouse em
algum espaço vazio na categoria Blueprints,
no pequeno menu suspenso logo abaixo da enumeração, temos a estrutura também conhecida um tipo de variável de estrutura
que podemos criar. Então, vamos seguir em frente
e criar isso. Vou dar o nome de
STR, sublinhar feitiços. E então vamos
clicar duas vezes nesse cara para abri-lo. Tudo bem, vamos definir o que é
uma variável de estrutura. Portanto, uma estrutura ou
variável de estrutura é essencialmente uma variável que pode conter
muitas outras variáveis dentro dela. Então, essencialmente, estrutura os dados
agrupados. Você pode pensar em uma estrutura como
um armário de armazenamento gigante com todas as outras caixas dentro
desse armário de armazenamento como variáveis
individuais. Cada caixa dentro do
armário de armazenamento tem seu próprio conteúdo. Podemos então entrar no
armário de armazenamento. Nesse caso, estruturamos e retiramos o conteúdo de uma caixa, neste caso, uma
variável conforme necessário. Agora, esses traços são
ótimos para manter variáveis que se unem de
alguma forma, forma ou forma. Então, temos uma estrutura
que vamos
criar aqui chamada feitiços. Pense em todas as diferentes propriedades de
feitiços que poderíamos conter em 11 tipos de
contêineres. Aqui, podemos adicionar o
nome do feitiço, o tipo de efeito, o elemento ao qual ele está
associado. Talvez um homem caro,
talvez um calmante. Todas essas coisas estão
associadas a um determinado feitiço e
seria ótimo se
pudéssemos contê-las com tudo em um único ativo. Bem, um derrame é um ótimo
lugar para fazer exatamente isso. Tudo bem, deixe esse cara
aberto por enquanto. Na verdade, vamos criar mais
dois ativos de enumeração primeiro, antes de depois
voltar à nossa estrutura. Então, volte para o editor
principal aqui em, na pasta
Blueprints de scripts. E vamos criar
essas duas enumerações. Pode clicar com o botão direito do mouse no menu suspenso de
plantas. Vamos criar
uma enumeração. Vou chamar esse de elementos de feitiço
sublinhado de E. E então eu posso clicar com o botão direito sobre isso imediatamente
e duplicá-lo. controle D também o
duplicará, porque também será um enum e eu vou
chamá-lo tipo de
feitiço de sublinhado E. E então podemos clicar duas vezes em cada um deles para abri-los. Então, os elementos do feitiço estão abertos. Vamos também abrir os
tipos de feitiços. Tudo bem, então, em tipos de
feitiço, vou adicionar
três entradas aqui. Começaremos com tipos de feitiços, 1234
tipos de feitiços. Eu vou
causar danos diretos na tela chamada número dois, aqui
vai ser a área de efeitos. A terceira será,
digamos, cura. Claro. Vamos salvar isso
e então você pode
fechar aquele cara. Para elementos de feitiço,
adicionaremos três entradas aqui, 123, e essas não serão nenhuma. Fogo. E meu próximo
aqui será vento. E, na verdade, vamos adicionar mais um. Vamos fazer uma água também. Água. Qual bandeja? Potter. Vamos salvar isso e então podemos encerrar isso. Agora, aqueles criados,
precisamos
voltar para nossa estrutura
e
adicionaremos algumas novas variáveis
por meio disso. Novamente, pense em uma estrutura como um contêiner que pode
conter muitas variáveis. Vou apenas deslizar
isso para a esquerda aqui. Então, vou adicionar, vamos ver, 1234567 se eu estiver contando corretamente, então vamos acrescentar, acredito
que seja sete ali, 0 a seis,
**** é igual a sete. Então, meu primeiro aqui, vou chamar feitiço, nome. E isso será do tipo
variável text. Vamos lá, mensagens, lá vamos nós. O segundo aqui será
chamado de tipo ortográfico. E é aqui que podemos encaixar
na sala que acabamos de criar. Podemos entrar na UE
e encontrá-la aqui embaixo. Embora você também possa
pesquisá-lo ali em cima, você pode ver
os tipos de grafia aqui. seguir, vamos
chamar elementos de feitiço. E, na
nossa nova categoria, vamos configurá-la
para soletrar elementos. seguir, chamaremos
isso de gerenciar custos. E opa, aquele
não veio direto para cá. Vamos voltar para lá,
para nossos elementos de feitiço aqui. Em enumera elementos de ortografia. Vamos lá, cara dos custos. Vamos definir
isso como um número inteiro. Vamos nos refrescar em seguida. Vamos configurar isso para ser um carro alegórico. Em seguida, temos valor do efeito
mágico que
pode ser danificado ou curado. Isso é o que estou me referindo a
você por valor de efeito mágico. E ele definirá isso
como um número inteiro. E por último, mas não menos importante, eu lançei S f x. Então esse seria
o efeito sonoro associado ao lançamento de um feitiço. Então, vou configurar isso
para ser uma onda sonora. Fará referência a
objetos de ondas sonoras e depois outra coisa. Só para mostrar aqui,
poderíamos definir isso como uma matriz, para que possamos realmente ter uma variedade de efeitos sonoros diferentes
que queremos tocar. Então, isso é meio legal lá. Tudo bem, vamos em frente
e salvar isso. E eu estou vendo esse
aviso aqui em cima. E se passarmos o mouse sobre
ele, ele diz que você não pode
analisar esse valor. Você tem que ter algo
diferente de nada lá. Então, vamos expandir isso e
adicionar alguns valores
padrão para isso. Podemos adicionar esses
valores padrão não aqui embaixo. Aqui temos essa guia de valores
padrão transmitindo efeitos s plus, plus, e deixe-me
defini-los como sendo. Vamos lá, bola mais escura. O que
abrimos
as janelas do Dr. Bowles e adicionaremos rótulos de dados. Janela fechada. Sim, realmente não importa
o que você coloca lá, apenas tem dois efeitos
sonoros diferentes. Então, aí está nossa estrutura. Estamos vendo
que isso é bom. Podemos seguir em frente e
clicar em Salvar lá. Tudo bem, com tudo isso feito, vá para o seu
ThirdPersonCharacter. E se você esqueceu
onde esse cara está
mais uma vez na pasta Blueprints em terceira
pessoa, clique duas vezes nesse
cara para abri-lo. Então, dentro daqui, vamos fazer
uso dessa estrutura. Precisamos criar uma variável. Então, vá para a seção da variável my
blueprint, clique no botão Mais, e vamos
chamá-la de meus feitiços. Vamos mudar
o tipo de variável
aqui embaixo de um booleano para nossos feitiços de estrutura, STR,
sublinhado. E aí podemos
encontrar nossa estrutura. Está na categoria de
estrutura. E se eu entrar
no painel de detalhes, posso fazer isso em
uma variedade de estruturas. Então, vou mudar
o tipo de contêiner aqui de único para matriz. Eu preciso compilar aqui. E quando eu faço isso, posso adicionar várias entradas
à minha matriz de feitiços aqui. Então, vamos clicar uma e duas vezes e agora dar uma olhada. À medida que as expando, tenho acesso para alterar todas essas propriedades diferentes que configurei aqui na minha estrutura. Então, aqui na minha estrutura, eu configurei campos para inserir
um nome de texto. Eu entrei. Eu
entrei em campos para definir um
tipo de feitiço, elemento , abordagem
humana, todas essas
coisas e aqui elas estão disponíveis para mim agora no meu
BP ThirdPersonCharacter. Então, vamos definir alguns deles. Vou dizer que meu
primeiro nome de feitiço aqui será chamado de bola de fogo, tipo de
feitiço, dano direto,
claro, elemento mágico. Vou clicar nesse
menu suspenso e ver todas as opções que
defini na minha ema. Novamente, para nosso feitiço, digite
aqui e elemento de soletração. Nós os associamos a enums, aqueles chamados de listas que
criamos anteriormente. Então, soletre o elemento, vamos
colocá-lo em fogo. Man Acosta
os definirá como cinco, resfriados até 0,5 valor de efeito
mágico de costa 25. Nesse caso, quero dizer
que 25 é dano direto. Para minha próxima entrada
aqui, soletre o nome. Eu vou configurar
isso para ser uma cura. Esse tipo de sino será alterado
para elementos de feitiço de cura. Bem, nenhum
desses elementos vai
deixar isso como nenhum. Os custos gerenciados dirão dez, esfriar 3,8, valor do
efeito mágico 50. E então também podemos definir os efeitos sonoros
para cada um deles. Esqueci de fazer isso com
a bola de fogo. Então, expanda cada um deles. Sim, você pode mudar
os efeitos
sonoros para deixar lá os padrões
para sua bola de fogo, mas talvez para seu efeito sonoro de
cura, você queira algo diferente. Então, vou experimentar um chamado
ship VR shape scale up. E eu farei o mesmo com
essa outra nave, também aumentarei sua escala. Eles estão nas pastas de
conteúdo do motor. A propósito, se você esqueceu como acessar as pastas de conteúdo
do motor, clique no
pequeno ícone de engrenagem,
mostre o conteúdo do mecanismo. Tudo bem, então tudo isso está
configurado muito bem. Vá em frente e compile
isso imediatamente. Tudo bem, então com toda essa configuração, como podemos usar
essa variável atingida? Como podemos acessar
essa variável de ataque e extrair as informações que queremos extrair. Bem, para começar, aqui
temos que adicionar isso ao nosso gráfico. Então, vou
clicar com o botão esquerdo e arrastar. Vou buscá-lo. E isso está retornando uma matriz porque temos dois
elementos aqui, uma bola de fogo com todas
essas propriedades. E nosso índice um aqui
é nosso Q ou feitiço. Então, temos o índice 0, nosso firewall e o índice um em nossa matriz,
o feitiço de cura. Então, podemos arrastar até
isso e digitar gets, podemos obter uma cópia aqui. E dependendo do
valor que inserimos aqui, ele está procurando por um número inteiro. Podemos inserir 0 para
retornar nosso índice de bola de fogo 0, ou podemos inserir um para retornar nosso curioso
cinturão Esse é o índice um. Então é assim que isso funciona. Então, o que queremos fazer aqui
é clicar com o botão direito do mouse neste pino. Se eu clicar com o botão direito nele, posso dividir o Struct Pin. Agora veja como esse nó se
transforma quando eu faço isso. Bam. Agora eu ainda tenho
essas entradas inteiras, então eu ainda posso definir, eu quero estar procurando
o índice é 0 aqui, minha bola de fogo ou índice
um aqui para cura. Mas agora eu posso gerar todas
as diferentes propriedades
relacionadas a esse determinado índice. Então eu posso descobrir que o índice é 0, o nome do feitiço da bola de fogo, o dano direto,
blá, blá, blá. Agora, observe aqui que
você pode voltar e
fechar tudo
clicando com o botão direito do mouse em
qualquer um desses pinos. E eu posso recombinar
o Struct Pin. Mas neste caso,
queremos clicar com o botão direito do mouse sobre isso e dividir o pino batido. Agora, algo que vale a pena notar aqui é que, na verdade,
existem muitos traços a serem encontrados ao trabalhar com scripts de
diagramas. E isso é um
pouco à parte, mas vale
ressaltar aqui. Vou clicar com o botão direito algum espaço vazio e digitar em
algum espaço vazio e digitar get actor transform. Isso resultaria na transformação
do nosso ThirdPersonCharacter. Agora, se eu clicar com o botão direito do mouse neste pino aqui
em cima, posso dividir o Struct Pin de forma transformada que
consiste em dados de localização, rotação e escala. Mas até mesmo algo parecido
com a localização, certo? São três valores
em um no vetor X, Y e Z que determinam
nossa localização final. Esses são três valores flutuantes. Então, se eu
clicasse com o botão direito sobre isso, eu poderia dividir o pino
batido também. Assim, você pode ver como
existem, na verdade,
vários nós em todo o
irreal que você pode fazer toda
essa divisão
e recombinação de pinos de estrutura,
algo assim. Um vetor é uma estrutura. Ele consiste em três variáveis
flutuantes. Então eu posso clicar com o botão direito sobre isso. Eu posso dividi-lo e
você pode recombinar. E até mesmo nosso rotador
aqui, que também
consiste
em três valores flutuantes, para que possamos dividi-lo. Sim, vale a pena notar, clique com o botão direito do mouse em
recombinar, Opa, não promova. Clique com o botão direito, recombine,
clique com o botão direito em Tudo bem, voltando ao tópico aqui, vamos fazer uso de nossa estrutura. Então, eu vou deletar isso. Vou trazer
uma chave do evento. Então, vamos clicar com o botão direito do mouse
e algum espaço vazio. Vamos tentar algo
na chave nove. Claro, por que não? Acho que não estou usando
a tecla nove em nenhum lugar. Vamos arrastar
nosso tipo de feitiço até aqui, levar esses dois caras
até aqui, do tipo soletrado. E eu vou
procurar por um switch. Do lado da facilidade de feitiço. Vamos fazer
algo dependendo do tipo de feitiço
que
estamos especificando aqui. Então, o que vou fazer é
retirar os elementos do meu feitiço e ativar
os elementos soletrados assim. E diremos que, se
estivermos causando danos diretos, descobriremos
quais são nossos elementos aqui. E o que vamos
fazer então é imprimir uma sequência de caracteres. Vamos apagar
nosso fogo aqui e eu meio que vou recapitular isso. Quando eu terminar aqui. Faça isso, então vamos tirar nosso valor
de efeito mágico. É como a quantidade de danos que
vamos causar aqui. Alerta de spoiler,
vou deixar isso como os 0 elementos aqui. Então, vamos
lançar uma bola de fogo, por assim dizer, sem nenhum tipo de
efeito. Mas tirando proveito de cotações
aéreas, saia daqui. E na verdade, ainda não vamos conectar
isso lá. Vou me arrastar para fora
daqui e fazer um acréscimo. Vamos imprimir
algo na tela. Nosso a
será o espaço que você distribuiu. R, B será o valor
do efeito de feitiço que converterá esse
inteiro em uma string. Vamos adicionar
outro alfinete aqui. Vamos inserir o nome
do feitiço para C. Então você distribuiu 25 bolas de fogo. E a última palavra aqui, vamos adicionar outro
pino, será dano. E eu vou adicionar
um espaço antes disso. E isso vai
ficar muito bem. Por último, mas não menos importante, vamos sair daqui. Vamos tocar, um som, que
faremos é tocar som 2D. Que som você
quer tocar? Bem, vamos pegar um dos nossos diferentes efeitos em cascata
aqui. Arraste-se disso. Vamos pegar uma cópia. Vamos
arrastar isso até aqui. Conforme especificamos, lembre-se do nosso feitiço de
bola de fogo aqui, temos dois efeitos sonoros de
lançamento possíveis, elemento 0 ou elemento um. Então, vamos escolher um aleatoriamente. Então, vou arrastar para trás
daqui e digitar número inteiro aleatório
no intervalo. Nós vamos entre 01. Então essa
será nossa configuração final,
fazendo uso de nossos traços aqui. Tudo bem, então,
emoldurando isso muito bem.
Acho que entendi. Tudo bem, vamos
compilar para garantir que o
script esteja pronto. Salve, vamos entrar e jogar e pressionar que
há nove teclas. Ei, configurando nosso
objeto de depuração, pulando para trás. Aqui vamos nós. E aqui vamos nós. Precedente Nike, você deve ver
alguns textos aparecerem aqui. U del 25, danos causados pela bola de fogo. Eu sei que não há espaço
entre bola de fogo e danos. E à medida que eu expando
isso novamente, novamente, você deve ouvir um
desses dois efeitos sonoros
tocar aleatoriamente. Tudo bem, então eu sei que essa
foi uma configuração muito básica, mas vou
desafiar você a tentar expandir esse
tipo de configuração. Agora, eu quero que você
os experimente sozinho, garanta que você possa lançar um feitiço somente se
tiver jeito suficiente. Não estamos fazendo uso de
nossas monocotiledôneas aqui. Portanto, certifique-se de tentar outra
coisa. Certifique-se de que você
não pode lançar novamente a menos que você se acalme, a
duração expirou. Experimente isso, tente adicionar
um emissor ou sistema de
partículas a um
feitiço que você lança aqui. Além disso, tente especificar
uma localização vetorial na qual esse feitiço deve gerar
esse determinado sistema de partículas. Então, essas são todas
as coisas, dado um pouco do conhecimento
prévio deste curso, eu gostaria que você prosseguisse e
tentasse agora terminar isso, vamos falar também sobre algum outro
possível uso do atacado. Imagine que você tenha atingido um sistema de
missões. Você pode especificar um
nome, um local, inimigos a serem gerados ou derrotados e talvez
tipos de recompensas e quantidades que possam estar
contidos em uma estrutura. Ou talvez
os atributos básicos dos caracteres possam estar todos
contidos em uma estrutura. E você pode especificar
coisas como nome, velocidade, saúde, todos
esses tipos de coisas. Tudo bem pessoal, isso
serve para oferecer este vídeo sobre uma estrutura
muito útil. Nos vemos na próxima.
75. Visão geral de controle de fluxo: Tudo bem,
finalmente chegamos ponto do
curso em
que é hora de falar
sobre os nós de controle de fluxo. Agora, eu sei que você já
me viu até agora
no curso usar muitos
desses nós de controle de fluxo. Mas ainda não tivemos uma discussão oficial sobre isso porque há muitos tópicos
a serem abordados. Então isso acaba agora. Aqui começa nossa conversa sobre o nó
de controle de fluxo. Portanto, nosso objetivo neste
vídeo é simplesmente obter uma visão geral e
entender o que são os nós de controle de
fluxo e sua finalidade nos
scripts, um propósito mais profundo. Também daremos uma olhada rápida nós
comuns de controle de fluxo usados em scripts. Vamos começar definindo
quais nós de controle de fluxo, até mesmo nossos nós de controle de fluxo são nós que permitem
controlar o fluxo de execução
com base nas condições. Eles avaliam algumas entradas de dados. E, dependendo das entradas, eles determinaram
qual execução de
pinos de saída é acionada ou quando
uma execução de disparos de
pinos de saída disparos de
pinos controlam
essencialmente
o fluxo de execução. Por exemplo, temos
esse nó de ramificação aqui. Nós podemos fluir para ele. E então, com base em
uma entrada de condição, podemos fluir para fora
da ramificação verdadeira se a condição for verdadeira, ou podemos fluir para fora
da ramificação falsa se a
condição for falsa. Agora, os nós de controle de fluxo têm
uma coloração cinza na parte superior. E, como mencionamos anteriormente
em nossa seção de macros, os nós de controle de
fluxo
são macros e você pode ver isso simplesmente
clicando duas vezes em uma delas. Vou clicar duas vezes
no nó do meu portão aqui. E isso abrirá
minha biblioteca de macros padrão. São macros, nós de
controle de fluxo são macros. Agora, onde podemos encontrar vários desses nós de controle de
fluxo? E aqui estão algumas
das mais comuns que você encontrará nos scripts. Eu tenho tudo isso no meu plano de
níveis como uma visão geral rápida de muitos
dos mais comuns. Bem, se você está procurando
por alguns deles, obviamente
você pode
pesquisá-los por nome, clicando com o botão direito do mouse e pesquisando-os pelo título aqui. Também estão localizados no
menu do botão
direito, aqui em Utilitários. E então, na seção de serviços públicos, você pode ficar sob controle de fluxo. E é aí que
muitos deles residem. Agora, vale a pena notar aqui que
vou lançar esse nó de seleção que
não tem uma faixa cinza. Não é oficialmente
uma carga de controle de fluxo. Também vou incluí-lo
nesta seção porque ele meio controla o fluxo
de dados que é produzido com base nas entradas do índice. Então, em certo sentido, é uma espécie de nó de controle de
fluxo. É por isso que eu vou
incluí-lo também. Nó muito útil para conhecer, aliás, mais algumas coisas a saber sobre os nós de
controle de fluxo. Muitos deles têm teclas de atalho e eu incluí nos comentários do
nó aqui. E assim você pode ver
com um nó de ramificação, se você pressionar a tecla B, clicar com o botão esquerdo, você
trará uma ramificação. Esses são truques muito úteis. Eu recomendaria
que você
conhecesse porque você usará esses
nós o tempo todo. Além disso, os nós de controle de fluxo são úteis para
bloquear ou restringir quando ocorre uma área do script. Eles também são úteis
para determinar qual parte do script
acontecerá a seguir. Então, isso é algo que você deve
saber sobre os nós de controle de
fluxo
que estão no fundo de sua mente. Eles são úteis para determinar quando uma
área do script acontece qual parte do script acontece. Próximo. Um exemplo de qual script acontece a
seguir seria uma ramificação. Eu saio
do verdadeiro ou do falso? Um exemplo de quando
uma área de script acontece seria
com nosso nó de porta. E você pode aprender mais sobre isso no próprio vídeo
do gate node. Tudo bem pessoal, isso fará com que
todos os
quatro sejam a visão geral do controle de fluxo. Nos vemos
no próximo vídeo.
76. Ramo: Bem-vindo. Neste vídeo, nosso
objetivo é aprender como usar o nó de ramificação usando um cenário de porta
trancada extremamente comum como demonstração. Então, primeiro, vamos definir o
que é um nó de ramificação. Você já me viu usar vários
deles até agora. As ramificações são essencialmente uma codificação de instrução
if then. Eles servem como uma forma
simples de criar fluxo de base de
decisão a partir de uma
única condição verdadeira ou falsa. Agora, uma vez executado, o nó de
ramificação analisa o valor de entrada
do booleano anexado. Você pode anexar uma variável
booleana a isso ou
simplesmente codificar marcando ou
desmarcando as saídas. E então isso produzirá um pulso de execução abaixo
da saída apropriada. Então, se isso for verdade, e é isso que a marca de
verificação significa, sairá daqui. Se isso for falso ou não estiver marcado,
sairá daqui. Agora, mais uma vez, a
tecla de atalho para colocar isso em seu gráfico é simplesmente manter
pressionada a tecla B e clicar com o botão esquerdo. Agora, é
importante notar aqui que
já
usamos um nó de ramificação. Fizemos isso durante
a introdução da variável booleana. E fizemos isso dentro do
nosso ThirdPersonCharacter. Então, por que você não encontra seu
ThirdPersonCharacter. Você pode encontrar isso na pasta Blueprints em
terceira pessoa. Clique
duas vezes nele para abri-lo. E o que fizemos durante o vídeo
booleano foi que o fizemos. Então, quando inserimos a ação
saltada pela barra de espaço, avaliamos a condição de nossa variável
booleana can jump. E se fosse verdade, o que atualmente é verdadeiro por padrão, então podemos pular. Se for falso, não podemos pular. E podemos ver isso
simplesmente tentando jogar quando eu envio meu objeto de
depuração para lá. E mais uma vez, isso
está definido como verdade. E você pode ver isso passando o mouse sobre isso enquanto joga. E se eu pressionar a barra de espaço, você pode ver que de fato
eu estou pulando. Assim que eu soltar.
Lá vamos nós. No entanto, se eu mudar, Ken pulou para falso, pressionaremos a barra de espaço. Isso será avaliado como falso
e nada acontecerá. Então, vamos tentar isso. Pressionando a barra de espaço, você pode ver o fluxo
de execução morrer aqui porque isso é
avaliado como falso, que podemos ver
na pequena dica da ferramenta. Nunca havia como ir
além desse galho. Está interrompendo o fluxo de
execução logo ali mesmo. Tudo bem, vamos tentar
mostrar outro cenário aqui. Então, vou criar uma variável
totalmente nova na seção My Blueprint do ThirdPersonCharacter
Blueprint, clicando no botão de adição
na parte inferior aqui, vou chamá-la de “
hes key”. ponto de interrogação. E eu não vou compilar isso. E só para que você saiba aqui, vou deixar
essa chave como falsa. Eu não tenho a
chave imediatamente. Na verdade, quer saber, vou verificar se é
verdade, direi que sim, nosso personagem tem a chave. Então, vamos compilar esse salvamento. E então o que
vamos fazer é voltar para nosso navegador de conteúdo aqui, eu quero ir para a nossa seção de
diagramas. Temos nossa
porta giratória, criamos esse projeto é o projeto de
porta giratória quando falamos sobre as variáveis do rotador. você possa revisar esse vídeo se não tiver criado essa porta, vou clicar com o botão esquerdo
e arrastá-la para o meu nível imediatamente. Em seguida, vou clicar duas vezes
sobre isso para abri-lo. Vamos modificar nosso
script aqui um pouco. Então, o que eu vou
fazer é matar nosso personagem get
player aqui, aqui e
aqui, e aqui. Essa foi uma maneira que
acabamos de configurar
lá para verificar se era nosso ThirdPersonCharacter
sobreposto àquela porta. O que eu vou fazer
agora é
verificar se está pegando
esse broche de outro ator. Vamos lançar para
nosso ThirdPersonCharacter. Essa é outra forma
de verificar,
ei, quem é a coisa
que nos sobrepôs? E, novamente, estamos
marcando a caixa como o componente que
estamos verificando para sobrepor o
componente da caixa ali mesmo. Vamos
transferir isso. Só faremos
algo se fosse um ThirdPersonCharacter se
sobrepondo a nós. No entanto, não vamos abrir essa porta ainda, a menos que
descubramos que nosso
ThirdPersonCharacter tem a chave, se você lançar seu
ThirdPersonCharacter dessa maneira, ainda não
conversamos oficialmente sobre nós de fundição. Podemos acessar nosso ThirdPersonCharacter
e acessar quaisquer funções ou variáveis ou qualquer coisa parecida
que esteja lá dentro. Poderíamos chamar uma função de variáveis de
acesso, etc. Especificamente,
queremos sair daqui e descobrir que r tem a chave. Nós vamos conseguir,
nosso jogador tem a chave? Se você não vê isso, tentando fazer o que
acabei de fazer lá, certifique-se de que seu personagem em
terceira pessoa seja compilado após a criação
que tenha a chave booleana. Agora, mais uma vez, isso é verdade por padrão, é assim
que o configuramos. Então, vamos usar
isso como nossa condição. Se for verdade que nosso
jogador tem uma chave
, abriremos nossa porta. Com tudo isso no lugar.
Não vou me preocupar com essa
sobreposição de extremidades agora. Eu só estou preocupado com
a abertura dela. Vamos compilar isso. Vamos economizar e depois
vamos jogar isso. Tudo bem, para que possamos verificar se o script
R está funcionando, aqui é onde você pode
definir seu objeto de depuração. Se você tiver várias
portas ali, você pode dizer qual porta você está verificando para ver se está
funcionando. Tudo bem, vamos lá. Devemos ter essa
chave porque dissemos que é verdadeira por padrão,
esse booleano. E lá vamos nós, ele abrirá. Agora, deixe-me voltar ao
meu personagem em terceira pessoa. Eu vou mudar sua chave
para false, compile save. Vamos voltar para uma
porta giratória, clique em play aqui. E agora nosso personagem
não tem a chave. Então, vamos em frente e você verá que estamos nos
aproximando daquela porta. Você pode ver essa
sobreposição acontecendo, mas está interrompendo o fluxo de execução
aqui mesmo em nossa filial. Tudo bem, voltando ao nosso ThirdPersonCharacter
Blueprint aqui nesta seção de salto do script. Eu queria ressaltar que seu condicionamento
de uma filial de quatro anos não precisa ser apenas uma única
variável como essa. E também não precisa ser apenas uma única
entrada rígida condicionada marcando esta caixa ou
desmarcando esta caixa;
você pode realmente fazer
uma
avaliação mais complexa, você pode realmente fazer se quiser. E se eu passar
para a esquerda aqui, mostrarei alguns outros
nós que
muitas vezes estão conectados a uma ramificação. E esses são esses
caras aqui. Temos um antinó, um nó
NAND em ou um NOR
e um x ou, se você quiser. Portanto, os comentários aqui
descrevem como eles funcionam, mas podemos experimentar
alguns deles. Vou experimentar esse
porque é muito comum. Você pode tentar conectar um
desses à sua
filial aqui. E podemos até usar nosso Ken Jump é uma das condições. Agora, isso retornará um verdadeiro
se todas as entradas forem verdadeiras. Então, deixe-me clicar
neste botão de adição. Vamos quatro vezes. Poderíamos continuar adicionando
mais pinos de entrada. Agora eu vou conectar
minha lata para isso. Agora, atualmente, meu pode pular. Isso é falso, mas vou
verificar todo o resto. Agora, isso só deve retornar
verdadeiro se todas as entradas forem verdadeiras, essas três forem verdadeiras. Pode pular aqui, mas não é. Então, isso deve impedir meu personagem de pular
porque nem tudo é verdade. Compile isso e jogue. Pressionando aquela barra de espaço. Você pode ver que eu posso
pular, me deixar mudar, posso pular aqui para a verdade,
entrar e jogar. E agora eu posso pular, todos os quatro são verdadeiros. Em seguida, estou exibindo
esse nó NAND que eu posso pular e está definido
como verdadeiro, assim como todos os outros. Isso será avaliado como falso
porque todas as entradas são verdadeiras. É assim que esse funciona. Portanto, ele só retorna falso
se todas as entradas forem verdadeiras. Então, eu estou pressionando a barra de
espaço, não consigo pular. No entanto, se eu mudar
um desses dois de falso, e poderia ser qualquer um
desses que eu escolher, então ele será avaliado como verdadeiro. Então agora eu posso pular. O nó OR retornará
verdadeiro se qualquer entrada for verdadeira. Então, eu tenho três
deles que são falsos, mas meu salto aqui é verdadeiro. Então, clicar em play aqui, pressionando a barra de espaço, será avaliado como verdadeiro porque apenas um que é tudo que
eu preciso é verdadeiro. Em seguida, temos o NeuroNode. Isso é avaliado como verdadeiro somente se as duas entradas aqui forem falsas. Então, atualmente, minha
variável booleana é falsa, assim como esse
espaço vazio aqui. Então, se eu clicar em Jogar, você pode ver que eu posso pular. No entanto, se eu quisesse definir pelo
menos um deles como verdadeiro, volte e jogue. Você pode ver que isso vai
ser avaliado como falso. Por último, mas não menos importante, temos esse nó XOR e
ele será avaliado como verdadeiro se as
entradas não forem as mesmas. Então, atualmente, meu
salto de ken está definido como falso. Essa caixa de seleção está definida como verdadeira
para que não sejam as mesmas. Portanto, isso deve avaliar o
verdadeiro salto e jogar. Sim, de fato, eu posso
pular se quiser definir que ambos
sejam iguais. Então, no momento, os dois
são falsos. Entre e jogue. Não é avaliado como verdadeiro. Então aí está. Esses são alguns nós úteis, alguns complementares
que geralmente são conectados à
entrada de condição de um nó de ramificação. Então, vamos falar sobre alguns
possíveis usos dos nós de ramificação. Bem, você poderia
fazer a pergunta: o jogador
tem
jeito suficiente de lançar um feitiço? O jogador tem
maná suficiente para comprar um item? Você pode fazer uma avaliação
de que o jogador tem um valor inteiro
da quantia dinheiro versus a quantidade de
dinheiro necessária para comprar um item. Se isso for verdadeiro ou falso. Você pode avaliar isso para determinar se a
compra foi concluída. E se um jogador está
no local certo
para usar um item? Ou talvez o jogador esteja com pouca saúde, você
poderia avaliar? O jogador tem vinte e cinco
por cento de vida ou menos? Se isso for verdade, você pode fazer uma coisa versus se for falsa, você poderia fazer outra. Tudo bem pessoal, isso
serve para oferecer essa discussão sobre nós de ramificação, nos vemos
no próximo vídeo.
77. Sequência: Bem-vindo. Neste vídeo, nosso objetivo
é aprender sobre como o nó de
controle de fluxo de sequência pode ser utilizado em scripts. Agora, neste nó, você pode
disparar várias seções de scripts simultaneamente e
de forma organizada. Agora, neste vídeo,
vou
trabalhar dentro do meu Plano de
Nível. Então, se você
gostaria de jogar em casa e esqueceu como
entrar lá. Em seus mapas. Basta vir aqui, abrir o Level Blueprint e
você chegará lá. Tudo bem, o que é
um nó de sequência? É aquele que permite que uma única entrada de fio de execução seja
acionada a partir de várias saídas de
execução. Agora, isso é ótimo para eventos. Ele permite que você tenha apenas uma cópia de um evento
dentro de um script, como
Begin Play, start, overlap, etc. Agora você pode adicionar
vários pinos de saída aqui se houver várias coisas
que você queira fazer, digamos, Comece a jogar simplesmente
clicando neste botão de adição. Agora, se você quiser remover qualquer um
desses pinos de execução de saída, basta
clicar com o botão direito do mouse
neles e removê-los assim. Isso é ótimo para
manter os scripts
organizados e
adicionar um deles, porque esse é
um nó comumente usado, você pode simplesmente manter
pressionada a tecla S clicar com o botão esquerdo
do mouse, e isso trará
um para você. Então, vamos colocar um
desses para usar dentro do nosso plano de níveis
aqui, não para agilizar as coisas. Eu tenho um pouco de
script que configurei com
antecedência aqui no
meu Plano de Nível. Mas está tudo bem,
vou explicar o que fiz para você possa jogar em casa. Então, eu quero fazer três coisas
ao começar a jogar aqui. Então, deixe-me entrar e
começar a jogar o nó de eventos. Posso manter pressionada a tecla P e clicar com o botão esquerdo para abrir o Event
Begin Play. E só para mostrar que
você só pode fazer com que um
desses eventos comece a
jogar dentro de um gráfico. Se eu tentar clicar com o botão direito do mouse
e algum espaço vazio, começarei a jogar assim. Isso vai me levar direto ao assunto. Ou se eu segurar o
PT e clicar com o botão esquerdo novamente, não recebi nada. Então, apenas um deles
pode entrar em um gráfico. Agora, indo para o
evento de conexão, comece a jogar. Isso será disparado assim que
começarmos a jogar nosso jogo. E estou
passando isso por um nó de sequência. E a razão pela qual estou fazendo
isso é porque eu queria
fazer três coisas fora do Event. Comece a jogar. Eu
quero tocar um som. Isso vai ser uma
música iniciada. Vou pegar
meu personagem de jogador do que lançar para meu
ThirdPersonCharacter. E eu promovi isso para uma
variável aqui para que eu possa salvar uma referência ao meu
ThirdPersonCharacter.
Caso eu quisesse
fazer algo com meu ThirdPersonCharacter
mais tarde, eu simplesmente precisaria arraste e solte um
desses no meu gráfico. Então a outra coisa que eu
queria fazer aqui é algo um
pouco mais sofisticado. Eu coloquei um
ponto-alvo dentro do meu nível. Você pode encontrar um desses
no painel de atores locais. Então eu fui aqui, adicionei
um painel de atores posicionais, fiz uma busca por um ponto alvo, apenas adicionei um ícone ao seu editor e ele
define um ponto no espaço para você que você pode usar dentro de um gráfico
como eu estou usando. Então, com os
pontos-alvo selecionados, mantenho pressionada a tecla R na
referência e clico com o botão esquerdo, e é assim que obtenho
uma referência a isso. Então eu simplesmente
arrastei para fora disso, tirei a localização
do ator dessa busca por ponto aleatório
na caixa delimitadora, especifico um tamanho
para uma caixa delimitadora, essa é essencialmente uma área
dentro da minha nível ao redor, centrado em torno do meu ponto-alvo. Então eu uso isso
para fazer uma transformação. Tudo o que me
importava realmente era a localização. A escala de rotação
não importava para mim. Então eu saio
disso e procurei por um ator de spawn
do node da classe. Aqui, eu estou especificando meu BPMN, uma poção que eu criei
anteriormente no curso. Você pode especificar qualquer classe aqui,
isso realmente não importa. Então, essas são as três coisas que eu quero fazer para começar a jogar. Então, Event Begin Play
aqui usando um nó de sequência. Eu posso ir bam, bam, bam. E se você quiser
organizar seu script
um pouco melhor, você pode clicar duas vezes em um fio para inserir um nó de redirecionamento. Novamente,
os nós de sequência são uma ótima
maneira de organizar seus scripts. Então, vou compilar isso para garantir que meu script tenha
uma boa aparência. Então, ao começar a tocar,
devemos ouvir um pouco de música. Teremos uma referência
ao nosso personagem e vamos
gerar um homem, uma poção. Agora, eu posso jogar o
jogo e ver isso, ou eu posso simular o jogo e
devemos ouvir essa música. E devemos criar essa poção. Agora, tudo isso vai
acontecer nos bastidores. Então, você só vai
confiar que isso vai acontecer. Mas vamos ouvir e ver
algo para que eu
possa jogar o jogo. E ele viu que a emancipação
nasce aqui. Um pouco de música. Ou se
você quiser testar isso, você também pode simular seu jogo. Agora, para fazer isso, você pode colocar sob
seus três pontos aqui e
optar por simular. E você pode ver a
tecla de atalho para isso. Agora, quando você simula seu jogo, está fazendo com que
ele execute todo o código, todo o script também está
sendo executado. Quem quer que você não esteja
entrando e jogando seu jogo. Então, se você clicar aqui, você pode ver que ele
surgiu de uma forma poção. E algumas músicas também estão
tocando. Eu posso parar com isso. Alternativamente. Isso é civilizado agora,
estou no modo simulado. Observe que, alternativamente, se você fizer Alt mais S, isso também funcionará
no modo de simulação. Isso é ótimo apenas para
fazer seu jogo rodar. E você só quer voar assim e conferir as coisas. Agora, antes de encerrarmos
esse vídeo, eu só queria provar
que você não precisa usar nós de sequência. Eles são essencialmente
um nó do
tipo qualidade de vida para
organizar melhor seus scripts. Aqui está exatamente a mesma configuração
sem o nó de sequência. Ele fará exatamente as mesmas coisas. No entanto, minha fiação é um
pouco cruzada. E você pode imaginar se eu tivesse 45610 coisas que poderiam ficar
muito, muito confusas. Então, se eu clicar em jogar aqui, você pode ver que eu tenho
aquela poção madame, terras e música, etc. Então, muitas vezes, esses nós de
sequência vêm diretamente após um
evento para fazer uma coisa, uma segunda coisa, uma terceira
coisa, etc. Mas não é para
lá que tem que ir. Você pode colocá-los onde fizerem sentido
em seu roteiro. Outra coisa que eu queria
destacar aqui também. Mais uma vez, você só pode fazer com que uma cópia de um evento comece a jogar, início do
evento se sobrepõe a
esse tipo de coisa. No entanto, existem
certos nós de eventos, como eventos de entrada,
como nossa chave oito, dos
quais você pode ter
várias cópias. Um caso como esse. Você não precisaria de um
nó de sequência porque você pode ter um evento,
fazer três coisas. Então, para provar isso, basta clicar no
botão. Olá, você está aí? Olá, você está aí? Portanto, não precisa de um nó de sequência
para algo assim. Embora isso também não
seja uma má ideia. Nódulos de sequência, tipo de
qualidade de vida, nota, eu os uso o tempo todo. Isso bastará para oferecer este vídeo. Nos vemos na próxima.
78. Faça uma vez: Bem-vinda. Neste vídeo, nosso objetivo
é aprender como podemos utilizar o nó “fazer uma vez”
em nossos scripts. Agora, esse é um nó bastante
autoexplicativo que parece que
você só precisa usar de vez em quando. Acontece que esse
nó é útil
em todos os tipos de cenários. Então, o que o fazer
quer não fazer, bem, ele dispara um
pulso de execução apenas uma vez. Agora, desse ponto em diante, ele interromperá todas as execuções de
saída. Ele não será acionado
novamente daqui para nenhum outro script que
você tenha além daqui, até que você tenha um pulso enviado
para a entrada de reinicialização aqui. Depois de fazer isso, ele pode
fazer mais uma vez, mais uma vez. Agora, para colocar esse
nó em seu gráfico, você pode clicar com o botão direito do mouse
e fazer uma pesquisa para fazer uma vez ou manter pressionada a tecla O, você pode clicar com o botão esquerdo e
isso também obterá o seu. Agora, vamos testar
isso examinando um exemplo aqui. Para isso, vou
trabalhar dentro do meu
Plano de Nível para que você possa
acessá-lo aqui. Projeto de nível aberto. Além disso, eu gostaria de salientar
aqui que vamos
acessar uma variável dentro do nosso personagem em terceira pessoa. Então, se você acabou de
visitar o vídeo diretamente, abra seu
ThirdPersonCharacter. Dentro desse caminho,
acessaremos essa variável
inteira total de XP ganha em
nosso ThirdPersonCharacter. Então, se você não tiver isso, vá em frente e crie
uma variável inteira, eu tenho o
valor padrão definido como 0. Certifique-se de
compilá-lo também, pois vamos
acessá-lo aqui em breve. Tudo bem, vamos voltar
ao nosso plano de níveis. A primeira coisa que
precisaremos é de um evento. E vamos fazer isso, na verdade,
com uma sobreposição de eventos. Vamos sobrepor uma área dentro do
nosso nível e, em seguida, adicionar alguns pontos de experiência ao
nosso personagem por ser tão incrível e
atravessar até aquele ponto. Então, vamos voltar
ao nosso mapa de teste aqui e adicionar uma esfera de gatilho. Se você não tem esse painel de atrizes
locais, você pode encontrá-lo aqui. Coloque um painel de atores para que
possamos chegar a isso. Vamos colocar uma
esfera de gatilho dentro do nosso nível. Com isso selecionado
no painel Detalhes, vou aumentar o
tamanho do raio da nossa esfera, tornando-a um pouco maior. Também vou entrar
na seção de renderização, jogo oculto para atores
não verificados, para que possamos ver essa esfera. Agora, com isso
selecionado, vou
voltar ao meu Plano de
Nível. Vamos clicar com o botão direito do mouse em
adicionar um evento para isso. Chegando abaixo, adicione a colisão de
eventos. Vamos fazer algo para começar
a sobreposição. Então, a primeira coisa que queremos
fazer é verificar se é nosso ThirdPersonCharacter que é o outro ator que está se
sobrepondo a nós. Então, podemos fazer uma verificação aqui pegando
esse broche de outro ator, fazendo um elenco para
ThirdPersonCharacter. E falaremos sobre o
elenco oficialmente mais tarde no curso aqui
que será lançado em breve. E com tudo isso feito, podemos entrar em contato com nosso
ThirdPersonCharacter e
obteremos o
total de XP ganho. E vamos apenas arrastar um aqui, apertar o botão de adição. Vamos acrescentar,
diremos que vamos adicionar 100 pontos
de experiência
para alcançar essa esfera. Bom trabalho, cara. Em seguida, vamos sair
do nosso ThirdPersonCharacter, fazer uma busca pelo XP total. Vamos configurá-lo. Então, estamos
entendendo, adicionando 100. Vamos definir isso
como o novo valor atualizado. No entanto, só queremos
fazer isso uma vez. Não queremos fazer com que possamos
sobrepor
essa esfera de novo e de novo e novo e obter
100 pontos de experiência. Só queremos dizer, Ei,
você fez isso da primeira vez. Isso é ótimo. Nunca mais fluirá pelo nó de
desejos do Arduino aqui. Em seguida, conceda os 100 pontos de
experiência. Por último, mas não menos importante, temos
que esperar para verificar isso. Então eu vou sair
daqui, fazer uma sequência de impressão. E vamos
imprimir isso na tela arrastando
nosso total de XP ganho
para a string, ele converterá esse
número inteiro em uma string. Compile isso, salve. Vamos
jogar para testar isso. Vou colocar meu objeto de depuração
lá no meu mapa de teste. E vamos sobrepor isso e ver quão incríveis ganhamos 100 pontos
de experiência. Então, verifique neste
canto da tela. 100 pontos de experiência. Agora, isso só deve
acontecer uma vez. Então, vou acabar com essa sobreposição e depois
vou me sobrepor novamente. Você vê que isso fluiu
para o que quer? Não, mas não fluiu
além disso porque esse nó diz “faça” uma vez e nunca mais. Tudo bem, agora vamos tentar redefinir isso
usando outra entrada. Então, deixe-me clicar com o botão direito em
algum espaço vazio. Vou procurar o teclado
, com certeza a tecla F. Então, quando eu pressiono a tecla F, vou redefinir isso. E então aqui vamos nós. Eu vou compilar isso. Eu vou jogar,
vou sobrepor isso. Você pode ver que eu recebo meus
100 pontos de experiência. Atualmente, estou me sobrepondo novamente, não
posso passar daqui. No entanto, quando pressiono a tecla F, veja aqui
pressionando a tecla esquerda. Isso vai reiniciá-lo. Então, deve ser feito uma vez. Mais uma vez, recebo mais
100 pontos de experiência. Ele para porque está fazendo isso apenas uma vez que eu vou pressionar
a tecla F. Isso me permitirá
fazer isso mais uma vez. Lá vamos nós. Então é assim que a tecla
F funciona para redefinir isso fazendo mais
uma vez, mais uma vez. Agora, observe que neste nó “faça
uma vez”, há uma entrada booleana na qual você
pode começar de forma fechada ou não. Atualmente,
não estamos começando de perto. Você pode inserir uma variável
booleana se
quiser começar de perto ou não. Então, deixe-me te mostrar isso. Se eu começar a fechar, marquei essa
caixa e agora jogo. Vou sobrepor
essa esfera. Mas isso não vai além daqui. Sim, chama-se “
O dual quer não”, mas estamos começando de forma fechada, o que significa que temos que reiniciá-lo aqui primeiro
para que ele faça um. Então, agora, se eu pressionar F, ele reinicia. E agora eu posso ir
além de apenas uma vez. Novamente não, pressione F. Então, só queria ressaltar
isso também. Essa roupa inicial pode
garantir que, na primeira vez, neste caso, a sobreponhamos. Na verdade, você não
faz uma única vez que precisa reiniciá-lo primeiro. Vamos falar sobre quais são
alguns usos possíveis para o du once note aqui, bem, pense em uma
fanfarra ou notificação de aumento de nível ao atingir um determinado limite de pontos de
experiência, você sabe, você atingiu 5
mil pontos de experiência. Você subiu de nível. Você só quer
jogar na primeira vez que ultrapassar 5 mil pontos de
experiência no total, não 5.005, nem 5.010, etc. Ou que tal você estar interagindo
com um baú do tesouro? Você quer abri-lo,
mas abra-o apenas uma vez. Esse seria outro ótimo
uso de um que nevou. Ou que tal
colher um mineral? Você tem um pouco de
minério de ferro em seu nível e caminha até ele e
pode colhê-lo apenas uma vez. E então, talvez um cronômetro
ou possa ser configurado para permitir que
seja colhido. Mais uma vez, digamos, depois de uma
hora, duas horas, etc. Então, esses são todos os
usos possíveis do nó Dew wants. É muito comum usá-lo. Eu adoro isso. Um dos meus nós de controle de
fluxo favoritos, pessoal que vai fazer
para oferecer este, nos vemos no próximo.
79. Faça N: Bem-vindo. Neste vídeo, nosso objetivo é
obter esse conhecimento e
demonstrar o
uso prático do nó do n, também
conhecido
como nodo alvorecer. Agora, essa é uma ótima
nota para restringir a quantidade de vezes
que algo pode ser feito. Então, o que fazer e não fazer? Bem, ele dispara no pulso
de
execução n número de vezes, conforme definido por essa entrada
inteira aqui, você pode inserir um valor
inteiro ou configurá-lo como se eu
tivesse o número 37 aqui. Portanto, depois que esse limite for
atingido, ele interromperá toda a execução de
saída até que um pulso seja enviado de volta
para a entrada de reinicialização. Então, neste caso, se
conectarmos uma chave de entrada para isso, diga a tecla F para fogo. Nós sairíamos dessa saída, essa saída de execução 30 vezes. E depois de 30 vezes, eu teria que
reiniciá-lo para outro
pulso de execução fosse executado. Agora, esse contador mostrará quantas vezes
isso foi feito, e mostraremos isso
aqui em pouco tempo. Mas é essencialmente
assim que o nó do n funciona. É muito parecido com o nó “faça
uma vez”, só você pode
definir quantas vezes
ele faz a coisa. Não precisa ser uma vez. Você pode definir isso como um,
mas pode
ser 1102100, etc.
Portanto, para adicionar esse nó, mouse e
faça uma busca por Don. Existe o
nó do n ou o botão esquerdo do mouse pressionado. Você também pode adicionar isso. Vamos colocar isso em prática. Estou no meu ThirdPersonCharacter
Blueprint. É aí que você pode encontrá-lo. Então, vamos experimentar
um exemplo aqui. Eu configurei um antes do tempo. E aqui está meu exemplo. Vou pressionar o botão esquerdo
do mouse, vamos fazer três vezes. Vou enviar o
contador aqui para a tela. Isso pode ser um texto impresso, nota, pode ser uma sequência de impressão. Tudo vai
funcionar da mesma forma aqui. E ao fazer
isso, vou criar um ator da sala de aula. Então, este é um
ator de spawn do nó de classe que
acabei de colocar no fogo do efeito
blueprint aqui. Você pode realmente
encaixar o que quiser. Você tem que transformar
isso em spawn. Eu poderia ter feito uma transformação mundial do GET.
Eu queria fazer. Eu poderia ter feito uma transformação
,
obter uma transformação mundial para o ator ou qualquer um dos meus diferentes
componentes que eu escolhi
fazer aqui para minha mão
simulada. Agora, isso é um que eu adicionei
anteriormente no curso. Então, se você está se perguntando o que é
minha mão simulada aqui, ela é um componente de
colisão esférica. E só para mostrar
onde eu coloco isso dentro da minha janela de visualização, aí está. Essa é minha mão simulada representada por uma colisão de
esferas. Então, vamos gerar
um incêndio com efeito de planta
naquele local em relação
ao nosso personagem. Então essa é a nossa configuração ali. Vamos em frente e nos
experimente aqui. Deixe-me compilar isso,
ter certeza de que meu script está pronto para usar. Então, estamos dizendo que
vamos fazer isso três vezes e, em seguida, pressionar o RT reiniciará isso e me permitirá fazer
isso mais três vezes. Mais uma vez, clicando em play. Deixe-me
configurar tudo isso para definir meu objeto de depuração ThirdPersonCharacter
para
que você possa ver esse
script em execução. Tudo bem, então virando para lá
está minha mão simulada. Uma vez que você pode ver
no canto superior esquerdo, está mostrando
quantas vezes
fizemos aqui nosso contador
pela segunda vez, mais 21 vezes. Três. Agora, se eu tentar fazer isso de novo, não vai além
do nó final devido. No entanto, se eu pressionar o destinatário archae agora,
vamos redefini-lo. E isso me permitirá
fazer isso mais três vezes. Então vamos lá. 123,
mas não um quarto. Então, algo
assim, está configurado ali mesmo. Pode ser usado
para acender tochas, como em um jogo no estilo Legend of
Zelda. Alguns outros usos possíveis, podemos usar uma configuração
como essa para determinar quantas vezes você pode colher
um item antes de poder. Esse é outro bom
uso do nó n. Talvez você o esteja usando para determinar quantas
vezes você pode
disparar uma determinada arma
antes de recarregar. Ou talvez você o use para
determinar o número de interações que você pode ter com um NPC antes de não
poder mais. Você sabe quantos jogos têm é onde você pode
interagir com um MPC,
digamos, três vezes, ele tem
três coisas únicas a dizer. E então é isso. Tudo bem,
então aí está. O nó final, é uma
espécie de primo, é irmão, se você quiser,
do um nevou do um nevou um pouco mais de
flexibilidade com o nó do n que eles
farão para oferecer este. Nos vemos na próxima.
80. Flip Flop: Bem-vindo. Neste vídeo, nosso objetivo é
conhecer e demonstrar o uso
do nó flip-flop. Agora, esse é o nó
a ser usado sempre que você quiser alternar entre
dois bits de script, sempre que ocorrer um evento de
sua escolha. Então, o que é uma
nota de flip-flop que ela recebe em entradas de execução como essa. E alterna entre duas saídas de
execução, a e B. Então, na primeira vez
que você flui para isso, eu coloco a é chamado
na segunda vez. A saída b é chamada
pela terceira vez. A quarta vez b, etcetera. Ele alterna entre
tirar fotos de a e depois B. Agora ele tem uma
saída booleana que permite rastrear quando a saída
a foi chamada. Isso geralmente é
usado apenas para garantir que você saiba qual
deles está sendo chamado. Talvez você queira imprimir
cadeias de caracteres para poder ver quando a é chamado vs, B, etc. Para mostrar um exemplo, use a nota flip-flop.
Eu vou fazer isso dentro do meu
ThirdPersonCharacter Blueprint. Então, se você quiser
jogar em casa, você pode descobrir isso em projetos de
terceira pessoa, clique duas vezes nesse
cara para abri-lo. E precisamos de um evento para
começarmos aqui. Então, vou
clicar com o botão direito do mouse e fazer um evento de clique com o botão esquerdo do mouse. Você pode usar qualquer
entrada que quiser. Vou usar o botão
esquerdo do mouse. E então, quando
pressionamos isso, vamos alternar entre
a e B do que a do que B
toda vez que pressionarmos isso. Então, o que eu quero fazer é arrastar isso e
vou trazer um ator de spawn da classe Node. E a classe que eu vou criar
na primeira vez que eu pressionar o botão
esquerdo do mouse será meu fogo de efeito de planta. Agora você pode encontrar
isso se tiver essas pastas de conteúdo inicial
e navegar até onde elas estão clicando aqui. Isso vai
fazer você se vestir. Isso existe no
seu navegador de conteúdo. Honestamente, você pode gerar o que
quiser aqui. Essencialmente,
vou aparecer em um pouco de
fogo e depois algumas
faíscas aqui embaixo para simular
que estou vou aparecer em um pouco de
fogo e depois algumas lançando um feitiço. Então eu vou para o Controle C, Controle V. Então, na segunda vez que
pressionarmos o botão esquerdo do mouse, em vez de disparar, eu vou
desovar em somas, latidos. efeito Blueprint acende. Agora eu preciso dar a isso uma transformação de spawn para que eu possa arrastar para trás
de qualquer um deles. E eu direi que faça a transformação. Agora, a única razão pela qual
eu quero usar essa transformação make é
apenas uma redução dos efeitos
de cada uma delas. Eu vou fazer com que
isso tenha metade do tamanho de 0,5 no x, no y e no z.
Na verdade, vamos anexar esses efeitos gerados à nossa
malha aqui daqui a pouco. Mas isso reduzirá o tamanho de cada uma dessas
metades para cada uma delas. Então, o que eu quero fazer é
realmente armazenar o que geramos aqui dentro
de uma variável. E a razão pela qual
vamos querer armazenar esses efeitos diferentes é
porque quando
geramos um, vamos
matar o outro. Então essa é a nossa ideia aqui
por trás dos chinelos. Então, vou
clicar com o botão direito do mouse nesse pino. Vou promover
a variável. E vou dar a isso um
nome de feitiço equipado 01. Então, eu promovi isso para
uma variável aqui embaixo. E então, nesse cara,
vou clicar com o botão direito do mouse nisso, promover isso para uma
variável e chamarei esse feitiço equipado de 02. E eu digitei
esse nome
ali embaixo , caso você tenha perdido isso. Agora, de cada uma delas, vou arrastar
e digitar anexar. Estou procurando um
ator auxiliar, dois componentes. Anexe o ator ao componente. É o
que estamos procurando. Agora, o alvo aqui será nosso feitiço equipado. O pai ao qual
queremos anexar isso será nossa malha. Então, se formos para nossa janela de visualização, nossa malha é esse
manequim aqui. Então essa será a
nossa malha, o ator. Queremos anexar nosso efeito de
feitiço aqui à nossa malha e podemos dar a
ele um nome de soquete. Agora, de volta ao nosso nome
variável video, criamos um soquete
em nosso esqueleto, em nossa malha aqui. E criamos um nome para socket. Agora, armazenamos
isso em uma variável. Nosso nome de soquete que
criamos em nosso nome variável video foi
chamado de soquete manual. Então eu vou apenas
arrastar e soltar isso, conectar isso aqui. Agora, se você não passou por
esse vídeo de variável de nome, isso não
funcionará porque você precisa configurar um soquete primeiro. Eu sugiro que você volte para esse vídeo variável
de nome para fazer isso, para que isso
funcione corretamente. Agora eu preciso mudar
minha função de localização aqui para ser direcionado ao alvo. A regra
de rotação também deve ser ajustada ao alvo
para que isso funcione, tudo bem, então vou simplesmente
copiar isso. Copie todos
esses três nós controle C, controle V. Vamos
colá-los aqui embaixo, assim. E temos que garantir
que conectemos isso assim. Então essa é a nossa configuração atual. Então, se você precisar
pausar o vídeo aqui para ver o que
temos atualmente, mas ainda não
terminamos. Então queremos
tirar esse cara em Troy. Ator. Agora, qual ator
queremos destruir? Bem, quando estamos
gerando fogo de efeito, vamos querer destruir
nosso efeito de faíscas e
vice-versa para que tenhamos apenas uma dessas ligações por vez. Agora, para fazer isso, vou arrastar o feitiço
equipado O2 e
conectá-lo lá. Essa é a que
acabamos de promover para uma variável aqui embaixo
e vice-versa. Eu vou para Control
C, Control V com esse Destroy
Actor aqui. Assim. E queremos conectar o
feitiço número um equipado a isso. Agora eu sei que quando
executamos isso em um jogo, vamos receber um
erro aqui em cima, mas vou deixar
esse erro acontecer
apenas para que você possa ver como
corrigimos isso daqui a pouco. Agora, esse é o script R
que estamos fazendo. Vamos usar
nosso nó flip-flop. Vamos compilar isso para
garantir que
tudo pareça bom. Nós vamos salvar isso. Então, só para analisar isso, vamos
clicar com o botão esquerdo do mouse na primeira vez que executaremos a partir da saída a. Então, esse trecho
de script será executado. Vamos aparecer
no efeito fogo. Vamos salvar esse efeito de fogo dentro
de uma variável. Vamos
anexá-lo à nossa malha nome do soquete
que fornecemos. Então vamos
destruir o ator To. Agora, a primeira vez que fizermos
isso, isso
gerará um
erro quando estivermos aqui ,
porque ainda não surtimos efeito. É por isso que isso
gerará um erro. Na segunda vez que pressionarmos
o botão esquerdo do mouse, vamos disparar a saída
B do nó flip-flop. Vai aparecer no
efeito de nossas faíscas. Vamos salvar
isso em variável. Vamos anexá-lo à nossa malha com esse nome de soquete
fornecido. E ao fazer
isso, também
eliminará
simultaneamente esse efeito
aqui, nosso efeito de fogo. Agora, da próxima vez que
pressionarmos o botão esquerdo
do mouse, na terceira vez surgiremos esse efeito viral. E vamos eliminar faíscas na segunda
vez que chegarmos a
isso, isso não gerará um
erro porque
teremos criado essa
variável aqui. Tudo bem, vamos em frente
e nos dar uma peça. Vamos tentar
colocar isso no canto superior. Clicando em play. Deixe-me definir minha depuração. Objeto ao nosso
ThirdPersonCharacter. Oh, aqui vamos nós. Eu vou
correr por aqui. Então, vou para o botão
esquerdo do mouse. Observe esse fluxo de
execução enquanto eu faço isso. Aqui está, botão esquerdo do mouse. Você vê que o
fogo afetado é uma ligação aqui. Está anexando isso ao
meu personagem, assim. Vou pressionar o botão
esquerdo do mouse novamente. Isso acabou com o fogo. As faíscas estão lá. E pressione o botão esquerdo
do mouse novamente. Nós eliminamos as faíscas. Agora temos fogo. Agora eu vou
sair daqui. Aqui está aquele erro sobre o qual eu
estava falando. Está reclamando mais
uma vez que não
podemos destruir esse
ator aqui em cima. Pelo menos a primeira vez que não
conseguimos destruí-lo quando
surgimos em nosso efeito de fogo porque
não havia nada para destruir. Isso ainda não existia porque filmamos primeiro
a saída a. Sem ter passado
pelo b, ainda não
havíamos criado
essa variável. Então, como você resolve
esse tipo de problema? Bem, na verdade, é
bem simples. Se clicarmos com o botão direito em nosso feitiço
equipado, Não, aqui. E nós o convertemos
em um ainda validado. Isso converterá o nó
para ficar assim. E se a
conectarmos assim, podemos dizer que somente
se isso for válido, ou
seja, somente se essa variável
tiver algo dentro dela, destruiremos o ator. Se não for válido, o que significa que não
há nada dentro dele, então não há nada para destruir, então nada acontecerá. Então é assim que você
pode contornar isso. Então, compilar, salvar,
jogar, clicar com o botão
esquerdo, disparar e clicar com o botão esquerdo
estavam invertendo a, b, a, b agora e escapamos. Não recebemos mais esse erro. Então esse é um exemplo
do nó flip-flop. Quais são alguns
usos possíveis disso? Bem, você pode usar um nó flip-flop para trocar
entre duas armas. Talvez você use um nó
flip-flop
para ligar e desligar o
interruptor da luz. Esses são alguns exemplos de
casos de uso. Quais são os únicos? Você pode inventar? Caras, o que faremos para
oferecer esse? Nos vemos na próxima.
81. porta: Bem-vindo. Neste vídeo, nosso
objetivo é obter conhecimento e demonstrar o
uso do nó do portão. Agora, esse é um nó extremamente
autodescritivo no qual você pode
entrar no nó do portão. Mas se
você sai ou não
do pino de saída de execução
e faz o que vier depois
disso , depende de
o portão estar aberto ou fechado. Começa aqui perto
com seu nó de portão. Agora, para colocar um desses
nós em seu gráfico, você pode clicar com o botão direito do mouse
e procurar o portão. Além disso, você pode manter pressionada a tecla
G e clicar com o botão esquerdo do mouse, que também trará um nó de
ganho para você. Tenho um exemplo que
gostaria de demonstrar
para todos vocês aqui dentro
do seu Plano de Nível. Então, se você quiser jogar junto, é para onde ir. O que vamos fazer
aqui é começar com um evento. Vou clicar com o
botão direito do mouse e fazer uma busca pelo carrapato do evento. E vamos entrar
em nosso portão a cada tique-taque. Então, em cada quadro, vamos fluir
para o nosso jogo. Agora não vamos além disso até que
nosso portão esteja aberto. Lembre-se de que nosso portão está
começando perto daqui. Então, mesmo que estejamos
fluindo para esse nó, cada carrapato, cada quadro, não
vamos
fluir
além daqui e fazer
o que for para
vir a seguir até
abrirmos nosso portão. Então, como vamos
abrir e fechar nosso portão? Bem, vamos fazer isso por meio um nível interno de volume de gatilho. Então, volte ao seu nível. E nós vamos
entrar aqui embaixo. Eu vou entrar no básico. Vamos adicionar uma caixa de gatilho, basta clicar com o botão esquerdo e arrastar
uma delas até aqui. Eu só vou
dimensioná-lo aqui rapidamente. Vamos 150 por um cinquenta,
quatro cinquenta, um cinquenta, um cinquenta, um cinquenta, um cinquenta. Eu não sei. É o primeiro número
que veio de nossas mentes. Algo grande, a espessura da linha, vamos mudar
isso para tornar isso um pouco mais fácil de ver. No entanto, não vamos vê-lo,
a menos que
estejamos na seção de
renderização. Seção de renderização e
desmarcamos o jogo oculto do ator. Vou levantar
isso, apertar a
tecla End para jogá-lo no
chão. Vamos verificar
se temos sobreposição a isso. Então, com isso selecionado, voltaremos
ao nosso Plano de Nível. Se você ainda não tiver esse aberto, abra o Level Blueprint. E vamos clicar com o botão direito
em algum espaço vazio. E vamos adicionar um
evento para esse gatilho de volume sob a colisão
quando começarmos a sobrepô-lo, bem
como uma colisão com o botão direito do mouse quando terminarmos de sobrepô-lo. Então, queremos fazer algo
somente quando somos nós, o ThirdPersonCharacter
sobrepondo o volume do gatilho. Outra forma de
verificar se somos nós. Eu poderia sair
daqui e lançar. No entanto, vou
mostrar um método diferente. Vou apenas digitar
get player character. Agora, se eu sair do
nosso outro ator e simplesmente digitar o operador de
igual, podemos verificar se é o personagem
do jogador
que está se sobrepondo a nós. Agora, não precisamos
acessar nosso ThirdPersonCharacter
e executar nenhuma função que esteja chamando as variáveis de
algo assim. Só precisamos verificar se
é nosso reprodutor genérico. Nós realmente não nos importamos com
qual personagem do jogador, qualquer personagem do jogador. Nesse caso, for
ThirdPersonCharacter é aquele que
estamos controlando. Então isso é bom o suficiente, pode manter pressionada a tecla
Alt com o botão esquerdo do mouse. Essa será nossa
condição aqui. Vamos copiar esses
nós aqui em cima,
controlar C, controlar V. Traga-os aqui. Assim. Então, se for verdade que estamos sobrepondo
essa caixa de gatilho, se isso for verdade,
abriremos os portões. Agora, se acabamos sobrepor a caixa do Trigger
com o personagem do nosso jogador, está provado
que
esse é o outro ator que acabou com essa sobreposição. Se isso for verdade, então
vamos fechar o portão. Agora. Tudo bem, mas o que vamos
fazer ao abrir os portões? Bem, vamos adicionar outro
ator ao nosso nível aqui. Então, por que você
não vai lá atrás. E vamos adicionar uma
espécie de porta aqui um
pouco além da nossa caixa Trigger. Então, para adicionar uma
citação, uma porta sem aspas, eu vou
entrar aqui embaixo. Vamos ficar em formas. Vamos adicionar um cubo. E eu vou apenas
esticá-lo um pouco. Então, pressionando a tecla R, vou escalá-la assim. Eu não vou
ser super preciso. Vamos
levantá-lo no ar, algo assim. Talvez dilua um
pouco assim. Vou apertar a tecla
End para jogá-la no chão. E com isso selecionado, também
precisarei acessar
o painel Detalhes e alterar a mobilidade
desses dois móveis. Agora, a razão pela qual precisarei
mudar isso para móvel é porque vou mover isso lentamente para fora
do caminho na próxima
parte do nosso roteiro. Ok, então, com isso feito, temos nosso cubo
aqui selecionado. Verifique
se você selecionou isso. Volte para seu Plano
de Nível. Você também pode acessá-lo lá. Se você ainda não
tiver essa guia aberta, mantenha pressionada a tecla R clique com o botão esquerdo para exibir
uma referência. E então vamos
retirar isso e digitar
componentes de malha estática. Portanto, nosso ator de malha estática consiste em um componente de
malha estática. E para ajudar a
esclarecer esse ponto, se eu voltar ao meu nível
e selecionar meu cubo, podemos ver que o cubo R consiste em um componente
de malha estática, que é essencialmente
esse cubo aqui. Mas precisamos fazer isso
para nos afastar disso e trazer o
nó de localização relativa ao anúncio. Agora, neste nó, você pode ver nosso componente de
malha estática do cubo conectado
ao alvo. Ele está procurando uma referência de objeto
componente. É para isso que vamos entrar quando
nosso portão estiver aberto. Agora, essa localização Delta nos
permite alterar a localização desse componente de
cena, desse componente
de malha estática. Mas somente quando o portão estiver aberto. Agora vou mudar
isso alterando nossa localização z para adicionar uma. Então, vamos adicionar um à nossa localização z a cada quadro, porque vamos
fluir cada quadro assim que
nosso portão estiver aberto. Então, só para revisar, cada carrapato, cada quadro, vamos fluir para
esse portão. No entanto, aqui, esta caixa de seleção diz
Estamos começando de perto. Não vamos passar
daqui para mudar a localização relativa
do nosso cubo. No entanto, quando
começamos a sobrepor uma caixa de gatilho com
nosso personagem de jogador, nosso personagem de jogador
é
considerado igual ao outro ator. É o outro ator
que está se sobrepondo a nós. Isso é verdade. Então vamos
abrir o portão e depois vamos movê-lo
para o ar. No entanto, quando terminarmos sobrepor esse volume de gatilho com o personagem do nosso jogador, quando isso for verdade,
fecharemos os portões. Vamos conversar sobre isso
, aqui em cima. Vou clicar em Jogar. Se você não configurou
seu objeto de depuração, você pode clicar aqui
e configurá-lo para que você possa ver o
fluxo de execução em andamento. Deixe-me ver, lá vamos nós. Pare mostrada lá apenas brevemente. Tudo bem, agora vou
tentar enquadrar isso
um pouco melhor. Traga meu personagem mais
uma vez. Tudo bem, então você vê que o carrapato do
evento estava
fluindo para este portão a cada
quadro, no entanto, não
estamos indo além
daqui agora, veja o que acontece quando eu sobreponho
isso ao meu personagem. Você vai ver isso
aberto, o portão. Aqui vamos nós. Eu posso ver que está
se elevando no ar. E se eu terminar minha sobreposição, ela vai parar de levantá-la no ar, começar a sobrepor. Ele abrirá o portão
e continuará
levantando-o e se sobrepondo, etc. Agora, outro exemplo rápido, o caso de
uso do
nó
do portão usando praticamente a mesma configuração que
já temos em vigor. Acabei de trocar
algumas notas aqui. Aqui estamos transmitindo para nosso ThirdPersonCharacter,
tanto Ana começa a sobreposição quanto termina a sobreposição. E a razão pela qual eu
queria essa abordagem é para
que possamos sair do nosso ThirdPersonCharacter
e chamar essa
função de modificação de saúde que
criamos quando falamos
sobre funções. Agora, o que
vamos fazer com essa configuração é fazer com
que , quando nosso personagem estiver
sobrepondo essa caixa de gatilho, diminuamos a saúde do
nosso personagem
enquanto ele estiver dentro dela. Assim que eles saírem
da caixa de gatilho, vamos parar esse
sangramento, por assim dizer. Então você pode imaginar
isso sendo como uma
câmara de gás venenoso ou talvez, você sabe, talvez você esteja atravessando uma fogueira,
algo assim. Então, aqui vamos nós. Você pode ver isso no trabalho. Eu recomendo que, se
você fizer
isso, a cada carrapato, defina sua diminuição
de saúde para um valor muito baixo. Na verdade, você verá isso representado em nossa barra de saúde aqui em
cima, porque temos nossa saúde vinculada a também
temos nossa saúde vinculada a
esse medidor ou HUD. Então, vamos lá, sobrepondo isso. Eu sei que o som é muito spam agora, mas
você entendeu. Saindo dessa área de gás
venenoso, o sangramento para. E aí está. O nó do portão, ele segue
caminhos de execução. Mas se você vai ou não
além disso e faz o que vem além dessa
execução , nosso pino depende de
se, se o portão estiver aberto ou fechado, faremos para
oferecer a esse pessoal. Nos vemos na próxima.
82. MultiGate: Bem-vindo. Vamos falar sobre o nó de múltiplas portas
aqui neste vídeo. E eu acho que a melhor maneira demonstrar o que isso
faz é simplesmente seguir em frente e
montar um exemplo em vez de falar sobre isso. Então, vou
reunir esse exemplo aqui no
meu plano de níveis. Se você quiser jogar junto, se você esqueceu como entrar
no seu Plano de Nível, você pode vir aqui,
abrir o Plano de Nível. E para adicionar um nó de vários níveis, basta
clicar com o botão direito do mouse
e procurá-lo ou manter pressionada a tecla M , botão
esquerdo do mouse, que também
adicionará um. Agora, esse primeiro exemplo é um
pouco acadêmico por natureza. Então, eu configurei o roteiro com antecedência
para economizar tempo, mas vou explicar
o que está acontecendo. Então eu trouxe 34 teclas de entrada
para ajudar a facilitar isso. Pressionei as três teclas entrando no meu nó de
vários níveis. No lado da saída das coisas, adicionei um pino extra. E cada um deles
está conectado a um nó de função de impressão de
textos correspondente. E ele simplesmente
imprimirá 012, respectivamente, para
corresponder à saída 012. Agora, quando eu pressiono a
tecla três e fluímos para
esse nó de vários níveis, a primeira vez que
pressiono essa tecla três, ela produzirá
essa saída 0. Ele vai enviar o
número 0 para a tela. Isso é determinado
pelo nosso índice inicial. Um índice inicial padronizado
para menos um significa
essencialmente começar
no topo da nossa lista aqui. No entanto, ao contrário de um nó de
sequência que
imprimiria tudo
isso
em rápida sucessão, ele só
imprimirá esse número 0. Não vai
imprimir um ou dois. Agora, se eu pressionar a
tecla três pela segunda vez, ela fluirá para
o nó de várias portas
e, em seguida, imprimirá o número um. Ele escolherá esse 1 primeiro. Fizemos isso com o
primeiro pressionamento de uma tecla. Na segunda vez que você
pressioná-lo, ele fluirá aqui. Na terceira vez que você
pressioná-lo, ele fluirá aqui, etc. Na quarta vez que eu pressiono, nada vai
acontecer até eu reiniciar. Então, aqui vamos nós. Essa é uma análise rápida de
como esse nó funciona. Vou clicar em Jogar aqui para configurar meu objeto
de depuração como nossos mapas de teste de nível. Então você também pode ver tudo isso
fluindo no gráfico. Então, aqui vamos nós. Vou pressionar
as três teclas. Vemos que o número 0
simplesmente flui para lá. Vou pressionar as
três teclas pela segunda vez. Nós vemos o número um. Vou
pressioná-lo pela terceira vez. Nós vemos o número dois. Agora, se eu pressionar pela quarta vez, estamos entrando nisso. No entanto, não estamos
fluindo e não
sairemos
até que reiniciemos. Então, essencialmente, quando você
flui para o nó de vários níveis, ele garantirá que todas
essas saídas sejam executadas. Depois que todos eles tiverem
sido executados, você
deverá reiniciá-los
para que isso funcione novamente. Então, se eu pressionar a tecla F4, o que farei
agora, basta reiniciá-la. Agora eu posso pressionar
a tecla três, 0. Pressione as três teclas novamente. Um, pressione três teclas novamente para. E se eu tentar pressionar
as três teclas novamente, estou fluindo para dentro dela,
mas não consigo sair dela até reiniciá-la. E quais pontos eu
posso fazer isso de novo, 012. Agora, vamos tentar isso de
novo só desta vez. Vamos verificar. Esta é uma caixa de seleção aleatória. Antes disso, não era verificado com um índice inicial
de menos um. Íamos
atirar da nossa blusa. Vou colocar o pino, depois nosso segundo, depois nosso terceiro em ordem
sequencial, garantido com é selecionado
aleatoriamente. No entanto, vamos
passar por
todos os três antes de
precisarmos reiniciar. No entanto, ele escolherá um índice aleatório com o qual
disparar pela primeira vez, pela segunda vez e pela terceira vez. Aqui vamos nós. Então, pressionando as três teclas decidi ir com aquele primeiro, aquele 1 segundo, aquele 1 terço. Se eu pressionar
pela quarta vez, nada. Tenho que pressionar a tecla F4 para reiniciá-lo. E aí
começamos aqui primeiro, aquele 1 segundo, aquele 1 terço. Então é isso que a caixa de seleção
booleana é aleatória faz. Agora, se o loop estiver
marcado e eu jogar, e eu vou pressionar as
três teclas aqui uma, duas vezes,
uma terceira vez , depois
uma quarta vez, cinco vezes, seis vezes. Essencialmente, quando você
tem uma verificação de loop aqui, você pode continuar pressionando,
no nosso caso, as três teclas repetidamente
. Não há necessidade de reiniciar. Por fim, apenas para mostrar nosso índice inicial, por padrão
, definido como menos um. Vou apenas
desmarcar cada um deles. Vamos definir isso para dizer dois, não menos 22,
e eu clico em Play. Agora, quando pressiono a tecla três, disparamos primeiro pelos
dois pinos, depois 0, depois um, ou pressionamos a
tecla três novamente, nada. No entanto, se eu reiniciar e pressionar a tecla três, ela disparará de
2 primeiro do que 0, do que um. Então, mais uma vez, reconhecidamente, um exemplo bastante acadêmico. Então, vamos tentar algo um
pouco mais fiel a um jogo. E também vou
demonstrar isso aqui no Level Blueprint. Vamos para
a direita aqui, ou para qualquer espaço aberto
aqui em seu gráfico. Mais uma vez, eu configurei
algumas coisas com antecedência. Eu tenho um nó de vários dias. Mantenha pressionado e clique com o botão esquerdo, ele pode trazer um desses para dentro. E de cada um dos meus
três pinos de saída, eu adicionei um aqui. Eu trouxe o
ator de spawn dos nós de classe e simplesmente coloquei em três classes diferentes
meu efeito de projeto, explosão, fogo e fumaça. E agora eu preciso de algo para
disparar nesses vários dias. Deixe-me voltar ao meu nível
aqui e vou
adicionar aqui o básico. Vamos fazer uma caixa de gatilho. Aumente um pouco isso, defina a extensão de nossas caixas
para algo como duzentos
duzentos e
duzentos fios de espessura de dez. Eu realmente deveria deixar uma
caixa de Trigger aqui para todos
os diferentes exemplos
como este e exibindo na categoria de
renderização, desmarque aquele ator
escondido no jogo, tudo bem, com seu
eventos selecionados. Aqui em nosso nível, Blueprints. Plano de nível, mantenha pressionado ou melhor, clique com o botão direito do
mouse,
não mantenha pressionado, clique com o botão direito do mouse em Adicionar colisão de evento para quando
começarmos a
sobrepor
isso, podemos verificar se nosso outro ator, nós posso dizer iguais. Essa é outra forma
de mostrar
se o que
esperamos sobrepor, isso é algo que
esperamos que diga, é que igual a r
recebe o personagem do jogador. Não queremos
extrair nenhuma variável que esteja chamando funções em
nosso ThirdPersonCharacter. Então, isso será bom o suficiente. Mantenha pressionada a
tecla Alt e clique com o botão esquerdo. Diremos que, se isso for verdade, fluirá para o nó de ramificação,
um nó de controle de fluxo. E se isso for verdade,
fluiremos para o nó de portas de vários bits. E se isso for verdade, geraremos uma
dessas compilações. Ah, sim, precisamos especificar
uma transformação de spawn. Bem, temos nossa caixa de gatilho já selecionada
aqui em nosso nível. Então, vamos apenas desovar. Está em algum lugar na caixa de
gatilho, certo? Mantendo pressionada a tecla Alt, clique com o botão esquerdo para abrir
uma caixa de gatilho
de armazenamento
de referência arrastada para fora daqui, transforma-se. Podemos conectá-los ao 123, então estamos escolhendo
um desses spawn aleatoriamente e compilando mais uma vez. Vamos jogar. Vou colocar isso
aqui. Selecionamos nossos mapas de teste, escritos lá como
nosso objeto de depuração. E aqui vamos nós. A primeira vez que nos
sobrepomos, estávamos provocando uma
dessas explosões aleatórias,
a segunda vez que
disparamos ,
e na terceira vez, ,
e na terceira vez, temos um pouco de fumaça
acontecendo lá também. Agora note, se eu
sobrepor isso novamente, paramos
aqui no portão. Não reiniciamos isso de jeito nenhum. Então isso seria algo
que talvez você queira fazer para permitir alguma desova. Mais uma vez. Agora, uma configuração como essa pode ser usada
como um saque. Talvez você mate um inimigo e queira
premiar algo aleatório, isso seria um bom exemplo. Uso do jogo múltiplo. Talvez você use um nível
múltiplo para gerar ondas de inimigos. Assim, você pode escolher uma onda
de inimigos entre nossos
zeros, um ou dois. Ou talvez você possa
usar um nó de vários níveis ao falar com um NPC. Mais uma vez, muitos jogos têm
isso para que você possa conversar com um MPC
e, em seu MPC, lobos alimentam três linhas de diálogo diferentes e
exclusivas. Você pode fazer com que, usando
um nó de vários níveis, ao sobrepor o volume de gatilho
relacionado a esse NPC, você possa disparar a linha
de gatilho do diálogo 12 ou
três, respectivamente. Pessoal, isso vai fazer
tudo para o nó multiconjunto. Nos vemos na próxima.
83. Para loops: Bem-vindo. Neste vídeo, nosso objetivo é adquirir
conhecimento e demonstrar o uso dos nós for-loop. Não
confunda com os nós de cada loop, sobre os
quais falaremos no próximo vídeo. Agora, esses nós repetirão uma seção do script
repetidamente. E embora possam ser usados
dentro da grama de eventos, eles realmente brilham ao criar scripts de conteúdo
processual usando
o script de construção. Agora, para começar,
o que é um for-loop? Bem, um for-loop é um
nó que, quando chamado, significa que tem um fio de execução sendo conectado ao
lado esquerdo aqui. Ele dispara um pulso
fora do circuito, corpo X número de vezes, com o número de
vezes sendo determinado pelo primeiro e último índices. Então, por exemplo, se
tivéssemos algum evento conectado ao nosso nó de loop
for aqui, e nosso primeiro índice fosse 0. Em nosso último índice era nove, sairíamos do nosso corpo de
loop aqui dez vezes, começando de 0 a nove. Agora, toda vez que saíamos
do nosso corpo circular, estaríamos
cuspindo em qual índice entre 09 estamos. Novamente, de 0 a nove,
você iria 0123456789. Então, quando estávamos na
quinta iteração, estaríamos
cuspindo o índice para, novamente, começando do número 0. Agora, depois de
passar por todos os dez, esse fio de
saída de execução concluído será disparado. Agora, a única diferença entre nosso nó for loop aqui
em nosso loop for com nó de
pão é simplesmente essa caneta de execução de entrada de
interrupção. Com esse
nó, você tem a capacidade de interromper o fluxo de execução antes de chegar
aos seus últimos índices. Se, por exemplo,
seu primeiro índice for 0 e seu último índice for 99, o que significa 100 voltas por aqui. Você poderia, por qualquer motivo, quebrá-lo mais cedo para não
concluí-lo. E mostraremos uma
demonstração
disso mais adiante neste vídeo. Tudo bem, agora, como mencionei
no início deste vídeo, você pode usar esses nós
aqui em um gráfico de eventos, mas eles realmente mostram seu poder em um script de
construção, criando conteúdo processual. E, de fato, logo no
início deste curso, quando eu estava falando sobre
o roteiro de construção, usei
um nó for-loop. Então, deixe-me
trazer isso de volta, voltando ao meu mapa de teste aqui,
eu realmente tenho, por exemplo, o projeto do
Construction Script. Esta é a planta
que eu construí muito antes do curso quando falei sobre o roteiro de
construção. Eu tenho um
desses no meu nível, mas se você não tiver, você pode
encontrá-lo na pasta
Blueprints de scripts. Aqui está seu exemplo de script de
construção da BP. Além disso. Você pode navegar até ele
aqui em seu Outliner
selecionando-o e seu mundo
e clicando aqui. Agora, não tenho nada aqui neste projeto
no meu gráfico de eventos, minha janela de exibição mostra o que
o Script de Construção construiu. Então, aqui está minha guia Script de
Construção. Se você não tiver essa opção aberta, você pode
clicar duas vezes nela
no painel Meu Blueprint para abri-la. E aqui é onde estamos
fazendo uso de um nó for loop. Agora, todo esse script
aqui foi construído para gerar conteúdo
processual. Eu exponho esses números da variável inteira de
seção ao editor. Assim, ajustando o
número de seções, podemos
percorrer esse nó de quatro circuitos X várias vezes, indo de 0 a r
número de seções menos um. E isso é apenas fazer algumas contas para determinar onde colocar a malha estática de
instância
desta peça de parede aqui. Agora, tenho alguns scripts adicionais em
andamento aqui para definir o
material para essa instância, malha
estática, mas é isso que todo
esse
script de construção está fazendo. Então, o poder disso, novamente com o for-loop, é que você pode especificar
quantas vezes você vai percorrer o resto
desse código aqui. E nesse caso, vamos de um
índice de 0 para
quantos números de
seções eu especificar. Aqui no meu nível, eu exponho essa variável
para ser editável por instância, aquela caixa de seleção logo ali. E ao fazer isso, essa variável fica
disponível
no painel Detalhes quando eu seleciono
esse esquema. Então você pode ver se eu ajustar
o número de seções aqui, eu posso expandir essa parede. O que isso está fazendo. Mais uma vez, está
passando por aqui. Quantas vezes? Bem, atualmente
tenho esse conjunto para ser vinte e um. Vinte e um. Vinte e um menos um é 20. Então, de 0 a 20, isso é
passar por aqui todas essas vezes para adicionar essas
seções de paredes. Então é isso que o
corpo do loop está
fazendo, repetindo esta
seção do script, porém muitas vezes indo
do primeiro índice para
o último índice. Agora, é
importante observar aqui que as iterações de
loop
ocorrerão entre os quadros,
portanto, loops grandes podem causar
um impacto no desempenho. Então, se definirmos nosso último índice aqui
como bem alto, veremos um pouco de atraso. Então, vou tentar definir
isso para um número alto aqui. No meu nível. Atualmente, eu o configurei
para 21, o que não é tão ruim. Se eu tentar definir isso para 500 mil e pressionar
Enter, veja o que acontece. E, de fato, isso
levou muito tempo. Agora, eu cortei o vídeo
ali mesmo para fazer parecer que
demorou muito menos tempo, mas provavelmente meu computador
levou cerca de um minuto para realmente mostrar todas essas
seções de paredes. Então, saiba que você
provavelmente não quer ter muitos loops em
seu nó for-loop. Tudo bem, vamos mostrar
um caso de uso prático para o loop for. Observe que aqui em nosso nível, vou adicionar uma caixa de gatilho e vou
definir a caixa se estende para ser
algo um pouco maior. Vamos pegar 300 no x, 300 no y, e 40 vai
ser bom para o Z. Eu só vou pegá-lo
do chão um pouco,
algo assim. Deixe-me definir a
espessura da linha para dez. E assim como você já
me viu fazer várias
vezes até agora, vou desmarcar o ator oculto e os jogos para
que possamos vê-lo. Em seguida, vou
duplicar isso, mantendo pressionada a tecla Alt,
clique com o botão esquerdo e arraste. E eu vou definir a
extensão da caixa para este, vamos torná-la 100 por 100 por 100, algo um pouco
menor assim, pegando-a no ar,
apertando a tecla End para bater
nela até o chão. Então, o que estou tentando
alcançar com essa configuração? Bem, essencialmente o que eu
vou fazer acontecer aqui. Nosso personagem vai aparecer aqui
mesmo no início do nosso jogador. Vamos fazer com
que, quando nosso personagem se sobreponha a
essa caixa de gatilho, criemos algumas poções dentro dos limites desse
volume aqui? Sim, você pode usar uma caixa
de gatilho para acionar o volume para
gerar coisas dentro. É isso que
vamos usar para isso. E também vamos
utilizar um nó for
loop para gerar
três poções de Amanda. Então, em primeiro lugar, vamos selecionar essa caixa
Trigger aqui. Volte ao seu Plano de Nível. E vamos clicar com o botão direito do mouse
e algum espaço vazio. Vamos adicionar um evento para quando começarmos a sobrepor isso. E vamos simplesmente sair
do nosso outro ator aqui, digitar o sinal de igual. E esse será o nosso método para verificar se é o personagem do
nosso jogador. Vamos clicar com o botão direito do mouse em
obter personagem do jogador. Novamente, há todos os tipos
diferentes de métodos que podemos usar
nesta seção para verificar se
é nosso ThirdPersonCharacter. Isso vai funcionar bem. Mantenha pressionada a tecla e
clique com o botão esquerdo para trazer um galho. Assim. Em seguida, vou manter
pressionada a tecla O e clicar com o botão esquerdo porque queremos
fazer algo uma vez. O que queremos que aconteça? Bem, queremos sair
daqui e trazer um loop for, não um para cada loop, um loop for. Definiremos nosso primeiro índice como 0, nosso último índice como dois. Então, 012 serão nossos
três índices. E vamos sair do
nosso corpo circular e gerar atores da sala de aula. E aqui é onde eu vou
colocar em nosso homem uma poção. Novamente, você pode
inserir qualquer coisa aqui que seja algum tipo de
objeto de planta, eu recomendaria. Agora, onde eu vou
gerar essa coisa? Preciso acelerar essa transformação
de spawn. Então, vamos voltar ao nosso nível. Vamos selecionar
esse volume de gatilho aqui. Em seguida, vamos
voltar ao nosso Plano de Nível, manter pressionada a área
arqueada como na referência e clicar com o botão esquerdo para trazer uma referência a
essa caixa de gatilho. Nós vamos sair daqui. Obter limites de atores é o nó
que estamos procurando. Em seguida, vamos sair
da origem aqui e digitar aleatoriamente um ponto em
uma caixa delimitadora. Essa é a extensão da caixa. Podemos inserir isso
na metade do tamanho. E por último, mas não menos importante, vamos
arrastar para trás a transformação de spawn, onde vamos
digitar make transform. O único aspecto da
transformação com o qual nos
preocuparemos com isso é a localização. Então, pegue a localização da
nossa caixa delimitadora
aqui e
conecte-a ao local
da transformação de marca. Então, vamos recapitular muito rapidamente
aqui o que estamos acontecendo. Vamos sobrepor
esse volume de gatilho. Vamos
verificar se foi o personagem do jogador que fez a sobreposição, se
foi, e isso é verdade. Uma vez, vamos
repetir isso três
vezes, começando em 0012. Então bam, bam, bam, gerando três
poções de maná dentro dos limites desse
volume
de gatilho. Vamos compilar. Isso vai
verificar se nosso roteiro está bom. Salvar. Vamos colocar esse roteiro
aqui e
vamos jogar. E você vê meus dois
volumes lá. Vamos sobrepor esse
primeiro aqui. 123. Lá vamos nós. Agora, se eu tentar
sobrepor e, novamente, sem dados, sem dados, você pode ver que está
parando no nó fazer uma vez. Agora você pode estar se perguntando por que essa emancipação
surgiu aqui mesmo? Bem, estamos obtendo
nossos limites de ator para esta caixa de gatilho aqui, mas estamos escolhendo um ponto
aleatório dentro da caixa
delimitadora especificando uma origem, o centro desta. E o ponto aleatório
que estamos realmente escolhendo é a metade do tamanho
da nossa caixa. Então,
na verdade, você pode realmente sair
dos limites dessa história
tão longa, é apenas um
exemplo rápido para mostrar o nó for loop em funcionamento. Então, deixe-me sair daqui. Para finalizar, vamos
demonstrar o loop for
com o node bread dentro do
nosso ThirdPersonCharacter. Então, aqui está um diretório
para descobrir isso. Clique duas vezes
nele para abri-lo. E vamos trazer eventos
de teclado. Vamos clicar com o botão direito do mouse e digitar um espaço
vazio no teclado. Traga qualquer evento de teclado
que você ainda não tenha usado. Eu vou com a tecla E, costa y-zero, e ele vai fazer. O que vamos fazer é
acabar com isso e trazer um loop for. Um for-loop com break, não para cada loop que
virá mais tarde. Próximo vídeo. E vamos deixar o primeiro
índice sozinho em 0, o último índice, no entanto, vou colocar
o número 30. Em seguida, vou clicar com o botão direito do mouse nesse alfinete e
promovê-lo
em uma variável
apenas para mostrar, mais
uma vez como um lembrete,
que se você colocá-lo em um número
, promoverei promovê-lo
em uma variável
apenas para mostrar, mais
uma vez como um lembrete, que se você colocá-lo em um número
, uma variável, você não
só criará uma variável, mas se compilar, verá que esse número
que você definiu nela agora
está definido como o valor padrão para essa variável promovida. Muito útil. Agora vou
renomear essa variável. Vou pressionar F2 nisso e vou chamar
isso de itens de inventário de máximo. Então, o que estamos fazendo aqui? Vamos passar por um cenário
hipotético em seu personagem de terceira pessoa
pode conter 30 itens de inventário. Mas digamos que
na interface de caracteres, eles só podem exibir 15
itens em uma única página. Então, neste caso, vamos interromper nosso for-loop com break quando
descobrirmos que já
passamos por
isso 15 vezes. Então, essencialmente,
vamos partir de 01234567891011121314. Isso seria 15 vezes no total. E vamos
quebrar nosso For Loop. Então, o que temos que fazer a seguir? Temos que sair
do nosso índice aqui. E vamos trazer
um símbolo igual. E vamos ver se
nosso índice é igual a 14. Por que 14? Se
quisermos realmente quebrá-lo
depois de chegarmos a 15 itens, lembre-se de que nosso primeiro índice está contando 0. Então, com esse conjunto lá, vou promover
isso para uma variável. botão direito promove a variável. Podemos compilar isso. Agora, esse é o nosso novo
valor lá dentro. No entanto, vamos nomear isso com
algo melhor do que isso. Então, vou
renomeá-lo aqui. Vamos chamar essa
página de um de itens no máximo. E o que vamos fazer a seguir é arrastar para fora daqui e
trazer um nó de ramificação. Entre isso, vou me esgueirar nos nós
de Print String. Então, toda vez que estamos
examinando, vamos imprimir. Então imprima a string, em qual
índice estamos. Então arraste e solte isso lá. Isso trará qualquer
número inteiro de conversão em string. Conecte isso em nossa filial. E o que queremos fazer
aqui é que, se isso for verdade, nossos itens da página um são
iguais aos nossos índices de 14. Vamos compilar isso novamente, 14. Se isso for verdade, vamos voltar por aqui e vamos fugir. Clique duas vezes nele para
adicionar um pouco de redirecionamento do nariz para tornar a aparência um
pouco mais agradável. Uma vez que
tenhamos quebrado, terminamos. Vou sair daqui,
trazendo outro nó de corda de
impressão. E nós simplesmente vamos
imprimir na tela. Cada um de seu inventário está cheio ou algo parecido. E vamos
imprimir isso na tela um
pouco mais. Então, eu clico na seta para baixo
ali para expor mais
alguns parâmetros aqui vamos definir isso para
uma duração de dez. Então é isso que
temos acontecendo aqui. Novamente, não estamos
realmente imprimindo nada na tela. Não estamos imprimindo
nenhum item de estoque, nem tudo é hipotético. Compile isso. Salvar. E vamos colocar essa opção de
depuração em nosso
ThirdPersonCharacter. Então você pode ver esse
script sendo disparado. E tudo isso vai
acontecer muito, muito rápido. Então, olhe aqui no canto superior
esquerdo enquanto eu toco na tecla E, página, um de seu
inventário é falso. Então você viu todos esses índices, 012345678910 a 14 até
que a primeira página do
seu inventário esteja cheia. Você pode ver
neste exemplo aqui que nunca
chegamos ao nosso último índice. Deveríamos
ir
até 30 itens de inventário. Bem, verdadeiramente 31 se
você está contando esse 0. Mas nós quebramos nosso ciclo aqui. Não passamos
pelo circuito que muitas vezes quebramos quando atingimos 14. Então esse é um exemplo de um
for-loop com break node. Mais uma vez, esses nós são
ótimos ao usá-los com script de construção
interno para criar algo como
paredes processuais como essa, mas também podem ser usados
em gráficos de eventos. Agora, uma última coisa
a ser observada aqui em nosso
script de construção que eu criei muito antes no curso, quando
criei esse script
usando um nó for-loop, muitas vezes quando usando
for-loop conhece o são usados em algum tipo
de cálculo matemático. Então, isso também é algo que você deve ter em
mente. Então, toda vez que
analisamos isso,
eu estava usando esse número de índice, multiplicando-o por outro
número para descobrir
exatamente onde colocar essa instância, Static Mesh, essa peça de parede. Tudo bem pessoal,
isso é suficiente para oferecer este, veremos todos vocês
no próximo vídeo.
84. Para cada loops: Bem-vindo. Neste vídeo, nosso objetivo
é obter conhecimento e demonstrar o uso do
for each loop nodes, o primo próximo dos nós
for-loop que
abordamos no último vídeo. Então, o que torna um para cada
nó de loop diferente
dos nós for-loop? Bem, eles são
nós de controle de fluxo que recebem
uma matriz em oposição a
qualquer número de índices. Assim, ao receber uma matriz, eles permitem que você
faça algo com cada elemento da matriz que é
o conteúdo da matriz. Agora, se você voltar ao nosso vídeo de matriz do
início do curso, você se lembrará de que uma
matriz é essencialmente uma lista. É um contêiner que consiste em vários elementos que tem entradas do mesmo tipo de
variável. Tudo bem, para mostrar
o exemplo aqui,
faremos alguns trabalhos dentro
do nosso plano de níveis. Mas primeiro, vamos fazer algum trabalho ao lado do nosso nível. Agora, vou usar essa parede de lâmpada SM na minha pasta de adereços de conteúdo de
estrelas. Embora, na verdade, você
possa usar qualquer tipo de malha
estática para criar o que
estamos prestes a criar. Eu tenho uma parede simples aqui. Então, se você quiser
colocar uma
espécie de parede em seu nível
para jogar junto, isso também pode ser bom
. Porque o que eu vou
fazer é
colocar essa parede de Scott ao longo dessa parede que
eu tenho aqui. E eu vou
mostrar outra coisa que você pode fazer aqui no Unreal,
bem aqui na sua janela de visualização, esse ícone de três setas, você pode ativar o encaixe de superfície.
Atualmente, eu o tenho ligado. É isso que essa marca de
verificação significa. Mas se você não
sabe se está ligado ou desligado,
clique aqui. Eu o tenho ligado. A razão pela qual eu tenho isso ativado
é para mostrar que, se eu arrastar e soltar
isso no meu nível, ele o encaixará qualquer superfície pela qual
eu esteja arrastando. Você pode ver que ele está deslizando pelo chão, bem como colocado
ao longo da parede assim. Agora, se eu fosse soltá-lo, clicar com o botão esquerdo
e arrastar, ele não vai
deslizá-lo pelo chão assim. No entanto, se eu agarrá-lo pelo ponto de
três cantos, o widget de tradução
aquela bola ali mesmo. Se eu clicar com o botão esquerdo e
pegá-lo de
lá, ele o
encaixará na superfície. Agora, vou
arrastá-lo pela minha parede aqui. É claro que não está exatamente
posicionado como eu quero. Eu vou ter que
rotacionar esse em particular. Então, pressionando a barra de espaço, vou
girá-la assim. Gire assim e gire assim
para atravessar a parede. Também vou aumentar um pouco de tamanho
aqui. E eu vou trazer
algumas duplicatas. Então, mantendo pressionada a tecla Alt, vou
clicar com o botão esquerdo e arrastar, mantendo pressionada a tecla Alt
novamente, clicando com o botão esquerdo e arrastando. Tudo bem, eu tenho três
desses no meu nível. Ótimo. Vou selecionar todos os três aqui no meu esboço. Vou selecionar o primeiro
, manter pressionada a tecla Control, selecionar os outros dois também. Então, eu tenho todos
os três selecionados. E então, de volta ao
meu Plano de Nível chegando aqui,
abra o Plano de Nível. Vou entrar aqui e clicar
com o botão direito do mouse. Não, não vou clicar com o botão
direito do mouse. Eu poderia clicar com o botão direito do mouse e criar uma referência para cada um
deles individualmente. Se eu os tivesse
selecionado individualmente, no entanto, vou manter pressionada a tecla
R e clicar com o botão esquerdo para trazer uma referência a todos os
três imediatamente. Eles estão empilhados um em
cima do outro. Infelizmente. Então o que
eu vou fazer é arrastar
um deles e
digitar make array. Então, vamos adicionar
pinos à nossa matriz aqui. E vamos
conectar cada um desses três em nossa
matriz de anotações aqui. Agora, isso pode gerar uma matriz. O que eu vou fazer é
simplesmente
clicar com o botão direito do mouse sobre isso e
promovê-lo para uma variável. Embora note, no entanto,
eu não preciso fazer isso. Eu vou usar esse
conjunto de lâmpadas aqui, 123 para conectá-lo a um
para cada novo, para cada nó de loop, isso funcionaria muito bem
para os propósitos disso. No entanto, só para mostrar que
posso promover isso para
uma variável, eu o farei. Então, vou clicar com o botão direito do mouse em
promover duas variáveis e chamarei
isso de meu conjunto de lâmpadas. Agora, isso o define imediatamente
para o tipo de variável adequado. Terminou imediatamente. Isso a
torna uma borracha. Isso é meio útil. E o que vou fazer aqui é que depois de
colocá-los em uma matriz, vou conectá-los a um pino de execução meu
para cada nó de loop, você pode usar a tecla
de atalho para manter pressionada
a tecla F tecla e botão esquerdo
do mouse para trazer
um para cada nó de loop. Vamos conectar
isso à nossa matriz. Agora precisamos de um evento
para disparar tudo isso. Eu tenho no meu nível um
volume de gatilho já abaixado. Se você não tem um desses, pode vir aqui embaixo. Na caixa básica do Trigger, coloque um desses
no seu nível. Eu tenho as extensões da minha caixa definidas
para cem,
cem, cem por espessura
de linha para
facilitar a visualização. E eu tenho o ator escondido
no jogo sem controle. Agora, com isso selecionado
em seu nível, volte ao seu
plano de nível, clique com o botão direito do mouse. Vamos adicionar
um evento para quando começarmos a sobrepor isso. E queremos ter certeza de que verificamos se é nosso personagem em
terceira pessoa. Então, vamos sair daqui
Cast to ThirdPersonCharacter. E se for, e tivermos definido nossa variável de
matriz novamente, essa parte aqui
não é super necessária. Vamos fazer algo para cada elemento dessa matriz. Agora, o que eu quero fazer
com cada item em nossa matriz? Todos esses três, bem, o que eu quero fazer é sair
do nosso elemento de matriz e eu
vou digitar a localização do ator. Vamos usar a
localização de cada uma
dessas paredes para gerar um emissor. Então, vou clicar com o botão direito do mouse em algum espaço vazio
e vou fazer spawn emitter no local. Vou conectar a localização precisa à entrada de localização de nosso spawn,
uma
localização de minarete,
nosso corpo de loop, conectaremos a
esse nó de função. O emissor aqui
que vou usar é simplesmente disparar meu fogo P. Este é um sistema de
partículas mais antigo. Novamente, você pode colocar um
sistema de partículas mais antigo ou fazer sistema de
desova em um local que esteja usando efeitos de
brilho do Niágara, gerar o sistema no local
é o equivalente lá. No entanto, isso funcionará como está, apenas por uma questão de integridade. Com esse pino
de saída completo, vou imprimir uma string. E eu vou simplesmente
colocar a corda. Feito. Então, vamos
imprimir isso na tela. E o que
eu acho que também vou fazer é colocar outra corda de
impressão aqui em cima,
controle C, controle
V. Vamos esgueirar essa extremidade antes do
nosso corpo de laço. Poderíamos colocá-lo depois do nosso
emissor, se quiséssemos. Então, vamos continuar assim. E para cada item
em nossa matriz aqui, vamos imprimir
o índice da matriz apenas para que você
possa ver esse número sendo impresso na
tela também. Então, vamos recapitular o que temos. Quando nosso personagem se
sobrepor ao volume do gatilho, veremos se era fato nosso
ThirdPersonCharacter. O que
vamos fazer então é usar essas três lâmpadas
e fazer uma matriz. Então, vamos ter uma matriz, uma lista de
atores de malha estática aqui
que preencherão essa variável. Em seguida, vamos, para
cada loop em nossa matriz, para cada item em nossa matriz, vamos obter a localização
dos atores e gerar um pouco de fogo. Vamos compilar isso para que seu script R
pareça bom para usar. Vamos entrar e jogar. Configurando nosso objeto de depuração
em nosso mapa de teste aqui. Tudo bem, então vamos lá. Uma vez que
sobrepusemos isso, veremos fogo aparecendo
aqui, aqui e aqui. É como se tivéssemos acendido três tochas. Agora, isso está surgindo
no local do nosso laboratório. Não é baixo. Se olharmos para nossa lâmpada, o widget de tradução
está na base dela. É por isso que essa chama está aparecendo um
pouco aqui embaixo. No entanto, poderíamos compensar um
pouco isso e fazer com
que aparecesse no topo, mas você ganha os pontos. Você pode ver, eu não vou
fazer isso uma vez. Então, se eu continuar sobrepondo isso, você verá esse texto sendo impresso na tela. E eu estou mantendo uma geração de mais efeitos de partículas
aqui também. Mas você pode imaginar uma configuração como essa usada para acender a lâmpada. Mais um exemplo para mostrar
aqui em nosso plano de níveis. Desta vez, vamos
usar o para cada loop com o node break. Eu fui em frente e
criei uma série de textos. Então, se você quiser jogar junto, clique no botão de adição. Transformamos isso em um tipo
variável de texto e alteramos o
tipo de contêiner para uma matriz. E então eu cliquei
aqui três vezes dois, você adiciona três elementos de matriz
feitos guerreiro e ladrão. Agora,
algo a observar
com cada um dos nossos quatro nós de loop é que você tem
alguns pinos cinza aqui. Agora, eles indicam curingas, o que significa que podemos inserir uma variedade
de tipos de variáveis a eles. E ele reconhecerá o
tipo que conectamos a ele e alterará o
tipo correspondente para o mesmo. Deixe-me mostrar o que quero dizer. Eu tenho uma série de
textos aqui. Se eu inserir isso em nossa entrada de
matriz cinza aqui, ele
reconhecerá que Ei, você está inserindo uma
matriz de variáveis de texto. Isso significa que vamos
gerar textos
porque sua matriz
consiste em três textos feitos. Guerreiro e ladrão,
três elementos de matriz. Tudo bem, o que vamos
fazer com essa configuração aqui? Bem, vamos ver se nosso elemento de matriz é igual
a alguns textos literais. Vamos clicar com o botão direito do mouse em
algum espaço vazio. Traga um operador de
nó igual, igual. Vou conectar nossos elementos de
matriz a isso. Na verdade, esse é o errado. Foi minha culpa. Primeiro, vamos trazer o nó
make literal text, make literal text node. Esse é o que eu estou
procurando lá embaixo. Fora disso, vou me
arrastar e trazer
o sinal de igual. Estamos procurando textos
iguais exatamente a textos. Esse é o que estamos
procurando, NÃO operadores iguais. Lá vamos nós. Vou manter pressionada
a tecla Control, clicar com o botão esquerdo e colocar
isso na parte inferior. Em nossa matriz, o elemento vai
se conectar ao topo. Nossa textura literal
que vamos
procurar é guerreira. Nota. Temos Warrior listado aqui , bem como em nossa matriz de textos. Então, quando isso for igual, vamos
sair daqui e trazer o nó da ramificação. E vamos nos
afastar da nossa verdade. Eu percebi que há um elo
perdido aqui. Vou voltar a isso
daqui a pouco. Arrastado para fora daqui para
digitar o texto impresso. E vamos apenas
imprimir Found Warrior. E o que vamos
fazer com isso é arrastar e soltar
tudo em nossa entrada de interrupção, dando um duplo clique no
fio algumas vezes aqui. Agora, a razão pela qual deixei uma pequena lacuna aqui é
porque eu também quero inserir um
nó de texto príncipe aqui. Então, eu vou fluir assim do nosso corpo de loop para o deles, para o deles, em nossos elementos de
matriz. Vamos fluir até lá. Então, entenda o que estamos
fazendo com essa configuração. Vamos pressionar a tecla B. Em seguida, vamos
percorrer nossa matriz. Temos três elementos
em nossa matriz. Cada um desses
elementos da matriz vamos
imprimir na tela, começando com major,
depois indo para guerreiro. No entanto,
vamos observar que aqui vamos
detectar se eles são iguais. Se eles forem iguais e
isso for igual, verdadeiro. Vamos imprimir, ei, encontramos o guerreiro
e depois vamos
interromper nossa execução aqui, o que
significa que, como guerreiro é
nosso índice médio aqui, nunca
devemos nem chegar demais profundo porque essa é a
nossa última entrada na matriz. Vamos destruí-lo
assim que encontrarmos o guerreiro. Vamos
testar isso aqui. Compile, salve e jogue rapidamente. Pressionando a tecla B. Lá vamos nós. Diz grande guerreiro, guerreiro
encontrado,
nem sequer chegamos a ladrão. Agora, alguns possíveis usos de
cada nó de loop
para você considerar, talvez você possa usar
um desses nós para destruir uma série de inimigos, ou talvez gerar uma
série de itens, como saques derrube itens ao
destruir esses inimigos. Talvez você use um para cada nó de loop para verificar o
parâmetro de todos os objetos em uma matriz e, em seguida, fazer algo com aqueles com
um determinado parâmetro. Como exemplo, para
qualquer inimigo com menos de 50% de vida,
Yulen caia. Apenas alguns exemplos
para fazer vocês pensarem, tudo bem, pessoal,
isso serve para oferecer este. Nos vemos na próxima.
85. Loop “while”: Bem-vinda. O node while loop
é o foco deste vídeo e demonstraremos
um caso de uso aqui em breve. Primeiro, como isso funciona? Bem, você conectará um fio de execução no lado de
entrada do nó. E ele será
executado repetidamente fora do corpo do loop no lado
da saída. Desde que a
condição booleana aqui seja verdadeira. Agora, observe que você precisa
ter cuidado com esse nó, pois é muito fácil
ficar preso em um loop infinito se
você não tomar cuidado. Como uma boa regra geral,
não insira um nó de loop while a
menos que a condição possa ser quase imediatamente alterada para falsa. Por exemplo, se você está esperando
ter seu personagem e sobrepor um volume de gatilho para mudar uma condição para falsa, é garantido que
você ficará
preso em um loop infinito. Você precisa imediatamente ter um meio de definir sua
condição como falsa. Tudo bem, agora, vamos ver um exemplo de caso de
uso do nó while loop. Agora vou
fazer um pouco de
pré-configuração aqui antes de começarmos a escrever alguns scripts, o que eu fiz foi qualquer conteúdo,
caracteres, malhas, pastas. Eu simplesmente arrastei e solto a
malha esquelética Imani no meu nível. Na verdade, qualquer tipo de
malha esquelética com alguma colisão, malha
estática, criaremos uma forma básica
, desde que haja colisão. Vamos fazer algo
errado em eventos de sucesso. O que estamos essencialmente
tentando configurar aqui é um cenário em que Manny será um ladrão e
roubará alguns itens de inventário em excesso do nosso ThirdPersonacter. Que desonesto na ação. Agora, em seguida, você precisa ter seu ThirdPersonCharacter
Blueprint aberto porque, dentro daqui,
clique duas vezes nele. Vamos adicionar
algumas variáveis. Então, no
painel Meu Blueprint, clicaremos em Adicionar variável. Esse primeiro será
chamado de estoque máximo de itens. E então eu posso clicar com o botão direito do mouse
sobre isso, duplicá-lo. O Control D é como você também pode
duplicá-lo. Esse vai
ser chamado de inventário. Itens atuais que
preciso compilar para
adicionar alguns valores padrão. Então, vou dizer que
atualmente nosso personagem tem 75 itens de inventário, armas, escudos,
poções de saúde, todo esse tipo de coisa. E eles realmente só
podem depositar 50, esse é o máximo que
deveriam ter. Então, por baixo desse cenário
hipotético, estou dizendo que nosso
personagem está carregando mais itens do que
é permitido ter. Mas estamos permitindo que eles realmente carreguem
esses itens em excesso até que eles realmente os depositem,
se forem pegos, no entanto, vagando pelo mundo aberto
e um ladrão aparecer, eles podem roubar qualquer item em excesso que são personagens que podem ter. Novamente, estamos vendo que
o máximo permitido para cotar um banco sem cotação é 50. Atualmente, eles são
gananciosos e carregam 75. Então, um aço engrossa
até 25 desses. Tudo bem, com isso,
vou compilar isso. Vamos
voltar ao nosso nível. Garante que você tenha selecionado
seu ator Manny Skeletal
Mesh. E com essa seleção,
vá para o seu Plano de Nível,
abra o Plano de Nível. Eu fiz um pouco de
pré-configuração aqui com antecedência. Mas aqui está como você
pode jogar junto. Em primeiro lugar, estou fazendo um
ator. Há quatro sucessos. Esqueleto aí, Skeletal Mesh. Se você clicar com o botão direito do mouse em eventos, colisão, adicionar o quadril do ator, é assim
que você pode
adicionar esse nó. Então, fora daqui, você
pode arrastar e fazer um Cast to ThirdPersonCharacter
para encontrar esse nó. Agora, se é nosso personagem de terceira pessoa
que atinge nosso ladrão, seu Manny, o ladrão. Vamos
entrar nisso e fazer uma vez. O que vamos fazer uma vez é repetir
esse loop while. Então, mesmo que
isso diga “faça uma vez”, vamos ficar
nesse ciclo de tempo até que a condição
aqui se torne falsa. Agora temos que
preencher uma condição. Bem, nossa condição
avaliará nossos itens de estoque. Então, retire seu personagem de
terceira pessoa, digite o inventário,
vamos
pegar nossos itens de inventário atuais. E lembre-se, temos 75
em nosso inventário atual. Então, vou clicar
nesses três pontos
aqui e colocá-los em 75 apenas
como um lembrete para nós mesmos. Em seguida, vou
arrastar, se você digitar
novamente o inventário, obteremos o máximo de itens
que podíamos ter. E eu vou clicar nesses
três pontos e colocá-los em 50. E vamos
comparar esses dois. Então, arrastando
meus itens atuais, vou trazer
um nó maior que. Portanto, se nossos itens atuais forem maiores que r, o máximo de
itens
for longo, se isso for verdade, continuaremos fluindo
para fora do nosso corpo de loop aqui. Agora, toda vez que
saímos do nosso corpo circular, quero diminuir
a quantidade de itens em nosso estoque atual. Então, vou sair
daqui e digitar decréscimos. Agora, esse nó recebe uma entrada e ela
diminuirá automaticamente a partir daqui. Então, vai diminuir 75. Na verdade, isso o
retornará ao valor atual. Portanto, 75 menos 174, ele automaticamente definirá
isso como um novo valor. Em seguida, ele repetirá novamente, 73, et cetera, et
cetera, et cetera. Desde que isso seja
avaliado
como verdadeiro, assim que for
avaliado como falso, interromperá esse processo. Então, vou inserir isso em nossa sequência de impressão
aqui para que possamos ver esses números
impressos na tela dessa forma. E, por fim, da caneta de execução
concluída, vou trazer
outra sequência de impressão. E eu simplesmente
imprimirei o excesso em vão de itens conservadores roubados, roubados por aquele ladrão. Então esse é o nosso roteiro se você
quiser jogar em casa. Agora, este é um
exemplo de caso de uso do loop while porque eu sei, eu sei que isso vai
ser avaliado como falso. Sei que meus itens de
estoque atuais acabarão por
atingir esse limite. Então, vamos compilar isso. Salvar. Vou colocar
isso aqui em cima. Clicando em play, definindo
meu objeto de depuração meus mapas
para que eu possa ver
esse script sendo acionado. Aqui. Vamos, lá está meu ladrão. Eu tenho meus 75 itens
que estou
rolando dentro do relógio de
nível aqui em cima. Imediatamente, o 7473
acabou e disse que o excesso de itens de estoque foi removido, e só fez
isso uma vez. Você pode ver se eu tentar isso de novo, fica preso na neve
do tipo “quero”. Então esse é um exemplo. Caso de uso do loop while. Agora, quanto às diferenças entre o loop while e os loops
for em geral, você deve usar um loop
for quando souber
quantas vezes o loop deve ser executado. Se você quiser que o loop seja
interrompido em uma condição diferente do número
de vezes que ele deve ser executado. Talvez então considere
usar um loop while. Tudo bem, pessoal,
isso serve para oferecer essa. Nos vemos na próxima.
86. Interruptores: Bem-vindo. Vamos
abordar os nós de
um switch neste vídeo. E logo de cara, você pode notar que os nós de
comutação vêm em uma variedade de sabores aqui. E eles não têm uma faixa cinza na parte superior, como o resto dos
nossos nós de controle de fluxo. Estou considerando essas partes
da categoria de controle de fluxo porque essencialmente,
controlaremos o
fluxo do nosso script. É desse um desses pinos de
execução que saímos,
dependendo dos dados que estão sendo
inseridos no nó do switch. Agora, os nós de comutação vêm
em várias variedades. Na verdade,
vamos cobrir
muitas variedades , as
principais variedades aqui. Isso é um switch on int, switch on string,
switch on name. E também ativaremos o enumerador. Você não vê a opção
ativar enumerações aqui porque o nome de uma opção na enumeração
variará
dependendo da enumeração
que você criou. Isso é o que eu criei no
início do curso, e essa enumeração
consiste nos três rótulos, super ok, e ela mal. Então, se eu
arrastasse um fio para fora disso e digitasse um interruptor, eu poderia colocar um interruptor específico
para essa enumeração. Você pode ver minhas saídas,
estão super, ok e doem muito. Agora, se você clicar com
o botão direito do mouse em qualquer gráfico de eventos e simplesmente
digitar a palavra switch. Você pode encontrar uma
série de nós de switch, maioria dos quais nunca será usada. Mas é bom
ressaltar que eles existem. Mais uma vez, abordaremos os principais sabores e este
e algo que você
notará . O comentário dele sobre todos esses nós
de switch é eles têm um único pino de entrada de
execução, mas eles têm
entradas de dados diferentes para eles, dependendo do
tipo de nó do switch. Além disso, o que é
comum entre eles é que você pode sair de diferentes saídas,
dependendo dos dados inseridos. Então, essa é a aparência de um switch on int que é a
abreviação de Switch on on int que é a
abreviação de Switch on
integer node quando você procura
pela primeira vez e o
adiciona ao seu gráfico. No entanto, no
lado direito, você vê
como esse
nó ficaria se eu adicionasse pinos a ele. Então, para tudo isso,
você pode clicar nesse botão Mais e
adicionar mais pinos a ele. Por padrão, eles começam
com um pino de saída padrão. Na verdade, você pode personalizar
isso com qualquer um
desses nós selecionados
no painel Detalhes, você pode escolher se ele tem ou
não um pino padrão. E você também pode, no caso de um
interruptor, observar que, se estiver adicionando
alguns pinos a ele, como estou fazendo aqui, você pode
escolher seu índice inicial. Então, atualmente diz
começar no índice 0. Eu poderia dizer que escolha
começar no índice dez, e então eu vou fazer o
primeiro número aqui dez, e então ele
numerará de acordo. Vou colocar isso de volta ao padrão. Ligue a corda. Muito parecido. Eu posso adicionar mais pinos assim. E com isso selecionado
no painel Detalhes, posso escolher se ele tem ou
não um pino padrão. Eu posso escolher os
nomes dos pinos, etc. Eu posso escolher isso. Eles diferenciam
maiúsculas ou não. Portanto, existem algumas
opções diferentes,
dependendo do tipo de nó do switch. Agora, o pino de saída padrão, quando você sai desse? Você sairá disso se
os dados inseridos não corresponderem a nenhum dos diferentes pinos de
saída que você deseja. Isso é facilmente visto
no interruptor do internode. Então, agora eu tenho uma
seleção de zeros. Se eu entrasse nisso, eu dispararia
do pino de saída 0. Se, no entanto, meu número
aqui foi salvo em 50. E deveríamos executar um
script por aqui. Ele não corresponde a nenhuma
dessas saídas,
portanto, dispararíamos a partir
da saída padrão. Ok, eu tenho alguns exemplos que
eu gostaria de mostrar aqui. Então, vou começar com
meu plano de
personagem em terceira pessoa. Agora, o que eu fiz
antes do tempo aqui, eu fiz isso em um vídeo anterior. Eu criei um enum
chamado E health status. Essa enumeração, essa enumeração,
consiste em três rótulos, super ok e machucado gravemente. Vou apenas deslizar
esta seção para essa parte do
gráfico, onde tenho alguns nós esperando por mim. E o que eu simplesmente
vou fazer é ao pressionar alguma tecla de entrada, eu vou alterar a velocidade máxima de caminhada do meu
personagem. Agora, você pode alterar esses
parâmetros aqui, este parâmetro de velocidade máxima de caminhada, se você selecionar o componente de
movimento do personagem, você pode ver no painel
Detalhes que você tem um parâmetro chamado
max velocidade de caminhada que controla a rapidez com que
seu personagem se move. Então, tudo o que você precisa
fazer é arrastar e soltar. Adicione isso ao seu
gráfico, arraste para fora
daqui e digite a velocidade máxima de caminhada
definida, e você encontrará esse nó. Então, o que vamos querer
fazer aqui é baseado no valor
do nosso enum
aqui, super, ok, ou ela mal, você vê que essas são as três saídas
que correspondem
aos três rótulos que
este O enum consiste em. Se for ótimo, vamos
aumentar nossa velocidade máxima de caminhada. Se estiver tudo bem. Vamos fazer com que seja. 500. Se nos
machucarmos gravemente, vamos definir
isso para 100s. Então, vou
clicar com o botão direito do mouse e
trarei uma chave de entrada. Vamos experimentar a chave da AIDS. Acho que ainda não estou
usando a chave de ajuda para nada. Então, neste momento, nosso
estado de saúde é excelente. Então, quando eu pressiono a tecla a, devemos aumentar nossa velocidade
máxima de caminhada para 2 mil anos. Então, clicando em play,
definindo minha depuração. Objeto ao meu
ThirdPersonCharacter. Aqui vamos nós. Então, eu estou vagando ou pensando se
vou pressionar aquela dor. E agora, de repente, eu
posso me mover muito mais rápido. Boasted mudou meu
estado de saúde aqui para simplesmente ser gravemente ferido. Eu
mudei isso agora. Então, uma vez que eu pressiono a tecla a, vamos avaliar
esse valor ouvido Valley. Vamos sair
daqui e isso
mudará nosso B2 máximo, 100. Clicando em Play. Lá vamos nós, pressionando as teclas de movimento
agora, WAS e D. Aqui vamos nós. Chave oito. Agora estou gravemente ferido e já sou
atleta olímpico. Então, há um exemplo
de uma ativação no enum. Para o próximo exemplo, vou matar esse inimigo. Veja aquele cara assustador que existe simplesmente
clicando neles. Quando eu fizer isso, vou
usar um botão no nó de polegada para gerar um loop e
criar um sistema aleatório de
saque. Então, se você quiser
jogar em casa, eu simplesmente adicionei uma malha. Este S k, m em Manny da pasta de
malhas de manequins do
meu personagem, arraste e solte
isso no meu gráfico. E com isso selecionado, entrei no meu
Plano de Nível aqui. E eu tenho alguns nós
configurados com antecedência aqui. Eu adicionei um evento onclick
para esse S KM, muitos, novamente, você precisa
selecioná-lo e
seu nível e você pode adicionar um deles clicando com o botão direito
do mouse. E eventos em
eventos de entrada, uma entrada de mouse. E foi aqui que eu
fiz um evento onclick. Então, o que eu quero fazer
quando clico em Manny aqui? Bem, eu vou
sair daqui e colocar um
nó de ativação. E vou adicionar
alguns pinos de saída aqui. Vou para 1234. E eu vou escolher um valor inteiro
de um intervalo aleatório. Então, vou arrastar
para trás e digitar aleatoriamente. intervalo de números inteiros aleatórios é o
que vou procurar. Então, vou dizer que
me dê um número entre 03. Então, ele escolherá 012 ou três. E então vou disparar
os pinos correspondentes com
base no número que ele seleciona. Agora, o que eu quero fazer é
se obtivermos um 0 ou um, eu simplesmente vou fluir para
um som de reprodução para o nó. Vai dizer fracasso. Então, 50% das vezes vamos
apenas tocar um som e você
não receberá nada. Então, vamos dizer 50% do
tempo para matar um homem. Se estiver aí, você não ganha
nada além
dos outros 50% das vezes, vamos gerar algo em nosso nível aqui. Vou me arrastar para um ator de
spawn do nó da classe. Você pode clicar com o botão direito do mouse
e fazer uma busca por spawn actor da classe. Vamos dizer que se
conseguirmos dois ou três, vamos desovar. Vou criar um homem da BP, uma poção que criamos no
início do curso. E eu tenho que alimentar isso com
uma transformação de spawn porque se eu compilar
agora , ele vai gritar
comigo e dizer:
Ei, você precisa gerar
transformação para isso. Então eu vou dizer, onde devemos gerar isso? Deixe-me me livrar
desses dois nós aqui embaixo. Bem, eu já selecionei
Manny, então vou clicar com o botão direito do mouse
e algum espaço vazio. Na verdade, não
vou clicar com o botão direito do mouse. Eu poderia clicar com o botão direito do mouse e obter uma referência a Manny assim. Ou você pode manter pressionado
o botão esquerdo do RT e obter uma referência
a Manny como essa. Vamos sair de Manny e
digitar na forma get trans. Estamos procurando o
mundo que se transforma. Conseguimos que a transformação do ator
esteja bem. Vamos conectar isso. Isso é o fim. Vamos tocar uma espécie
de som depois disso. Então, vamos arrastar
esse som de reprodução em 2D e reproduzimos teletransportes. Comprometido Claro,
isso soa bem. Vamos compilar nosso script aqui. Então, quando clicamos em Manny, vamos escolher um
número aleatório entre 03, dependendo do número que obtivermos. Ou falharemos
50% das vezes ou 50% das vezes
geraremos uma manifestação. Portanto, essa é uma maneira de
criar um sistema de
saque aleatório com peso. Se eu quisesse esperar esses setenta e cinco por cento
do tempo para abranger e abranger
um homem, uma poção. Você pode ver como eu poderia usar
uma configuração como essa. Mas eu vou para 5050 em vez disso. Compile, salve. Livre-se desse cara aqui mesmo. E lidaremos com essas sequências de caracteres nas trocas de nomes
em apenas um momento. Ei, isso, movendo isso
para o canto aqui, vou definir meu mapa
como meu objeto de depuração de teste. E aqui vou
eu, vou clicar nela. Você verá esse
roteiro sendo disparado. Bam, há um homem, uma poção a seus pés, e eu não destruí muitos. Eu provavelmente deveria ter
feito isso também. Porque agora podemos
continuar clicando neles. Tudo está gerando exatamente
no mesmo local. E, na verdade, eu deveria fazer isso. Vamos matar muitos. Se, de fato, gerarmos aquela poção de
Amanda retirada do dinheiro, diremos Destroy Actor. Nos eventos em que clicamos. Ambos podem fluir
para lá assim. Então, agora, quando clico
neles, bam, mortos, temos um homem, uma poção que também
podemos coletar. Tudo bem, o próximo exemplo
que estou exibindo aqui será feito dentro
do meu Plano de Nível. E como um pouco de
preparação feita com antecedência, eu tenho um Manny adicionado
ao meu nível aqui. E só para mostrar o que
mais eu fiz aqui foi com Manny selecionado de volta no meu Plano de
Nível, imediatamente recebi uma referência
a Manny aqui embaixo. Assim, você pode obter isso mantendo
pressionada
a tecla Alt e clicando com o botão esquerdo. E então o que eu fiz foi desenhá-lo aqui. A localização do ator
digitando isso. Vou explicar tudo isso
daqui a pouco, mas deixe-me fazer um backup um pouco. Em primeiro lugar, estamos
pressionando a tecla cinco. Então, se você clicar com o botão direito do mouse
e digitar no teclado, é assim
que você pode
obter as cinco teclas. Bem, então vamos
fluir para um switch
no nó de string. Agora, essa é a aparência do nó quando
você o traz. No entanto, você pode adicionar alguns pinos clicando
neste botão de adição. Ao fazer isso, você pode renomear esses pinos de saída
substituindo esses nomes. E você pode ver
que eu fiz isso chamando-os Bob, Pablo e uau. Tudo bem, então eu vou
deletar este em favor do que
eu configurei com antecedência. Agora estamos inserindo uma variável de
string Eu criei uma variável aqui, namestring, e é
do tipo string. E eu defini o
valor padrão para ser Pablo. Como você notará,
esse é o nome do meu pino de
execução de saída intermediário aqui. Deixei uma porta de anotações aqui. Então, o que eu também estou
fazendo não é apenas conectar essa
variável de string aqui, eu também estou configurando exatamente a
mesma variável de string de volta
para Whoo Assim que eu
liberar a tecla cinco. Então, eu estou pressionando, avaliando o
conteúdo
dessa variável de string, será Pablo. Então, continuaremos
fluindo para fora daqui. E então vamos
teletransportar nosso personagem jogador, ou
seja, nós, para a
localização de Manny. Agora não podemos fluir exatamente
para a localização de Manny. Eu simplesmente saio daqui, trouxe um
nódulo de subtração e estou simplesmente subtraindo 200
na localização x só para me
compensar um pouco. E eu conecto isso como meu local
de destino. Então, observe que estou pressionando
a tecla cinco. Essa variável de string
será lida o máximo possível, então fluirá para fora
da saída do Pablo. Vamos nos teletransportar para
o local perto de Manny. Assim que eu soltar
a tecla cinco, ela mudará o
conteúdo dessa variável para woo modo que na próxima vez que
eu pressionar a tecla cinco, não
faremos nada porque não há nada chegando fora
da saída Wu. Alfinete. Compilar e salvar. Vamos jogar
aqui para testar isso. Tudo bem, então confira aqui. Vou pressionar
a tecla cinco e serei teletransportado
para perto de muitos para lá. E só para realmente
provar isso, deixe-me voar para longe, fugir para longe de Manny. Ok, vamos lá. Cinco
chaves. Nós nos teletransportamos. Agora vou
liberar a tecla cinco, definindo o conteúdo como Wu
agora para essa variável de string. Então, da próxima vez que eu
pressionar a tecla cinco, podemos até ver que
ela mostra whoo. Você pode ver que, passando o mouse sobre esse fio, está mostrando Wu. E nada acontece porque não
temos nada acontecendo fora do pino de saída
do Wu. Então aí está para
ligar a corda. E por último, mas não menos importante, mais
um exemplo
do nó do switch. Este vai
ser ativado pelo nome. Eu também vou fazer
isso dentro do meu nível. Blueprint tem um
pouco de preparação. Eu tenho algumas variáveis de nome
na seção de variáveis. Eu criei essas formas no
início do curso. Um deles é chamado de nível
11, um deles é chamado de nível dois. E quando eu dei a eles
um valor padrão, nomeei um
mapa inicial em minúsculas e o outro nível para ouvir o padrão
mínimo em maiúsculas, eles realmente correspondem
ao nome de alguns ativos de nível. Se eu voltar para o
meu navegador de conteúdo aqui na pasta inicial de mapas de
conteúdo, haverá um mapa padrão mínimo e um mapa inicial. Então, vou usar essas variáveis para determinar para
qual nível vamos transportar e
para o qual
iremos, com
base na seleção que
conectamos a essa
opção no NameNode. E eu
vou fazer isso um pouco diferente. Primeiro, vou clicar
com o botão esquerdo e arrastar cada um deles
para o meu gráfico. Assim. Então, o que vou
fazer apenas para mostrar uma coisa diferente que
podemos fazer aqui é criar uma matriz. Uma matriz é uma lista
de coisas semelhantes. Ambas são variáveis nomeadas, então podemos criar
uma lista delas. Vou adicionar um pino para que eu possa conectar no nível dois aqui. Então eu vou apoiar isso um
pouco e
vou me arrastar para fora disso. Agora temos uma matriz que
consiste em dois elementos. Vou me arrastar para fora disso e digitar um item
de matriz
aleatório e aleatório. E eu vou conectar
isso como sais. Então, esse nó vai
escolher um item de matriz aleatório. Só temos duas
seleções possíveis aqui. Ele escolherá um aleatoriamente e permitirá que eu clique em
mais e mais
fluam para fora de cada um deles,
dependendo do elemento escolhido. Então, vou mudar meu caso 0 aqui para corresponder ao nível um aqui. Então, Starter Mountain,
basta apertar Controle C, ativar o nome. Vou substituir esse controle V. E então para o nível para
Controle C e ativarei nome Controle V. Tudo bem, então se for o
mapa inicial que for escolhido, vamos fluir para o
nível chamado mapas iniciados. Na verdade, vou arrastar
e soltar esse nível nessa função de nível aberto
por nome. E se isso escolher
entre nossa matriz, o
nível padrão mínimo até aqui, vou arrastar
e soltar isso aqui e continuar assim. Tudo bem, então vamos
compilar isso. Salve isso. E vamos jogar isso aqui. Então, assim que eu
pressionar a tecla cinco, vamos congelar
porque vamos
transportar os níveis aqui. E então, de fato, transportamos para outro nível
jogando mais uma vez, veja se conseguimos que o
outro
apareça aqui pressionando a tecla cinco, lá está nosso nível
padrão mínimo, e lá Você tem
, ative os nomes. Portanto, esses
nós ativados são muito úteis. Pessoalmente, gosto bastante de
usar os nós de ativação para
criar um sistema aleatório de
saque. Você pode esperar essas porcentagens de
saque, mas muitos
aplicativos úteis farão para oferecer este vídeo. Nos vemos na próxima.
87. Selecione: Bem-vindo. Neste vídeo, nosso objetivo
é obter conhecimento e demonstrar o uso
do nó de seleção. Agora, a nota selecionada não é oficialmente considerada
um
nó de controle de fluxo , pois não afeta
o fluxo de execução. Na verdade, não há pinos de
execução nesta nota. No entanto, a nota de seleção
ajuda no fluxo de
dados em seu script. Então, achei melhor
incluir essa lição aqui. Então, o nó de seleção, o que exatamente ele faz? Bem, selecione notas, anote qualquer índice e, com
base nesse índice, ele retornará uma
das opções inseridas. Agora, isso é útil
porque às vezes você quer que o valor de retorno aqui seja diferente,
dependendo do valor inserido. Agora, apenas um exemplo muito rápido. Se eu mudar nosso tipo de índice
aqui para ser um booleano, veremos que nossos pinos de entrada aqui mudam para verdadeiros e falsos. Agora, dependendo
se isso for verdade, poderíamos ter o
valor verdadeiro aqui, a saída. Ou, se for falso, poderíamos ter qualquer
entrada
na saída falsa. Então, você pode ver,
dependendo do valor disso, vamos escolher uma
dessas opções para retornar, tudo bem, para trazer um desses
nós de seleção
para o seu gráfico, é tão simples quanto
clicar com o botão direito do mouse e fazendo uma busca por select. Ou, alternativamente, outra maneira trazer
uma nota de seleção é se você tiver um desses tipos de
índice, booleano, byte ,
inteiro, inteiro 64 ou qualquer enumeração que você
possa arrastar esse tipo de variável também localiza
a nota selecionada. Agora, só para demonstrar isso vou escolher, tenho uma variável
inteira no meu lado esquerdo aqui. Vou apenas arrastar e
soltar isso no meu gráfico. Eu deveria pegá-lo e
depois
arrastá-lo e digitar select. Você pode ver que consigo encontrar
um nó selecionado a partir daí. E esse número inteiro é imediatamente conectado ao nó de seleção. Tudo bem, vamos explorar rapidamente algumas opções de
nós aqui antes de mostrarmos alguns exemplos Vou
excluir esse nó rapidamente. Você pode clicar com o botão direito
do mouse em um nó, o próprio nó, e ver como adicionar pinos a ele. mouse em Adicionar pino ou você pode remover o pino
clicando com o botão direito do mouse
no nó, remover Remova o pino. Clicar com o botão direito em uma opção ou valor de
retorno pode
alterar os tipos de pinos No momento, eles são
definidos como curingas, o que significa que eles podem ser alterados para algo
dinamicamente. Faça o que eu conectei a isso. Digamos que, se obviamente,
conectar um vetor na opção um
mudará todos os outros pinos
aqui, a opção
no valor de retorno para
ser do mesmo tipo. Ou eu poderia definir um
aqui clicando com o botão direito do mouse
nos pinos de opção
ou valor de retorno. E ao fazer isso, eu poderia
mudar o tipo de pino para ser uma das várias opções. Clique com o botão direito em Alterar tipo E eu poderia mudar isso
para, digamos, transformações. Também posso alterar
o tipo de índice aqui, clicando
neste menu suspenso. E não sei por que está
aparecendo aqui. Depois de clicar
nesse booleano, byte, inteiro, inteiro 64 ou
qualquer uma das várias enumerações. Ou posso simplesmente clicar com o botão direito do mouse
no próprio pino e alterar o tipo de pino com o pequeno
menu suspenso também. Mas você já
tem esse menu
suspenso, então não acho essa opção
tão útil. E é claro que você pode ver na própria nota aqui que você tem a opção de adicionar pinos simplesmente clicando neste botão de adição. Então, essa é outra maneira de
adicionar mais alguns pinos de opção. Tudo bem, por exemplo,
vou mostrar vários exemplos de nós selecionados
aqui no meu plano de níveis. Então, se você quiser
jogar em casa, selecionando sua
guia de nível aqui, abra o Plano de Nível. É assim
que você pode encontrar seu caminho aqui. E vou
começar clicando com o botão direito do mouse e digitando unions select. Agora, o primeiro exemplo que
eu quero mostrar é usar um índice booleano. Então, vou clicar nesse menu suspenso e
selecionar um índice booleano. Agora observe que, no
momento em que eu fizer isso e selecionar booleano
,
minhas opções aqui serão falsas e verdadeiras, porque um booleano
só pode ser falso ou verdadeiro. Vou arrastar para trás
do meu índice aqui e vou
digitar bool aleatório. Portanto, esse nó simplesmente
emitirá aleatoriamente o
valor de falso ou verdadeiro, dependendo do
valor que ele emitir. Digamos que, por exemplo, ela seja falsa. Ele escolherá essa entrada, a entrada falsa aqui, para retornar. Se for verdadeira, escolherá a entrada
verdadeira a ser retornada. É assim que funciona. Tudo bem, vamos trazer
um nó de eventos imediatamente. Vou clicar com o botão direito do mouse para digitar
nas cinco entradas do teclado. E vamos nos
afastar disso e digitar nível
aberto pelo nome. Agora, essa função
abrirá um nível por nome. Ele está procurando
uma variável de nome. Confira isso. No lado esquerdo. Eu tenho o nível um
e o nível dois. Essas são duas variáveis nomeadas. Esse é o tipo aqui que eu
criei anteriormente no curso. E depois de compilar, defini os valores dos nomes aqui para serem o
mapa inicial para o nível um. nível dois, eu defini o tipo de variável de nome aqui
como padrão mínimo. Agora, isso não é um erro. Eu os chamo
assim porque, aqui no meu navegador de conteúdo, na pasta inicial de mapas de
conteúdo, existem dois níveis, dois mapas que
podemos abrir, chamados padrões
mínimos, e com estrelas. mapa. Você notará que a capitalização
de todas as letras aqui, padrão
mínimo e o
mapa inicial são um pouco diferentes aqui do que você
vê nos nomes das variáveis. Aqui está tudo em maiúsculas e aqui está tudo em minúsculas
para variáveis de nome. Isso não importa. Tudo bem? Então, vou conectar o nível
um na entrada falsa, nível dois na entrada verdadeira. E, na verdade, antes de
colocá-lo lá, observe isso, no momento em que conectei um tipo variável em qualquer uma dessas
entradas aqui, ou deixe-me cortar esse fio. Vou manter pressionada a tecla
Alt e clicar com o botão esquerdo. Ou se eu
inserir algo no valor de retorno
nessa direção, isso mudará os
dois lados do nó para
o tipo de variável
correspondente. Então, ele sabe que nosso valor de retorno desejado
aqui é do nome. Então, vai dizer, ok, você está procurando um tipo de variável de
nome, que significa que você precisa
conectar algumas variáveis nomeadas. Então, nível um, nível dois aqui. Então, uma vez que eu pressiono a tecla cinco, ela abrirá em algum nível acordo com a variável de nome, nós inserimos nela qual variável de
nome
finalmente passará por aqui? Bem, isso será
determinado por esta nota selecionada. A nota selecionada aceitará
qualquer touro aleatório. Está dizendo que é falso. Ele vai escolher, selecionará o
nível um aqui,
o mapa inicial, e retornará esse nível para o nível
que abrimos. Se esse bool
aleatório for verdadeiro, ele escolherá, selecionará o valor verdadeiro aqui, conectará o padrão mínimo e passará isso como
o nível para
abrir a compilação, o salvamento e a reprodução. Eu já tenho meu
mapa de teste configurado lá para que possamos ver
esse grupo atirando. Então, quando eu pressiono a tecla
cinco, vamos lá. Isso me levou ao meu nível padrão
mínimo. Nesse caso, mostra a opção verdadeira porque aleatoriamente, Bool deve
ter se revelado verdadeiro. Eu sei que esse era o nível
mínimo padrão. Tudo bem, no próximo exemplo aqui,
vou começar
colocando uma caixa de gatilho
aqui no meu nível. E você pode encontrar um
deles acessando
aqui na seção básica, Caixa de
gatilho, arraste
e solte aqui. Com isso, em seu nível, você pode definir a extensão da
caixa para uma
espessura de linha de 100100100 de dez. Além disso, eu também recomendo fazer isso para que você também possa ver
isso em seu nível. E você pode fazer isso
entrando
na seção de renderização e desmarcando o ator escondido no jogo. Tudo bem, com isso selecionado
aqui em nosso plano de nível, vou clicar com o botão direito do mouse
e faremos algo quando sobrepomos isso,
porque fazemos
muitas coisas em ganhos quando sobrepomos
um volume do gatilho. O que vamos fazer é
sair do nosso outro ator e vamos escalar para ThirdPersonCharacter. Esses são os personagens
que estamos controlando. E se é verdade que o
outro ator que se sobrepunha essa caixa de gatilho era o personagem em
terceira pessoa. Vamos gerar algo,
gerar atores da sala de aula. E vamos
conectar isso assim. Agora, o que
geramos será impulsionado por um índice inteiro. Então, o que eu vou fazer é
arrastar e soltar um número inteiro
no meu gráfico
aqui mesmo em uma
variável inteira, assim, você pode criar um
desses clicando
no botão de adição e adicionando
um variável inteira. Vou buscá-lo. E então eu vou
sair daqui e vou digitar select. Porque estou arrastando isso
para fora da variável inteira. Ele sabe que eu quero
inserir isso como meu índice. Agora, eu quero escolher
algo para gerar no meu nível, dependendo
do número inteiro que eu inseri. Então, vou fazer
isso para garantir que eu tenha as aulas adequadas
para colocar como minhas opções. Se eu apenas arrastar para trás
do ator de spawn da aula, sabia assim, assim, e conectá-lo
ao valor de retorno. Isso
mudará automaticamente meus pinos de entrada para serem
do mesmo tipo. Aqui vamos nós. Tudo bem, então deixe-me
adicionar um terceiro pino aqui. E agora eu posso selecionar diferentes classes nas quais
queremos criar. Vou escolher
alguns aleatoriamente aqui. Eu tenho um homem, uma poção que eu criei anteriormente. Podemos desovar em algum efeito de planta de
fogo. fogo realmente não importa
o que você coloca aqui, e também faz faíscas. Esses são alguns
dos mais comuns que eu gosto. Tudo bem, agora meu número inteiro
aqui, se for 0, se esse for o inteiro
que estamos alimentando, ele escolherá a Opção 0
para aparecer no jogo. Se eu alterar esse valor
inteiro para um, ele escolherá essa opção para retornar e aparecer
no jogo. Se o número inteiro for igual a dois, ele escolherá essas faíscas para retornar e
as gerará no jogo. Agora eu preciso
nos dar uma transformação de spawn, porque se eu compilar aqui, ele vai gritar comigo
e dizer: Ei, idiota, eu preciso saber
onde aparecer. Então, vou voltar ao meu nível. Eu vou trazer, vamos trazer um ponto-alvo. Vou clicar
aqui em cima. Vou colocar
o painel de atores e digitar os alvos. Pontos-alvo. Coloque um desses
ali mesmo. Com isso selecionado
aqui novamente no meu Plano de Nível, vou clicar com o
botão direito do mouse desta vez. Crie uma referência para isso, eliminará
isso e digitará get trans form good actor transform. E eu sei que agora são
números inteiros são um valor de 0. Então, eu vou
compilar aqui. Portanto, deveríamos estar desovando
de uma maneira semelhante. Então, vamos jogar aqui. Reduza isso. Então, assim que eu sobrepor
esse volume de gatilho, ele deve selecionar o
inteiro 0 aqui para gerar
uma poção
no jogo no local
desse ponto-alvo. Aqui vamos nós. E, de fato, fez isso. Agora, isso não é muito interessante porque
sabíamos que esse seria nosso
resultado porque
definimos nosso
valor inteiro aqui como 0. Então, o que eu poderia fazer
é excluir isso, arrastar para trás do
nosso índice e digitar um número inteiro
aleatório no intervalo. E eu posso dizer: Ei, escolha
algo entre 02, compile, salve no jogo. Aqui vamos nós. Encontrei uma poção. Se eu continuar me sobrepondo porque não
vou fazer isso uma vez. Eventualmente, conseguirei todos eles. Lá vamos nós. E então você pode ver
como ele está escolhendo uma opção diferente
aqui,
dependendo do número aleatório
que estamos alimentando. Tudo bem, um último exemplo
aqui para este, vou usar meu personagem de
terceira pessoa da BP. Então, se você não se
importar clicar duas vezes
nele para abri-lo, mostrarei como podemos usar um nó de seleção junto com
um número e na enumeração. Agora, criamos essa enumeração no
início do curso. Então, se você quiser saber qual é a aparência de
uma enumeração, estou entrando na minha pasta
de scripts Blueprints. E aqui eu tenho a
enumeração eHealth status e você pode clicar com o botão direito do mouse e
algum espaço vazio aparece em Blueprints para criar
um ativo de enumeração. Nesta enumeração
do estado de saúde, que é uma lista de
rótulos, se você quiser. Estou muito bem
e me machuquei muito. Então, dentro do meu personagem de
terceira pessoa, criei uma variável e defini o
tipo de variável para apontar para a enumeração que
criei, o status de eHealth. Vou arrastar e
soltar isso no meu gráfico. Vamos pegar isso e
eu vou me arrastar para fora disso e digitar select. Então, podemos ver
imediatamente porque nossa enumeração
aqui
consiste nesses três
rótulos doendo muito, ok, em super, nós os vemos como nossas três
entradas aqui. Agora, o que queremos
fazer dependendo se esse índice aqui está
gravemente ferido, ok ou super? Bem, o que eu quero fazer é pegar componente móvel do
meu personagem,
arrastar e soltar isso. E eu vou, vamos fazer outra coisa aqui. Você já me viu ajustar minha velocidade
máxima de caminhada antes. Vou definir a velocidade do meu
salto z. Agora, o salto Z Velocity é um parâmetro dentro do componente de movimento do seu
personagem. Aí está, isso determina o quão alto seu personagem pode pular. Então, eu vou arrastar para trás. Os escritórios aumentaram a velocidade. Essa é uma variável flutuante
do que ele está
procurando e
conecte-a ao valor de retorno. Agora, no momento em que eu fizer
isso, todas as
entradas aqui também
serão um valor flutuante. Agora eu poderia inserir
algumas variáveis para determinar esses
valores aqui. Eu só vou colocá-los aqui com
dificuldade. Então eu vou dizer que se
eu for super meus saltos, a velocidade será de 2 mil. Se for, tudo bem, vou configurá-lo para 700, que é o valor padrão
para os saltos, a velocidade. E se eu me machucar gravemente,
direi que
só podemos pular até 100. Vou precisar de algum
tipo de chave de entrada aqui. Então deixe-me clicar com o botão direito. É um espaço vazio. Vou trazer as
cinco chaves aqui porque não
estou mais usando isso
no meu plano de níveis. Eu o apaguei de lá. Então, quando eu pressiono a tecla cinco, vamos definir os movimentos do nosso
personagem. Salte uma propriedade de velocidade, aquela propriedade ali mesmo. Vai ser definido para 2000 se nosso estado de saúde for dito
a ela, definido como super. Se estiver tudo bem, vamos pular 700. E se nos machucarmos gravemente
, está pronto para doer gravemente. Vamos
pular muito pouco. Tudo bem, então agora o
valor disso está muito machucado, então eu mal deveria pular para cima. Então compile, salve, jogue. Deixe-me definir meu objeto de depuração ThirdPersonCharacter aqui para que possamos ver o
script sendo acionado. Então, agora eu estou gravemente ferido. Então, quando eu pressiono a barra de espaço, eu não pulo muito longe. Mas, na verdade, esses são
meus saltos normais. Desculpe, eu tenho que pressionar
a tecla cinco aqui primeiro. Agora, quando eu pulo, mal
me
levanto do chão. Deixe-me definir meu
estado de saúde aqui para ser super compilar, salvar, jogar, e agora estou
pressionando a barra de espaço, esse é o meu
salto normal, pressionando cinco. Então, estou definindo minha velocidade de
salto agora para 2000 porque
a saída para isso é excelente. Então, agora, quando pressiono a
barra de espaço, estou me sentindo feliz. Portanto, há um exemplo de uso
do nó de seleção usando um enum. Tudo bem, então quais são alguns outros usos
possíveis
do nó de seleção? Considere isso,
talvez dependendo
do estado de saúde do jogador e você pode adicionar ao
jogador diferentes animações. Eles poderiam coxear, por exemplo, talvez dependendo do humor, alegria
, da tristeza,
desse tipo de coisa, você poderia alterar a faixa
musical que ela tocava. Aqui está outro exemplo. Talvez, dependendo da enumeração de qualquer arma
equipada, você possa exibir armas
diferentes no
coldre do personagem. E por último, talvez
dependendo de um número inteiro de teclas, você possa exibir o número x de malhas de teclas
penduradas na campainha do jogador. Então, se você tivesse uma
entrada inteira que dissesse três, você poderia exibir três teclas penduradas no cinto
do jogador. Se esse índice inteiro for um, você poderia ter uma chave pendurada no
cinto do jogador, esse tipo de coisa. Tudo bem pessoal, o
select node é um
dos nós mais úteis
em todos os scripts. Saiba o que
eu adoraria oferecer essa. Nos vemos na próxima.
88. Escolhendo o elenco: Tudo bem, sejam todos bem-vindos. Bem, atingimos
uma parte muito importante do curso em que
falaremos sobre diferentes maneiras nos
comunicarmos
entre os projetos. E vamos falar sobre o elenco especificamente
neste. Agora, até este
ponto do curso, você já me viu realmente
fazer muito casting. Todo o conceito de fundição
é essencialmente verificar alguma interação ocorre se um determinado objeto for do
tipo que você está procurando, não importa se é ou não, você pode criar um pouco
de script disparar. Agora você me viu fazer muitos lançamentos até este
ponto do curso, incluindo nosso exemplo de coleta de bp que criamos logo no
início do curso. E agora, só para
entrar nesse projeto,
fizemos com que, quando
você comece a sobrepor a esfera de colisão para este exemplo de captador da BP, que é essa
esfera de colisão aqui. Estamos fazendo uma coisa chamada casting para verificar se foi o
ThirdPersonCharacter que foi o outro ator que
fez a sobreposição. Então, mais uma vez, a projeção nos
permite verificar se um determinado objeto é
do tipo que estamos
procurando. Ao fazer isso. Nesse caso, conseguimos
acessar o nosso
ThirdPersonCharacter,
pegar a variável de saúde
que estava dentro dele, adicionar alguma quantia a ela
e, em seguida, redefinir essa variável de
saúde. Estamos nos comunicando do
nosso exemplo de bp
aqui para nosso
ThirdPersonCharacter, aumentando a saúde do
nosso ThirdPersonCharacter. Então, você pode ver que
a comunicação entre projetos é um
conceito muito importante a ser adotado. Tudo bem, você já me viu escalar para ThirdPersonCharacter
aqui um milhão de vezes neste curso. Então, vou
fazer algo um pouco diferente
para o nosso exemplo. Vamos voltar ao
nosso editor de níveis aqui. E, em seguida, minha seção de
Blueprints de script, vou clicar com o botão direito do mouse
e algum espaço vazio. E eu vou escolher
uma aula de blueprint, e eu vou escolher
a classe de ator. E eu vou chamar
isso de sublinhado da BP. Mova-se quando estiver perto. E você verá por
que o chamou assim aqui em pouco tempo. Vou clicar duas vezes
nesse cara para abri-lo. E vou adicionar
aos nossos componentes
no canto superior esquerdo, aqui
vamos adicionar um simples, vamos adicionar um cone simples
sob as formas básicas. E também vamos
adicionar mais um componente. E esse vai ser
chamado de Interp to Move. Agora, esse é um
componente muito legal que nos permite mover nosso projeto aqui entre quantos
pontos configuramos. Agora vou
deixá-lo com esse nome no movimento
Too e
pressionar Enter nele. E com ele selecionado,
vou até o painel Detalhes para
configurar alguns pontos entre os quais
vou mover
esse cone. Agora eu posso configurar isso em nossa seção de controle aqui. E se eu clicar
nesse botão de adição uma e duas vezes e expandir
essas setas, posso escolher alguns pontos no espaço entre os quais eu quero
mover esse cone. Vou deixar o
primeiro em 000 e o segundo. Essas posições são
relativas uma à outra. Vou definir como
50 no z. Agora, abaixo,
um pouco abaixo, na seção de
comportamento, podemos escolher um tipo de comportamento, se ele se move apenas do ponto a para o ponto B,
isso é um tiro. Quer eu
faça uma redefinição de loop, vou escolher
pingue-pongue aqui. Então, será
fazer idas e vindas, idas e vindas entre
esses dois pontos. duração do mi aqui é de um segundo, então
levará tempo para se mover entre
esses dois pontos. Em seguida, vou
compilar isso. Vamos salvar isso e
seguir para meu ThirdPersonCharacter
Blueprint. Agora, se você esqueceu
onde está, projetos em
terceira pessoa, clique duas vezes em seu personagem em
terceira pessoa. Agora, no início do curso, adicionamos essa mão simulada, que é essencialmente apenas
uma colisão de esferas. Se você tem isso ótimo, se você não passou por
esse curso e o criou, você pode criá-lo agora. Agora eu tenho isso conectado
aos componentes da minha cápsula. Então, se você não tiver isso, você pode selecionar seu componente de
cápsula, adicionar tipo em esfera e adicionar um componente de
colisão de esfera. Isso é o que isso é. Agora, eu defini meu
raio aqui para ser 32. Acho que vou
colocá-lo um pouco
mais na frente do meu personagem, algo assim. E eu vou
aumentar um
pouco o tamanho aqui para chegar a 50. E eu chamei essa mão simulada porque vou
fazer algumas verificações para ver se algo se sobrepôs a
essa esfera no espaço. Tudo bem, com tudo isso feito, vamos para
o nosso gráfico de eventos. E com nosso componente simulado de
mão aqui, vamos clicar com o
botão direito do mouse em nós. Vamos adicionar um evento
e vamos fazer alguma coisa. Começamos a sobrepor
que já
temos algo em start overlap porque eu não
vejo isso em nossa lista aqui. Então, a maneira como podemos
descobrir isso é com simulação selecionada
manualmente aqui embaixo. Na
seção de eventos, podemos
acessar o componente começar a sobreposição. Podemos ver onde isso está. E você pode ver que esse
é o exemplo que
configuramos em nosso vídeo da
biblioteca de funções. Vou deletar
esses nós por
enquanto para que possamos usar
nossa mão simulada. Mais uma vez, também excluirei
essa caixa de comentários. Mova isso para a posição. Lá vamos nós. Tudo bem, agora o roteiro
que tenho em mente aqui
é que vou
tirar do meu outro pin de
ator aqui mesmo. E agora eu posso fazer moldes para aproximar da planta
que acabei de criar. Então, o que estamos dizendo aqui é que se o outro ator que se sobrepõe à
nossa mão simulada aqui, aquela colisão de esfera
ali mesmo. Se esse outro ator
foi a mudança para perto de uma planta que estou prestes a colocar no meu nível aqui. Deixe-me ir em frente e voltar
para minha pasta Blueprints. Mova-se quando estiver perto,
vou arrastar isso até aqui. Tudo bem, então aí não
é o meu nível. Voltando ao meu
ThirdPersonCharacter, se esse projeto aqui fosse os outros atores que se sobrepõem minha mão simulada,
eu posso fazer alguma coisa. Se não fosse a coisa que se
sobrepunha à minha mão simulada, eu poderia fazer outra coisa, mas o que eu quero fazer é alcançar interior da minha pressão arterial, movido para perto. Isso nos dará acesso
a vários componentes e propriedades dentro do meu
BP movidos para funções próximas, variáveis, esse tipo de coisa. Primeiro,
clique com o botão direito do mouse sobre isso. Vou promover isso
para uma variável porque vou usar essa
variável um pouco. Então, vamos promover
isso para uma variável. Podemos deixá-lo com
esse nome ali mesmo. E então vamos
sair daqui e acessar nosso intervalo, dois componentes de
movimentos. Lembre-se de que em nosso
bp movido para perto, tínhamos esse componente chamado
interpretar para movimento. Agora, dentro desse componente aqui mesmo
no painel Detalhes, vou digitar
a palavra ativa. E você pode ver que é uma reunião ativada
automaticamente. Ele se moveria entre os dois pontos que configuramos. Agora vou desativar isso por enquanto
para que
não se mova entre os dois
pontos que eu configurei. Ele não será
ativado automaticamente. Vamos compilar e
salvar isso mais uma vez, voltando ao meu
ThirdPersonCharacter, diremos que quando nossa mão simulada for sobreposta por nossa mudança para o projeto próximo, vamos salve
isso em sua própria variável. Em seguida, vamos
pegar dentro dele
o componente de movimento interp2. E então vamos nos
arrastar e digitar a palavra ativa. Vaso, não ativo, ative. E aqui é onde estamos dizendo que esse
componente interpretativo do movimento que vive dentro desse plano para se tornar
ativo, para ser ativado. Agora, a razão pela qual eu salvei isso
em sua própria variável é porque agora vou
arrastar e soltar essa referência
aqui mesmo no meu gráfico. E vamos nos arrastar
desse tipo em intervalo para movimento. Vamos pegá-lo mais uma vez. E eu vou arrastar até
isso e digitar D ativates. Desligue isso de volta. Eu só vou
desligá-lo com uma chave. Deixe-me digitar. Vamos tentar a tecla 0. Então, quando nossos componentes
manuais simulados se
sobrepuseram, BP passou para uma planta
próxima em seu nível. Estamos salvando isso em
sua própria variável, uma referência a esse cara. Vamos entrar
nela e falar com
nosso
componente de movimento interp2 ali mesmo. Vamos dizer a esse movimento
interpretativo que se torne
ativo para que ele se mova
entre esses dois pontos. Então, de volta ao meu
ThirdPersonCharacter Blueprint, quando eu pressiono a tecla de seta, desativarei
esses movimentos. Tudo bem, com isso, vamos
compilar e salvar. Deixe-me mover isso
para o canto superior esquerdo aqui. Vou entrar e jogar. Defina nosso objeto de depuração como nosso personagem em
terceira pessoa. E você pode ver nosso folheto
simulado
lá e ele gira com o
meu personagem
porque está anexado ao componente da cápsula do meu
personagem. E vou tentar tirar
isso de um ângulo lateral aqui para que você possa ver
que não está se movendo. No entanto, uma vez que eu sobreponho isso
com minha mão simulada aqui, ela na verdade se move para
cima, para baixo, para cima, para baixo. Agora, quando pressiono o 0, deixe-me me afastar dele
e pressionar a tecla de seta. Ele para, ele desativa
esse componente. Agora, se eu o sobrepor novamente, ele não o ativará
novamente por algum motivo. Eu não sei a
razão por trás disso. Não tenho certeza se isso é um bug
do motor ou não. Mas você pode ver que ele está tentando ativá-lo
aqui no meu script. Depois de desativá-lo por qualquer motivo, ele o
mantém ativo. Mas o ponto é bem entendido aqui que, ao lançar para
nosso bp movido para perto, estávamos garantindo que era aquele ator simulado que a
mão havia se sobreposto. E ao fazer isso,
conseguimos seguir
esse script a partir
desse plano de execução. Agora, se isso tivesse falhado, se não fosse o outro ator que se
sobrepunha à mão simulada, mais
uma vez, poderíamos ter
feito algo que nosso elenco falhou. E aí está, o
elenco de caras essencialmente permite que você verifique se alguma
interação está ocorrendo. Se um determinado objeto é do
tipo que você está procurando, é um
ótimo, ótimo método para armazenar alguns dados em sua própria variável e também poder
chegar dentro dele Depois de convertê-lo
para acessar qualquer variável, as funções chamam qualquer evento
personalizado, esse tipo de coisa
que você deseja fazer para se comunicar de
um plano para outro. Isso vai fazer tudo
neste vídeo,
pessoal, até o próximo.
89. Comunicação direta (parte 1): Bem-vindo. comunicação do Blueprint tem sido o foco desta
seção do curso. E no último vídeo,
nos concentramos no elenco. E esse é um dos
métodos que você pode usar para que um plano
se comunique com outro. Agora, o elenco é uma técnica de
comunicação maravilhosa e
útil do Blueprint se seu elenco for bem-sucedido, você poderá capturar uma referência ao que
você lançou para você, bem
como isso
permite
você deve entrar no
que
você lançou e acessar quaisquer componentes,
variáveis, funções, variáveis, funções, eventos de
chamadas a qualquer cliente,
esse tipo de coisa. No entanto, ele
tem uma fraqueza. Esse ponto fraco é que você
deve conectar algo essa
entrada
de objeto para que você realmente obtenha uma referência para o que
deseja obter uma referência ou acesse
qualquer um dos componentes, variáveis, etc.,
que você espera
acessar se não inserir nada nessa referência de
objeto, deixe-me ir em frente e
simplesmente matar isso aqui dentro do meu
Plano de Nível e eu compilo, Isso vai me dar um
aviso dizendo, não posso fazer isso, você deve ter algo
conectado a essa referência de objeto. Então, existe outra maneira de se comunicar de um
projeto para outro? Sim, existe. Existe um método chamado comunicação
direta. Portanto, neste vídeo, nosso objetivo é
demonstrar como podemos fazer com
que dois Blueprints
conversem entre si
por meio de uma técnica conhecida como Comunicação Direta de
Blueprint. Agora, com essa abordagem, você configura um plano de destino
que é referenciado em resposta a qualquer script configurado dentro de um esquema
funcional. Agora vamos mostrar o que
quero dizer com a criação de dois projetos de
classe de atores diferentes. Teremos
uma luz de planta e um botão de planta. E vamos conversar
um com outro usando esse método que
acabei de falar sobre
comunicação direta. Volte para seu editor de níveis aqui e, dentro da pasta Blueprints de
script, vamos criar dois novos planos de classe de
ator. Clicar com o botão direito do mouse em Blueprint
Class I criará um
da variedade de atores
e isso será chamado de luzes de sublinhado BP. E dentro daqui eu vou clicar duas vezes sobre
isso para abri-lo. E vou adicionar
alguns componentes. Vamos adicionar um cone. Vou digitar em cone, cone formato
básico. Isso é bom. E então eu vou
adicionar outro. Sob a seção de luz. Eu só vou digitar em light. Eu quero adicionar um holofote. E eu vou ter que definir alguns parâmetros
para cada um deles, começando com nossas
luzes são Spotlight, vamos definir nossa intensidade para ser bastante, muito brilhante. Então, com a luz
selecionada,
o holofote defina a intensidade para algo
como 100 mil. Você pode definir uma cor de
luz diferente aqui, mas vou defini-la para
100 mil agora. Eu também vou colocá-lo
voltado para baixo. Então, ele gira isso
para baixo assim. Isso bastará. E também na seção de
renderização ,
onde diz um visível, vou marcar
isso ou desmarcá-lo para
que não fique visível. Ok, então você tem um
cone e os holofotes. Isso é ótimo. Tudo bem, volte para o
seu navegador de conteúdo. Vamos clicar com o botão direito
novamente no ator Blueprint Class. Isso não será chamado de sublinhado da
BP. Botão. Clique duas vezes nesse
cara para abri-lo. E dentro daqui, vamos
adicionar alguns componentes. Além disso, vamos adicionar um cilindro
para iniciar o cilindro de formas básicas. próxima que
adicionaremos será uma colisão de caixa. Então, vou selecionar
minha raiz de cena padrão. Ele não precisa estar conectado
ao meu cilindro aqui e
tudo bem se
todos estiverem conectados às minhas rotas
padrão vistas. Então, vou clicar
lá e digitar na caixa. Vamos usar
Box Collision. Box é um bom nome. E então vou selecionar
minha rota padrão vista novamente. E vou adicionar um componente de renderização de
texto. Ok, com cada um deles, vou definir seus
detalhes um por um. Vamos começar com
o cilindro primeiro. Então, selecionando seu cilindro
no painel Detalhes, vou definir minha rotação
no x para ser U1 AT pressionando enter negativo 90
no y e o z, vou definir isso para 180. Eu descobri todos esses
números com antecedência. E então, para a escala,
vou defini-la para 0,4,4 e 0,05, algo fino assim. Então, esse será o nosso botão com o qual interagiremos entre
aspas
para fazer com que nossa luz, em nosso plano de luz
, acenda
para acender, ligar e desligar. Em seguida, vamos selecionar nosso
componente de colisão de caixa aqui. Vou definir a localização, a localização x como 100. E vamos definir a extensão da
caixa em cento,
cinco, cinquenta por 100. Algo que se estende
um pouco assim. Ok, e então
vou selecionar meu componente renderizador de textos. Você pode ver isso apenas mostrando alguns textos ali mesmo. Com isso, vou
mudar a localização. Vamos definir a
localização para 20 no x e cento e cento e dez em
vez de no z, algo
logo acima, bem ali. E vou mudar o texto
para ler aqui embaixo. Em vez de mensagens de texto,
vamos fazer com que diga pressione I para ferir o ponto de
exclamação do ato. E não está centralizado acima do meu botão,
aquele cilindro. Então, onde diz alinhamento
horizontal, podemos mudar isso
de justificado à esquerda para o centro apenas para fazer com que
pareça um pouco mais agradável. E então, na seção de
renderização, atualmente
vou tornar isso invisível para que não possamos
vê-lo para começar. Tudo bem, em seguida,
vamos criar algumas variáveis aqui
no painel Meu Blueprint. Então, clique no botão de adição ao longo
do cabeçalho das variáveis aqui. O primeiro que vamos
criar será chamado simplesmente de luz. E para o tipo, vamos fazer uma
busca por luzes BP. Esse é o modelo
que acabamos de criar. Então, em tipos de objetos, luz
BP, escolha uma referência de
objeto. E o que vamos fazer é
, no painel Detalhes, marcar essa caixa. Diz instância editável. Observe que quando eu fizer isso, isso terá
o mesmo efeito clicar nesse pequeno ícone de
fechar o globo ocular. Então, se eu clicar aqui, ele vai ter
aquele ícone do globo ocular ligado. Por outro lado, se eu
clicar aqui e desligar isso,
ele desmarca isso. Essas são essencialmente
duas maneiras diferentes de definir isso para ser editável
por instância, não
importa se você clicar lá ou
clicar nesse globo ocular. Ambos
fazem essencialmente a mesma coisa. Está ativando isso. Agora, isso vai ser ótimo
porque vai expor essa
variável específica no editor. Você verá isso em
apenas um momento aqui. Agora vou compilar aqui porque está
me pedindo que eu o compile, para dar a ele um valor padrão. Mas observe isso que estou compilando. Vou deixar isso
em branco por enquanto. Vamos preencher isso
em nossos editores de nível. Então, deixe isso em branco
por enquanto. Tudo bem, vamos
criar mais uma variável aqui, clicando no botão de adição. Vou chamar isso de lanterna, ponto de interrogação. E isso seria, isso
será uma variável booleana. Se eu compilar aqui, vou deixar o valor
padrão falso. Então você verá esse cara em ação aqui em
pouco tempo. Agora, como mencionei
no início deste vídeo, Direct Blueprint
Communication desenvolve um plano alvo e
um plano funcional. Portanto, o plano alvo será nossa luz solar. Essa é a que
vamos ter como alvo. Nosso botão bp aqui, esse será
nosso plano de trabalho. Então, dentro do nosso plano de
trabalho aqui, vamos referenciar, criar uma referência à nossa luz bp para falar com ela, a
fim de trabalhar com ela.
90. Comunicação direta (parte 2): Tudo bem, é hora de
fazer um pouco de configuração em nosso editor de níveis. E provavelmente
ajuda se você tiver algum tipo de superfície de parede, mas na verdade não precisa de uma. Então, vou colocar esses
dois fora. E, nosso amor, vou
começar com nosso botão BP arrastando e soltando isso. E você não precisa ser
super preciso com isso. No entanto, vou dar
uma volta por aí assim. Você quer que a maioria dos seus volumes de gatilho
se projete nessa direção. A propósito, eu o coloquei de
volta ao longo da parede novamente, não
vou ser
muito preciso com esse
posicionamento por enquanto. E então eu vou
colocar nossa luz lá fora. Aí está minha luz BP em toda
a sua maravilhosa glória. Vai parecer
algo assim. Isso é bom o suficiente. Agora, se eu selecionar meu botão B P, confira isso
no painel Detalhes. Se eu rolar totalmente para cima, eu tenho minha variável de luz. Vamos revisar isso mais uma vez, meu botão BP, há minha variável de luz referenciando o tipo de variável de luz B P. Atualmente, está definido como nenhum. Então, aqui no meu editor, posso configurar isso para
referenciar diretamente esse projeto. Estou dizendo, ei, eu quero aquela variável B
do tipo de luzes B P. Mas eu preciso especificar qual instância dessa
luz eu quero
falar , porque eu posso ter várias instâncias
dessas luzes aqui. E, de fato, deixe-me definir várias instâncias
dessa luz aqui. Estou apenas pressionando a tecla
Alt e arrastando. Agora, com meu botão
selecionado aqui, vou clicar
nesse pequeno ícone de
colírio no painel Detalhes. Eu poderia clicar
nesse menu suspenso
para escolher um desses quatro. No entanto, eu só
quero mostrar a frequência, se eu escolher esse ícone de conta-gotas, então eu posso passar
para a minha janela de visualização e selecionar
diretamente as luzes fornecidas. Agora observe que, se eu estiver
destacando, esse não é o tipo de variável
fornecido, isso vai dizer que você não
pode selecionar isso. No entanto, a luz
da BP é desse tipo variável, então nos
permite escolher essa. Então, isso me
permitiu colocar isso lá. Em seguida, vamos
voltar ao nosso botão bp. Dentro daqui,
vamos para o Event
Graph imediatamente. Faremos coisas quando
sobrepormos essa caixa. Então, volte para
o gráfico de eventos. Vou clicar com o botão esquerdo, arrastar excluí-los imediatamente. Com minha caixa selecionada. Posso clicar com o botão direito do mouse
sobre isso para encontrar alguns eventos ou, com o
F-box selecionado, posso ir
até a parte inferior
do painel Detalhes. Existem meus vários
eventos relacionados a isso. Eu quero fazer algo quando
eu começar a sobrepor isso, bem
como quando eu e
sobreponho isso. Então, vou clicar aqui para adicionar uma referência a
isso imediatamente. Clicando novamente no componente da
minha caixa, farei algo quando
terminar de sobrepor isso também. Então, o que queremos fazer quando
começarmos a sobrepor essa caixa, essa caixa aqui? Bem, queremos
verificar primeiro se esse é o ThirdPersonCharacter que
fez a sobreposição. Então, vou arrastar o
outro ator que fará alguns cancelamentos aqui para
ThirdPersonCharacter. E quando fizermos isso, vamos trazer
nossa luz seletora Ken. E se você arrastar e soltar
isso diretamente neste pino, você trará um
setter imediatamente. Lá vamos nós. Truque útil, basta
soltá-lo no pino, eu direi Sim, podemos alternar a luz se
nosso ThirdPersonCharacter estiver sobrepondo essa caixa essencialmente
contra o alcance da urina. E então o que
vamos fazer é trazer nosso componente
de renderização de textos. Vamos arrastar e
soltar isso aqui. E vamos falar com
nosso componente de renderização de texto. Vamos nos
afastar disso e digitar a visibilidade definida. Porque lembre-se
agora de que está desligado. Vamos marcar
essa caixa e dizer, sim, agora você está visível. Agora vou fazer muito
do mesmo aqui embaixo. Então, vou selecionar
manter pressionado Control, selecionar manter pressionado o
controle e selecionar, vou copiar esses três
nós controle C, controle V. Cole-os aqui para quando
terminarmos de sobrepor essa caixa. E eu vou conectar tudo assim. Não esqueça esse cara. E não se esqueça de desmarcar
essa caixa aqui embaixo, bem
como de desmarcar
essa caixa aqui embaixo. Porque quando acabamos de
sobrepor essa caixa, não
queremos poder
alternar a luz e também queremos
desligar nossa renderização de textos. Não queremos ver essa mensagem de
interação de forma alguma. Tudo bem, vou
clicar com o botão esquerdo, arrastar e tocar no CQI. Chamaremos isso
ao alcance de, acenda as luzes. Vou deixar isso
preto como minha alma. Tudo bem, está
tudo bem. E em seguida, vou adicionar um script de
interação aqui embaixo. Lembre-se, nossa mensagem
ia dizer: pressione a tecla I para interagir. Então, vamos clicar com o botão direito
aqui e fazer teclado. Vamos adicionar um evento de
teclado para quando
pressionarmos a tecla I,
aí está nosso icky. A primeira coisa que
vamos fazer é
trazer um galho,
manter trazer um galho, a tecla B
e clicar com o botão esquerdo para
trazer um galho. Então, quando
pressionamos isso, vamos avaliar Ei, podemos ligar as luzes? Lembre-se de que, quando estamos sobrepondo ou não essa caixa, estamos definindo isso
como verdadeiro ou falso quando estamos
sobrepondo a caixa. Vai ser avaliado como verdadeiro. Então, sim, você pode amarrar com luz. Então, fora da dor, vamos ou não para a dor, a chave verdadeira, o pino verdadeiro, devo dizer que vamos
trazer um nó flip-flop. nó flip-flop nos
permite trocar
a e depois B do que a B
toda vez que fazemos isso. E o que vamos inverter é
fazer nosso cilindro
arraste e solte isso em nosso gráfico. Mude o material,
bom material de conjunto digitado. Assim, indo para Control C, Control V, isso também. E aqui em cima, vou mudar isso para
um material verde. Então, deixe-me clicar
ali e eu vou
digitar a palavra verde. Nosso material aqui será, vamos tentar fazer uma busca
por vértice verde. propósito, o verde que está na trajetória do motor. Portanto, se você não ver isso, clique neste ícone de engrenagem verifique se o conteúdo
do mecanismo de exibição está ativado. Então, vamos ficar verdes lá. E então, nesse nó,
vou clicar nesses
três pontos e anotar para
mim mesmo que
isso será um material vermelho. O material aqui será vértice vermelho. Aí está. Tenho que definir essa para ser a
meta para isso também. E então eu vou
arrastar e encontrar minha luz. Estamos falando dessa luz
aqui embaixo na seção variável
de arrastar e soltar. Nós vamos conseguir isso. Em seguida, vamos sair desse
tipo sob os holofotes. Porque lembre-se do
lado da nossa luz aqui, essa luz da BP existe
como holofote. E vamos mostrar a esse
holofote se arrastando para fora
daqui para alternar a visibilidade. Então, se estiver desligado, ele
vai ativá-lo. E se estiver ligado,
vamos desativá-lo. Então esse será o nosso
roteiro ali mesmo. Agora vamos
mudar essencialmente a cor do nosso
cilindro aqui, esse
material do cilindro para
que pareça verde
ligado, vermelho está apagado. Então, deixe-me dar uma coloração vermelha para começar
com o vértice Read Only. Tudo bem, vamos
compilar esse salvamento. Vou voltar ao
meu gráfico de eventos aqui. Clique com o botão esquerdo e arraste,
toque como
CQI e eu direi que deve ser ativado. Esta é uma nota para mim mesma
para a próxima etapa a ser executada. E para nós fazermos entradas de recepção
automática. Bem, dois, o jogador 0
em falhas de classe D. Agora você vai ficar assim, não
faz sentido para
o que acabamos de fazer. Então, por que você está colocando isso como cabeçalho
da caixa de comentários aqui? E você verá o porquê. Porque se eu compilar isso, salvar e entrar e jogar,
você vai ficar tipo, bem, isso vai
funcionar assim que
sobrepormos essa caixa de gatilho, vamos dizer,
Sim, você pode alternar o relaxou aqui quando
você pressiona a tecla I. Isso então será avaliado como
verdadeiro e deve permitir que eu troque
o material do cilindro e depois
acenda a luz, mas não funcionará por
causa disso aqui. Deixe-me demonstrar
isso rapidamente. Se eu entrar e jogar, posso até mesmo colocar meu objeto de
depuração lá. Então você pode ver que o roteiro
foi aprovado dizendo, sim, eu deveria ser capaz de
falar com a luz. Então, agora, quando eu pressiono a tecla I, deixe-me mover isso para cima. Pressione a tecla I e vejo
que eu interagiria, certo? Vou me
sentar e pressionar a tecla I. Mas nada está funcionando. Mesmo que eu esteja pressionando. O que está acontecendo? Bem, esta mensagem
aqui foi um lembrete para mim
e para você de que
temos que ativar algo
chamado entrada de recepção automática para dois jogadores 0 dentro dos padrões de nossa
classe aqui. Agora o botão BP deve ser
seu modelo aqui, classe é padronizada aqui. Na seção de entrada, você deve alterar
sua
entrada de recepção automática aqui para ser o jogador 0. Por quê? Bem, nossa classe de pais aqui
é um plano de aula de ator. Os diagramas da classe Actor
não reconhecerão as entradas
do teclado , a
menos que você entre nos padrões da classe
e solicite que ela
receba entradas explicitamente. O jogador 0 somos nós, o jogador único,
só nós, certo? Então, isso fará com que isso funcione. Além disso. Se você tiver várias dessas
configurações em torno do seu nível, provavelmente
é uma boa
ideia aqui selecionar sua entrada icky e desmarcar e
consumir. Ao fazer isso, você
fará com que esse tipo de configuração
funcione, funcione com mais do que
apenas um botão. Se você deixar isso para consumir
apenas essa entrada, funcionará apenas em um caso, não em todos os casos. Então pensei em jogar
isso lá fora também. Tudo bem, compile, salve, jogue. Vamos
sobrepor isso aqui. Planta. Diga pressione I para interagir. Estamos ao alcance. Então agora, quando eu pressiono a tecla I, ela fica verde e você
vê que essa luz está aparecendo agora e
apenas essa luz, não todas as cópias da luz, apenas aquela porque
era a que tínhamos dito especificamente para preencher
essa variável de luz. Se eu voltar aqui, posso interagir mais uma vez. E liguei-o
para desligá-lo,
ligá-lo , desligado, ligado, desligado. Estamos alterando a visibilidade. Portanto, esse é um método chamado Direct Blueprint
Communication. Com esse método,
configuramos uma variável do tipo com a qual queremos conversar com um determinado
tipo de planta. Nesse caso, queremos
falar com as luzes da BP. E com essa
variável de luz BP criada, nós a definimos como a
instância editável para
que pudéssemos
direcioná-la especificamente. Aqui no editor de níveis
Working Class Blueprint está o
nosso botão e o plano
alvo é a nossa luz dentro do Plano da Classe
Trabalhadora, você tem que criar uma variável
do plano alvo
e em seguida, defina essa referência aqui
no editor de níveis. Método muito útil para
se comunicar entre plantas. Pessoal, isso vai fazer
para oferecer esse vídeo. Nos vemos na próxima.
91. Despachantes de eventos: Bem-vinda. Até agora, falamos
sobre elenco e comunicação
direta como
métodos usados para fazer com que um projeto se comunique com outro projeto e esses são bons e elegantes, ótimos
métodos de usar. No entanto, há momentos no script do Blueprint
em que você precisa um plano para se comunicar
com muitos planos. Então, existe um
método a ser usado? Sim, existe. Há algo chamado
Event Dispatcher. Agora, se você não está familiarizado com quais despachantes de eventos
existem, muito parecido com o Twitter, essa é a melhor analogia que já
ouvi até hoje. Agora, se você estiver
familiarizado com o Twitter, um usuário pode twittar uma
mensagem para que qualquer pessoa que siga sua conta do Twitter
receba essa mensagem, então eles podem
responder adequadamente. No Unreal, um plano
pode enviar, ou seja, enviar um sinal para qualquer outro projeto que esteja inscrito,
que esteja ouvindo
esse sinal
e, em seguida, possa
responder de acordo. Tudo bem, então o exemplo que
vamos abordar aqui é que eu vou criar
um modelo de personagem, um personagem chefe, se você quiser. E quando esse personagem
for destruído, faremos
várias coisas acontecerem. Vamos nos comunicar do nosso projeto chefe com outros projetos, vários
outros projetos. Tudo bem, há
muito a abordar aqui, então vou me mover
um pouco rápido, mas você tem a
vantagem de fazer uma pausa. Então, vamos direto ao assunto. Na minha pasta de scripts
Blueprints, vou clicar com o botão direito do mouse
em algum espaço vazio criaremos
uma nova classe de blueprint. Desta vez, o caráter é nossa classe de
pais que queremos. E vamos nomear esse sublinhado da
BP. Vou clicar duas vezes
nesse cara para abri-lo. E vamos selecionar nosso componente
de malha em nossa lista de componentes
no painel Detalhes
em malha esquelética, Vamos encaixar em Manny, Manny. E vamos fazer uma jogada também. Então, na aula de anime, eu vou fazer um P ou um BP, muitos, que farão um movimento. E então eu tenho
a localização, precisamos deixá-los
aqui um pouco. A localização z que vou definir
para menos 93 vai
reduzi-los um pouco. Agora pode estar um
pouco longe demais. Vamos dar menos 85 ou
algo parecido. Menos 85,
algo assim. E para a rotação, vou
escolher menos 90 e isso fará com que
eles fiquem voltados para frente. Aquela flecha azul
voltada para frente também não seria chefe
se ele permanecesse dessa cor, temos que maquiar assustador, então
eu não tenho os materiais, só vou digitar em vermelho. Deve haver alguma cor vermelha de
vértice aqui. Qualquer vermelho serve. Eu vou usar esse material de
ponteiro laser. Isso é apenas para estética, modo que o material cubra
aquela parte de seu corpo. E então eu vou
digitar laser também. alusão ao outro material de ponto
laser para sua outra parte do corpo. Olha aquele cara assustador. Tudo bem, com isso,
vamos criar um despachante de eventos
aqui embaixo. Então você cria despachantes de eventos no painel My Blueprint
na parte inferior aqui, vamos criar um,
clicando neste botão de adição,
vou chamar esse chefe de
destruído e apertar Enter lá, vá em frente e compile e salve. Em seguida,
adicionaremos um evento para quando sobrepormos os componentes dessa
cápsula. Então, vou selecionar
meu componente
da cápsula no painel Detalhes. Essa é uma das várias maneiras pelas quais
posso adicionar eventos para isso. Vou encontrar
meu próprio evento de
acerto de componente ali mesmo,
clicando neste botão de adição. Isso vai me levar da minha
janela de visualização para o Event Graph. E vamos construir a
partir desse nó de eventos. Vou tirar o broche
do outro ator. E vamos
descobrir se esse é o nosso personagem em terceira pessoa. Se foi o
personagem em terceira pessoa que nos atingiu, simplesmente
chamaremos esse chefe destruído. Vamos enviar
o tweet, se você quiser. Então, a maneira de
pedirmos isso é arrastando isso
para cá, assim. E vai dizer:
você quer chamar bind, desvincular todas essas opções. Nesse caso, queremos chamá-lo, vamos enviar esse
tweet. Agora, a nota vai
ficar assim. Também terá um pequeno
envelope. Então, isso
enviará os tweets para qualquer assinante, se você quiser. E por fim, queremos
sair daqui e digitar Destroy Actor para garantir
que nosso chefe se despeça. Tudo bem, com isso, podemos compilar e salvar. O tuíte foi realizado. Em seguida, precisamos apenas de um
assinante ou três. Então volte ao nosso nível. E você não vai em frente
e coloque algumas
dessas plantas
de luz em seu nível. Criamos esses planos de luz no
início do curso. E você pode encontrá-los na pasta
Blueprints de scripts. Se você não os tiver criado, você também pode escolher
outro plano que criamos anteriormente
no curso. Esses são apenas os
que eu escolho. Além disso, coloquei uma planta de porta giratória que aqui
uma planta de porta giratória que
criamos anteriormente no
curso. Vou mostrar
métodos diferentes de como esse tipo de comunicação
funcionará. Mas vou começar
com minha porta giratória BP. Então, dentro da minha porta giratória
BP, eu quero cavar dentro
dessa planta. Vamos para lá. Vamos adicionar uma variável
totalmente nova. Então, na seção de variáveis, vamos clicar
no botão de adição. E eu vou chamar
isso de personagem chefe. E sob o tipo de variável, vou clicar
aqui, fazer uma busca por chefe. E lá eu posso encontrar
meu tipo de objeto B, P, chefe, aquele projeto
que acabamos de criar. E eu farei disso
uma referência de objeto. Agora, com essa variável aqui selecionada
no painel Detalhes, quero marcar essa caixa, por exemplo, editável para que
possamos inserir nosso chefe no editor de
níveis. E se eu compilar aqui, podemos ver que não há nada preenchendo essa
variável no momento, mas com essa verificação
editável de instância, alternativamente, poderíamos ter
clicado nesse globo ocular. Eu poderei selecionar nosso lugar de
chefe no nível. Na verdade, vou fazer isso agora. Se eu colocar meu chefe em
nosso nível, assim. Agora eu posso selecionar a planta da
minha porta. E no painel Detalhes, posso ver que está pedindo que eu coloque um personagem chefe
para preencher essa variável. Eu poderia selecionar isso aqui
e selecionar meu chefe lá. Como alternativa, posso selecionar esse pequeno conta-gotas aqui para escolher o
personagem chefe adequado da cena. E aí está. Agora você pode ver nosso
chefe bp preenche essa variável dentro de
nossa porta giratória bp. Agora, o que eu preciso
fazer aqui é fazer com que uma porta giratória se
inscreva no evento de destruição do chefe. E isso pode ser feito em nosso gráfico de eventos de portas giratórias. Então, a primeira coisa que
vamos fazer é acessar essa parte do
nosso gráfico de eventos
bem aqui acima onde estava nosso cronograma de
rotação de portas. Criamos todo esse
crescimento quando
montamos nossa porta giratória, vou segurar
a tecla p. P está em jogo. E vamos clicar
com o botão esquerdo com a tecla P
pressionada para que um
evento comece a jogar. Em seguida, o que
vamos fazer é trazer uma referência ao nosso personagem
chefe. Então, vou manter
pressionada a tecla Control, clicar com o botão esquerdo e arrastar, e agora vou
dar uma resposta imediata. No entanto, eu não quero que isso
seja apenas um getter típico. Vou converter isso em um
get datado válido. Agora, se eu clicar com o botão direito do mouse sobre isso, posso ver essa opção ser
convertida para validar o get. E o que isso faz é
que me permite verificar aqui. Se essa variável for válida. isso, quero dizer, está
povoado com alguma coisa? É realmente algo
que não é nulo, não nenhum. Se estiver preenchido
e em alerta de spoiler, é porque atualmente eu tenho meus conjuntos de portas giratórias para definir o
valor do personagem chefe para esse chefe. Se for válido, podemos
disparar com esse pino. Se não for válido, o que significa que
essa variável é nula, poderíamos fazer outra coisa. Portanto, esse é um get validado, use-os o tempo todo. Em seguida, o que queremos fazer é sair do nosso
personagem chefe aqui. E eu vou fazer login se eu digitar corretamente aqui está o que
estou procurando. Um cartaz destruído pelo chefe. Agora, quando eu trouxer isso,
na verdade vou
trazer dois nós, então dê uma olhada. chefe designado foi destruído.
Quando fizermos isso, traremos um
nó Bind , bem como eventos personalizados. Vou deixar esse evento
personalizado com esse nome. Você pode nomeá-lo para outra
coisa. Mas é assim que isso funciona. Ao começar a jogar. Vamos verificar se nossa
variável de personagem chefe aqui é válida. Se estiver preenchido com
algo, se for, vamos vincular esses eventos personalizados a esse chefe destruído,
esse chefe destruiu o
Event Dispatcher. O que essencialmente
estamos fazendo aqui é dizer
a esse evento que espere que o
evento comece. Quando ligamos, quando chamamos
esse chefe, eventos destruídos. Bem aqui, quando tocarmos naquele componente
da cápsula do chefe, vamos chamar
esse evento aqui, estaremos esperando,
ouvindo. Isso não será acionado até que o
evento destruído pelo chefe seja cancelado. Nosso chefe da bp
está falando
aqui mesmo com este Event Dispatcher. E aqui está a porta
giratória, está ouvindo isso
com essa configuração aqui, que escuta. Quando isso acontecer, podemos
sair desse evento personalizado. Essa é essencialmente
a configuração lá. Então, o que vou fazer é, depois de
ouvirmos os eventos destruídos pelo chefe, vamos atrasar ou apenas
um curto período de tempo aqui, vamos atrasar
por um segundo. Então vou conectar isso
à rotação da minha porta. Então, vamos abrir a porta. Isso é algo
legal de se fazer, certo? Depois de derrotar um chefe, repente essa porta
se abre. Então, vou
compilar e salvar isso. E vamos
jogar o teste imediatamente. Então, aqui vou eu. Defina este artigo. Aqui. Estou jogando. Então você pode ver aquele fogo
disparando logo ali. Então, agora esse evento, esse chefe destruiu eventos
personalizados, está ouvindo
esse chefe destruído. Esse chefe destruiu
eventos para ser convocado. Aquele Event Dispatcher,
ou seja, o tweet, a mensagem que está sendo enviada. Então, aqui vamos nós. Vamos ver isso
eventualmente disparar assim que eu encontrar o
componente da cápsula do nosso chefe. Deixe-me abrir nossa janela de
jogador aqui. Tudo bem, e essa porta se
abrirá depois de um segundo. Então, aqui vamos nós. O chefe vai, adeus. 1 s depois. Lá ele se abre. Esse tweet foi recebido e a porta giratória da BP
respondeu de acordo. Agora, observe que uma configuração como essa
pode ser duplicada dentro de nosso projeto de luz bp ou qualquer outro modelo dessa maneira
que
colocamos em nosso nível. E isso funcionaria muito bem. Todos eles poderiam se inscrever no evento destruído de
nosso chefe de maneira semelhante. A propósito, muitas vezes
é ótimo ter eles
ouvindo esse evento
logo no início do jogo,
para que sempre
que esse evento acontecer, eles possam responder de acordo. No entanto, vou um método um pouco diferente de ouvir esse evento, por
assim dizer, usando
nosso Plano de Nível. Então, vou voltar
ao nosso editor de níveis aqui. Vamos abrir
nosso Plano de Nível. Então, abra o Level Blueprint, encontre
algum espaço vazio aqui para trabalhar. Agora, a primeira coisa que
precisamos fazer é voltar ao nosso nível e
selecionar nosso chefe b, a P. Agora, porque nosso chefe de bp existe no nível e nós os
selecionamos. Por favor, selecione-os, pule para o seu
Plano de Nível agora, podemos clicar com o botão direito do mouse em
algum espaço vazio e fazer uma busca pelo chefe destruído. Então dê uma olhada. Podemos adicionar um evento
destruído pelo chefe. Portanto, esse evento
será convocado quando nosso chefe da bp solicitar que o evento destruído do
chefe ocorra. Agora, o que
faremos a seguir é trazer uma referência aos nossos
três atores leves. Então, voltando ao nosso nível aqui, vou selecionar a primeira luz,
a segunda luz pressionando a
tecla Control com o botão esquerdo, e a terceira luz
também, controlar o botão esquerdo. Todos os três são
selecionados aqui, voltando ao meu Plano de
Nível, vou manter pressionada a tecla R. R está em referência e clicar com o botão esquerdo
para trazer uma referência a todos os três. Empilhe-os numericamente
assim. E o que queremos fazer
é sair de um deles e digitar a visibilidade definida. Desculpe, temos que chamar os
holofotes importantes para nós. Então, vou dizer que obtenha o componente de
luz spot porque cada uma
dessas luzes consiste em
um componente de holofote, que podemos ver
com uma delas selecionada, consiste no componente de
holofote. E vou sair do componente de
holofote e digitar a visibilidade definida. E diremos que
ficará visível. E eu posso duplicar o
Control C Control V, esse holofote para
cada um deles. Assim. E quando isso acontece, eu também posso me afastar disso
e dizer Coloque abaixo de D. Vamos trazer um pouco de som. Claro, assim. E terá uma
explosão Q. dramaturgo. Tudo bem, então agora dê uma olhada. Quando tocarmos nosso chefe com
nosso ThirdPersonCharacter, chamaremos isso de eventos. Vai enviar aquele
tweet. Já sabemos que a porta giratória
vai ouvir uma palma começar a tocar. E quando souberem que o
chefe foi destruído, ele
disparará e abrirá a porta. Aqui em nosso Plano de Nível, podemos simplesmente chamar esse
chefe de eventos destruídos. Podemos adicionar esse
evento imediatamente. Por ter isso sendo chamado. Em seguida, vamos apenas definir
a visibilidade de nossas vidas. Então, vamos tentar isso. Desta vez, vamos
nos concentrar em nossas luzes. De uma vez, destruímos o chefe. Vamos continuar. A porta se abre. Agora, mais uma vez, eu
poderia ter adotado uma abordagem semelhante dentro de nossas luzes bp para
que a BP entre aspas se inscrevesse no chefe
destruído Event Dispatcher. Mas eu só queria
demonstrar aqui que você
pode fazer com que esses despachantes de eventos disparem diretamente dentro um nível e, na verdade, em projetos de
subnível. Desde que uma referência
a esse ator, neste caso, nosso chefe da bp contenha um Event Dispatcher
que existe em seu nível. Bem, pessoal, aí está
um Event Dispatcher que é um ótimo método para usar quando você quer
ter um plano, conversar com muitos, com base em
um evento acontecendo. Gente, eu farei para oferecer este. Nos vemos na próxima.
92. Interfaces de impressão na parte 1: Bem-vinda. Neste vídeo, nosso objetivo é
aprender como usar interfaces do
Blueprint para
se comunicar entre os projetos. Agora, com uma interface Blueprint, você pode criar uma coleção
de funções vazias. Em seguida, você pode atribuir quais esquemas têm
acesso a essas funções. Então, essas funções da
Interface Blueprint, que agora podem ser encontradas
dentro desses esquemas, podem receber uma
funcionalidade exclusiva. Agora, isso é ótimo para funções
de tipo genérico, nas quais você pode interagir com alguma coisa? E então,
dependendo do Blueprint com o
qual você interagiu, eles podem responder de forma diferente. Então, estamos começando
com um gráfico aqui. Então, vamos
criar um plano. Dentro da nossa interface
Blueprint, vamos criar uma
função chamada de interação. E então
vamos implementar essa interface Blueprint em três projetos diferentes:
blueprint light, nosso chefe de projeto em nosso
ThirdPersonCharacter. Agora, dentro de cada um desses
três planos diferentes, vamos personalizar exatamente o que o Interact faz. Tudo bem, aqui em Unreal, há muitas coisas para cuidar. Então, vamos começar. Estou na minha pasta de scripts
Blueprints. Vamos clicar com o botão direito em
algum espaço vazio. Aqui, vou
ligar em Blueprints em, no pequeno menu suspenso, vou escolher
Blueprint Interface. Vamos nomear essas funções de sublinhado do
BPI. Em seguida, vamos
clicar duas vezes nesse cara para abri-lo. Agora, dentro daqui, tudo o que você vê é apenas uma aba vazia de
gráficos que diz uma nova função. E, em seguida, no canto superior direito,
abaixo da guia Meu Blueprint, está esperando que
atribuamos um nome a essa função. Então, vamos criar nossa
primeira função e ela será chamada de interação. No
painel Detalhes, você pode ver que também mudou o nome dessa
guia aqui para interagir. E vamos mudar
a saída aqui para adicionar uma. Vamos criar
uma saída e ela será simplesmente chamada de interrogação
interagida. E vamos deixar
que seja um booleano. Então essa é nossa função vazia. Ele simplesmente tem uma saída. Agora, observe que você não pode fazer
o seguinte a partir daqui. Você não pode adicionar
novas variáveis, apenas entradas e saídas. Você não pode editar
o gráfico de forma alguma. Você não pode gostar de filmes por aí ou marcar essa caixa
ou algo parecido. Você não pode adicionar componentes. Essa função não está
configurada para fazer nada. A ideia aqui é que
essa função vazia seja adicionada a outros projetos e, dentro
desses outros planos, possamos personalizar o que ela faz. Então, vamos agora adicionar essa interface do
Blueprint a outros blueprints. Vamos compilar isso
primeiro e salvar. Em seguida, voltando
para um editor de níveis. Vamos abrir
nosso ThirdPersonCharacter. Vamos voltar para nossa
seção de plantas e vamos
abrir nossa luz de pressão arterial. E então
também vamos abrir nosso chefe da bp. Embora essas luzes
MBP do chefe da BP tenham sido criadas em outros vídeos dentro
de cada um desses projetos, precisamos adicionar essa interface do
Blueprint, e isso é feito sob o botão Configurações da
classe. Então, vou começar
com meu chefe
da BP aqui, Class Settings. E, em seguida,
no painel Detalhes, aqui é onde podemos adicionar a
interface do Blueprint e, clicando aqui neste
menu suspenso em adicionar, estão nossas funções de BPI. Vamos adicionar
essa luz BP. Vamos fazer as mesmas
configurações de classe, adicionar funções bp. E então, em nosso
ThirdPersonCharacter, a mesma coisa. Configurações de classe,
adicione funções bp. Agora, se você não estava prestando muita atenção e
é fácil perder isso ao adicionar essa
Interface Blueprint
na seção Meu Blueprint de
cada um desses planos, agora
temos uma
interface abaixo do painel Meu
Blueprint. E se eu abrir isso, podemos ver que agora
temos acesso para interagir. Se eu clicar duas vezes em nossa função
Interact aqui, abrirá uma guia de funções. Agora você pode
ver que podemos adicionar funcionalidades
exclusivas para
cada função de interação em cada um desses três planos
diferentes. Então, vamos começar com
nosso modelo de chefe aqui, clicamos duas vezes em
nossa função Interact aqui. Vamos dar a isso algumas funcionalidades
exclusivas. Vamos dizer que se
chamarmos essa função de interação, tudo o que
faremos por nosso chefe é nos
arrastar para fora daqui. E eu vou dizer
destrua o ator. E então vamos marcar
esta caixa dizendo que sim, nós interagimos com eles, compilamos e salvamos isso. Vamos passar para a nossa luz bp
em seguida, dentro daqui, vamos simplesmente pegar
nosso componente de holofote,
clicar e arrastar. Para continuar com isso,
vamos
digitar a visibilidade definida. Vamos conectar nosso
fio de execução desse jeito. E definiremos nossa
visibilidade como verdadeira. E também marcaremos essa caixa para ver se o interator interagiu com. Vamos compilar e salvar isso. Em seguida, passaremos para o
nosso ThirdPersonCharacter e adicionaremos algumas
funcionalidades exclusivas aqui. Tudo o que vamos fazer é clicar com o botão direito
em algum espaço vazio e dizer “pegue ator”, “localização”. E vamos
usar esse local para gerar e emitir. Então, saindo daqui, vou digitar o
emissor de spawn no local. Você também pode gerar o sistema
no local. sistema usa as partículas do
Niágara. Essas são as
partículas em cascata mais antigas que qualquer um deles servirá. Vou ligar isso aqui e vou desovar
em uma explosão. Porque explosões
são sempre divertidas. Vou definir a
escala para ser boa e grande. Então 22. Então, e eu também vou marcar esta caixa para dizer que
sim, nós interagimos. Então, agora configuramos algumas funcionalidades exclusivas
em cada um
desses três esquemas para quando chamamos essa função de
interação. Vamos
compilar e salvar isso. Vamos ver
nosso gráfico de eventos aqui. E no início do curso, configuramos essa funcionalidade de
rastreamento de linha. Então, se você ainda não criou
isso, você pode copiar o que vê aqui. Estamos enviando um
traçado de linha para o mundo. E atualmente, quando
atingimos um ator, estamos apenas imprimindo o nome desse ator na tela. Vamos modificar
isso um pouco. Então, vou excluir
esses nós aqui. Vamos nos livrar desse nó de
ramificação aqui. Eu trarei
outro em instantes. Mas o que você precisa fazer
é sair desse ator de sucesso, você pode tirar sua roupa
e quebrar esse resultado de sucesso, expandi-lo para fora
do nosso ator de sucesso. Vamos procurar
por inter act. E entre parênteses,
deveria dizer mensagem. Enganche isso assim. Agora, isso
chamará a função Interact
dentro do Hit Actor. Se esse Hit Actor realmente implementar a Interface
Blueprint. Se o ator de sucesso
não implementar a interface do
Blueprint
, nada acontecerá
com esse ator. Então, o que vamos fazer a
seguir é arrastar nossa interação
com a saída aqui. Vou trazer um nó
de ramificação. E vamos simplesmente
dizer que, se isso for verdade, interagimos
com alguma coisa e ela foi avaliada como verdadeira, vamos simplesmente
imprimir na tela. Vamos imprimir o número interagido com a
coisa dentro da nossa função Interact em
nosso ThirdPersonCharacter. Estamos definindo isso como verdade. Aqui estamos desovando e
explodindo dentro de nossas luzes. Quando
interagirmos com isso, vamos apenas ligar os holofotes e
dizer Yelp, você interagiu com ele. Dentro do nosso chefe.
Eles interagem com a função. Nós simplesmente vamos
destruir o ator. E dissemos, sim,
interagimos com ele. Mais uma coisa aqui,
precisamos configurar dentro de
nosso chefe para realmente
fazer com
que esse traço de visibilidade chicoteie
o traço de visibilidade aqui dentro de nosso
ThirdPersonCharacter. Para que isso realmente
interaja com o chefe, em seu chefe e selecione a colisão da
cápsula. Só precisamos alterar um pouco as configurações de colisão. Sob o
componente de colisão, seção de colisão. Sob a predefinição de colisão, vamos mudar
isso para ser personalizado. E precisamos garantir que o canal de visibilidade
esteja configurado para bloquear para nosso traçado de linha aqui
no ThirdPersonCharacter realmente
o atinja. Vamos compilar e salvar isso. Tudo bem, então, de volta aqui em nosso ThirdPersonCharacter
Blueprint, vamos
pressionar a
tecla de seta para enviar um traço de linha ao longo do canal de visibilidade ,
começando por nossos
atores location, o thirdPersonCharacter que
termina com nosso ponto final de rastreamento de linha, que se eu for para a janela de exibição, esse é o ponto que
configuramos aqui no
início do curso. Em seguida,
divulgaremos nosso sucesso para qualquer ator que atingirmos, chamaremos a função
Interact que vive em nossas funções BPI
Blueprint Interface. Se a coisa que atingimos implementou essa Interface
Blueprint, ela chamará essa
função de interação e, de fato executará tudo o
que configuramos essa função para
fazer em nosso chefe bp
, Vou destruir o ator e dizer: Sim, nós interagimos com ele. Vai marcar aquele Bool
em nossa luz de pressão arterial. Vamos
ativar os holofotes e,
em seguida, marcar
esse Boole para dizer, sim, interagimos com ele. Se, no entanto, a
coisa que atingimos não tiver implementado esta interface de
blueprint, nada acontecerá,
o que é bom. Agora, se tivermos
atingido algo que implementou essa função de
interação, essa Interface Blueprint, passaremos esse
booleano aqui. E se for verdade, vamos
simplesmente
imprimir isso na tela. Tudo bem, de volta aqui
em nosso editor de níveis, certifique-se de ter um
chefe da BP colocado em seu nível bem
como uma luz BP que
esteja no térreo. Vamos entrar
e jogar
e pressionar a tecla zero. Quando estivermos na frente
de nossa luz, veremos alguns textos
aparecerem aqui. Então, chave zero. Você vê aquela luz, você vê
que interagiu com a coisa. Ótimo, isso funciona muito bem. E nós vamos atirar nele. E nosso personagem chefe aqui você deve ver
alguns textos aparecerem, assim
como nosso chefe
sendo destruído. Aqui vamos nós.
Chave zero, o chefe se foi. Você vê nossa linha
sendo lançada para o
mundo lá também. Houve o ponto de impacto
e isso está realmente funcionando. Tudo bem, um
pouco de nuance para discutir aqui no que
diz respeito à chamada funções de interface Blueprint aqui em nosso ThirdPersonCharacter
que você me viu anteriormente, arrastado do nosso Hit Actor aqui e digite a
palavra interagir e
vemos a mensagem de interação e
temos essa versão
em envelope aqui. Isso é idêntico a isso. Agora, isso sinaliza
o alvo fornecido aqui para chamar
essa função. No entanto, algo a observar sobre isso, chamando
essa função, você não
precisa realmente implementar a
própria Interface Blueprint dentro desse plano para
poder fazer isso, o que eu estou falando está
aqui em nossas configurações de aula. Você pode ver dentro deste
plano, que eu implementei. A interface é que você não
precisa ter isso
implementado para chamar isso para
o fornecimento à Target. E só para ajudar a
esclarecer esse ponto, vou voltar
para o meu editor de níveis aqui. Vou colocar meu
botão BP no meu nível. Com isso selecionado. Criamos isso em
uma lição anterior. Vou acender minhas luzes
aqui para ser essa luz. Então eu vou escolher
esse pequeno conta-gotas. E eu vou escolher
essa luz
aqui para que o BP Li2 agora esteja associado a essa variável
dentro do nosso botão B P. Vou
abrir isso agora, botão RSVP. E eu vou
modificar esse trecho de
script aqui embaixo
quando eu pressiono a tecla I, quando eu estiver dentro do alcance. Então, eu vou fazer isso, mas não
vou me preocupar com essa alternância de
material. Vou detalhar
isso, mantendo pressionada a tecla Alt e clicando com o botão esquerdo. O que posso fazer
agora é clicar com o botão direito do mouse. E se eu pesquisar uma mensagem, não uma mensagem, estou procurando interagir. Isso é o que eu quis dizer. Interaja. Aí está minha mensagem de
interação das funções do B PI. Então eu posso chamá-lo para esse alvo de
luz aqui. Porque lembre-se, minha
luz BP faz alguma coisa, ou a luz BP tem essa função implementada e alternará a visibilidade. Mas não, é, o que
eu estou falando aqui é nas minhas configurações de aula, eu não tenho a
interface da função BPI implementada. Isso não me proíbe
de chamar essa função. Então, só para
esclarecer ainda mais a questão, o que vou fazer aqui
é jogar o jogo. E eu vou sobrepor
esse botão aqui. Agora eu o sobreponho. Eu vejo isso realmente dizendo, sim, eu estou dentro do
alcance agora. Aquele Texas ao contrário,
mas não importa. Vou pressionar a tecla I agora vou chamar essa função. Em minhas plantas de luz. Aqui vamos, pressionando a tecla I, e na verdade ela chama essa função e
acende a luz. Agora observe que, quando eu procuro essa função de interação aqui
clicando com o botão direito do mouse e
digito interagir, essa é a única
opção que eu recebo. No entanto, de volta ao meu BP
ThirdPersonCharacter, onde eu tenho, eu tenho as funções BPI Blueprint
Interface implementadas. Posso clicar com o botão direito
em algum espaço vazio e digitar inter act. Eu tenho outra versão que diz função de
chamada aqui. E agora veja esta versão. Essa é uma chamada de função local. Agora, eu poderia configurar
algo assim aqui dentro do meu
ThirdPersonCharacter Blueprint. Deixe-me deletar isso. Essa função que
acabei de excluir
é idêntica à minha, clicando com o botão
esquerdo,
arrastando e soltando minha função de interação
aqui no meu gráfico. Então, de qualquer forma, você
trará uma cópia dessa
versão local da chamada. Então, para essa configuração aqui, vou pressionar a tecla nove. Isso vai chamar de interagir com
o alvo de si mesmo. Meu
plano de personagem em terceira pessoa. Estou apenas
passando esse booleano e depois vamos nos
destruir. Então, se você se lembrar aqui
em nossa função local, simplesmente
vamos gerar um emissor na localização de nossos
personagens. Compilar e salvar. Deixe-me voltar ao meu
gráfico de eventos aqui e jogar. Defina meu objeto de depuração para mim mesmo. E agora, quando pressiono a Nike, boom, na verdade ela chama
isso de função de interação. Portanto, para chamar uma
versão local dessa função, a Interface Blueprint
precisa ser adicionada
aos blueprints para responder a essa versão da chamada da
interface.
93. Interfaces de impressão na parte 2: Tudo bem, ainda mais para mostrar aqui relacionado às interfaces do Blueprint. Então, vamos voltar nossas funções de BPI e
adicionar uma função totalmente nova
no painel My Blueprint. Então clique em Adicionar função
e vamos
dar um nome a esse dano. E não vamos adicionar
nenhuma entrada ou saída. Vamos simplesmente
compilar isso e salvar. Agora, vamos nos aprofundar em
um de nossos projetos que já implementamos essa
Interface de Blueprint. Vou entrar no meu
ThirdPersonCharacter Blueprint. Agora, observe na seção de
interfaces que agora vemos nossa
função danificada aparecer. No entanto, ele aparece
nessa cor amarela. Agora, essa cor significa que
a função foi adicionada, mas não pode ser
chamada dentro de outros projetos,
pois não tem valor de retorno. E com isso quero dizer, vamos
voltar às nossas funções de BPI. Ele não tem valor de retorno, enquanto eu seleciono nossa função
Interact, ela tem um
valor de retorno, retorna um nó. Então, tudo bem. Não é grande coisa. Aqui em nossa função de danos, vamos ficar sem nenhuma
entrada, sem nenhuma saída. Vamos
deixar tudo
assim e mostraremos como usar
o Blueprint Interfaces de uma maneira um
pouco diferente. Aqui no meu ThirdPersonCharacter
Blueprint. Lembre-se de que eu tenho nossas interfaces
Blueprint implementadas e
há uma função de dano. Agora, se eu tentar
adicioná-lo a um gráfico, será como
Não, não posso fazer isso. No entanto, se eu
clicar com o botão direito do mouse sobre
isso, posso implementá-lo como n eventos. Então veja o que acontece
quando eu faço isso. Isso adicionará isso como um
evento ao meu gráfico. E agora eu posso fazer com algumas funcionalidades
aconteçam com isso. No entanto, tenho que me
certificar de que eu realmente chamo esses eventos de
alguns outros projetos. Então, vamos fazer isso aqui dentro do meu ThirdPersonCharacter
Blueprint, eu direi, ok, sempre que
chamarmos isso, vamos simplesmente
destruir nosso personagem, Destroy Actor, isso é bastante
simples. Compile e salve isso. Agora, a partir de outro plano, precisamos realmente
pedir que isso aconteça. Então, vamos começar, digamos
, um exemplo de captação da BP. Vou clicar duas vezes sobre isso. E eu vou apenas sequestrar a funcionalidade original disso, só que, por enquanto, vou colocá-la de volta
após o vídeo. Eu vou dizer
que quando começarmos a sobrepor essa
esfera aqui, vamos verificar se é adequado para
o personagem de terceira pessoa. E depois disso, vou simplesmente
arrastá-la e digitar dano que o BPI funciona. Mensagem de danos. Nós vamos fazer
isso e assim. E vou me livrar deles só para deixar isso
um pouco mais claro. Então, aqui está o que estamos fazendo. Dentro do nosso exemplo de captador bp. Estamos verificando se
sobrepusemos essa esfera, essa colisão de esfera com
o ThirdPersonCharacter. E se
formos, vamos
pedir esse dano ao Blueprint Interface. Agora, eventos ocorrerão aqui dentro do nosso personagem em
terceira pessoa. Então, vamos
tentar este jogo de cliques. E eu esqueci de adicionar
isso ao nosso nível. Vamos adicionar um desses. E então, no momento em que
tocamos, deveríamos morrer, BAM, e nós morremos. Então, essa é outra
maneira de usar interfaces Blueprint
em vez de
implementá-las e, em seguida, adicionar algumas funcionalidades
para cada função, como fizemos com nosso evento
interativo. Podemos simplesmente deixá-los em nossa interface Blueprint
sem nenhuma entrada ou saída. E então faça como fizemos em
nosso ThirdPersonCharacter, onde clicamos com o botão direito do mouse
nele e o
convertemos em um evento. Então, ao fazer isso, você pode
fazer qualquer coisa fora dele, desde
que você chame esse evento a partir de
outros projetos. Agora, essa é uma espécie
de forma de destacar
um evento personalizado em qualquer outro plano que
implemente essa interface, certo, Por último, mas não menos importante,
falaremos sobre como usar um Interface de Blueprint para se comunicar com um plano de
nível. Agora, é melhor adicionar uma interface
Blueprint a um subnível para facilitar a
comunicação com o nível. Vamos ver uma demonstração. Em primeiro lugar, vamos
garantir que você tenha a guia de nível aberta aqui. Se você ainda não tem
isso em seu editor, você pode obtê-lo entrando janela e
abrindo os níveis TAM. E no início do curso,
criamos um subnível. Vou criar outro subnível apenas para que você possa ver como isso é
feito mais uma vez, aqui onde diz níveis, você pode ir aqui e
criar novos. E isso solicitará que você
crie um novo subnível. Vou escolher um nível vazio. Criar. Ele vai nos
perguntar onde
queremos salvar isso? Vamos colocar isso em nosso detentor
de níveis de script, e eu simplesmente chamarei esse
subnível de sublinhado 02. Nós vamos salvar isso. Tudo bem, vou clicar com
o botão direito do mouse em nosso subnível até aqui. Vou mudar
o método de streaming. Para estar sempre carregado
em vez do Blueprint, altere-o para sempre carregado. Então, com nosso
subnível aqui, vou clicar
ali para abrir o Blueprint de nível inferior
R. E dentro do
nosso plano de nível inferior, eu tenho nossas
configurações de aula aqui. E mais uma vez,
aqui é onde eu posso implementar nossa interface
Blueprint. Então, vou clicar em Adicionar. Aqui estão minhas funções de BPI. Tudo bem, a seguir,
em nosso editor de níveis, você pode ter certeza de que esse é o nível atual,
verificando aqui. Nível abaixo do nível dois,
esse é o nosso nível atual. Se clicarmos
nele, esse azul também mostra que é nosso nível de trabalho
atual. Vamos adicionar um ator
ao nosso subnível aqui. Eu vou acrescentar:
Vamos falar sobre isso aqui. Vamos adicionar uma forma. Vamos fazer um cilindro. Claro, algo assim. Então, temos um ator
em nosso subnível. Podemos ver
isso clicando no ícone do globo ocular para mostrar que isso é, de
fato, parte do subnível dois. E então vamos nos
certificar de que selecionamos nosso cilindro
e
voltaremos ao projeto R de nível inferior a
dois níveis. Vamos entrar em nossa função
Interact aqui. Clique
duas vezes nele para abri-lo. Mantenha pressionada a tecla R, clique com o botão esquerdo para trazer uma
referência ao nosso cilindro. E vamos sair daqui e digitar
as pernas do Destroy Actor. Então, diremos que sim,
interagimos com ele. Isso é ótimo. Compile e salve isso. Em seguida, vamos mergulhar de volta em nosso ThirdPersonCharacter
Blueprint. E o que vamos fazer é
configurar um script muito simples. Vamos clicar com o botão direito, não
sei a tecla oito. Acho que não temos nada saindo da
tecla oito atualmente. E vou clicar com o botão direito do
mouse em algum
espaço vazio, digitar
e obter o nível de streaming. E aqui é onde
queremos colocar o nome exato do
nosso subnível O2. Aí está, ali mesmo. Sublinhado um
nível, sublinhado 02. Então, podemos arrastar isso e digitar
uma mensagem entre atos assim. Isso nos permitirá nos
comunicar com nosso
subnível dois e chamar função de interação
que também
configuramos dentro do Sublime. Então isso vai matar
aquele cilindro. Agora, na verdade, eu
não vou
fazer nada fora do normal. Na verdade, eu não precisei
marcar essa caixa, mas eu fiz. Então, vamos
compilar isso. Vamos jogar. E agora, quando eu
pressiono a tecla oito, bam, ela desaparece. Na verdade, também nos comunicamos via Blueprint Interfaces
com nosso subnível. Bem, pessoal, isso
serve para oferecer um Blueprint Interfaces. Mais uma vez, com o
Blueprint Interfaces, você pode configurar
funções dentro delas. Em seguida, você pode adicioná-los aos planos por meio das Configurações da
aula. E depois disso, uma vez feito isso, você pode configurar uma
funcionalidade dentro deles que é
exclusiva de qualquer lugar você tenha adicionado essas interfaces de
Blueprint bastante úteis a vocês que farão isso.
tudo por este. Nos vemos na próxima.
94. Aula de pais (base): Bem-vindo. Neste vídeo, nosso objetivo é
iniciar uma
conversa sobre o conceito de
herança em projetos. Agora, para realmente demonstrar o poder da herança
com plantas, vamos criar
uma classe principal, uma classe base sobre a qual outros projetos futuros
derivarão. Agora, o que isso significa, em
última análise, é que qualquer projeto que criamos como filho desse pai vem pré-construído com
todos os componentes, todas as funcionalidades em variáveis que o
pai já tem. tem. Agora, se você já
criou uma classe de blueprint, você já usou a herança e talvez nem tenha percebido que nenhum plano
em irreal existe sem herdar
de outra coisa. Como exemplo do que
acabei de mencionar lá, confira nosso
ThirdPersonCharacter Blueprint. Se abrirmos aquele cara
no canto superior direito, isso nos permitirá saber qual era
a classe dos pais. Nesse caso, nosso bp
thirdPersonCharacter herdado
da classe de caracteres é exemplo de captação de
BP que
criamos logo no
início da classe. A classe dos pais
para isso é ator. Isso fica ainda mais claro se eu voltar ao nosso navegador de conteúdo e mouse em escolher Classe
Blueprint. Abaixo, onde
nos pede que escolhamos uma classe principal, você pode ver a hierarquia
de diferentes projetos. Objeto é a classe mais básica que
o ator herda do objeto. E se eu expandir o ator aqui
embaixo, posso
ver algo como nosso exemplo de captação de bp que herda da classe principal. Tudo bem, então o que
vamos fazer neste vídeo é criar nosso pai,
nossa classe base. E então, no próximo vídeo,
vamos criar uma classe infantil baseada na
nossa classe de pais. E você
verá como nosso filho herda todas as propriedades
dos pais, assim como
você é filho e herdou algumas propriedades
de seus pais. Nossa classe
infantil também herdará de nossa classe de pais? Vamos clicar com o botão direito do mouse
e algum espaço vazio aqui. Vou fazer isso dentro da minha pasta Scripting Blueprints. Clique com o botão direito do mouse na classe Basearemos isso no
ator ou na classe dos pais. E eu vou chamar
isso de meu sublinhado da BP. Os pais recolhem, assim. E vou clicar duas vezes
nesse cara para abri-lo. E vou adicionar
alguns componentes. Então, vamos
começar adicionando alguma esfera. Colisão de esferas. Definirá os detalhes aqui. Depois disso, com nossa
colisão de esfera selecionada, vou adicionar uma fonte de malha estática malha
estática está conectada
à nossa esfera. E então, com nossas malhas
estáticas selecionadas, vou acrescentar, vou digitar em Niagara. Quero adicioná-lo aos componentes do
sistema de partículas do
Niágara assim. Vamos adicionar algumas partículas de Niágara
aqui em pouco tempo. E também vamos adicionar de movimento rotativo, bem
como interpretar
componentes de
movimento Too. Então, nosso projeto
aqui vai girar e balançar para cima e para baixo. Então, isso vai ser muito legal. Tudo bem, vamos definir
alguns detalhes aqui. Então, selecionando nossa esfera, primeiro lugar,
acesse seu painel de detalhes. Vamos definir o raio da nossa
esfera para 100, algo bom e grande. Você sabe, rolando para trás
aqui estão as malhas estáticas. Vou entrar no painel
Detalhes e vou escolher um cubo de sublinhado de 1M. Vamos fazer qualquer
malha cúbica que fique bem. Algo 50 por 50 por 50. Claro, isso é um pouco pequeno, então vou escalar isso até
talvez o dobro do tamanho lá. Para, na verdade, deixe-me corrigir isso
trancando nossa balança aqui. Eu posso definir isso como
dois e pressionar Enter, ele aumentará a escala de acordo
com x, y e z. Em seguida, vou escolher
nosso componente de Niágara aqui. Agora, antes deste vídeo, eu certifiquei de ter algumas partículas de Niágara
adicionadas ao meu projeto. E eu vou te mostrar
onde você pode adicioná-los, porque isso pode levar
um pouco de tempo. Aqui no lançador da
Epic Games, se você entrar no
Unreal Marketplace, eu simplesmente entrei
na seção gratuita aqui. E eu fiz uma busca por Niagara. E aqui, eu escolhi esse conjunto
básico de VFX de captação. Agora, para adicionar isso ao seu projeto, você pode clicar aqui. Eventualmente, você receberá essa opção
Adicionar ao projeto. Você pode clicar aqui. Agora, eu já adicionei
isso ao meu projeto, então não vou adicioná-lo novamente, mas você pode selecionar seu projeto. Se o seu projeto
não aparecer, você pode clicar nesse botão para
garantir que ele apareça. Em seguida, você clicaria aqui
para adicionar ao seu projeto. Agora posso demorar um
pouco para ser adicionado. Depois de adicionado, vou ver as
desvantagens mais uma vez aqui
em nosso navegador de
conteúdo. Ele aparecerá como esta pasta, ensaio, sublinhado,
coletores, etc. E aqui mesmo no meu diretório, aqui
mesmo como um sistema de pickups
FX Nagger. É aqui que podemos encontrar alguns efeitos das partículas do
Niágara. Este é o mais novo
sistema de partículas no Unreal, usando o Unreal Engine five. Tudo bem, voltando
à nossa coleta principal, vamos selecionar nosso sistema de
partículas negras aqui. E onde diz sistema de
Niágara, vou inserir
um chamado energia. E eu vou fazer essa
energia NS sublinhada dois. Em seguida, selecionarei nosso componente de movimento
interp2. Aí está nossa partícula entrando. E vou definir alguns pontos
de controle aqui, clicando no
botão de adição uma e duas vezes, e vou expandir
cada um deles. Vou deixar o índice
zero nesse local,
index1, simplesmente vou fazer com que ele suba na
direção z em 20. E então também definirei
nosso tipo de comportamento aqui como pingue-pongue, para que ele vá e
volte entre
esses dois pontos. Agora, nosso
movimento de rotação já tem uma taxa de rotação de 180 no z. Então, se eu simulasse isso, você pode ver como isso
vai parecer. Gire ao redor. As partículas estão
presas ao nosso cubo lá. Isso é tão lindo. Tudo bem, em seguida, vou adicionar
três variáveis aqui embaixo, que eventualmente serão
herdadas por nosso filho. Então, vou clicar na seção Variáveis
do My Blueprint, no botão Mais aqui. O primeiro
será chamado de pickup S FX. E vamos mudar
o tipo aqui para ser base de
som baixo para pesquisar essa referência de objeto de
base sonora. Vamos definir tudo isso
um pouco mais tarde. Vou clicar no
botão Mais. Vamos adicionar
outro, que chamamos de pickup VFX. Vou definir o tipo
aqui para ser sistema de garagem de ovos, essa referência de
objeto do sistema Agora. E vamos adicionar mais
uma variável aqui. E esse será
chamado de nome do item. E vamos mudar o
tipo aqui para ser uma string. Tudo bem, compilando, podemos então definir alguns
valores padrão para todos eles. Então, meu itemName definirá o valor padrão
como nome do item. Para nossos efeitos de pickup v, vou colocar a moeda Burst, que é um sistema do Niágara. E para minha picape S de x, vou escolher
uma chamada objetos. Recolha de objetos. Isso está no conteúdo do motor. Se você não ver
isso, clique neste ícone de engrenagem e,
ali mesmo ative o conteúdo do motor para encontrar
o coletor do objeto. É com isso que eu
vou escolher. Você pode trocar qualquer som ou efeito de partícula que desejar. Esses serão meus padrões. Tudo bem? Com isso, vou
compilar e salvar imediatamente e depois seguir para
o meu
gráfico de eventos, onde
faremos um
pouco de script. Em primeiro lugar,
vamos clicar com o botão esquerdo e
arrastar esses três nós de eventos que já estão
aqui por padrão, vamos excluí-los. Vamos clicar com o botão direito do mouse em nosso componente de colisão de esfera e
clicar com o botão direito em Adicionar evento. Faremos algo quando
começarmos a sobrepor isso. Então, vamos adicionar
isso ao nosso gráfico. E como você deve ter
adivinhado, por
sair do nosso outro ator e ver se foi o
ThirdPersonCharacter que fez a sobreposição. Se fosse, vamos
tocar som, 2D. Que som você quer tocar? Bem, temos um
som de captação aqui. Vamos apenas arrastar
e soltar isso no pino. Movendo-se para baixo. Em seguida, vamos
sair daqui e faremos o sistema de spawn no local, o sistema spawn nesse local
sob a seção Niagara, sistema de
spawn é onde você
pode gerar o Niagara VFX. Já temos um salvo
em uma variável aqui. Então, vamos arrastar e soltar isso
sobre o modelo do sistema. Vamos alimentar isso como um local. Então, vamos clicar com o botão direito. Veja a localização de nossos atores. Qual ator? Essa picape principal da BP, onde quer
que ela esteja
localizada, será o local
em que queremos gerar isso. Em seguida, vamos arrastar
isso e imprimir uma corda. Em que sequência
queremos imprimir? Bem, vamos arrastar isso para
trás,
trazer um nó de acréscimo. E quatro são a, vamos digitar
o espaço obtido do cólon. Para o b. Vamos colocar o nome
do nosso item. Então arraste e solte isso aqui. Vamos adicionar mais um alfinete. E eu farei um espaço de pontos de
exclamação. Portanto, isso deve ser: tem dois pontos, espaço, nome do item, espaço, ponto de
exclamação. As duas coisas
realmente não precisam desse espaçador entre o nome e
o ponto de exclamação. Então, eu vou voltar para lá. E por último, mas não menos importante, vamos nos
afastar disso e vamos destruir o ator. Então esse será
o nosso roteiro. Se você quiser pausar o vídeo ali mesmo
e dar uma boa olhada. Veja, tudo bem, a seguir, só para simplificar um pouco nosso gráfico
aqui, vou clicar com o botão esquerdo
e arrastar todos esses nós, exceto
pelo nosso evento. E então, se você
clicar com o botão direito
do mouse em qualquer um
dos nós selecionados aqui, posso clicar com o botão direito do mouse neles e
posso recolher para funcionar. Quando eu fizer isso, vou
ser reduzido a um único nó e, logo no painel My Blueprint,
abaixo da área de funções, ele dirá,
ok, nomeie essa coisa. Vou simplesmente chamar
essa função de captação. Assim. Se eu
clicar duas vezes nessa função, você pode ver
como ela fica por dentro aqui. E isso é ótimo. Agora temos um gráfico de eventos muito
simplificado. Vamos continuar
compilando e salvando. Vou colocar um
desses no meu nível. E vamos um teste rápido de jogo para
garantir que possamos de
fato coletar isso. Então, arrastando e soltando
esse vermelho aqui. Vamos jogar. E longe. Nós vamos lá está. Uma pequena explosão de partículas
de ar também. Tudo bem, estamos começando
muito bem aqui. E no próximo vídeo,
criaremos um filho
desse projeto e
esse filho
herdará todos os componentes. As variáveis são
as funcionalidades desse pai. Agora, essa é uma ótima maneira de trabalhar no Unreal, porque se você pensar bem, há muitas
coisas em jogos que são semelhantes entre si, como captadores, armas, tipos de
inimigos, etc. Todos eles compartilham algumas coisas
comuns sobre eles. Então, por que recriar a
roda de novo e de novo? Por que criar um plano exclusivo para cada
coleta de plano que você
terá. É melhor trabalhar
criando uma classe para pais. Ele terá muitas
das funcionalidades básicas que
dizem que todos
os captadores terão. Em seguida, em cada uma das funcionalidades do
script secundário, adicione
alguns componentes como algumas variáveis ou
propriedades específicas para cada coleta individual. Mas a
funcionalidade compartilhada deve estar dentro de um plano principal. Tudo bem, pessoal, isso
vai oferecer essa. Nos vemos na próxima.
95. Curso de criança (parte 1): Bem-vindo. Neste vídeo, nosso objetivo
é mostrar como criar aulas do
Child Blueprint e , em seguida, como personalizar a
partir daí. Agora, criar projetos secundários é incrível do ponto de vista
de não ter que
recriar a roda fazendo com que projetos de
uma classe
secundária herdem todos os componentes,
variáveis e funções
básicas .
de um dos pais. Não precisamos recriar
tudo isso na criança. Em vez disso, agora podemos personalizar cada modelo infantil da
maneira que acharmos melhor. Além disso, se houver
algum componente,
variável ou
funcionalidade adicional que
desejemos adicionar retroativamente ao pai. Todos os projetos de classes infantis
ganharão isso automaticamente, o que é muito fofo. Tudo bem, então vamos começar a
mostrar um pouco disso criando primeiro uma classe infantil. Então, aqui está minha picape para pais da BP. Vou
clicar com o botão direito do mouse sobre isso. E para criar uma criança a partir de
qualquer planta existente, basta clicar com o botão direito nela e a opção mais alta,
aí está. Crie a classe Child Blueprint. Isso vai
nos levar a dar um nome a ele. Então eu vou mudar
isso para BP. Recepção de criança. Então vou clicar duas vezes
nesse cara para abri-lo. Agora, dê uma olhada aqui. Então aqui está minha caminhonete infantil. Eu também tenho minha caminhonete para pais aberta
na parte superior aqui. E se eu alternar entre os dois, você pode ver que
eles parecem idênticos. Você também notará que
a picape principal tem essa lista de componentes. E observe que em
nosso filho temos exatamente a mesma
lista de componentes. Agora, na coleta dos pais, temos essas variáveis
aqui embaixo. Na caminhonete infantil. Temos essas variáveis
aqui embaixo. E se você não ver essas variáveis
aqui embaixo que foram herdadas, você pode clicar nesse pequeno ícone de
engrenagem e verificar se opção Mostrar
variáveis herdadas está marcada. Você deve ter isso marcado para que essas
variáveis herdadas sejam exibidas. Porque se você os assinalar,
eles se despedirão , mostradas como variáveis
herdadas. E aí está. Agora, algumas coisas
para anotar aqui. Se você olhar no canto superior direito, diz
que nossa classe de pais
é a picape para pais da BP. E também na
lista de componentes, se você quiser editar
alguma dessas coisas, digamos que queira alterar esse componente de esfera
se você clicou aqui
mesmo em editar no Blueprint, observe o que acontece aqui. Na verdade, isso leva você de volta
para a caminhonete de seus pais. Então, na criança onde você vê tudo isso
aqui, se você clicar em qualquer um deles, ele voltará
para os pais, dizendo: Ei, você quer editar isso
aqui em seu filho, Embora o lugar para realmente
fazer isso seja nos pais, porque quaisquer mudanças que você
fizer aqui nos pais, elas
se propagarão para a criança. Agora, só para ir para casa
nesse ponto muito rapidamente, vou adicionar
uma luz temporária aqui na caminhonete dos meus pais. Então eu vou entrar em, Adicione, eu vou digitar luz. Vamos adicionar um ponto de luz costeira. Vou deixar com esse nome. Agora, se eu for até a caminhonete de
crianças
agora , você não verá. No entanto, se eu for até a
coleta dos meus pais e clicar em Compilar, salve-a e
volte para meu filho. Boom, há
aquele componente pontual e que estaria agora enterrado no
interior do meu cubo. Então, é aí que ele
realmente reside. Vou deletar isso porque na verdade não
quero. Então, se eu
quisesse excluir isso, digamos, da criança, eu poderia excluí-lo aqui. Não. Não posso fazer isso. Certo.
Porque você está tentando fazer isso, mas é como, Não, eu estou herdando
isso dos pais. Então você tem que ir para
Editar e Blueprint, excluído aqui, depois
Compilar e Salvar. E essa mudança será
propagada até seu filho. Agora, mais uma vez, o que
torna o trabalho dessa maneira tão incrível é que,
com nossa picape principal, criamos a funcionalidade
básica para pegar essa picape. Sobreposição simples aqui em
nosso gráfico de eventos, certo? E quando a
sobrepomos, simplesmente fazemos essa
funcionalidade aqui. Não precisamos recriar toda essa criança interior e
podemos demonstrar isso arrastando e soltando o nível
desse cara. Então, eu tenho os
pais à esquerda. Vou deixar os pais
um pouco mais altos, a criança à direita. E se eu entrar e jogar, você pode ver que eu
posso pegar um. Eu posso pegar o outro. Essa funcionalidade,
de fato , chegou até nosso filho. Mas o que também nos torna excelentes é que podemos fazer
algumas mudanças em nosso filho, mantendo
a mesma funcionalidade. Então, deixe-me fazer algumas mudanças
muito superficiais aqui em nosso filho. Vou mudar alguns
de nossos componentes aqui, não os componentes em si, mas as propriedades reais
dos componentes. Então, por exemplo, eu poderia selecionar meu componente de malha estática e alterá-lo para algo
diferente de um cubo. Eu poderia mudar isso para ser, vamos pegar um cone, algum formato de cone e o formato de
cone serve. Vou reduzir isso para que seja um em todos os aspectos. Grite para sincronizar isso
um pouco. Eu poderia mudar
os efeitos das partículas dos meus
relâmpagos aqui para algo como “Vamos curar algo
com alguns corações”. Claro. Vamos curar três,
talvez algo assim. Movimentos rotativos. Eu também posso mudar isso. Sim, uma vez que você mude
seu sistema de Niágara aqui, vai
demorar um
pouco para ser trocado. Na verdade, eu não
gosto desse porque é meio
que um
incêndio e esqueça um. Vamos tentar curar os desejos de
algo persistente assim. Movimento do intérprete Eu também posso mudar isso. Nesse caso, vamos
mudar a duração de um segundo para 3 s. Então, vai demorar
mais para que ela passe. Posição zero aqui
para a posição um. Eu posso mudar meus movimentos
de rotação. Eu posso mudar a
velocidade com que ele gira. Então eu vou fazer isso
girar um pouco mais rápido aqui. Vamos dizer 200,
algo assim. E eu posso mudar meu captador Os efeitos
sonoros não
precisam permanecer como captação de objetos. Vou mudar isso
para uma visão flutuante. Eu fecho qualquer opção aqui, vamos tentar
algo diferente. Minha picape VFX não
precisa ficar a mesma lá. Eu poderia mudar isso de
coin Burst para coin Burst O2. E o nome do meu item não
precisa permanecer o mesmo. Em vez do nome do item
como nome do item, vou mudar
isso para voltar à saúde. Tudo bem, então com todas
essas mudanças feitas, eu posso voltar e salvar. Vamos experimentar isso. Você pode ver que
parece visivelmente diferente. Efeito de partícula diferente. Ele também terá um efeito de
partícula diferente quando o detectarmos, parece que esse efeito de
partícula
desaparece muito rapidamente
aqui, mas aqui vamos nós. O pai, a criança. Efeitos de partículas
diferentes, sons diferentes, etc. Tudo bem,
tudo isso é muito bom pois nosso filho realmente herdou a funcionalidade e os componentes iniciais
de nossos pais. Nós simplesmente trocamos alguns dos elementos superficiais. Nosso filho aqui,
essa é a aparência de alguns sons e esse
tipo de coisa, as variáveis. Mas vamos ampliar
nossa funcionalidade na criança um
pouco mais. Vamos fazer com que,
embora não tenhamos herdado todas essas coisas, tudo esteja bem. Queremos levar nosso filho
um pouco mais longe. Queremos fazer algo específico
para nossa coleta de crianças aqui. Então, vamos começar em nosso ThirdPersonCharacter
Blueprint. Vamos entrar em
projetos de terceira pessoa que são Pessoa, Caráter e nossa função de
saúde. Criamos isso
no início do curso. Criamos uma função de modificação de
saúde e ela se parece com esta. Vamos arrastar isso para
o nosso gráfico de eventos. Vou clicar com o botão direito do mouse para
trazer um evento personalizado. Vou chamar essa caminhonete infantil de
saúde. Vou inserir
isso em nossa função de modificação de
saúde que criamos. Novamente, no vídeo anterior, falamos sobre a
criação de funções em nosso evento personalizado de
coleta de crianças. Vou adicionar uma entrada aqui, clicando neste botão de adição. Vou dar um nome a essa saúde. Vou mudar o tipo
de booleano para flutuante. E vou
inserir isso imediatamente em nossa função de modificar a saúde
para
que possamos passar esse
valor de saúde para nossa função. Vamos passar
algo sobre
isso em nossas caminhonetes infantis. Você verá isso aqui
daqui a pouco. Então o que eu vou
fazer é trazer uma corda de impressão aqui. Em seguida, vou
arrastar para trás minha string de impressão e
trazer um nó de acréscimo. E eu vou ter meu
valor aqui é simplesmente dizer saúde, espaço do cólon. E nosso valor b será
a saúde atual que teremos
depois de fazermos esse cálculo, arrastando isso da mesma forma simplesmente trará
um nó de conversão, convertendo um flutuador em uma corda. Portanto, nossa função de modificação de saúde
atualmente tem a seguinte aparência. Se eu clicar duas vezes nele, você pode ver o que ele está fazendo ali mesmo. Estamos reproduzindo
sons diferentes,
dependendo do valor de saúde
que está sendo transmitido. Também estamos aplaudindo esse valor para a
saúde. Mas isso é essencialmente
o que estamos fazendo. Vamos compilar isso, muito
importante que você compile e salve isso. E é importante que
você compile para que possamos realmente solicitar que
essa função ou esse tipo de eventos personalizados
ocorram a partir de nossa coleta infantil. Tudo bem, então, tudo isso feito em seu
ThirdPersonCharacter Blueprint, volte para a caminhonete de
seu filho. Agora, dentro daqui, se você pesquisar
seu gráfico de eventos, você pensa: “Eu não, eu não vejo nenhuma
dessas funcionalidades aqui em nossos pais”. Estamos fazendo alguns scripts
aqui, assim. E eu sei que criamos
essa função, essa função de captação aqui
dentro dos meus pais. E parece que
sim, mas se eu entrar no meu filho, não
vejo nada disso. Bem, aqui em nossa
seção de funções do painel My
Blueprint, se você vier direto aqui, poderá substituir sua função de
captação que existe
atualmente dentro
da sua captação principal da BP. Então, se clicarmos nela, veremos agora a função de
captação que criamos dentro de nosso pai. E isso é o que
parece dentro de nossos pais, dentro de nosso filho. Parece que
estamos simplesmente
ligando para a recepção de nossos
pais dizendo,
sim, essa é a função
que queremos executar. Agora, eu posso
estender isso ainda mais. O que vou fazer aqui é
clicar com o botão direito do mouse e digitar algum
espaço vazio , obter o personagem
do jogador. Elenco para ThirdPersonCharacter,
assim. Agora, porque criamos esse evento personalizado dentro do
nosso ThirdPersonCharacter, você tem certeza de
compilar e salvar. Vamos fazer uma ligação para este evento personalizado de coleta infantil de
saúde. Então, em nossa caminhonete infantil, agora
posso sair
daqui e digitar uma coleta infantil saudável. E isso fará com que
você chame
nosso ThirdPersonCharacter
Blueprint para executá-lo. Agora, de volta aqui em
nossa caminhonete infantil, precisamos transmitir um pouco de
saúde que gostaríamos passar
para qualquer um dos calcanhares ou
podemos machucar nosso personagem. Vou apenas definir algo mas você pode
clicar com o botão direito do mouse sobre isso. Você pode promover isso para uma
variável ou uma variável local. Uma variável local só seria vista por essa
função aqui. Eu só vou colocar
os pontos em cinco aqui. Eu vou compilar isso também. E deixe-me voltar ao meu ThirdPersonCharacter
Blueprint e apenas garantir que
nossa saúde agora esteja definida para 100%. Então, vou definir
isso para 50%. E, assim como um teste rápido, quero ter certeza de que
nosso medidor de saúde está fato mostrando 50% de saúde. Tudo bem, então, com tudo isso feito, podemos realmente
entrar e jogar. Eu poderia ter
testado lá , mas não estava pensando direito. Então, observe que minha saúde no ouvido
direito está em 50%. Isso deve resolver o
problema até quase lá
no medidor de saúde, porque é
isso que estamos
instruindo ele a fazer. E aqui vamos nós. De fato, aumentamos
nossa saúde em 2,75. E você viu aquela corda
passar também. Então você viu aqui dentro
da minha caminhonete infantil, eu simplesmente estendi a
funcionalidade que já
estávamos herdando
dos pais. A caminhonete dos pais já
tinha um roteiro aqui. Então, quando
sobrepomos essa esfera, vamos
solicitar essa função, essa função de captação
dentro dos pais. Então, nosso filho
vai herdar tudo isso. E nosso filho também
vai estendê-lo por aqui. Estamos fazendo essa
chamada para
o evento personalizado dentro do
nosso ThirdPersonCharacter. Outra coisa que vale a pena
notar aqui é que, quando pegamos nosso filho aqui, observe no canto superior esquerdo
que dizia o pacote Got Health. E a razão é
dizer que o pacote de saúde God é porque aqui em
nossa coleta infantil, mudamos o nome do item
para pacote de saúde. E se você se lembra, dentro da função de
coleta principal que criamos
aqui é onde estamos dizendo “obteve o nome do item
e depois o ponto de exclamação”. Então, vamos respeitar tudo isso. Ele está chamando essa
função de captação dentro de nossos pais. Mas também está respeitando os nomes das variáveis que
alteramos aqui em
nossa coleta infantil,
ou seja, não está mais dizendo o nome do
item em
nossa coleta infantil, dissemos não, agora está
indo para dizer pacote de saúde.
96. Curso de criança (parte 2): Tudo bem, na
segunda parte,
discutiremos algumas das
nuances mais delicadas que você pode
encontrar ao trabalhar com planos de aula para pais e
filhos, algumas coisas que você
deve saber sobre. Então, vamos supor que você crie uma coleta para pais como nós fizemos. E digamos que
adicionamos esses componentes rotativos e
móveis, como
fizemos, e queremos
fazer com que qualquer filho
desse projeto obedeça a
essa taxa
de rotação de um caixa eletrônico, sem chance não queremos ter como
os projetos de classe infantil
se desviarem desse valor. Queremos
bloqueá-los, por assim dizer. Bem, podemos fazer isso aqui
para desmarcar essa caixa de seleção editável quando
herdada. E você
encontrará essa caixa de seleção em todos os nossos diferentes
componentes aqui. O que acontece é que quando você
desmarca isso e
eu vou, eu vou desmarcá-lo. E então eu vou compilar
isso mais uma vez e salvar. Agora, se eu entrar na coleta do
meu filho, ela herdará todos
esses valores porque
acabei de compilar e dizer que essas mudanças
se propagarão para
a criança assim que fizer algumas
edições em seus pais. Portanto, nossa taxa de rotação é 180. Nossa picape infantil agora
terá a mesma taxa de rotação, movimento
giratório de 180. Mas veja isso. Não consigo alterar nenhuma das
propriedades aqui. Na verdade, na parte superior, diz que bandeira
dos componentes não é
editável quando herdada. Essa é essa
caixa de seleção aqui. Quando herdado, deve ser editado
nos planos principais. Então está me deixando saber, ei, você não pode mudar isso aqui. Você teria que voltar às plantas do
seu par. Se você clicar aqui, ele me
enviará de volta para meus pais. Eu poderia clicar nessa
caixa agora mesmo. E quando clico nessa caixa, posso voltar
para meu filho e, oh, não
posso mais alterá-la ainda. No entanto, se eu
voltar para meus pais, compilar e
depois voltar, poderei alterá-lo novamente. Então, isso é algo que você
definitivamente deveria conhecer. Outra coisa a ser observada aqui
é que só porque você tem uma propriedade definida em seu painel de detalhes para
um determinado componente, isso não significa
que esse será o valor real da propriedade
obedecido no jogo. Agora,
deixe-me mostrar um exemplo
exatamente do que quero dizer com isso. Vou trocar minha caminhonete
infantil aqui para ter uma
taxa de rotação de apenas dez. Ok? Taxa de rotação aqui de dez. E os pais com
os componentes do movimento rotativo selecionados. Eu vou
trocá-lo aqui para bem, na verdade vou deixá-lo em 180. Então você pode pensar: OK, risco
parental em 180, filho tem em dez. No entanto, se na minha opinião de pais no Event Graph quisesse
fazer algo no
Event Begin Play. Vou manter pressionada
a tecla P,
clicar com o botão esquerdo para abrir
Event Begin Play. E então eu coloco
meu movimento giratório nos componentes para que eu possa
falar com isso de alguma forma. E eu digo que com esses
componentes de movimento rotativo selecionados, vou me
arrastar e
alterar essa taxa de
rotação de propriedades. Então, saindo
dessa taxa de rotação, vou definir
a taxa de rotação. E eu direi que vamos
defini-lo para 1.000. Então, observe o que eu
tenho acontecendo aqui. O componente de movimento rotativo, eu o ajustei para 180. Mas ao começar a jogar, estou alterando esse
valor para 1.000. Aqui na minha caminhonete infantil. Eu tenho que ser dez, você pode dizer, ok, serão dez para isso. Mas lembre-se de que a
criança herdará toda a
configuração de funcionalidade dos pais. E os pais
agora estão dizendo, ei, assim que começarmos a jogar, você mudará seu movimento de
rotação para 1.000. Então, a criança também
respeitará isso. Então, se eu voltar aqui
no meu mapa de teste de nível
e, na verdade, um cone
for uma malha muito ruim para ver essa taxa de rotação, vou trocar esse
cone muito rapidamente,
voltando para a malha estática
secundária. Vamos fazer algo que possamos realmente ver
girando. Que tal esse cachimbo? Veremos girar ao redor. Tudo bem, então agora se eu fosse simular isso é
rodar o jogo, mas não realmente
entrar e jogar. Você pode ver que os dois estão
girando muito rápido. De fato, este
parece estar girando um pouco mais rápido
porque tem essas partículas
dançando ao redor. Mas, na verdade, ambos
estão
girando em um ritmo bastante rápido, a taxa que
estabelecemos nos pais, seja, 1.000, porque nosso filho certamente não está girando.
a uma taxa de dez. Agora, acho que a principal lição
é estar atento você está criando um script. Lembre-se de que, se você criar
algum script dentro de seus pais que se
propagará para baixo, que seja filtrado
para seu filho em qualquer
filho que ele também possa ter. Portanto, se você quiser ter
alguma funcionalidade que seja exclusiva da criança, programada
apenas dentro da criança, e pule a criação de scripts dentro do pai,
pois isso se aplicará a qualquer um na
cadeia de linhagem. Isso leva ao nosso
próximo ponto aqui. Assim como você vê esse
pai tendo um filho, nosso Plano Infantil
também pode ter um descendente. Então, vamos experimentar isso. Vou voltar ao
meu navegador de conteúdo aqui. Com nossa coleta infantil, agora
posso clicar com o botão direito do mouse
nela e criar uma turma secundária do Blueprint. E vou chamar isso de sublinhado da
BP. Vamos chamar esse
neto. Pegar. Se eu clicar duas vezes sobre
isso para abri-lo. E deixe-me
colocá-lo aqui. Então, temos pais, netos
filhos. Podemos ver que a
classe dos pais é a coleta da criança, mas nossa coleta de crianças tem
uma coleta dos pais acima dela. Então, dê uma olhada nisso. Nosso neto, você
pensaria que nossa taxa de rotação seria a mesma da coleta de
nossos pais, por causa
do que acabei de descrever, nossos pais vão ignorar
ao
jogar se o movimento
giratório for não 181000, a criança também
respeitará isso. E nossos
netos também deveriam, certo? Vamos
tentar isso. Lugares por aqui. E devemos dar aos netos uma malha diferente aqui também, só para deixar
claro que é diferente. Então, vou selecionar essas malhas
estáticas aqui e vamos experimentar essas pirâmides quádruplas,
algo assim. E agora, se eu
simulasse isso, alternativamente, Alt mais
S o simularia. Eles estão todos
girando exatamente da mesma maneira. É só um pequeno
truque visual. Parece que este está girando mais devagar, mas na verdade todos estão
girando exatamente na mesma velocidade. Então, tudo o que
configuramos para o
roteiro de nossos pais se propagará
até a criança, o
que também se propagará
até os netos. Tudo bem, mais um conceito
que eu quero demonstrar aqui, e tem a ver com substituições
de entrada. Agora vou voltar para a caminhonete dos
meus pais aqui. Mais uma vez, a
picape dos meus pais
descende da
classe de ator como um modelo. Os projetos de classe de atores
não são processados. Ou seja, eles não acionam eventos de entrada de
teclado
por padrão, no entanto, podemos fazer com que
eles reconheçam que é para acionar eventos
de entrada de teclado se os configurarmos dessa forma. Então, vou seguir os padrões da
minha classe aqui. E na
seção de detalhes, onde diz entrada, entrada de recepção automática. Vou mudar isso de
desativado para jogador zero. Ao fazer isso, agora posso adicionar um evento de entrada de teclado ou
um evento de entrada do controlador. E reconhecerá isso. Agora mudamos isso aqui
dentro da caminhonete dos meus pais. Se eu for para a coleta do meu filho, mesma classe será padronizada e
entraremos na seção de entrada. Agora também configura isso
como zeros do jogador. A mesma coisa em nossos netos, seguimos seus padrões de classe. Essas mudanças
foram propagadas ao longo da linha. Isso é ótimo. Tudo bem, vamos
voltar para nossos pais. E em algum espaço vazio aqui, vou clicar com o botão direito do mouse
e vamos fazer alguma coisa quando fazemos o teclado. Vamos fazer, vamos fazer o, vamos fazer a chave K e
o KCI. Tudo bem, ao
pressionar o KCI, vamos imprimir uma string. E o que
pretendemos imprimir é simplesmente pais. E com nossa chave K
selecionada aqui, observe que, à direita,
verificamos o consumo de entrada e a substituição da vinculação
principal. Agora, o que acontecerá
aqui quando eu jogar, deixe-me clicar
nesses três pontos, vou para a nova janela do editor. Vou definir minha opção de depuração
aqui para ser a escolha do meu pai. Observe que posso escolher
qualquer um desses três, mas vou escolher a caminhonete dos
meus pais. Traga aquela janela. Quando pressiono a
tecla K aqui em cima, vejo os pais
impressos apenas uma vez. Só uma vez. Agora você pode estar dizendo a
si mesmo: “Que diabos, eu pensei que qualquer tipo
de alteração de script que você fez é aparente
que essa mudança de script
vai se propagar até
a criança e, portanto, a
netos também. Então, por que não vimos
isso impresso apenas uma vez? Por que não o vimos
impresso três vezes nos pais do que na
criança e nos netos? Bem, isso está funcionando
assim porque nossa entrada de consumo
aqui está verificada. Agora, o que isso significa é
que outros atores com menor prioridade não
lidarão com essa função. Isso significa que vai parar
aqui e vai morrer aqui. Agora, observe o que acontece
quando eu desmarco essa caixa de seleção de entrada de consumo. Vamos jogar novamente. Vou pressionar
o KCI e olhar no canto superior esquerdo da
nossa janela de jogo aqui, vemos os pais
impressos três vezes. Isso porque, ao não
consumir a entrada aqui, estamos permitindo que essa chave, a chave
K, se propague para baixo. Isso também deve funcionar em nosso filho na
coleta de netos. Portanto, quando a
entrada de consumo for verificada, ela funcionará apenas
no nível mais alto. Com essa desmarcação,
essa mudança
se propagará para
qualquer descendente. Tudo bem, então vamos levar
tudo isso um pouco mais longe. Vou clicar com o botão esquerdo, copiar esses nós
aqui, controlar C. E vou entrar
na caminhonete infantil Maya. E dentro do meu gráfico de eventos, vou clicar em
Control V para colá-los. Agora, com minha tecla K selecionada
no painel Detalhes, vou dizer, vamos
consumir a entrada aqui. E também vou trocar minha corda de impressão e
agora ser criança. Ok, e vamos fazer
os testes a partir daqui. Agora, o que você verá
quando eu pressionar a tecla K, deixe-me configurar meu filho para
pegar
aqui como sendo a
que queremos ver. Quando eu pressiono a tecla K. Agora, você verá uma
criança, uma filha única. Agora, algo a observar aqui. Isso ocorre porque nosso filho está
configurado para consumir insumos , o
que significa que os pais
não os registrarão. Agora, isso é ser ganancioso. Está dizendo que consuma
aqui, ignore nossos pais. É para isso que queremos
processar essa chave de entrada. Agora, se desmarcarmos aqui, desmarque a entrada de consumo aqui em nossa pickup bp child
e jogue mais uma vez, pressionando esse
KCI e agora
veremos pai/filho. O que está acontecendo aqui? Bem, ao não consumi-lo, estamos permitindo que ele também mostre que também é usado dentro
da nossa picape principal. Nossos pais estão dizendo que os pais aqui em nosso filho, estamos
vendo um filho. E lembre-se de que nossos
netos descendem de nós, a criança também. Então, filho, filho, mas
no próprio pai, que também está descontrolando,
consumindo insumos. Está dizendo pais. É por isso que vimos o
resultado que vimos lá. Tudo bem, então aí está. O conceito de herança exibido no Unreal e o
poder que ele fornece. Aqui,
demonstramos que você pode criar uma coleta para pais. A partir disso, você pode
clicar com o botão direito do mouse
nela e criar uma coleta secundária que herdará criar uma coleta secundária que herdará todas as
propriedades e funcionalidades do pai
dentro da criança Você pode criar uma
funcionalidade personalizada. Você pode personalizar
algumas das variáveis e também algumas das propriedades do
componente. E então também mostramos que você pode manter a linhagem funcionando. Você pode clicar com o botão direito do mouse em
seu filho e criar um neto também. Portanto, esses
conceitos poderosos podem ser usados em todo o jogo para simplificar vários sistemas que você pode
querer incorporar, como um sistema de coleta de armas, muitas armas para pegar . Todos eles podem ter suas propriedades
exclusivas, mas a funcionalidade de captação, por assim dizer,
permaneceria a mesma. Pessoal, isso fará
tudo por esse vídeo. Nos vemos na próxima.
97. Visão geral da estrutura: Tudo bem, sejam todos bem-vindos. Neste vídeo, nosso objetivo é
obter familiaridade e compreensão do
que é conhecido como esquemas de
estrutura no Unreal Esse é um
tópico crítico que todos que trabalham no Unreal
devem conhecer. Então, quais são esses esquemas de
estrutura? Bem, eles são
projetos de alto nível associados um projeto que determinam coisas
importantes sobre seu jogo, como as regras do seu jogo. Esses tipos de coisas geralmente
estão
contidos em um plano de modo de jogo, ou no jogador do seu jogo, também
conhecido como
personagem ou lagoa. Você controlou esse
tipo de coisa? Então, onde esses projetos de
estrutura são encontrados? Bem, todo projeto
tem alguns por padrão
e, de fato, alguns já existiram até esse
ponto do curso. Alguns de vocês conhecem, outros não, mas é
aqui que vamos revelar tudo. Assim, você pode encontrar esses esquemas
de estrutura aqui, no canto superior direito do seu editor Configurações, configurações
do projeto. Aqui, se você selecionar
mapas e modos, temos um modo de jogo padrão. E seu modo de
jogo padrão contém todas essas plantas
dentro dele. Muitas vezes, isso desmorona. Você pode expandir isso. Então você pode ver
aqui que temos um modo de jogo. É Default Pawn Class, uma classe HUD, controlador de jogador. E eu até incluiria
a classe de instância do jogo, que está aqui embaixo. Todos esses projetos
que estamos falando aqui, e esses aqui, são conhecidos como seus esquemas de
estrutura. Agora, acabei de mostrar que
você pode acessá-los nas configurações,
mapas e modos do
seu projeto clicando neste botão
aqui. Como alternativa,
se você estiver em edições, também
poderá encontrar
as configurações do seu projeto lá. Você também pode acessar mapas
e modos e encontrar seus
planos de estrutura. Como alternativa, se
você clicar aqui e entrar nas
configurações do seu projeto aqui,
poderá ver o que é conhecido
como seu modelo de modo de jogo. E então, abaixo,
você também pode ver alguns
desses esquemas de estrutura
nesta seção aqui. Agora, cada um desses diferentes modelos de
estrutura, como o modo de jogo, um personagem, um controlador de
jogador. Todos esses são
tipos específicos de projetos. E veremos alguns
deles e como
criá-los nos próximos vídeos nesta
seção do curso. Agora, apenas neste vídeo de visão geral da
estrutura, é importante
observar que, embora tenhamos alguns planos, alguns esquemas
de estrutura podem ser encontrados nas configurações de
nosso projeto
aqui, mapas e modos. Esses são nossos planos de
estrutura. Esses são projetos
que controlam as coisas sobre nosso projeto. Ou seja, todos os níveis que
criamos em nosso projeto. É possível substituir esses esquemas
de estrutura por nível, por massa. Podemos descobrir isso
voltando ao nosso editor de nível principal. Se eu entrar em Janela e
acessar minhas configurações mundiais, podemos ver se eu entro
na seção Modo de Jogo e clico nesse
menu suspenso aqui. É aqui que posso substituir meus esquemas de estrutura
para um nível específico. Eles são encontrados em
cenários mundiais. Então, se nas configurações do meu projeto
eu tivesse alguma estrutura, planos são configurados para meu projeto e determinam
coisas como: Bem, eu vou controlar
o ThirdPersonCharacter enquanto isso for determinado
pela minha classe Default Pawn. Na verdade, posso fazer
com que, dentro um mapa específico com
qualquer nível específico, eu possa definir um
lago específico
que eu queira controlar apenas dentro
desse nível encontrado
nas configurações mundiais. Assim, você pode descobrir
isso não apenas opção de
configurações do mundo
da janela. Você também pode encontrar isso
aqui, clicando ali mesmo. E você pode ver se as configurações
do seu mundo estão substituindo seu modo de jogo
agora,
podemos ver que não estamos substituindo nada. Isso é o que esse
alerta está ali. Tudo bem, então, mais uma vez, essa é a nossa visão geral dos
esquemas de estrutura, seus
esquemas de estrutura contêm esses esquemas aqui. Eu também incluiria as instâncias do
jogo, bem, todos
esses são tipos diferentes de
projetos e
contêm informações importantes
sobre o seu jogo, como as regras que determinam
o plano de Gamow, o que personagem que você
está controlando, a classe Pawn, etc. Vamos
explorá-los mais detalhadamente ao longo desta
seção do curso. Nos vemos no próximo vídeo.
98. Modo de jogo (parte #1): Neste vídeo, nosso
objetivo é aprender sobre a importância do modelo do
Modo Jogo no Unreal, aprenderemos o que
ele faz, como criar um e como instruir nosso
projeto a usar esse recurso. Agora, temos um plano de modo de
jogo existente nas configurações
do nosso projeto desde o início de
todo o curso. Agora, quando criamos
esse projeto, usamos o modelo de terceira
pessoa. E dentro da nossa pasta
Blueprints em terceira pessoa estava esse modo de jogo em
terceira pessoa da BP. Se você estiver em suas
configurações, Configurações do Projeto, poderá ver na
seção de
mapas e modos que o modo de gateway
padrão foi automaticamente classificado BP, modo de jogo em terceira pessoa. Então, houve um
aqui o tempo todo. Agora, qual é a planta de
Gamow? Bem, é uma das
duas classes principais que lidam com informações
sobre o jogo. O outro é o plano de estado do
jogo, que é outro
modelo de estrutura aqui embaixo. Agora, os modos de jogo são
projetados para definir e implementar as
regras do seu jogo. Alguns exemplos incluem o
número de jogadores permitidos, geração e resposta funcionalidade de geração e resposta de jogadores em transição entre os níveis,
esse tipo de coisa. Agora, o modo de jogo
também determina o uso de
outras classes padrão em seu jogo. Agora, para ajudar a
esclarecer esse ponto aqui, vou voltar ao
meu editor de níveis aqui e clicar duas vezes em nosso modo de jogo em
terceira pessoa. Agora, se você ver isso, isso é o que é conhecido como
um plano somente de dados. Mas mesmo aqui podemos ver neste modo
de jogo em
terceira pessoa, aqui estão nossos vários outros projetos de
estrutura como nossa classe de
controlador de jogador. Isso é algo que
criamos anteriormente no curso. E nossa classe de
peão padrão é BP, ThirdPersonCharacter dentro
do seu projeto Gamow. É aqui que você realmente coloca todo o resto do seu pé,
seus projetos de estrutura. Você pode fazer isso aqui ou nas configurações do
seu projeto. Se você o mudar em um lugar, você o muda no outro. Agora, apenas para sua informação, você pode abrir o que é conhecido como editor completo de diagramas
clicando aqui,
se você ver isso. Mas mesmo aqui,
seu
jogo ou projeto em terceira pessoa, se você tiver a classe padrão
selecionada aqui, aqui estão todos os seus diferentes esquemas
de
estrutura. Novamente, eles estão
associados ao seu modelo de modo de jogo. Acabei de mencionar
anteriormente que o projeto do Gamow era uma das duas classes para lidar com
informações sobre seu jogo, a outra é o estado do jogo. Portanto, o modo de jogo existe
apenas no servidor, enquanto o jogo diz
aquele cara ali mesmo. Você pode encontrá-lo nas configurações
do
seu projeto que existe no servidor e é
replicado para todos os clientes. Tudo bem, vamos criar nosso
próprio projeto do Gamow e depois defini-lo aqui nas configurações do
nosso projeto. Então, para fazer isso, vou
voltar ao nosso editor de níveis. Agora, no início do curso, na minha
pasta de scripts, criei uma pasta
clicando com o botão direito do mouse aqui, nova pasta. Eu o chamei de Framework. Agora, na verdade, eu criei um dos nossos
planos de estrutura no início do curso é o plano do
controlador do jogador. Eu criei isso durante o evento. Comece o cursor sobre o vídeo. Se você quiser revisar isso. Embora falemos sobre os controladores do jogador em breve, dentro desse diretório
é onde
vou criar um
novo modo de jogo. Então, clique com o botão direito em algum
espaço vazio na classe Blueprint E aqui, na nossa classe de pais
escolhida, podemos escolher um novo modo de jogo. É conhecido como base do Modo de Jogo. E até diz que define
o jogo que está sendo jogado, suas regras, pontuação, etc. Vamos clicar nisso. Vou chamar isso de nosso modo de jogo
bp underscore. Em seguida, com isso criado, vou clicar com o botão direito do mouse
e salvá-lo imediatamente. O Control plus S também pode
salvar isso. E eu posso encaixar isso
nas configurações do meu projeto. Novamente, você pode acessar as configurações do
seu projeto aqui e aqui. Em mapas e modos,
há o Modo de Jogo padrão. Vou mudar isso
para ser meu modo de jogo BP. Agora, observe que, depois de fazer
isso, confira, ele definirá automaticamente o resto dos meus esquemas de
estrutura. Agora meu ThirdPersonCharacter não
está mais aqui. Agora eu estava usando isso junto com controlador do
meu player
que fiz anteriormente. Então, eu vou querer
colocá-los de volta aqui. Então, vou encerrar meu modo de jogo em terceira pessoa que
abri aqui. Feche isso. E eu vou abrir meu modo homossexual da
BP aqui. Portanto, observe que se eu mudar minha classe de peão padrão no meu modo de jogo BP
que acabei de criar, se eu mudar isso de volta para
BP ThirdPersonCharacter, se eu alterá-la aqui
nas configurações do meu projeto, em Default Pawn Class, ela também foi alterada aqui. Da mesma forma, se eu mudar o controle do
meu player, esse é o controlador do player que eu criei anteriormente
no curso. controlador do player Bp
no evento começa o
cursor sobre o vídeo. Se eu mudar isso
aqui, minhas
configurações de projeto , controlador bp player. E eu vou dar uma olhada no meu modo
de jogo BP. Você pode ver que essa mudança também
se reflete aqui. Então você muda em um lugar, você muda no outro. Vou seguir em frente e
guardar isso aqui mesmo. Agora note que este não é o único lugar onde
eu poderia ter editado todas essas informações ou até mesmo
configurado meu próprio modo de jogo, Bacchae by level editor. Se eu clicar
aqui embaixo deste botão
Blueprints, você pode ver as
configurações do projeto, o modo de jogo. Eu poderia criar um modo de
jogo a partir daqui. Eu posso editar meu
modo de jogo aqui. E lá embaixo também
tenho minhas diferentes classes de modos de
jogo. Então, eu poderia selecionar, por exemplo um controlador de jogador daqui. Eu poderia criar um
controlador de jogador a partir daqui. Todos os tipos de opções
neste botão Blueprints aqui em cima. É assim que você pode
acessar seu modo de jogo, editar seu jogo,
criar um novo, alterar qualquer um dos esquemas
de
estrutura existentes
dentro dele também. Tudo bem, agora, por exemplo, caso de
uso de um esquema de
modo de jogo. Vou precisar de um
volume de gatilho e tenho um ao lado
do meu nível aqui. Mas se você quiser
obter um volume de gatilho ou uma caixa de gatilho, a mesma coisa. Você pode clicar aqui. Eu gosto de usar a caixa
básica do Trigger. Vá em frente e
coloque-o em seu nível. Em seguida, com ele selecionado
no painel Detalhes, você pode definir a extensão da caixa. Eu tenho 100 em toda a linha. Eu defini a
espessura da linha para dez. E então eu também,
na seção de renderização,
desativei o ator oculto
e os jogos para que eu pudesse realmente ver esse volume de
gatilho. Agora, dentro do modelo antigo do meu
jogo, vou criar uma variável. Então, na seção de
variáveis, clicando nesse botão de adição, vou chamar isso de níveis. E no
painel Detalhes, aqui em cima, vou mudar
meu tipo de variável, pelo
menos a primeira
metade dela, para ser inteira. E então vou clicar
nesse pequeno menu suspenso
ao lado , porque vou
alterar o tipo aqui,
o tipo de contêiner para
um tipo de contêiner de mapa. Isso vai me permitir
criar um par de valores-chave. Se você não viu o vídeo sobre contêineres variáveis do Map, é um bom momento
para analisá-lo agora,
caso contrário, continuarei avançando. Portanto, nossa chave aqui
será do tipo
inteiro, o valor R aqui será do tipo nome. Vou compilar isso e vou adicionar dois pares de
valores-chave. Então, o primeiro que
vamos adicionar é clicar nesse botão de adição. E eu vou definir esse
primeiro para o nível um. E eu vou definir o
valor aqui para ser o mapa inicial. E então eu vou clicar
no botão Mais uma vez. Eu direi que o nível dois será
associado ao padrão mínimo de sublinhado. Agora, se eles parecem familiares, esses dois nomes de mapas, é porque em
nosso conteúdo inicial, mapas, eu tenho dois
mapas com esse nome, um mapa inicial, um, padrões
mínimos. Você notará que, ao colocar mapa
inicial dentro da minha variável, há um
pouco diferente, mas isso não importa. Não para nomes, não para
gravar tipos de variáveis. Então, isso vai
ficar muito bem. Vou compilar e salvar isso é muito importante que você
faça isso para a próxima etapa. E a seguir, o que
vou fazer é
voltar ao meu editor de níveis aqui. Temos nossa caixa Trigger. Certifique-se de ter selecionado
isso para
nossa próxima etapa aqui. E, abaixo do nosso
botão de projeto, aqui em cima clicaremos nesse plano de nível
aberto. Certifique-se de ter
sua caixa de gatilho aqui selecionada para abrir o Plano de
Nível. E vamos clicar com o botão direito do mouse
e algum espaço vazio. Vamos adicionar um
evento para essa caixa
de gatilho quando começarmos a
sobrepô-la, queremos descobrir se o outro ator era nosso
ThirdPersonCharacter. Então, Cast to ThirdPersonCharacter, fizemos isso 1 milhão de vezes. E se de fato foi nosso ThirdPersonCharacter
que nos sobrepôs, queremos acessar algumas informações dentro
do nosso modo de jogo. Agora, a maneira de fazer isso
é clicar com o botão direito do mouse
em algum espaço
vazio e digitar get Game Mode. Agora, você pode
pensar: “Ok, ótimo. Agora podemos acessar com
esta nota aqui. Bem, por que eu não saio daqui
e vejo se consigo acessar essa variável de níveis
que mora dentro daqui. Então, vamos tentar
isso, certo? Vamos sair daqui
e digitar Níveis. E eu não vejo essa
variável em nenhum lugar aqui. Bem, isso porque precisamos lançar
para o modo de jogo rbp para realmente acessar variável de nível
que
vive dentro dela. Então, vamos experimentar essa
droga daqui. Transmita para o modo de jogo BP. Esse é o Gamow
que acabamos de criar. Então, se você tem
uma configuração como essa, agora você pode sair do
painel do Modo de Jogo SBP aqui, digitar os níveis e,
aqui embaixo, você pode obter seus níveis, seu valor chave pares. que vamos fazer
é sair daqui. Vou digitar bind. E eu vou
dizer que quando
começarmos a nos sobrepor,
queremos encontrar o look número dois lá enquanto falamos
sobre aqui, colocando o número dois é que queremos
acessar o nível aqui, e queremos então abrir o nome do mapa
associado ao nível dois. Então, colocamos o número
dois aqui. E eu vou
sair daqui e digitar em nível
aberto pelo nome. Você pode ver que a saída aqui
é um tipo de variável de nome, seja, esse nome
aqui, padrões mínimos. Agora, quando sobrepomos
essa caixa de
gatilho, acessando nosso
antigo projeto de jogo e dizendo: “
Ei, modo Jay”, você determina
as regras do nosso jogo. E essa regra
determina que, quando eu sobreponho essa caixa de gatilho, devo ir para o nível dois. Vamos compilar isso. Vamos economizar. Vamos jogar aqui. Defina meu objeto de depuração. Claro. Então você pode ver o
roteiro
sendo disparado assim que eu sobreponho isso. E aqui vamos nós. Aí estão os padrões mínimos. O novo nível.
99. Modo de jogo (parte #2): Tudo bem, vamos tentar
outro exemplo aqui. Desta vez, vamos
tentar responder ao jogador. Então, para isso,
vou começar com
meu plano de
personagem em terceira pessoa. Sob projetos de terceira pessoa,
ThirdPersonacter. Vamos fazer um pequeno
roteiro aqui primeiro. Então, a primeira coisa que
vamos fazer é trazer uma chave. Vamos ver o que todos
nós temos aqui. Nós usamos as quatro teclas. Parece que não
fizemos uso disso. Então, vou clicar com o botão direito do mouse
em algum espaço vazio, digitar quatro. Vamos fazer o teclado para. E diremos que,
quando pressionarmos a tecla F4, simplesmente
destruiremos o ator, ou
seja, nós mesmos. Então, pressionando,
vamos nos destruir. Ótimo. Tudo isso é necessário
para a próxima etapa. Então compile e salve isso. Agora, em nosso modo de jogo bp, vá até lá. Vamos entrar
no Event Graph daqui. Vamos fazer algo
fora do Event Tick. Você sempre precisa
ter um pouco cuidado ao usar o event tick. Você pode bork seu jogo
fazendo muito script
fora do evento. Mas para fins acadêmicos, vou usar esse fato. Se eu encontrar os padrões da classe, direi que nosso
intervalo de ticks
será a cada 1 s. Não
precisamos
pegar todos os quadros. Então, vamos dizer que a cada 1 s. Vou clicar com o botão direito do mouse
e algum espaço vazio, pegar o personagem do jogador. Vamos então nos
afastar disso e fazer elenco para nosso personagem em terceira
pessoa. Então o que vamos
fazer é sair
daqui e digitar “destruído”. Agora, se eu começar a digitar
em destruído, eu mandei destruir essa tarefa. Esse é o que
estou procurando, um sinal de destruído. Agora, quando eu clicar
nisso, vou
trazer dois nós, um nó Bind, bem
como um evento personalizado. Vou descrever o que está
acontecendo aqui em apenas um momento e vai
enganar isso assim. E vou deixar esse nome de evento
personalizado como tal. Agora, se tudo isso
parece familiar aqui, essa ligação, uh, a
este evento personalizado. Isso ocorre porque essa é uma configuração que usamos quando
falamos sobre despachantes de
eventos para ouvir isso em
eventos destruídos, neste caso, para nosso ThirdPersonCharacter,
estamos assinando nosso ThirdPersonCharacter está no Event Dispatcher
destruído. Isso é essencialmente
o que estamos fazendo. Você pode estar dizendo para
si mesmo, espere um minuto. Em nosso ThirdPersonCharacter, não
criamos nenhum Event
Dispatcher. Bem, se eu voltar ao
meu ThirdPersonCharacter, se eu rolar até
meus despachantes de eventos, poderei encontrar no jogo
Event Dispatcher um
despachante para ser destruído. Agora isso é chamado quando
eu destruo o ator. Agora, se você não vê
nada disso aqui embaixo, é
porque você
precisa clicar nesse ícone de engrenagem e
mostrar o herdado. Se você desligar isso, não mostre herdado,
você não o verá. Este é um
Event Dispatcher herdado da classe principal. Então, se você entregá-lo no jogo
ThirdPersonCharacter
event Dispatchers, este OnDestroy, isso
está sendo chamado. Isso está enviando
um sinal quando
destruímos nosso personagem
aqui em nosso modo de jogo, o que estamos fazendo aqui
é que estamos assinando, estamos ouvindo que isso aconteça
em um evento destruído. E então, quando isso acontecer, isso vai disparar e dizer, diga ao próximo nó para fazer
o que quisermos que ele faça. Agora, o que queremos fazer
é responder, queremos
recomeçar com nossos jogadores. Então, uma forma de fazer isso é clicar com o botão direito do mouse e
algum
tipo de espaço vazio no controlador do git player. E se entrarmos nosso
controlador genérico de jogador, aqui node e fizermos uma busca
por reiniciar o player. Há um nó de função relacionado ao controle do seu player. Isso reiniciará seu jogador no local de início do
ator. Portanto, essa configuração
aqui será suficiente. Então, vamos dar uma olhada nisso. Vou compilar
e salvar no jogo. Então, foram as quatro chaves
que vão nos destruir. E quando formos destruídos, responderemos de
volta neste local. Então, deixe-me sair desse lugar. As quatro chaves. Eu respondo nesse local, toco em chave estrangeira, respondo
a esse ponto, etc. Agora, para aqueles que estão dizendo: Ei, por que estamos usando o
event tick aqui? Bem, se eu fiz, um
evento começou a acontecer, vamos em frente e
dar Event Begin Play. Vamos começar, terminar o evento, começar a tentar. O que aconteceria aqui? E vamos simplesmente desativar isso. Estamos ouvindo agora
esse evento OnDestroy. Assim que começarmos a jogar
aqui, isso é ótimo. Mas essa escuta desse evento já aconteceu. Então, isso só
vai disparar quando aderir
a este evento uma vez. Ao começar a tocar, estamos ouvindo isso
apenas uma vez. Então, se eu pressionar a tecla F4 aqui, ela
nos faz voltar uma vez. Mas se eu pressionar a tecla F4
novamente, isso não acontece. Isso porque
ouvimos pela primeira vez
ao começar a
jogar com o event tick. Lembre-se de que estávamos
ouvindo isso a cada segundo. É assim que
configuramos nossa seleção de eventos dentro dos padrões de nossa classe, tudo bem, algumas
notas do Modo de Jogo para finalizar este vídeo. O jogo pode ter
vários modos de jogo. No entanto, temos apenas uma configuração em nossas
configurações de projeto por vez, seu modo de jogo principal está configurado nas configurações
do seu projeto. Mas lembre-se de que você pode ignorar qual modo de jogo é usado
nas configurações do seu mundo. E você pode encontrar
isso nas configurações
do mundo do Windows , ali mesmo. Sempre é possível substituir o modo de jogo nas configurações
do seu projeto. O
esquema do modo de jogo é onde você configura as regras do seu jogo. Coisas como locais de resposta, coisas como
para qual nível viajar a seguir, coisas como o número de jogadores
permitidos, esse tipo de coisa. O modo de jogo não é um ótimo
modelo para armazenar variáveis que precisam transportar dados
de um nível para o outro. Coisas como vidas ou pontos. Agora, isso ocorre porque quando
você abre um novo nível, todas as variáveis são criadas e
armazenadas dentro do modo de jogo ou retornam aos valores
originais. E eu quero
demonstrar isso aqui rapidamente antes de
terminarmos este vídeo. Tudo bem, vamos supor
que em nosso modo de jogo bp esse seja um ótimo lugar
para guardar quantas vidas existem. O personagem pode ter um alerta de
spoiler. Não é, mas basta jogar junto com nossa seção de
variáveis, você vai clicar
neste botão de adição. Vou chamar isso de vidas. E aqui é onde
você pode garantir que ele esteja definido como uma única
variável do tipo inteiro. Vou definir minhas
vidas padrão aqui para cinco. A razão pela qual o meu
apareceu como cinco porque eu gravei o
vídeo lá recriei isso antes do tempo. Agora vou
compilar isso e salvar o que é muito importante para fazer isso. Em seguida, o que vou
fazer é fazer com
que, dentro do meu personagem em
terceira pessoa da BP, eu diminua quantas vidas temos dentro
do nosso modo de jogo. Então, personagem de terceira pessoa. Vou clicar com o botão direito do mouse. Acho que não estou fazendo
nada com as seis teclas. Então, o que vamos
fazer a partir daqui é clicar com o botão direito do mouse no Modo de Jogo. Vamos lançar para o
nosso modo de jogo bp. E uma vez que
tenhamos feito isso, podemos
entrar aqui descobrir quantas vidas
temos para aguentar isso. Vamos acabar com nossas vidas e acabar
com isso e
digitar decréscimos. Esse é um tipo de nodo especial em que estamos vivendo
nossas vidas aqui. Temos cinco, isso
diminuirá um, subtrairá um dele e depois
o atrasará. Portanto, não há necessidade de estabelecer
vidas aqui também. Então, vamos para
54321, etc. Isso seria ótimo. Agora, quando tudo isso acontecer, deixe-me ir em frente
e compilar isso. Salvar. Lembre-se de que, no
meu Plano de Nível, fiz com que, quando eu
sobreponha a caixa de gatilho, eu
me transportasse para o nível dois. Então, depois de eu me transportar
para o nível até, meu personagem em terceira pessoa
aparecerá, eu vou pressionar
a tecla seis e ver quantas vidas temos. Então, essa será a nossa prova que o soaring vive
dentro do nosso modo de jogo. Não é uma boa ideia porque
essas variáveis
voltam ao padrão
quando você altera os níveis. Aqui vamos nós. Então clique e jogue. Vou pressionar essa tecla seis. Nós podemos ver, bem, na verdade,
você sabe o que
eu preciso fazer, eu preciso
imprimir isso na tela. Vamos nos arrastar até aqui. Corda de impressão. Vamos imprimir esses resultados. Assim. Compile,
salve e jogue. Defina minha opção de depuração como
meu ThirdPersonCharacter. Então, agora, quando eu pressiono a tecla seis, 4321, então eu tenho mais uma
vida, por assim dizer. Vou sobrepor isso. Vamos para outro nível. Agora, quando eu pressiono a tecla seis, você presume
que eu tinha uma vida, eu não deveria descer para zero, mas 4321, essa variável
de vidas, volta a zero. Então, apenas algumas
nuances para entender com o modelo do Modo de
Jogo. Todas as variáveis que você
definir aqui, elas serão definidas como, elas retornarão
aos valores padrão se você alterar os níveis. Tudo bem pessoal, isso
vai fazer tudo nesta discussão sobre os planos
do Modo Jogo. É o modelo que define outros esquemas de estrutura aqui dentro dos padrões de sua classe. E é um ótimo lugar para
definir regras para seu jogo, como a funcionalidade de resposta. Isso fará tudo
para este vídeo. Nos vemos na próxima.
100. Peão: Bem-vindo e continue nossa discussão sobre projetos de
estrutura. Nosso objetivo neste
vídeo é aprender o que é um plano de classe de peão. Como criar um e
como configurar um para que nosso projeto
saiba usar é criado o Pawn Class Blueprint como o avatar padrão que
queremos controlar. Então, vamos falar sobre
o que diabos uma planta de classe de
peões
é toda uma lagoa, é um ator que pode ser
possuído e receber contribuições. É a
representação física de um jogador ou
entidade de IA no mundo. Agora, os peões podem ser humanóides, assim como nossos personagens em terceira
pessoa que controlamos
até agora no curso. Ou pode não ser humanóide. Então, pode ser algo
como um carro ou uma nave espacial, uma bola rolante,
algo assim,
que você possa controlar. Tudo bem, vamos criar uma classe de peões. E eu poderia fazer isso
imediatamente a partir daqui dentro das
configurações, mapas e modos do nosso projeto, selecionei o
menu suspenso do modo de jogo clicando neste botão de adição aqui ao
lado de Default Pawn Class, eu poderia crie o
esquema adequado usando esse método. Eu só escolho uma pasta. Eu gostaria de
salvá-lo em etc. No entanto, não vou
fazer isso apenas para mostrar como podemos criar isso
aqui em nosso editor de níveis, vou entrar na minha pasta de estrutura
de script. E se eu clicar com o botão direito aqui, também
posso entrar na classe
Blueprint. E você já viu essa
janela 1 milhão de vezes, escolha uma classe para pais. Uma das mais comuns de
criar são as classes de peões. O segundo
aqui embaixo, e diz que um peão é um ator
que pode ser possuído e receber informações
de um controlador. Vamos em frente e
clique aqui no peão. E eu vou chamar esse
cara de peão sublinhado de BP. E então vou
clicar duas vezes em m2, abri-lo imediatamente. Vamos configurar algumas coisas no painel Componentes. Então, a primeira coisa que
vamos adicionar aqui, clique em Adicionar em componentes
é que adicionaremos uma malha estática. E no painel Detalhes, tenho uma determinada malha
estática em mente. É o HMD que eu
quero pesquisar. Estou procurando
esse HMD genérico. Agora, isso é algo encontrado
na trajetória do seu motor. Então, se você não vê isso e quer jogar em casa,
clique no ícone de engrenagem verifique se a opção Mostrar
conteúdo do motor está ativada. Isso vai
parecer um fone de ouvido VR. Vamos
controlar um desses. Vou enviar minha balança aqui, 255.5 com esse ícone de cadeado ativado, posso simplesmente mudar um desses. Vou escolher a do meio aqui, a escala y, clique em F5. Então, quando eu pressiono Enter, porque eu tenho aquele ícone de
cadeado definido aqui. Ao pressionar Enter, ele
vai configurá-lo para cinco em toda a linha. Tudo bem, eu também vou
trocar o material para esse seja o Chrome. Vou fazer uma bola cromada. Então vamos,
vamos guiar algo
assim. Isso é empolgante. Tudo bem, próximo componente
que eu quero adicionar aqui. Verifique se temos nossa rota
padrão vista selecionada. Então, aqui está como isso funciona. O sênior padrão em todos
os outros componentes que você
adicionar será anexado a ele. Então, agora, nossa malha estática está anexada à nossa raiz de cena
padrão. Esse é essencialmente um ponto no espaço ao qual estamos
anexando coisas. Então, vou escolher a rota
padrão vista, escolher braço de mola, braço de mola. Pense nisso como um bastão de selfie. Também vamos usar isso para
conectar um componente de câmera, o
que pode ser , com meus componentes
armados com mola selecionados. Vou adicionar e conectar componentes de
uma câmera, não uma câmera Sony,
apenas câmeras antigas. Um bom nome. Aceitarei isso para que possamos ver câmera conectada
ao nosso braço de mola. Para a câmera, vou definir o local para isso como 100. Deixe-me ampliar minhas janelas de visualização. Eu posso ver que a rotação vamos definir
para menos 20. E se eu selecionar meu braço de mola, você pode ver agora que se eu girasse
meu braço pulverizador, pressionando a barra de espaço, a câmera iria junto com ele. Agora, a razão pela qual isso está compensado é que não está ligado
à linha vermelha. A câmera do braço de mola, que é determinada
por esse comprimento do braço. A propósito, você poderia
definir isso mais, mais longe, mais perto, eu
vou definir isso para 300. Agora, a razão pela qual isso não
está ligado a linha vermelha
é porque eu tenho a altura Z configurada para
100 e a estamos inclinando para baixo menos 20 graus
na direção y. Por último, mas não menos importante,
vamos adicionar um componente flutuante Move are floating
pond movement. E diz em nossa
pequena dica de ferramenta aqui este é um
componente de movimento que fornece um movimento simples
para qualquer classe de peão. Eu digo que vamos em frente, sim, pois precisaremos disso para mover
esse fone de ouvido gigante. Agora, eu vou trapacear aqui. Vou copiar e
colar um script do nosso ThirdPersonCharacter no Event
Graph de nossos pons. Então, eu tenho meu ThirdPersonCharacter
aberto aqui. Se você esqueceu ou aquele cara
é um projeto em terceira pessoa. Aí está seu
personagem de terceira pessoa. Então, o que eu
quero roubar aqui? Bem, eu quero roubar. Os controles dos movimentos. Então, onde diz
movimento, entrada, gamepad e mouse,
vou clicar com o botão esquerdo, arrastar todos esses Control C. Vou entrar no gráfico de eventos da
minha lagoa. Vou deletar tudo
isso e fazer o Control V para
colá-los aqui. E então eu vou voltar
para o meu ThirdPersonCharacter. E eu quero
poder dar uma olhada. Então, esses serão nossos controles de
visão geral do mouse. Estou usando um mouse. Você tem um gamepad. Veja os controles aqui. Vou roubar a entrada
da câmera, as
entradas de visualização do mouse. Clique com o botão esquerdo e arraste, Control C ,
back in my pond, Control V. Agora, está tudo bem. Isso me permitirá
olhar para a esquerda e para a direita. A guinada e o tom aqui
me permitirão olhar para cima e para baixo. No entanto, preciso
mudar algo nos padrões
da minha classe do meu lago aqui. Então, nos padrões da minha classe, peão, estou procurando algumas
caixas para marcar, e elas estão aqui
onde
diz usar o tom de
rotação do controlador. Eu quero ter certeza de
que isso está verificado. Onde diz, use a mandíbula de rotação do
controlador. Quero ter certeza de
que isso
também está verificado para que eu possa
inclinar minha câmera para cima e para baixo
e também olhar para a esquerda e para a direita. Tudo bem, com tudo isso feito, vou compilar e salvar. E agora, para que eu
realmente teste isso, preciso colocar meu peão BP aqui para ser minha classe de peão
padrão. Agora eu poderia fazer isso aqui. Mas só para mostrar técnicas
diferentes, vou voltar ao
meu editor de níveis aqui. Eu tenho essa planta
do botão aqui em cima. Então, vou selecionar que meu modo de jogo atual
é meu modo de jogo b p. Deixe-me ir até minha pasta
de estrutura de scripts. Você pode ver no último vídeo
que criamos o modo de jogo BP, clicando aqui. Esse é atualmente o meu modo de jogo. Então, se eu escolher neste
menu suspenso aqui, peão atualmente, ThirdPersonCharacter, vamos
selecionar uma nova classe de peão. E eu vou
escolher meu pai. Então, eu vou
colocá-lo ali mesmo. Você pode ver se eu
volto aqui, venho logo abaixo,
que agora está definido como meu novo lago. Se eu entrar no Modo de Jogo, acimente si mesmo clicando duas vezes nele. Você pode ver aqui minha classe de peão padrão agora
foi alterada. Além disso, se você continuar com as configurações do
seu projeto, poderá ver que sua classe de peão
padrão também
foi alterada aqui. Então você o muda em qualquer
um desses três lugares. Isso muda isso em
outros lugares. Então, agora, quando eu clicar
no botão play aqui, eu não vou aparecer o ThirdPersonacter
aqui no jogador começa o ator, eu vou aparecer como
seu fone de ouvido VR gigante. Vamos seguir em frente
e jogar isso. Deixe-me voltar para o meu
lago aqui também. Então você pode ver esse
script sendo disparado. Então, vou clicar em jogar aqui. Aí está meu fone de ouvido gigante. Deixe-me selecionar meu objeto de depuração
como foi gerado no lago BP. Então você pode ver que tudo isso está
disparando continuamente. O eixo de entrada gira à direita. Deixe-me ampliar
isso um pouco. Eles estão
disparando continuamente. O eixo de entrada
avança e recua,
move para a direita e para a esquerda. Os eventos do Axis são disparados
continuamente assim. Vamos ver se consigo me movimentar. Podemos ver se
consigo olhar em volta e manter pressionado o botão
direito do mouse. Esquerda e direita. Isso é guinada, inclinação para cima e para baixo. Como S. Andy, parece que
estou andando por aí. Descubra que agora temos um
peão com o qual podemos jogar. E aí está. Se você tiver esses
componentes neste script, você também pode ter planos
de classe para controlar
em seu jogo. Obviamente, você precisa
configurá-lo em seu modo de jogo, suas configurações de projeto no slot
padrão Pawn Class. Muito legal. Tudo bem,
na segunda parte, vamos criar um modelo de classe de
personagem. Uma classe de personagem deriva
de uma classe de peão. veremos todos
no próximo vídeo.
101. personagem: Tudo bem, bem-vindo de volta. Neste vídeo, nosso
objetivo é criar um
plano de classe de personagem do zero. Agora, a classe do personagem é uma extensão da classe Peão e é um tipo especial de peão que tem a
habilidade de andar por aí. Pensei em incluí-lo
aqui em nossa discussão do framework Blueprint
porque dentro das configurações do nosso projeto, onde todos os nossos
planos de estrutura podem ser encontrados, bem
como dentro
do nosso modo de jogo, onde os
esquemas da estrutura podem ser encontrados em um ou. Temos um espaço para a
Default Pawn Class, e é aí que uma planta de classe de personagem
pode ser colocada em um lago ou um
personagem pode ser encaixado porque o personagem
deriva da classe Peão. Agora, para ajudar
a esclarecer esse ponto, vamos voltar para nossa pasta de estrutura de scripts. E vamos clicar com o botão direito do mouse
em algum espaço vazio onde vamos
criar uma classe Blueprint. E aqui, em nossa janela de
escolha da classe principal, podemos ver se
escolhemos um personagem. Diz que um personagem é um tipo de lago que inclui a
capacidade de andar por aí. E se entrarmos na seção “Todas
as classes” confira a hierarquia das
diferentes classes do projeto. Abaixo da classe de ator. Podemos descobrir, acabei de expandir
esse triângulo lá. Podemos encontrar a classe Pawn. O peão herda do ator. E aqui dentro
podemos ver que a classe do personagem
herda do peão. Eu vou escolher o
personagem aqui em cima. Vou nomear essa personagem sublinhada da
BP, sublinhada feminina. Em seguida, vamos clicar duas vezes
sobre isso para abri-lo. E você pode ver que temos
um pouco de trabalho a fazer aqui porque não vemos
nada em nossa janela de visualização. Então, vamos seguir em frente
e começar. A primeira coisa que quero fazer
dentro da nossa personagem, modelo
feminino em
seus padrões de classe. Quero entrar no painel
Detalhes e onde
diz usar a guinada de
rotação do controlador. Eu quero desmarcar isso. Nota. Se deixado verdadeiro, nosso
personagem seria automaticamente orientado
na direção em que
estamos olhando. Você sabe como
girar a câmera em torno do seu personagem. Bem, se você
deixasse isso verdadeiro, seu personagem também estaria
automaticamente olhando nessa
direção. Quero desmarcar isso
porque quero que nossa câmera realmente fique cara a cara
com o personagem. Você pode experimentar
isso se quiser, quando terminarmos todo
esse processo. Tudo bem, vou
selecionar nossa malha em seguida. E no
painel Detalhes, preciso
encaixar em uma malha esquelética. Vamos em frente com sapatos. Temos SKS, Manny, que é a versão masculina que
vou fazer S, K, M, Quinn. Será a versão feminina que será carregada aqui. Agora, enquanto isso está carregando,
eu também vou
participar de uma aula de animação. Então, na aula de anime, vou procurar
por ABP Quinn. E você verá Quinn
agora animando. Além disso, preciso definir um pouco
minha malha de personagens
aqui embaixo. Então, vou
definir a localização, a localização z para
menos 87. Eu vou ser super
preciso com isso. Isso vai ser bom o suficiente. A rotação que vou
definir para menos 90. Essa seta azul
indica avanços. Então você quer ter
seu personagem voltado para frente desse jeito. Tudo bem, em seguida, com nosso componente de
cápsula selecionado, vou adicionar componentes de braço de
mola. Um componente de braço de mola é essencialmente como um bastão de selfie, embora haja uma configuração
ou duas que possam ser muito úteis para controlar
coisas sobre sua câmera. Vou deixar
esse nome lá como braço de
mola e mais
no painel de detalhes, quero encontrar nas
configurações da câmera aqui, Use a rotação do controle do peão. Quero ter certeza de
que isso está verificado. Agora,
isso fará com que, quando pressionarmos o botão direito do mouse em
nosso jogo e girarmos, a câmera gire, o que é algo
que queremos. Assim, você também pode brincar
com essa configuração assim que
terminarmos este vídeo. Em seguida, quero selecionar, com meus
componentes de braço de mola selecionados aqui. Quer adicionar uma câmera. Hoje em dia, a câmera de Sydney,
mas apenas uma câmera normal, e deveria ser
recuada assim. A câmera dessa maneira é
conectada ao seu braço de mola, é essencialmente
fixada na ponta do bastão de
selfie aqui para que você possa ver meu braço de mola. Se eu mudasse o comprimento do braço
alvo, a câmera se
ajustaria com ele. Defina isso de volta para o
padrão de 300 por enquanto. Então, com minha câmera selecionada, não
há nada
que eu queira mudar aqui, embora eu indique
dentro daqui que,
se você quisesse, você poderia mudar algo como seu campo de visão configuração. Muitos usuários gostam de
brincar com isso. Brinque com isso, encontre um campo de visão
que seja do seu agrado. Em seguida, vou mudar o componente de movimento do
meu personagem aqui. Eu tenho um
aqui dentro que se chama Orient Rotation to Movement. Agora, há muitos parâmetros diferentes dentro
do
componente de movimento do seu personagem que
controlam as propriedades de
movimento do seu personagem. Se eu procurar esse público. Esse é o que eu estou procurando, Orient Rotation, dois movimentos. Eu quero verificar isso. Ao verificar isso, vou
orientar ou seja, girar o personagem para se mover
na direção que você está
tentando ir. Sem isso, será
para que seu personagem
pareça
estar andando em uma
direção enquanto na
verdade está se movendo em
outra direção. Portanto, essa é uma boa opção para
garantir que você tenha sido verificado. Em seguida, se eu pular
para o nosso gráfico de eventos, você verá que não
tenho nenhum script aqui que controle
como meu personagem se move. Eu vou trapacear
no interesse do tempo. Então, vou
excluir esses nós. Vamos entrar em
nosso ThirdPersonCharacter e roubar alguns nós de lá, como fizemos
no último vídeo. Portanto, se você não tiver
ThirdPersonCharacter
aberto sob personagem de terceira pessoa
, planos clicam duas vezes em
seu personagem de terceira pessoa. Dentro daqui,
vamos roubar nossos controles de movimentos
aqui, todas essas coisas,
clique com o botão esquerdo, arraste, controle C, entrando em nossa personagem, mulher, controle V para colar. Isso controlará
nossos movimentos para frente
e para trás, bem
como nossos movimentos para a esquerda
e para a direita sob nosso
ThirdPersonCharacter. Mais uma vez, agora vou
roubar o mouse de entrada da minha câmera. Se você tem um gamepad com o qual também deseja jogar
, considere
roubá-lo. Eu só estou controlando
com o mouse, então eu vou clicar com o botão esquerdo
e arrastar para a direita aqui, controlar C, ficando sob
personagem feminino, controle V. E com tudo isso
feito, vamos em frente e compilar e salvar. Tudo bem, a seguir,
vamos colocar nossa personagem feminina bp como
nossa classe de lagoa padrão. Então, vamos voltar ao
nosso editor de níveis aqui. E eu quero colocar isso no
lado de nossas configurações mundiais. Vou substituir
nossa configuração mundial,
nossas configurações de projeto agora mesmo. Estou usando meu modo de jogo b p. Se eu usar esse modo de jogo
para todo o meu projeto, isso determinará os esquemas de estrutura
usados para cada nível, cada mapa do meu projeto, a menos que eu os substitua
nas configurações do meu mundo. Então, no momento, minhas
configurações de projeto estão dizendo: Ei, se você clicar no botão Play, você
usará seu tanque de BP. E podemos ver isso
jogando comigo. Aqui estão os fones de ouvido VR do meu filho. Esse é o meu tanque de BP
que criamos aqui dentro de nossa pasta de
estrutura, BP pond. Eu quero dizer que sou
um cenário mundial. Eu vou
trocá-lo apenas por este mapa. Isso substituirá
as configurações do projeto. Agora, para fazer isso, vou escolher um modo de jogo
diferente dentro das configurações do meu projeto. Atualmente, tenho
meu modo de jogo BP. Então, direi que para nossas configurações
mundiais. E se você não tiver isso aberto, você pode entrar em Janela e ativar as configurações
do mundo ali mesmo. Isso trará esse painel. Para o nosso modo de jogo
aqui, vou usar, digamos BP, modo de jogo em
terceira pessoa. E embora normalmente tenhamos o
personagem de terceira pessoa inserido como personagem para
rolar com relógios
clicando em Jogar, agora
controlamos o
ThirdPersonCharacter. Em vez do nosso peão bp, posso dizer que, em vez disso, vamos escolher usar nossa personagem
bp feminina. Só para mostrar outra maneira
de colocar algo aqui,
eu poderia
escolher algo na lista suspensa. No entanto, eu poderia selecionar minha personagem feminina da
BP aqui. E com isso selecionado, basta clicar nessa
seta aqui para usar o ácido selecionado no navegador
de conteúdo. E agora, com esse espaço, eu poderia controlar minha
personagem feminina da BP, personagem feminina. E você pode ver que estou me movendo na direção em que meu
personagem está orientando, ou meu personagem está orientado na direção
que eu quero mover. E também consigo correr em direção à câmera como se fosse
uma melhora no show. Algumas dessas caixas de
seleção, caixas de seleção simplesmente me deixaram
sair daqui rapidamente. Se eu voltasse
para minha personagem BP, componente de movimento da personagem
feminina e desmarcasse a opção Orientar a rotação para os movimentos. Em seguida, clique em Jogar. Agora veja isso. Quando eu me movo, meu
personagem faz isso. Eles não estão se orientando para a direção que
estou tentando seguir. Então, vou seguir em frente e redefinir esse Componente de
Movimento do Personagem. Vamos
verificar isso. Próximo. Observe que em nosso componente de braço de
mola, verificamos isso. Preciso desfazer o filtro de
pesquisa lá. Tínhamos verificado esse jovem
na configuração de rotação. Se eu desmarcar isso e jogar, e eu mantiver pressionado o botão
direito do mouse, que estou
tentando fazer agora. Na verdade, não estou girando
em torno do meu personagem. Em vez disso, a câmera
está apenas se movendo e girando sozinha para ficar de frente para qualquer direção que meu
personagem esteja se movendo. Eu não necessariamente gosto disso, então vou
verificar isso novamente. E, finalmente, se
você se lembra dos padrões de nossa classe,
fizemos com que desmarcássemos a opção de
usar a rotação do controlador. Sim, se tivéssemos esse
cheque, se tivéssemos. E então seguimos
em frente e jogamos, eu vou correr por aí
usando WAS e D. Você pode ver como você consegue esse tipo de resultado
assustador, que
parece terrível. Eu posso girá-lo assim. E meu personagem
vai patinar e simplesmente virar para qualquer
direção que eu esteja olhando. Realmente não gosto muito disso. E é por isso que eu prefiro que isso também não seja verificado. Tudo bem, aí está. Criamos um plano de
classe de personagem do zero. Com isso criado,
você pode ir em frente e encaixar qualquer personagem ou lago em sua
classe padrão e em qualquer
modo de jogo que você escolheu. Você pode ver aqui em
nossas configurações mundiais que estamos substituindo o
modo de jogo apenas neste mapa, apenas neste mundo que
definimos nas configurações do nosso projeto. Se não tivéssemos nada
aqui em nossas configurações mundiais,
as configurações do projeto
determinariam Classe de
Peão que
seria usada neste mapa. Isso serve para
oferecer essa, pessoal, até a próxima.
102. Controlador de jogador: Bem-vindo. Neste vídeo, nosso objetivo é
aprender sobre o papel do
modelo
do controlador do jogador na configuração geral
do
nosso projeto de jogo. E também para explorar alguns conceitos
de script
que geralmente são associados aos projetos do
controlador do jogador. Agora, se eu fosse
mergulhar nas minhas configurações, nas configurações do
meu projeto, em
nossa seção de mapas e modos. Se expandirmos nosso modo de
jogo seletivo aqui, poderemos encontrar a classe do
controlador do jogador. Agora, mais uma vez, podemos inserir
um controlador de player aqui ou dentro do nosso modo de gateway
padrão. Se mudarmos algo dentro do nosso modo de
gateway padrão, esse é um desses
esquemas de estrutura aqui. Isso também mudará isso dentro
das configurações do nosso projeto. Portanto, o modo de jogo é aquele que determina a prisão
da estrutura. Os projetos mudam isso em
um só lugar, como aqui. Isso mudará isso no seu modo de
jogo e vice-versa. Se você alterá-lo aqui
no seu modo de jogo, como um controle de jogador,
ele o mudará nas configurações do seu projeto. Portanto, a
classe do controlador do player será o foco deste vídeo. Agora, aqueles que
estão jogando o tempo todo desde o início deste vídeo devem se
lembrar de que
criamos um plano de
controlador de player. Na verdade, no vídeo intitulado,
os eventos começam com o cursor sobre. Nós criamos o controlador bp
player. E a razão pela qual criamos
isso é para que pudéssemos ativar e clicar em eventos e também
mostrar o cursor do mouse. Há algumas
coisas específicas projeto de
um controlador de jogador que abordamos no início do curso
apenas para exibi-lo lá. Mas agora, aqui está a
parte em que explicamos o
que diabos é um
controlador de jogador. O propósito geral está na estrutura
dos projetos do Unreal
Engine. Agora, para entender melhor
o que diabos é um modelo de controlador de
jogador no Unreal. Considere esse cenário. Considere um jogo como
Lego Star Wars, onde você pode controlar uma
série de personagens, mas apenas um por vez. Você, como jogador,
tem algum desejo, algumas coisas que
gostaria de fazer com seu personagem e com
o jogo em si. Você, o jogador,
empunha um controle. Nesse caso, diremos que
é esse controlador do Xbox. Agora você está jogando
e controla apenas um personagem por vez. Digamos que você esteja
começando como Yoda aqui. Você pode pressionar o
botão a para fazê-los pular. Você pode pressionar o
botão X para fazê-lo balançar seu sabre de luz, etc. Agora, porém,
digamos que Yoda morra. Desculpe, Yoda, você se foi. Esse personagem se foi. Agora, seu controlador de jogador, que é representado por
esse controlador real, possui um novo personagem, neste caso Anakin. Agora, novamente, com Anakin, você pode pressionar o botão
a para pular, o botão X para empunhar seu
sabre de luz, etc. Mas então, oh, e eu posso morrer. Então, essa
classe de personagem vai adeus. No entanto, seu
controlador de jogador continua vivo e continua
se conectando a novos jogadores. Nesse caso, agora você
está controlando conta Du Gu estava mais uma vez, você pode pressionar o
botão a para pular, pressionar o botão X para balançar
seu sabre de luz, etc. E talvez você queira até mesmo fazer algo como acessar
o menu de pausa. Agora, se você criar
algumas dessas funcionalidades
dentro do plano de
classe de personagem, o que acontece se seu
personagem estiver morto? Por exemplo, e se você estivesse de
volta aqui controlando Yoda? E essa funcionalidade de
pausar o jogo existia dentro do seu projeto de classe de
personagem Yoda. Bem, uma vez que ele morra, não
haveria como
pausar o jogo. Os planos do controlador do jogador existem durante toda a sua sessão de jogo. E você pode pensar em um controlador de
jogador como sendo
as cordas de marionetes usadas para controlar seu boneco,
sua classe de personagem. Portanto, qualquer tipo de funcionalidade
compartilhada que você possa ter entre classes de
personagens ou
qualquer funcionalidade que você queira ter para você, o próprio jogador,
como pausar o jogo ou interagindo
com uma tela de menu. Esse tipo de funcionalidade que
você gostaria de criar em seu modelo de
controlador de player. Resumindo, coisas para lembrar
com um controlador de jogador, controladores de
blueprint são atores
não físicos que podem possuir um lago ou uma classe
derivada de um lago, como um personagem. Por padrão, existe uma relação
individual entre controladores, um controlador de jogador e
um peão, também conhecido como personagem. Cada controlador controla
apenas um lago por vez. E os controladores de jogadores são
melhor usados para implementar funcionalidades centradas no
usuário
, como abrir um menu de pausa
ou uma tela de inventário. Ou para funções compartilhadas de
personagens, como balançar um sabre de luz se todos os seus personagens puderem
fazer esse tipo de coisa. Ou pular, se na verdade todos os personagens possíveis também
podem pular, qualquer tipo de funcionalidade
específica do personagem, esse tipo de funcionalidade deve existir dentro do seu lago ou personagem plano de classe em si e não o controlador do player. Tudo bem? Se você ainda
não tiver um controlador de player, o Blueprint foi construído
no início do curso. Você pode criar um agora
clicando com o botão direito do mouse. Controlador de
player da classe Blueprint E chamamos esse cara de controlador de jogador
bp. E mais uma vez, você quer encaixar isso em sua estrutura. A maneira de fazer isso é
nas configurações do seu projeto, que podem ser acessadas
aqui em Configurações, configurações do
projeto e
, em mapas e modos, você pode encaixá-lo ali mesmo. Como alternativa, no seu
modo de jogo, crie o próprio plano. E mais uma vez, temos o BP Game Mode
dominando nosso projeto aqui. Neste ativo em si, o esquema do modo de jogo. No lado direito, você pode encaixar o
controle do player ali mesmo. Você o altera aqui,
você também o
alterará nas
configurações do seu projeto. Também de volta ao seu editor de níveis, se você entrar no botão
Blueprints aqui e expandir
em Configurações do projeto, modo de
jogo, controle do jogador. Aqui você pode editar seu controle de player
atual, criar um novo ou selecionar um existente. Agora, se você abrir seu controlador do
bp player aqui, no
início do curso, selecionamos a
classe padrão dentro do nosso controlador do bp player. E foi aqui que
verificamos a capacidade de mostrar cursor do mouse para ativar
eventos de clique e ativar eventos de
passar o mouse. Também podemos ativar eventos de
toque. Portanto, existem algumas coisas muito
específicas do jogo, maneiras de interagir
com seu jogo e seus menus que estão alojados dentro do modelo do
controlador do jogador. Agora, antes do início deste vídeo, criei
algumas funcionalidades dentro do nosso
controlador bp player aqui, queria mostrar
como poderíamos criar
algumas funcionalidades de personagens dentro do nosso controlador de player. Agora lembre-se, quando
você está jogando um jogo, controlador de jogador
se anexa a qualquer peão
que você esteja controlando o peão ou personagem
sempre que tiver
configurado dentro do seu
Padrão Classe de penhores. Agora, meu roteiro aqui é que eu estou fazendo que, quando eu
pressiono o botão Up, eu esteja recebendo meu personagem de
jogador atual, aquele com
o qual estou
jogando e estou simplesmente lançando o personagem. Agora, o alvo aqui é um
personagem, não um lago. Então, isso só funcionará para personagens que eu
estou controlando. Eu também poderia ter chamado
essa função de salto que também existe dentro do meu plano de
classe de personagem. Mas eu queria fazer
esse personagem de lançamento a porque é legal. E b, porque mostra outra
função específica de caractere que poderíamos usar. Você deve pegar o
personagem do jogador e se
arrastar se for o primeiro
a encontrar isso. E tudo o que vai
acontecer aqui é qualquer personagem que
eu tenha aqui. Se eu pressionar a tecla para cima aqui, meu modelo de controlador de jogador, eu simplesmente vou lançar qualquer personagem que
eu esteja
controlando no eixo z
usando esse valor. Isso é meio que
um super salto. Então, se eu fosse jogar
aqui, definirei minha depuração. Objeto ao meu controlador de
jogador emprestado. Traga meu personagem mais
uma vez. Tenho mais alguns personagens aqui
que usaremos em breve. Então, agora, quando pressiono a tecla
para cima no meu teclado, é como um super salto. Então, isso realmente
prova que eu posso escrever a funcionalidade específica do
personagem aqui dentro do projeto do meu
controlador de jogador. Tudo bem, agora considere
esse cenário no meu editor de níveis. Eu coloquei mais duas
personagens femininas da BP no meu próprio nível. Eu simplesmente os renomeei para
personagem feminino verde e um
personagem feminino vermelho. E eu simplesmente troco o material zero por um
deles ficar verde. E fiz isso selecionando
a malha de caracteres, alterando o elemento
zero para verde e selecionando o outro, selecionei a malha de caracteres e troquei o elemento zero para ler. E então, com cada um
deles selecionados, eu fiz isso um de cada vez. Entrei no meu Plano de Nível e criei esse
script aqui. Há uma referência à
minha personagem ou mulher. Eu acredito que esse é o caminho certo. Eu preciso atualizar isso. Vou clicar com o botão direito do mouse sobre
isso e atualizar esse nó. Tem o vermelho,
tem o verde. Você, desde que
os tenha selecionado em seu nível, como o vermelho aqui, você pode voltar para o Plano de
Nível, manter pressionada a
tecla Alt e clicar com o botão esquerdo. Você também pode fazer o mesmo com
o verde feminino. E anote minha configuração aqui. Se eu trouxer um nó
do controlador get player, posso encontrar nós, nós de
função
para desconquistar um alvo e, em seguida,
possuir outro alvo. Então, confira essa
pegada que estou fazendo aqui dentro
do meu plano de níveis. Quando eu pressiono
as três teclas, na primeira vez, vamos disparar uma
saída dessa. Nesse caso,
obteremos nosso controlador de player. Esse é qualquer controlador de
jogador estamos usando no momento, nosso controlador de player bp, que vamos e possuímos qualquer alvo que ele
estivesse controlando. Nesse caso, não
será atraente. No meu cenário mundial, atualmente
estou surgindo
em uma personagem feminina da BP. Não será atraente
essa personagem feminina. Então, seja instruído a possuir. Este controlador de jogador
transferirá a posse para mais de dois. Minha personagem da BP, vermelha feminina. Então, na segunda vez que eu
pressiono a tecla três, vamos disparar para fora
do pino de saída B porque o
flip-flop vai a, depois B do que a do que B. Então, na segunda vez que você pressionar as três teclas
atire para fora da viga. Nós vamos, estou possuído sempre que estamos controlando agora, que neste caso
será o caractere vermelho. E então
transferiremos
a posse para a personagem feminina verde. Então, nosso controlador de jogador
está sendo instruído possui um personagem
e possui um novo. Então, vamos falar sobre isso
no canto superior esquerdo aqui. Vou clicar em Jogar. Traga nosso
objeto de depuração do nosso mapa de teste. E então dê uma olhada. Então, se eu também pressionar o botão
Up agora, tenho essa funcionalidade de super
salto embutida dentro do meu personagem de
jogador. Essa é uma super capacidade de
chute de salto. Isso será transferido para
qualquer personagem que eu possua. Então, estou pressionando a tecla. Tudo bem, agora
vou pressionar as
três teclas enquanto estiver no meio do voo. Eu transferi a posse para o meu personagem vermelho aqui. Confira isso. Se eu pressionar a tecla para cima aqui, funcionalidade do controle do
meu jogador será
transferida e você
poderá ver minhas outras, Cotton Flight, elas estão
pressionando as três teclas. Eu pressiono a tecla F3. Quando eu estava voando,
transferi a posse pelo controlador do jogador e agora controla minha
personagem feminina verde. E, claro, essa
funcionalidade que eu construí dentro do meu controlador
do bp player também
será transferida. Então, se eu pressionar a tecla para cima enquanto controlo
o caractere verde, também
posso pular super. Então, essa é uma demonstração que
mostra que dentro do meu controlador bp
player, eu posso criar
funcionalidades para
qualquer funcionalidade que eu queira que
todos os personagens compartilhem, todas as lagoas compartilhem. No entanto, tenho uma
funcionalidade muito específica para um
personagem ou peão individual. Seria melhor colocar esse tipo de roteiro dentro do
lago ou personagem individual. Tudo bem, agora eu também
mencionei que criar algo como interações
na tela, pausar o jogo, etc., esse tipo de coisa é
ótimo para construir dentro de um
projeto de controlador de jogador porque peões, personagens que eles podem
morrer, os controladores de jogadores existem durante
toda a sua sessão de jogo. Então, vou criar um
espaço vazio aqui. Vou clicar com o botão direito do mouse. Vou fazer uma busca pelo teclado e vamos
fazer alguma coisa quando pressionamos a tecla P, P. E vou fazer com
que, ao pressionar a tecla P, eu traga um
nó flip-flop. Então, na primeira vez que pressionarmos
, ele disparará de um. A segunda vez que pressionarmos
, ele disparará em uma batida. E tudo o que eu quero fazer aqui
é definir o jogo, pausar. Controle C, controle V. Então, na primeira vez que
pressionamos a tecla P, queremos pausar o
jogo. Na segunda vez que você
pressiona a tecla P. Queremos configurá-lo para que não seja uma pausa. Agora isso é muito importante. Verifique isso com sua chave
P selecionada aqui. Você precisa se
certificar de marcar essa caixa para executar durante a pausa. Porque se deixássemos
isso desmarcado, você poderá pressionar
a tecla P para pausar o jogo. Mas como o jogo está pausado, ele não reconheceria
pressionar a tecla P novamente para retomá-la. Portanto, você precisa se certificar de
que está marcado
se quiser usá-lo para
pausar e retomar. Então, dê uma olhada nisso. Estou jogando o jogo. Eu posso correr por aí, pressionar a tecla P, o jogo está congelado. Pressionando a tecla P novamente, ela será descongelada. Eu pressionarei a tecla três, mudarei para meu caractere vermelho
aqui, pressionarei a tecla P, pausarei, pressionarei a
tecla P novamente na pausa
e, da mesma forma, transferirei a posse para o meu caractere verde. Pressione a tecla P, faça uma pausa, pressione a tecla P novamente,
retome a
funcionalidade compartilhada, tudo dentro do esquema do
controlador do player. Agora, algo que você deve
ter notado aqui é que nosso modelo de
controlador de player reconhece e
processa eventos de entrada sem qualquer tipo
de configuração especial. Não precisávamos
entrar nos padrões de nossa classe e fazer nada de especial
para que isso funcionasse ou
para que isso funcionasse. Agora, personagens e lagoas fazem o mesmo que nosso Plano de
Nível. Todos eles processam esses eventos
de entrada por padrão. Então, o que acontece se
eu usar neste caso,
digamos, o evento UP em
um controlador de jogador, em um plano de personagem
e um plano de nível. O que acontece? Qual é a prioridade? Bem, vamos executar um cenário aqui dentro do controle do meu
player. Se eu pressionar a tecla para cima, estou lançando o personagem. Vamos configurar em nossa personagem feminina
bp, que atualmente estou controlando aqui nas
configurações do meu mundo, ou seja. Minha classe de controlador de jogador. Vou apenas trazer a chave para cima. Eu tenho que fazer uma
busca pelo teclado. E eu vou
sair daqui. E eu vou imprimir uma corda. E eu vou dizer personagem. mulher imprimirá isso
na tela por, digamos, 20 s. Só para nos dedicarmos
um pouco mais de tempo aqui, vamos trocá-lo para rosa para torná-lo bonito e perceptível. Tudo bem, compile, salve isso. E então, dentro do
nosso plano de níveis, eu também vou colocar
o teclado. E dentro daqui, vamos
simplesmente tocar um som e
fazer uma explosão, certo? Tudo bem, então compile, salve. Agora eu tenho a tecla up implementada em nossos Planos de
Nível ,
nosso personagem e nosso controlador de
jogador, qual deles
terá prioridade? Então, vou clicar em jogar aqui. E eu estou pressionando a tecla para cima
e eu pulei super alto. Não ouvi
nada e não
vi nenhuma mensagem impressa
no canto superior esquerdo. Portanto, o controlador do player
é a maior prioridade. Agora, e se eu
quisesse que essa chave também fosse processada em meus
outros projetos. Como eu configuraria isso? Vamos sair daqui rapidamente. E agora, com minha tecla Up selecionada
aqui, meus eventos de entrada, essa entrada de consumo é a
chave que determina que somente esse
evento de entrada está sendo processado no controlador do meu player
e não nos outros projetos. Enquanto isso estiver marcado, isso consumirá essa entrada, que significa que este é o único lugar onde ela será registrada. Ele vai
consumi-lo e não o reconhecerá em nenhum plano de baixa
prioridade. Se eu desmarcar isso e
tentarmos jogar novamente, e eu pressiono a tecla para cima. Agora você pode ver que eu fiz
o Super Jump e você também ouviu aquele som de explosão. O que aconteceu aqui é que eu pressionei
a tecla para cima e disse: Ok, lançado com o personagem, não
estamos consumindo essa entrada. E aqui meu mapa de testes de nível. Ele também processou a manutenção, mas também disse aqui que vamos consumir essa entrada, o que significa que ela para aqui, não vai permitir que nenhum outro
plano a processe. Então, o pedido continua. Nosso controlador de jogador
tem a primeira prioridade, o Plano de Nível
tem a segunda prioridade
e, em seguida, seu lago e
personagens têm a terceira prioridade. Então, se eu quisesse que fosse processado
aqui na minha mulher também, aqui com meu mapa de teste de nível, tenho que ter certeza
de que fui selecionado, não consuma a entrada. Portanto, nossa configuração agora está dentro
do controlador do player. Não estamos consumindo esse insumo. Estamos permitindo que ele seja
filtrado dentro do meu Plano de
Nível. Não estamos consumindo
essa entrada. Estamos permitindo que ele seja filtrado dentro da minha personagem feminina. Realmente não importa aqui.
Essa é a terceira prioridade. Também podemos consumi-lo aqui. Ele
imprimirá isso na tela. Então, agora, quando eu jogo, pressiono a tecla para cima, eu
vou pular super. Você vai ver esses textos
para a personagem feminina
aqui em cima. E essa explosão também será
ouvida. Aqui vamos nós. Personagem feminina de explosão de super salto 12.3. Tudo bem,
recapitulando, o
modelo do controlador do jogador pode ser inserido no
seu modo de jogo. Os controladores de jogadores são atores
não físicos que podem possuir um lago. Eles têm um
relacionamento individual controlando um lago ou personagem por vez. E os controladores de prazer
são melhor usados para implementar a
funcionalidade centrada no usuário, como abrir um menu de
pausa ou para qualquer funcionalidade compartilhada entre personagens ou lagos que você
possa estar usando. controle de. Pessoal, que
faremos para
oferecer esse, nos vemos no próximo.
103. Instância de jogo: Bem-vindo. Neste vídeo, nosso objetivo é
conhecer e demonstrar uso do
modelo de instância do jogo no Unreal. É esse cara aqui embaixo. Agora, esse é pessoalmente um dos meus
projetos de estrutura favoritos em todo o irreal, porque
ele atua como um contêiner de armazenamento excelente e
confiável
que você pode acessar para acessar variáveis e outros enfeites, não
importa o nível. você está dentro. Agora, não sei se isso é tecnicamente considerado
um modelo de estrutura porque não é um
desses projetos que é
inserido em nosso modo de jogo. Agora você se lembra de que, no início nossa discussão sobre projetos de
estrutura, o modo de jogo é o que
determina o resto
desses projetos de estrutura,
como nossa Classe de Pawn Padrão, jogador controlador, etc. A instância do jogo é
separada disso. Não faz parte do seu modo de
jogo. Podemos ver que eu tenho meu modo de jogo BP aberto
na parte superior aqui. E se eu fosse selecionar nossas classes padrão ou, em vez disso, uma
classe é a padrão. Podemos ver na classe
da seção não
há nada aqui para uma instância de
jogo, planos. Então, o que torna esse
projeto tão especial? Bem, é único
porque não é destruído ao mudar de
nível em seu jogo. Ele persiste enquanto
seu jogo estiver rodando. Tudo bem, então, neste momento, você
provavelmente ainda está se perguntando por que o
plano da instância do jogo é tão valioso, como quem se
importa se ele persiste, se existe durante toda a
minha sessão de jogo? Bem, o que torna
a instância do jogo tão valiosa é que ela realmente transporta dados variáveis de um nível para outro para outro. Sem ser reiniciado. Você vê todas as variáveis que você definiu em seu lago ou no controle
do jogador, ou no seu modo de jogo, elas voltarão aos padrões quando
você mudar de nível, instância
do jogo não
tem isso problema. Ele armazenará e
transportará dados variáveis
de um nível para outro sem
que essas variáveis sejam redefinidas. Não ajudou muito a
dirigir para casa neste momento. Eu montei um cenário que
vamos testar aqui. Observe meu modo padrão, Pawn Class e classe de
controlador de jogador aqui. Modo de jogo Bp, peão BP e controlador de jogador
bp. Dentro de cada um deles,
eu criei, e vou começar
com meu peão BP aqui, uma variável Lives. Por padrão, ele começará
em zero. E dentro daqui, eu simplesmente criei esse script aqui. Então, vou
pressionar a tecla seis. Vamos pegar nossas vidas. Esse nó
vai incrementá-lo. Esta é uma nota
especial que vai recuperar nossas vidas e imediatamente
a atrasará. Então, a primeira vez que eu pressionar seis, isso vai mudar isso para um, depois dois, depois três,
etc., etc. E vamos imprimir
isso na tela. Vamos fazer o
mesmo tipo de configuração aqui dentro do nosso controlador bp
player. Então, eu simplesmente copiei e colei esse script no controlador do
meu player. Eu simplesmente troquei
a chave de entrada. Minha vida também é
variável. Agora, dentro do meu modo de jogo, o modo de jogo não
reconhece eventos de entrada. No entanto, dentro do meu modo de jogo, eu criei uma variável Lives. Eu vou começar
com zero também. Agora, porque eu não poderia
incrementar isso aqui. Deixe-me compilar e
salvar isso rapidamente. Estou fazendo isso no
meu Plano de Nível. Então eu fui aqui, abri meu plano de
nível, e através do Plano de Nível
eu posso pressionar o achy, obter meu modo de jogo,
lançar, meu modo de jogo, obter acesso a essa
variável de vidas que dentro desse modelo de
modo de jogo. Eu posso incrementá-lo e
imprimi-lo na tela a partir daí. Então, em três
projetos diferentes, meu peão BP, meu controlador de
jogador e meu plano de nível, onde estou acessando essa
variável dentro do meu modo de jogo, vou incrementar
essa variável de vidas. Então, o que vou fazer além
disso está aqui no meu Plano de
Nível, eu configurei esse script. Quando eu pressiono a tecla L, vou abrir um novo nível. O nível que
vou abrir é esse nível mínimo padrão. Esse é um nível encontrado na minha pasta
inicial de mapas de conteúdo, aquele cara ali mesmo. E eu quero que você
saiba que dentro do meu plano de
nível padrão mínimo, eu configurei o mesmo
script para
que possamos incrementar
nossos modos de que possamos incrementar jogo bp como
variáveis mais uma vez. Então, o que você vai ver
com todas essas três, vou incrementar
essas variáveis e vou transferir
para um novo mapa. E então vou tentar incrementar essas variáveis novamente depois de transferir
para o novo mapa, você verá que
essas contagens estão recomeçando em zero
mais uma vez. E, portanto, esse é o
prejuízo de armazenar algumas variáveis dentro de um
peão, um controle de jogador
ou um modo de jogo, se você estiver
transferindo níveis, o que os jogos geralmente fazem transferindo do nível
um. Para o nível dois, essas variáveis dentro desses três projetos voltarão ao padrão. Tudo bem, então vamos lá. Aqui vai ser nosso
teste de jogo, clicando em play. Tudo bem, então vou
começar pressionando a tecla seis. Como você pode ver, estou
incrementando meu spawn. As variáveis da vida do meu peão
somam 25 lá, e eu vou
pressionar a tecla sete. A variável Lives dentro do controle do
meu player é
de até 25. E agora vou
pressionar a tecla oito. E a variável de mentiras dentro do meu modo de jogo agora foi
aumentada para 25. Agora vou
pressionar a tecla L para passar para um novo nível. Aqui estou eu. Agora, como eu
configurei nas configurações do
meu projeto, esse
é meu modo de gateway padrão, minha classe padrão de Pawn por
padrão, controlador de jogador. Todos eles serão transferidos
para controlar qual modo de jogo, classe de
peão e controle de
jogador eu estou usando aqui
neste novo nível. Então dê uma olhada. Vou pressionar a tecla seis. Você pode ver minhas vidas
variáveis dentro do meu lago começando do zero. Vou pressionar a tecla
sete em vez de o controle do meu player
começar com zeros, então vou ter que
contar do zero novamente e depois
pressionar a dor. Minhas vidas variáveis dentro do meu modo de jogo também foram reiniciadas
desde o início. Então é aqui que a
instância do jogo realmente é útil. Se você quiser que
algo como uma variável Lives seja
transferido de nível para nível, lembrando qual
era esse valor antes de
entrar no novo nível. Tudo bem, então vamos seguir em frente e criar nosso plano de
instância de jogo. Podemos fazer isso aqui dentro das configurações do nosso projeto em
mapas e modos, instância do jogo. Você tem esse botão de
adição
aqui para criar uma
nova instância de jogo. No entanto, vou
voltar para o meu navegador de conteúdo. E dentro da pasta da minha
estrutura de scripts, vou clicar com o botão direito do mouse
e abrir um espaço vazio. E na classe Blueprint, não
vou
ver a instância
de jogo nessa área,
não é muito comum. Mas na seção de todas as
classes, podemos digitar Game Instance. E você quer escolher
esse cara aqui, instância de
jogo, não jogo de plataforma
, em vez disso, é apenas
uma boa e velha instância de jogo. Selecione isso e
eu vou chamar essa instância do
jogo BP underscore. Tudo bem, em seguida,
vamos colocar
isso dentro das configurações do nosso
projeto. Se você esqueceu onde
acessar as configurações do projeto, você pode acessá-las aqui. Ou em Editar configurações do projeto. Você quer entrar
em mapas e modos. E está
aqui embaixo. Ao clicar neste menu suspenso,
vou colocá-lo na minha instância de jogo BP. Isso é ótimo. Sem o botão Salvar ou qualquer coisa aqui, podemos simplesmente sair das configurações do projeto ou retornar ao nosso navegador de
conteúdo. Vou clicar duas vezes na instância do jogo
IBP
aqui para abri-la. E vamos
adicionar uma nova variável, e eu a chamarei de vidas. E faremos com
que seja um número inteiro. Vamos prosseguir,
compilar e salvar. E vamos
deixar isso um valor padrão de
zero por enquanto. Agora, o que eu posso fazer
aqui é imprimir quantas vidas
eu tenho na tela. Uma maneira que eu poderia fazer isso, você pode pensar que é basta clicar com o botão direito do mouse e
fazer uma pesquisa por Begin Play, e você descobrirá
que isso não existe. O que você quer fazer é aqui dentro de um plano de
instância de jogo, procurar um
evento chamado evento in knit. É como se
o evento começasse a acontecer. Dentro da instância de jogo BP, dentro de um plano de
instância de jogo, isso será acionado logo no
início do nosso jogo. Então, se eu imprimir uma corda, posso arrastar para trás. Vou digitar, acrescentar. No a, vou colocar
na instância do jogo. Vamos fazer uma instância de jogo. Vive para o valor b. Deixe-me adicionar alguns
espaços depois disso. instância do jogo vive em
espaço duplo. E então vou simplesmente arrastar e
soltar isso em nosso gráfico, pegá-lo e
colocá-lo no B, um nó de conversão também
entrará. Então, se eu compilar, salvar
e jogar, você pode ver imediatamente
no canto superior esquerdo que diz Game Instance vive zero. Tudo bem, vamos seguir em frente e ser generosos e dizer que,
em vez de zero vidas, você realmente começa
com três vidas. E vamos dizer
que aqui em nosso nível, vou compilar
e salvar isso muito rapidamente aqui em nosso plano de
instância de jogo, digamos que, de volta ao nosso nível, faremos com
que Quando seu personagem chegar a essa caixa de gatilho que
tínhamos em nosso nível, vamos premiar uma vida
extra, um bom trabalho. Você percorreu todo o caminho
até o final do nível. Então, de volta ao meu
plano de nível aqui, você pode acessar um
plano de nível como esse. Vou modificar esse
script aqui um pouco. Na verdade, vou
acabar com isso completamente. Por muito tempo. E contanto que você
tenha seu volume de gatilho selecionado aqui novamente em seu Plano de Nível,
clicaremos com o botão direito do mouse. Vamos
adicionar eventos para quando começarmos a sobrepor isso. Vamos fazer um elenco para, na verdade, eu vou
ter que lançar para o peão BP, lançar para ser o lago P porque
isso é atualmente. O lago que estou
controlando no meu jogo. Então, isso será fazer
a sobreposição. não tenho nenhuma configuração mundial Atualmente, não tenho nenhuma configuração mundial
substituída pelo
modo de jogo. Então, só queria
deixar isso claro. Quando sobrepomos essa
caixa de gatilho com nosso peão bp, clicaremos com o botão direito do mouse em
get Game Instance. Em seguida, vamos transmitir para
a BP Game Instance. Dentro da nossa instância do jogo bp, tínhamos uma variável chamada vidas. E vamos continuar
com isso e simplesmente incrementá-lo. Tudo bem, então vai
ficar tudo bem. Então, isso é ótimo. Isso deve ser impresso. Vou, na verdade, imprimir isso na tela, imprimir o texto. E imprimiremos esses valores
atualizados aqui. Então, quando sobrepomos
essa caixa de gatilho, vamos adicionar uma vida e imprimir na
tela, compilar, salvar. Vamos em frente e
o teste é rápido. Deixe-me configurar meu objeto de depuração. E eu vi muito
rapidamente que, quando
começamos a jogar, a
instância do jogo vive em três. Então, vou
sobrepor esse look no canto superior esquerdo aqui, assim como eu faço. Então, agora temos quatro
sobreposições novamente, 56, aí está, 67, etc. Agora, aqui está o problema
com nossa configuração atual. Se eu pressionar a tecla L
para transferir mapas, não
tenho como imprimir o
valor de nossas vidas atuais na tela. Quero dizer, em nosso evento nele, evento inicializado, estamos
imprimindo na tela. E quando estou sobrepondo
o volume do gatilho, estamos imprimindo na tela. Mas no meu novo mapa, não
tenho como
imprimi-lo na tela. Só porque estou me
sentindo chique aqui dentro do meu controle de jogador, vou fazer valor da
vida da
nossa instância de jogo bp apareça. Portanto, temos muita
comunicação do Blueprint em andamento aqui. Então, dentro do meu controlador bp
player, vou modificar
esse script aqui. Quando eu pressiono a tecla sete, eu simplesmente faço instância do
jogo seja lançada
para nossa instância de jogo bp. Vamos obter a
variável vidas que vive lá
dentro. E vamos simplesmente
imprimir isso na tela. Assim. Então, vou
compilar e salvar aqui. Então, entenda o que estamos acontecendo aqui dentro de
nossa instância de jogo bp, isso
existirá enquanto nosso jogo estiver vivo, não importa
se transferimos o nível ou não. Então, dentro de nossa instância de jogo
bp, ao inicializar nosso jogo, vamos imprimir quantas vidas
teremos que exibir. Serão três. Quando sobrepomos isso, acionamos um volume aqui dentro
do nosso plano de níveis. Vamos acessar nosso plano
de
instância de jogo, agarrar nossas vidas, incrementá-lo e
imprimi-lo na tela. E então, quando eu fui
transferido para um novo nível aqui estão os novos níveis respeitarão nossas configurações de
projeto aqui, incluindo nossa classe de
controlador de jogador. E em nosso novo nível. Dentro do nosso controle de jogador, vou tocar
na tecla sete para obter nossa instância de jogo
e ela nos mostrará que nossas
vidas atualizadas e modeladas são transferidas. Então, aqui vamos nós. Pressionando Play, a
instância do jogo vive três. Vamos
sobrepor esses 456,7. Vou pressionar a
tecla L para transferir os níveis. Agora lembre-se de que aqui no controle
do
meu player, o controlador do player continuará, mesmo que o valor
das variáveis dentro dele
seja redefinido. Nosso controlador de jogador bp existirá aqui
novamente neste nível, é
isso que está
dominando nosso peão aqui. Então, dentro do controle
do nosso player, vou pressionar
a tecla sete. Agora. Vou configurar meus objetos de depuração para o meu controlador de
jogador gerado no. Agora, quando pressiono a tecla sete, você pode ver que essa
variável continuou. Temos sete vidas dentro
de nossa instância de jogo bp. Agora, antes de
encerrarmos este vídeo, eu queria mostrar a vocês o
quão poderoso isso era, especialmente no que se refere
aos projetos de widgets. Então, na minha pasta de
widgets de script, vou abrir meu WPP HUD e mais uma guia gráfica do MEW BP HUD. O que eu fiz
entre os cortes da câmera aqui está fora do Event Construct. Eu tenho minha instância de jogo. Estou lançando para a instância do jogo BP. Cliquei com o botão direito do mouse nesse
pin e o promovi para uma variável para capturar minha instância de jogo em uma variável. Se você fizer isso, isso permitirá que você volte à sua guia Designer
para criar vinculações diretamente de duas variáveis relacionadas dentro de sua instância de
jogo BP, por exemplo, se eu fosse arrastar
um texto widget aqui, em vez de dizer
bloco de texto
aqui no painel Detalhes, eu poderia entrar
onde diz vinculação. E agora, porque eu
criei uma referência para minha instância de jogo BP,
confira isso. Como exemplo do jogo BP, posso vincular isso à
minha variável de vida. Isso ainda dirá
bloco de texto por padrão. Mas se eu compilar e salvar, eu poderia então o controlador
do player MIB P criar esse pedaço de script,
evento, começar a jogar,
criar widget, criar seu HUD por meio dele
e, em seguida, adicionar ao Viewport. E então o que isso me
permitiria
fazer é jogar meu jogo. E dentro do meu HUD B, W BP, minhas vidas deveriam ser representadas
aqui mesmo no meu HUD. Então, vamos jogar isso. E você pode ver que a instância do
jogo vive três e vemos isso agora
refletido no HUD. Está vinculado a isso que vive variável dentro de
nossa instância de jogo. Se eu revisasse
isso por cinco, você também verá essa
atualização. E eu vou pressionar a
tecla L para transferir os níveis seis. Ele ainda está presente aqui
no meu novo nível também. Tudo bem, então aí está, os esquemas da instância do jogo. Um dos principais benefícios
disso é que ele não redefine variáveis
entre as mudanças de nível. Algo a se observar aqui, se você estiver
avançando o suficiente, poderá criar e implementar um sistema de
salvamento no Unreal, que obviamente está fora
do escopo deste curso. o esquema da instância do jogo é Muitas vezes, o esquema da instância do jogo é o facilitador
entre pegar dados de um arquivo de jogo salvo e trazê-los para
o jogo atual, bem
como gravar dados de um jogo atual para um jogo salvo. Isso meio que funciona como um intermediário. Tudo bem pessoal, isso vai
fazer tudo neste vídeo, nos vemos no próximo.
104. Compilação: Bem-vindo. Este vídeo será sobre compilação. Esse é esse botão no
canto superior esquerdo das plantas. Portanto, nossos objetivos serão os seguintes. Primeiro, vamos demonstrar maneiras de compilar planos. Em segundo lugar,
aprenderemos como localizar rapidamente um problema quando seu
plano não for compilado. E número três,
mostraremos como
combinar as ações Compilar e Salvar dentro
de um plano para que você não precise compilar,
salvar, compilar , salvar, compilar, salvar tudo realmente
deve ser feito com uma única etapa. Tudo bem, eu tenho minha guia
ThirdPersonCharacter aberta
na parte superior porque
vou trabalhar aqui
em breve. Mas vamos começar falando sobre o que diabos é compilar, o que está acontecendo quando
pressionamos esse botão de compilação. Bem, quando você está
compilando um plano, o que você está fazendo é iniciar o
processo de conversão das propriedades e de
todo
o script em seu gráfico de ativos de um plano , como como nosso
personagem de terceira pessoa aqui, em uma classe, ou seja, nossa classe de personagem em
terceira pessoa. Na
programação de computadores, quando você compila código, o compilador, que geralmente é outro programa vai pegar o programa
que o humano Rhodes, neste caso, nosso script e todas
as propriedades e
variáveis e outros enfeites. E vai
convertê-lo em um programa que o computador possa
realmente entender. Agora eu posso ajudar a esclarecer
esse ponto um pouco mais, fazendo isso.
Eu tenho esse script de entrada de salto aqui em nosso
ThirdPersonCharacter. Se eu clicar com o botão esquerdo
e arrastar todos esses nós, controle C. Eu tenho um aplicativo de bloco de notas
aberto na parte inferior aqui. Eu só vou fazer um
Control V dentro daqui. Esse é todo o código que está apoiando todo o nosso
script pulado aqui. Então, essencialmente, quando você está criando
scripts por meio desses nós
que está vinculando, há um código que apóia tudo
isso quando você está compilando sua verificação para garantir que seu código esteja em qualquer
propriedade, variáveis, etc., que você é, que fazem parte disso,
estão prontas, fazem parte disso,
estão prontas,
que estão limpas e
que não há erros, que a máquina pode
lê-las e sabe
exatamente o que fazer e pode
fazer uso delas
assim. Tudo bem. Agora,
algo importante a saber sobre compilação é que
, ao compilar um plano, podemos estar cientes de problemas com nossos scripts de
diagramas. No entanto, observe que ele
não detectará todos os erros porque algumas áreas são
simplesmente de natureza humana. Por exemplo, aqui, eu trouxe um
sistema de spawn no nó de localização. Agora eu posso dizer: Sim, eu quero gerar esse sistema, essa
partícula do Niágara aqui. Mas e se eu tiver minha escala
definida para 000 e depois tiver algum evento tentando gerar esse sistema,
mas eu não o vejo. Posso ficar me perguntando
o que diabos está acontecendo. Deve haver algo
errado com meu roteiro. Bem, na verdade, pode
não haver nada de errado com meu roteiro. No entanto, não estou
obtendo o resultado esperado porque defini
a escala como zeros, zeros, zero, o que significa
que eu não a veria. Portanto, compilar um plano
não detectará erros como esse. Tudo bem, aqui no meu gráfico de eventos
ThirdPersonCharacter, eu
configurei um cenário em que vou criar intencionalmente
um script ruim e depois tentar compilar. Eu vou chegar
aqui para que, quando eu apertar o botão B, eu gere algum ator. Vamos em frente e
dizer: Cara, uma poção. No entanto, vou deixar
intencionalmente essa entrada de
transformação de spawn em branco se eu
tentar compilar agora, você verá
que, quando eu fizer
isso, haverá
um erro aqui. E, de fato, essa dica de ferramenta dirá que houve um erro durante a compilação é
ver o log para obter detalhes. Então, by log, estou apontando para a guia Resultados do compilador que acabou de aparecer na
parte inferior da minha tela. E isso me fará
saber que, ei, você tem algo
que precisa ser resolvido. Nesse caso, meu PIN de transformação de
spawn é inválido para
gerarmos uma distribuição de homens, temos que dizer a ele
onde gerar. Agora, se você não ver esta guia de resultados do
compilador aqui embaixo, ou se você acidentalmente
fechá-la, você pode
recuperá-la da maneira que a recuperou ou de qualquer outra guia aqui que esteja faltando
é que você entra na
sua janela e aqui você
pode encontrar os resultados do compilador. Ligue isso novamente. Agora, os resultados do compilador mostram quaisquer erros ou avisos ao
compilar um esquema. E o que é bom
nisso é que ele tem alguns hiperlinks nos quais
você pode clicar para
ir para o ponto problemático. Então, poderíamos clicar aqui mesmo
em nossa transformação de spawn. E isso só vai nos mostrar
onde está esse ponto problemático. Então, se você está em algum lugar no gráfico e pensa: Onde diabos está esse erro? Vamos clicar nele
e você será direcionado diretamente para ele. Agora veja o que acontece com
nosso botão Compilar, nosso ícone aqui em cima, quando
seguimos em frente e
cumprimos geração e transformação os requisitos de geração e transformação desse
agente de spawn do node de classe. Vou apenas
inserir a
transformação mundial do nosso ponto final de rastreamento de
linha. Esse é apenas um
componente de erro que eu adicionei ao meu personagem em terceira pessoa, que está um pouco na
frente do nosso personagem. Vou conectar isso aqui. Observe que,
assim que eu o conecto, o ícone sobre o
botão Compilar será alterado. Agora vemos um ponto de
interrogação em amarelo. Então, quando ele muda para esse ícone, isso significa que alguma mudança foi feita em
nosso modelo aqui. Isso acontecerá sempre que algo novo for adicionado a um gráfico ou em qualquer nova
variável ou função, macro
ou componente
for adicionado. É deixar você saber, ei,
algo está diferente. Agora, existem algumas
maneiras de compilar um plano. Você pode clicar nele ou há uma tecla de atalho
associada a ele. Pressionar F7 também
compilará. Na verdade, não vou pressionar sete agora porque F7 é minha tecla de atalho para iniciar e parar minha
gravação aqui embaixo. Mas saiba que F7 é o que
você pode usar como tecla de atalho. Então, vou seguir em frente
e clicar em Compilar aqui. Essa marca de seleção verde
significa pronto para usar. E você também pode ver isso na dica da
ferramenta. Agora vamos discutir algumas opções de
compilação. Esses três pontos
aqui os revelam. Podemos economizar na compilação
e podemos fazer isso nunca. Podemos fazer isso
apenas com sucesso ou sempre. Se nunca for, é o que eu fiz durante a
maior parte deste curso. Temos que compilar. E então, se o seu
compilador for bem-sucedido, você deve salvá-lo diretamente depois para
garantir que todas as alterações
feitas em seu projeto, ou
realmente salvas somente em caso de sucesso, serão salvas apenas quando seu
projeto for compilado com êxito. E sempre significa que vai
salvá-lo, independentemente compilação ter sido bem-sucedida ou não. Também temos essa opção de pular
para o nó de erro. Você pode ativar ou desativar isso. Na verdade, é uma marca de seleção
que você pode marcar ou desligar. Eu vou ligá-lo aqui. E isso vai ser
muito legal para nos
informar onde
existe um erro em nosso gráfico. Vai direto para
ele se fizermos um. Então, vou
desconectar isso rapidamente. Você pode manter pressionada a
tecla Alt e clicar com o botão esquerdo, e então eu vou
navegar para algum lugar aleatório no meu gráfico como este. Então, agora, quando eu compilar
, ele vai direto para ele. Eu gosto
muito dessa opção, altamente recomendada que é saltada para o nó de erro logo abaixo
desses três pontos. Agora, apenas uma observação rápida sobre essa opção de nó de erro. Funciona como clicar em um dos seus hiperlinks de erro aqui embaixo. Isso é muito legal. Obviamente, não pode ignorar
todos os erros ao mesmo tempo. Se, de fato, você
tiver vários erros, ele passará para o erro
no topo da lista. Esse é o erro
descoberto mais recentemente. Além disso, eu queria responder a essa opção Salvar na compilação. Se eu for ao meu
Plano de Nível e clicar
nesses três pontos aqui. Eu posso ver que, se eu usar
a opção salvar na compilação, tudo isso ficará acinzentado. Você descobrirá que
essas opções não estão disponíveis em nenhum plano
de nível ou subnível. Isso ocorre porque
salvar um nível ou
subnível em si salva o
esquema associado a ele. Então, pensei em apontar
isso aqui. Você pode pressionar F7, que é a tecla de atalho dentro de um plano de
nível ou subnível. Observe que isso também
salvará o nível ou subnível em si. Agora, por fim, eu só queria
ressaltar mais uma vez que os resultados do
seu compilador
não mostrarão todos os erros humanos. Então, de volta aqui, meu
ThirdPersonacter Blueprint. Podemos dizer que, sim, de fato, é aqui que
queremos gerar um pouco esse homem, uma poção na frente de
nosso personagem. No entanto, se eu quebrar
esse fio aqui, vou manter pressionada a tecla
Alt e clicar com o botão esquerdo. Vou seguir em frente e compilar. E vai ser como,
Sim, bom ir. Mesmo que você possa pensar enquanto joga
que Ei, estou pressionando a tecla B, mas não estou gerando uma poção para
nenhum homem. Mais uma vez, irreal, não consigo
conhecer seus desejos mais profundos. Ele não sabe
se você realmente pretendia desconectá-lo
ou conectá-lo. Portanto, não detectará
erros como esse. Tudo bem pessoal, isso vai funcionar neste vídeo e
na compilação. Nos vemos na próxima.
105. Pontos de ruptura: Tudo bem, bem vindos de volta a todos. Nesta seção do curso, aprenderemos como solucionar melhor
nossos planos. É assim que os depuramos. Vamos começar com isso falando
sobre pontos de interrupção. O objetivo deste vídeo
é aprender como
criar e usar
pontos de interrupção em criar e usar
pontos de interrupção nossos scripts para
nos ajudar a analisar o que acontece quando um
script está sendo executado. Agora eu configurei um cenário aqui. Eu vou
controlar o lago IBP, vou sobrepor uma das minhas portas giratórias específicas que criamos no
início do curso. E você notará que nosso jogo vai congelar,
mas intencionalmente, não involuntariamente. Então veja, vou
sobrepor o volume do gatilho. Apenas confie em mim, há um
volume de gatilho na frente
desta primeira porta. Parece que nada aconteceu, mas vou sobrepor esse segundo volume de gatilho
na frente desta porta. E eis que congelamos o jogo. Chegamos a um ponto de interrupção. Então, o que é um ponto de interrupção? É uma pausa ou
parada intencional que você cria em um script, conforme indicado por esse ponto vermelho neste
nó aqui. Agora, o objetivo de fazer
isso é descobrir se o script está funcionando
conforme o esperado. Talvez um evento que
esperamos que desencadeie não seja. Talvez uma função que
esperamos disparar
não esteja sendo acionada. Talvez uma variável que
esperamos
ter um valor ainda não tenha
sido definida. Essencialmente, um
ponto de interrupção nos dá um tempo limite para inspecionar mais de perto como
nossos scripts estão se comportando. Tudo bem, atualmente vou
sair do nosso jogo e explicar como configurar pontos de interrupção
dentro de seus próprios projetos. Então, clique no
botão Parar aqui em cima. A primeira coisa que você deve
entender é que você quer ter
certeza de que está
avaliando o plano adequado, a instância correta
do plano. No momento, estou
olhando para minha porta giratória BP agora observe no meu nível que
tenho duas delas. Eu tenho esse cara, porta giratória
BP
e a segunda, porta giratória
BP para agora o projeto da porta
giratória MIB. E esse é um modelo
que configuramos durante nosso vídeo
variável rotator. Eu defini um
ponto de interrupção para quando
começarmos a sobrepor
esse componente da caixa. Agora, no topo, aqui, se eu clicar neste menu suspenso, observarei que estou avaliando
atualmente, atualmente
estou depurando a porta
giratória da BP e você pode vê-la entre
parênteses ali mesmo. Esse é o que eu selecionei
atualmente. O que isso significa é que,
se eu estiver sobrepondo esse componente da caixa à porta
giratória BP número um aqui, isso não fará uma pausa. Isso não interromperá a execução
do meu jogo porque
atualmente estou avaliando a porta
giratória número dois da BP. Portanto, é importante
entender isso. Se você tiver, digamos, 50 instâncias de um determinado blueprint, isso só interromperá a execução quando você
sobrepor aquela determinada instância, aquela determinada cópia
do blueprint. Então, aqui eu tenho a porta
giratória BP número dois. Agora, como eu obtive
esse ponto de ruptura, esse ponto vermelho nesse
nó, para começar? Bem, existem
algumas maneiras de fazer isso. Você pode clicar com o botão direito em um nó. E você pode ver no
menu do botão direito do mouse que
temos opções de ponto de interrupção. O primeiro ano que vou
usar é alternar o ponto de interrupção. Existe uma tecla de atalho
F9 associada a isso. Então, como isso está ativado no momento, posso desativá-lo
e vice-versa, posso clicar com o botão direito do mouse e
ativá-lo novamente. Mais uma vez, com esse
nó selecionado F9, nós o ativaremos,
ativaremos e desativaremos. Eu poderia
clicar com o botão direito nele mais uma vez e remover o
ponto de interrupção assim. Eu poderia pressionar F9
para ativá-lo mais uma vez, eu poderia clicar com o botão direito do mouse sobre isso
e desativar o ponto de interrupção. O que isso significa é que
manterá o ponto de interrupção aqui. No entanto, isso não
interromperá a execução do nosso jogo quando eu sobreponho a porta giratória
BP número dois, isso ou dirijo para casa neste ponto, eu posso clicar nisso e
sobrepor isso e você vê, é um incêndio, mas
não pausei meu jogo de jeito nenhum. Ele manteve esse
ponto de interrupção lá, mas não pausou o jogo. Agora, você pode estar se perguntando, por que eu não me livrei completamente
desse ponto de interrupção? Por que eu acabei de desativá-lo? Bem, às vezes você
quer ter uma lista de seus pontos de interrupção
que você
possa ver para não perdê-los. Se eu entrar, o
Debug está
aqui e eu trago meu depurador de
blueprint. Nesta janela
aqui, você pode ver que tem minha porta giratória. Aqui estão minhas
listas de pontos de interrupção. E você pode ver que eu tenho
esse ponto de interrupção
aqui , correspondendo com
aquele cara ali mesmo. Então, se eu clicar duas vezes
sobre isso, ele o destacará. Esse círculo vazio ali mostra que esse é um ponto de interrupção
desativado. Vou colocar
isso aqui embaixo. E se eu clicasse com o botão direito do mouse nesse nó e
habilitasse o ponto de interrupção, dê uma
olhada agora em nosso depurador
de
blueprint em pontos de interrupção, podemos ver agora que esse
é um ponto vermelho preenchido, que é um ponto de interrupção ativo. Portanto, quaisquer outros pontos de interrupção
que tenhamos aqui
, eles serão listados abaixo aqui. E mais uma vez, isso estava no
Debug blueprint debugger. Aí está minha
porta giratória e minha lista de
pontos de interrupção pode ser
ativada e desativada ali mesmo. Tudo bem, agora podemos
ver que temos
esses pontos de interrupção
configurados para quando
começarmos a sobrepor
esse componente da caixa para aquela porta giratória. Número dois, vamos ver o que acontece quando um
ponto de interrupção é atingido. Vou
clicar em Jogar aqui. Agora note que esta é a
porta giratória número um. Estou sobrepondo isso
e nada acontece. Vou
sobrepor a caixa da porta giratória número dois. Imediatamente o jogo para. Abrimos nosso gráfico de eventos para a porta giratória
número dois aqui. E podemos ver que
sobrepusemos essa caixa. No entanto, ainda não temos certeza do que se sobrepôs
exatamente. Assim, podemos continuar com
nosso script para avaliar melhor essa seta vermelha está mostrando o nó atual em que estamos. No momento, estamos
sobrepondo essa caixa. Se clicarmos aqui,
podemos passar para o próximo nó
em nossa cadeia de execução, o FTN. A tecla de atalho também
nos levará até lá. Portanto, observe essa dica de ferramenta. Então, ao sobrepor essa caixa, vamos verificar se foi o ThirdPersonCharacter
que nos sobrepôs. Agora, eu estava controlando
nossos pons de pressão, então esse elenco deveria falhar. Agora, porque ele falha. Não temos nada conectado ao nosso
painel
de campo do CAS aqui. Isso deve nos expulsar daqui, porque não
há mais nada com que
continuar. Nosso roteiro está essencialmente
morrendo aqui. Vamos seguir em frente e tentar
pular para o próximo nó. Como você pode ver, ele não
pulou para o nosso próximo nó. Na verdade, se eu abrir nossa janela de
jogo mais uma vez, deixe-me minimizar isso. Lá podemos ver que estamos de
volta jogando nosso jogo. Tudo bem, vamos
sair do nosso jogo aqui, voltar para o nosso motor. E agora vamos fazer com que,
nas configurações do nosso projeto, não
estejamos mais usando
a classe Pawn do lago BP,
mas,
em vez disso, estamos trazendo nosso ThirdPersonCharacter. E a razão pela qual
estamos fazendo isso é porque, em nosso script de porta
giratória, estamos verificando
aqui se foi o ThirdPersonCharacter
que se sobrepôs a nós. Observe que, em nosso nível, eu também limpei nossas configurações
mundiais. Então, vamos respeitar as configurações
do projeto, as configurações do projeto que
temos para nossa
estrutura, blueprints, BP Game Mode, BP
ThirdPersonCharacter, bp player controller. E agora, se eu fosse
jogar nosso jogo, vamos sobrepor o volume
do gatilho da porta número dois da
BP. Vai atingir
nosso ponto de interrupção aqui. Agora vamos falar sobre
essas várias opções
que temos no topo, pois
quando atingirmos um ponto de ruptura, esse cara aqui vai nos levar de
volta ao nosso jogo. É basicamente dizer, ei, estou feliz que você tenha parado o jogo. Muito obrigado,
mas gostaríamos continuar jogando. Deixe-me sobrepor isso. Mais uma vez. Isso vai parar o jogo
para nós mais uma vez. Em seguida, temos esse
avanço, um único quadro. Então eu vou nos levar para
o próximo nó. Se um deles não é nem um
pouco urgente. Em seguida, temos esse botão
Stop aqui, que fará a mesma
coisa que pressionar Escape. Basicamente, você está
saindo
do jogo e
voltando para o editor. Eu não vou
pressionar agora. Em seguida, vou pular
esse cara aqui. Temos isso para localizar os nós
atualmente ativos. Então, se estivéssemos em nosso
nó Cast to ThirdPersonCharacter como estamos agora, esse é o que estamos avaliando. Então decidimos navegar
em algum lugar aleatório como esse. Se clicarmos nesse botão, isso nos levará de volta ao
nosso nó atualmente ativo. Em seguida, temos essa
etapa no nó que tem uma tecla de atalho F11
associada a isso. Vou
mostrar isso em nosso próximo exemplo. Esse não é um bom
exemplo aqui. Em seguida, vamos passar
para o próximo nó, F ten. Nós faremos isso também. Vou pressionar F2 para fazer isso. E uma coisa a observar aqui, medida que você avança,
você pode avaliar os
vários bits de dados que estão sendo
transmitidos
passando você pode avaliar os
vários bits de dados que estão sendo o mouse
sobre esses pinos de dados. Então, por exemplo, I. Posso ver se a chave
aqui é avaliada como falsa. Então, eu sei que nosso roteiro basicamente
terminará aqui, porque só
faremos algo
fora do ramo verdadeiro. Não vamos fazer
nada com o galho falso. Agora, nesta etapa do botão, também
exploraremos isso em
nosso próximo exemplo, porque essa é uma boa
configuração para mostrar isso. No entanto, outra coisa que
eu quero anotar. Enquanto estamos aqui,
você pode visualizar o pulso laranja da
execução até esse ponto, o que é muito útil quando
você está avaliando um script. E, mais uma vez,
não se trata apenas de ver quais nós estão sendo
parados e executados, mas também de avaliar os
dados, serem transmitidos, passar o mouse sobre esses vários
pinos e ver se que os dados que estão sendo transmitidos
é o que você espera que sejam. Tudo bem, agora vamos parar
com esse exemplo. seguida, vamos entrar em nosso
ThirdPersonCharacter, clicando em parar aqui
para mostrar outro exemplo. Agora, a razão pela qual estamos indo até aqui
é porque temos algumas funções criadas por clientes que criamos no
início do curso. Podemos entrar e sair do que não poderíamos fazer
em nosso último exemplo. Então, vamos prosseguir e introduzir
nossa função de modificação de saúde. Trocamos isso em nossa seção de
funções do curso e organizaremos um evento de teclado. Vamos clicar com o botão direito no teclado. Vamos fazer alguma coisa quando
pressionamos a tecla de seta. Então, quando pressionamos o zero, saúde do modificador de
Kayla, digamos, por 0,1. Vamos arrastar uma
corda de impressão de medo, arrastada para trás. Vamos acrescentar. E vamos acrescentar
a palavra saúde, espaço duplo do
cólon à
nossa saúde atual. Isso trará um nó
de conversão que vai de float para uma string como essa. E então deixe-me adicionar um ponto de interrupção ao nosso nó de evento aqui,
você tem que pressionar F9. Agora, se você ver um ponto de interrupção com um ponto de
exclamação dentro dele. Isso pode significar que esse
é um ponto de interrupção inválido. Não sei por que esse
está aparecendo como tal. No entanto, se você estiver se
perguntando se esse é ou não um ponto de interrupção válido, você pode ir em frente
e compilar aqui. Eu sei que um vai
ser bom e é. Então, vamos
tentar este jogo de cliques. Você pode ter certeza de
que tem seu ThirdPersonCharacter como opção de depuração para ver esse script sendo executado
em tempo real, se quiser. Vamos abrir nossa
janela de jogo mais uma vez. E quando eu pressiono a tecla de seta, estamos interrompendo nossa execução. Nós podemos passar por cima. E agora essa é uma
função na qual temos algumas funcionalidades
configuradas. Então, se eu clicar neste
botão aqui, tecla de atalho F11, podemos
entrar nesse nó. E agora podemos percorrer os nós da própria
função. Podemos ver que temos a guia Modificar
função de saúde aberta
na parte superior agora e agora podemos passar por ela uma de cada vez. Podemos ver se isso é
verdadeiro ou falso? Vamos dar uma olhada mais uma vez. E agora, como
entramos nesse nó, posso sair dessas notas. Deixe-me sair
dessa função. Você pode ver agora que
continuamos em nosso
próximo nó na cadeia, que é nossa sequência de impressão. Então, com os botões de entrar
e sair, você pode entrar em algo
como uma função personalizada, ver cada etapa dessa função
e sair
dela, se quiser. Agora, apenas
algumas notas. A opção Step Into, se for
uma função ou macro personalizada, ela se aprofundará nela. No entanto, se não for uma função ou
macro personalizada, ela simplesmente
passará para o próximo nó. Quanto à saída, se você entrar em um nó, ele sairá para o
próximo nó da cadeia,
neste caso, para o nosso nó de cadeia de
impressão. No entanto, se
não há nada para sair dos dois, não
há outros nós
em sua cadeia. Ele simplesmente retomará o jogo. Agora, LastNode, também podemos ativar nossa opção de
depurador de esquema de depuração. A partir daqui, estamos
trazendo essa janela. Mais uma vez, eu gostaria de
encaixá-lo na parte inferior da perna. Então eu percebo que ainda estou
jogando o jogo aqui. Aqui estão meus pontos de interrupção. Você pode ver
que eu poderia clicar nele para ir direto para ele. No entanto, se você notou quando eu cliquei nessa opção de
depuração aqui em cima, temos a capacidade aqui de
desativar todos os pontos de interrupção e
excluir todos os pontos de interrupção. Se você tiver muitos
pontos de interrupção configurados
em todo o gráfico, é uma maneira muito útil de
eliminá-los todos. E, novamente, você pode
adicionar pontos de interrupção e não apenas em
nós de eventos como esse, você também pode configurá-los em
uma função. Nesta função também. Então, se você configurar todos os
três e ficar tipo, Ei, eu só quero me
livrar de todos esses. Vá em frente e
exclua todos os pontos de interrupção
e, de repente, todos eles desaparecerão. E aí está. Esse é o resumo
dos pontos de interrupção. Os pontos de interrupção são uma pausa
ou parada
intencional que você cria em um script para que você
possa
avaliar seus scripts de forma mais detalhada,
passo a passo. Gente,
isso é o suficiente para esse vídeo, nos vemos no próximo.
106. Valores do relógio: Tudo bem, bem-vindo de volta. Neste vídeo, nosso objetivo é
aprender como podemos
monitorar mais facilmente os valores dos dados ao
depurar um script. Agora, isso pode ser feito
por meio da designação de
variáveis para observar dentro de um projeto, com um meio fácil de ver e avaliar os valores dos dados dentro de nossos projetos, podemos ver rapidamente se
os dados que fluem pelos scripts
R são os esperados ou não. Agora, neste exemplo, vou trabalhar um pouco dentro
da minha porta giratória BP, bem
como do meu ThirdPersonCharacter
aqui. Então, primeiro, para observar
as variáveis com mais cuidado, vamos usar
nosso depurador de blueprint. Agora eu mostrei como fazer
isso no último vídeo, mas se você esqueceu ou
pulou aquele vídeo dentro de qualquer Blueprint, a
porta giratória da BP funcionará bem. Podemos clicar em Depurar, depurador de
blueprint,
e isso abrirá nossa janela de
depurador de blueprint. Eu gostaria de ter isso em um
segundo monitor, se eu tiver, mas como eu não tenho, se você
tiver um único monitor, eu só gosto de registrar
aqui. Agora, observe que, dentro do nosso
depurador de blueprint, podemos especificar qual esquema
gostaríamos de depurar. Então, mesmo que estejamos dentro
de nossa porta giratória bp, eu poderia definir esse como meu ThirdPersonCharacter
para depurar, se eu quisesse. No entanto, se você fez isso e
atingiu um ponto de interrupção, como nossa chave zero dentro do
nosso ThirdPersonCharacter. Isso o levaria
desse gráfico para o gráfico
ThirdPersonCharacter. Eu não vou
demonstrar isso para você aqui, mas apenas para sua informação. Tudo bem, eu tenho
isso configurado para minhas portas
giratórias BP e
tenho um conjunto de pontos de interrupção. Então, agora vou configurar
algumas variáveis para observar. Eu vou ver isso tem uma
variável-chave aqui. E a maneira de fazer isso é
clicando com o botão direito do mouse e escolhendo
observar esse valor do barril. Agora, quando eu fizer isso, você verá
um pequeno
ícone de lupa aparecer aqui. Mas você também
verá essa janela aqui em
cima que resultará
em verdadeira ou falsa sempre que essas informações solicitadas pelo nosso nó de ramificação. Sempre que isso for executado, descobriremos se isso é verdadeiro ou falso e o
imprimiremos diretamente nessa bolha. Também vou
configurar um valor de relógio em nosso nó rotador
aqui, o valor de retorno, para que eu possa ver onde estamos
nessa rotação indo de 0 a
90 graus no Ya, vou clicar com o
botão direito sobre isso. Vamos observar esse
valor. Simples o suficiente. Se eu quiser remover
algum desses relógios, você pode simplesmente
clicar com o botão direito nele. Pare de observar esse valor. Ou se você quiser parar de assistir a
todos os seus relógios,
você pode entrar em, depurar e excluir todos os relógios que também podem se livrar
deles. Agora, antes de mostrar este exemplo, eu queria
observar que dentro do meu ThirdPersonCharacter aqui, thirdPersonCharacter,
eu defini essa chave como booleana como true. Então, se você
ainda não fez isso e quer jogar
em casa dentro da BP. Caractere de terceira pessoa,
B tem chave booleana. Eu defini isso como verdadeiro,
eu compilei e salvei. E aqui estou observando
essa variável. Essa variável está dentro
do meu ThirdPersonCharacter, mas eu posso vê-la
daqui. Tudo bem, então vamos
jogar nosso jogo. E vou sobrepor
esse componente da caixa à nossa porta
giratória número dois, que é essa porta bem no nosso nível que é a porta
giratória número um. No entanto, estamos avaliando a porta
giratória número dois. Então, vamos lá, clicando em play,
sobrepondo esta porta. Tudo bem, atingimos
esse ponto de interrupção. Agora, no último vídeo,
mostrei que você poderia resolver as coisas
clicando aqui, F ten funcionará muito bem. Também posso avançar
um quadro por vez. Então, isso também
me impediria nesse caso , porque esse
não é um nó sensível ao tempo. No entanto, observe que no
seu depurador de blueprint, você tem esses mesmos controles. Então, vamos
mostrar isso porque podemos,
vocês podem ver lá embaixo, batemos em nossa porta giratória. Número dois, o
ponto de interrupção foi atingido. seta amarela ali
indica que vou
expandir isso
pressionando esse pequeno triângulo
suspenso. Agora mesmo. Podemos ver que temos relógios
configurados aqui, pois eles têm chave e também o valor de retorno
nesse nó de loop ali mesmo. Isso indica que
temos algumas configurações de relógios. Observe que, no momento, essa bolha
ainda
não diz nada porque suas informações
ainda não foram solicitadas. Vou avançar para
o próximo nó
clicando aqui. Esse fluxo de execução. Vamos avançar
sobre mais um. Agora, como atingimos
esse nó de ramificação, essas informações para a
condição foram solicitadas. Portanto, podemos ver que estamos
observando esse valor e agora ele está mostrando com destaque
que está sendo avaliado como verdadeiro. Agora eu poderia simplesmente passar o mouse sobre esse alfinete sem o relógio e descobrir que essa informação também é
verdadeira. No entanto, ao
configurar relógios como esse, isso se torna muito óbvio. É uma forma de
ver com mais facilidade quais dados estão sendo
transmitidos imediatamente. Agora, se eu quisesse
desativar esse relógio, eu poderia, enquanto ele está rodando aqui, estamos
depurando isso. Eu poderia clicar nesse
pequeno ícone de
lupa e desligá-lo. E eu posso clicar com o botão direito do mouse
e ligá-lo novamente, tchau. escolha do valor do relógio aparece mais uma vez aqui. Além disso, se eu tivesse navegado para algum lugar muito além desse jeito, se eu clicasse
naquele relógio aqui embaixo, isso me levaria de
volta para ele. Então, isso é muito útil. Vamos continuar
passando por isso, porque
podemos ver que ainda não
atingimos nossa segunda
vigia aqui. Então, pressionando. Tudo bem, então agora estamos atingindo
um nó sensível ao tempo, essa linha do tempo, isso tem 1 s de comprimento. Então, se sempre suprimir
aqui ou se for dez, isso vai me levar para
o próximo nó imediatamente. No entanto, eu também poderia avançar
um único quadro por vez. Então, ao fazer isso,
vou clicar com o botão esquerdo. Você pode ver que agora passamos de 0,01 s porque estamos apenas avançando
um quadro por vez. Podemos ver que estamos observando
esse valor de retorno aqui. E à medida que aumentamos
esse quadro de cada vez, um quadro por vez é observado. Seu valor está
aumentando pouco a pouco. Então, podemos ver
como isso está
se abrindo ao longo de 1 s. Agora podemos clicar em continuar
aqui para ver o
resultado final se desenrolar, que se desenrolou no
restante. Uma linha do tempo,
essa é uma linha do tempo. Então, podemos ver esse valor. O Sim, nossa porta se
abriu 90 graus. Talvez fosse isso que
você esperava. Talvez não, mas esses relógios
ajudam a identificar se isso está realmente gerando
o valor de retorno que você está esperando. Portanto, há uma visão geral rápida e simples do que são
relógios e como eles podem ser configurados e utilizados ao
depurar seu script. Mais uma vez, se eu parar aqui e remover esses relógios, pare de assistir. Pare de assistir. Você ainda pode ver
o valor
de saída desses pinos de dados
atingindo esse ponto de interrupção. Deixe-me sobrepor
isso mais uma vez. Avance, avance passando o
mouse sobre ele assim. No entanto, ao configurar relógios, isso os torna
um pouco mais proeminentes e fáceis de ver. Deixe-me avançar
até o fim. Mais uma vez, podemos ver que vocês estão vermelhos,
estão sendo emitidos 90. Mas esses relógios, novamente,
os tornam mais proeminentes
e fáceis de ver. Pessoal, o que
faremos para
oferecer esse vídeo, nos vemos no próximo.
107. Log de mensagem: Tudo bem, bem vindos de
volta a todos. Neste vídeo, nosso objetivo
é mostrar o papel
do registro de mensagens na
depuração de seus scripts. Embora essa seja uma janela
que pode relatar todos os tipos de informações relacionadas
aos seus projetos, como resultados de iluminação
ao construir seu nível. Aqui, vamos apenas
explorar sua utilidade para garantir que
nossos scripts funcionem conforme o esperado em tempo de execução. Então, eu tenho um exemplo
para mostrar em nosso personagem de terceira pessoa. Então, por que você não entra pasta Terceira Pessoa no
Blueprints, encontre seu ThirdPersonCharacter. Aliás, uma
dica divertida para você aqui. Se você pressionar a tecla Control
e usar a roda de rolagem, poderá aumentar ou diminuir essas
imagens em miniatura. Vamos clicar duas vezes
nele, onde já tenho alguns scripts
configurados antes deste vídeo. O que vamos fazer
é apertar
uma tecla. E então, apenas uma vez aqui, eu vou aparecer
no efeito fogo. E então eu vou
promover isso para uma variável. Então, eu não fiz isso ainda, então eu só queria me exibir. Podemos fazer isso novamente
clicando com o botão direito do mouse neste pino. Vamos promover
isso para uma variável. era um ator de spawn da
classe Node. Então, se você está procurando
o nome desse nó, é o ator de geração da classe. Isso o mudará para o efeito
Blueprint fire. Depois de inserir esse efeito de esquema, o esquema
de
fogo do conteúdo inicial
promove a variável. Vamos simplesmente chamar isso de fogo. Tem o nome
dele ali embaixo e podemos ver que é
do tipo Blueprints effect fire. E o que
vamos fazer aqui embaixo é que, quando
pressionarmos as duas teclas, destruiremos esse fogo que geramos quando
pressionamos uma tecla. Então, posso arrastar isso para a
direita sobre o alvo da nossa função
Destroy Actor. Isso o conectará
automaticamente assim. Vamos fazer com que
nosso registro de mensagens apareça em outra coisa que
vou fazer
imediatamente é que depois de
destruirmos nosso ator, eu vou redefinir nosso desejo
de nevar. E isso só vai
fazer com que eu possa pressionar uma tecla mais uma vez para gerar outra
planta, efetuar fogo. Então é isso que está acontecendo aqui. Vamos pressionar uma tecla e, em seguida, vamos apenas vez gerar aquele efeito de
fogo de planta no local,
a transformação mundial,
devo dizer, da nossa mão simulada, ou
seja, esta
componente aqui mesmo. Isso só vai gerar isso nesse
ponto do mundo, onde quer que estejamos naquele momento, estamos economizando em uma variável. E então, quando pressionarmos as duas
teclas, destruiremos isso. Agora, vou
compilar aqui e salvar. E vamos seguir em frente e executar isso. Defina meu objeto de depuração aqui como
meu ThirdPersonCharacter. Tudo bem, então esses são os testes que vamos
executar o equipamento. Então, primeiro vou pressionar um para criar fogo aqui, e você verá a taxa de
disparo do script acima.
Então, aqui vamos nós. A única chave é
esse efeito do fogo. Agora vou apertar dois. Isso vai
destruir o fogo que criamos e colocamos dentro
dessa variável aqui. Então, aqui vamos nós, As duas
chaves, agora desapareceram. Também reiniciamos
esse tipo de ação, uma vez conhecido. Agora vou pressionar
as duas teclas novamente. Então, vou tentar
destruir esse fogo. Agora eu pressionei e você
pode ver que está sendo executado. Mas agora, quando eu sair daqui,
fujo , veja o que acontece. Somos apresentados
ao registro de mensagens. Na verdade, temos
vários erros. Agora, a razão pela qual
tenho vários erros é porque está
gritando comigo que tentei destruir esse
fogo que não existia. Agora, o que estava acontecendo aqui foi
a primeira vez que eu
pressionei uma tecla, nós repovoamos essa variável, essa variável de
fogo de efeito de projeto. Com esse efeito de
planta gerado, atire. Depois de preenchida, comprimimos
as duas chaves e depois a destruímos. Agora, quando
pressiono as duas teclas novamente, ainda não
tínhamos redefinido o conteúdo dessa
variável para ser algo. Então, essa era uma variável vazia. Essa é uma mensagem muito comum que é enviada para você
no registro de mensagens. Agora, o registro de mensagens pode revelar todos os tipos de erros diferentes que ocorrem com seu script. Mas isso é muito comum
quando
você grita que o conteúdo de alguma
variável não pode ser encontrado. Vou arrastar e soltar
isso na parte superior aqui. Vamos dar uma olhada mais de perto
em nossa mensagem de erro aqui. Agora você pode ver que essas mensagens de
erro aparecem
na seção play in editor
do nosso registro de mensagens. E isso se repete mais uma vez várias vezes porque
eu estava pressionando as duas teclas várias
vezes para tentar destruir o fogo
que não existia. Agora, o que é útil sobre esse registro de
mensagens é que ele tem alguns hiperlinks nos quais você
pode clicar para
levá-lo ao local, o ar. Agora, se você clicar em
Event Graph aqui, eu vou apenas clicar em Event Graph. Isso nos levará ao gráfico de eventos
apropriado. Se clicarmos onde
diz execute Uber BP, ThirdPersonCharacter, ele também nos clicará
no Event Graph. E se você clicar em BP
ThirdPersonCharacter, ele também o levará até
o Event Graph. No entanto, se você clicar onde está escrito Destroy
Actor aqui, isso indicará exatamente onde
o problema ocorreu. Esse nó Destroy Actor estava tentando encontrar um alvo válido. No entanto, esse
registro de mensagens está dizendo que esse era um alvo inválido. O alvo não era válido. E isso foi mais uma vez, porque na primeira vez que
criamos nosso fogo,
pudemos destruí-lo. Mas quanto mais pressionamos duas teclas, você não pode destruir algum
fogo que não existe, que não tenha sido colocado dentro dessa variável
de fogo. Então, como podemos corrigir um
cenário como esse? Bem, você pode verificar se o conteúdo de uma
variável é válido. E a maneira de fazer isso é
selecionando nossa
variável de fogo aqui, aquele fogo de
efeito de planta que está sendo povoado aqui, que está sendo
instalado aqui mesmo. Podemos clicar com o botão direito do mouse
sobre isso e convertê-lo em um ainda validado. Agora, observe que, uma vez que façamos
isso, ele mudará esse nó
de um
nó com aparência de pílula para um nó que
exige que nos conectemos,
em execução, a ele. Então, agora podemos ter
um script como esse. Se pressionarmos as duas teclas
, primeiro vamos fazer uma verificação. Se isso for válido, o que significa que há algo definido dentro dessa variável, continuaremos e destruiremos tudo o que não foi
definido dentro dela. No entanto, se pressionarmos as duas
teclas e isso não for válido, o que significa que não há nada
dentro dessa variável. Nós podemos fazer outra coisa. Nesse caso, vou apenas
arrastar e imprimir a corda. E vou apenas dizer
demitido, não é válido. Assim. Então, agora, se eu compilar e salvar, e jogarmos mais uma vez, antes mesmo de pressionar uma tecla. Vamos
pressionar as duas teclas e olhar para cá no
canto superior esquerdo da minha janela. Vai dizer que o fogo não é válido e posso
continuar enviando spam para ele. Agora, ainda não é válido
porque não
definimos o conteúdo
dessa variável fire. Não foi
preenchido com nada. Agora, se eu pressionar uma tecla, agora
definimos o conteúdo
dessa variável de fogo. Então, agora, quando eu pressiono a tecla
Tab, ela será válida. Então, olhe direto para aqui. Ele disparou,
isso é válido. Isso destruiu o ator, e estamos todos bem. Agora, essa
janela de registro de mensagens aparecerá automaticamente. Se detectar
um erro como esse, ela a abrirá para você. No entanto, se você
quiser ter essa guia de registro de mensagens
aberta o tempo todo, deixe-me fechá-la para
que eu possa ativá-la novamente. Você pode simplesmente entrar por
baixo de uma janela. E então, aqui
embaixo da categoria de registro, você pode optar por fazer com
que essa mensagem faça login. Tudo bem pessoal, isso
vai funcionar para este vídeo na janela de registro de
mensagens. Nos vemos na próxima.
108. Pesquisa: Tudo bem, então, se você assistiu todos os vídeos até este
ponto do curso, está
se tornando bastante eficiente com scripts de
diagramas. Agora, vamos levar seu
plano de script para o próximo nível aprendendo
alguns truques de produtividade. Neste vídeo, nosso objetivo é
explorar vários métodos de busca de coisas enquanto
trabalhamos com plantas. Nós mesmos vamos pesquisar um
plano de ácidos descobrir onde eles residem
aqui em nosso navegador de conteúdo, bem
como pesquisar
coisas que possam existir dentro de um plano, como
variáveis, funções, etc. Agora você quer ser
bom nisso simplesmente por motivos de eficiência no trabalho. Quanto mais rápido você puder localizar ativos, funções,
variáveis etc. mais rápido você poderá
garantir que
negociou planos de
qualidade sem erros. Agora, para demonstrar alguns
desses conceitos,
vamos explorar aqui. Eu vou fazer
isso dentro do meu ThirdPersonCharacter. Você pode fazer isso de dentro de qualquer projeto, embora
esteja perfeitamente bem. Então, clicando duas vezes no meu personagem em
terceira pessoa, a primeira coisa que aprenderemos
a fazer é navegar até esse recurso de projeto. Muitas vezes, quando estou
trabalhando com estudantes, eles têm um plano aberto, mas não têm ideia de onde esse plano está
no navegador de conteúdo. Eles podem estar desativados em
alguma pasta aleatória. E se eu pedir que localizem seu ThirdPersonCharacter
Blueprint, eles não têm ideia de onde ele está. Bem, há algumas maneiras
de encontrá-lo. Caminho. O número um é que você
tem alguns filtros. Você está no seu navegador de conteúdo. Você pode clicar em uma
pasta de sua escolha. E você pode escolher a pasta de
conteúdo porque ela contém todas
as outras pastas. E clique em Filtros, classe
Blueprint,
e você já está disposto a diminuir as coisas poderosamente. Deixe-me manter pressionada a tecla Control
e rolar a roda para baixo. E imediatamente podemos ver nosso ThirdPersonCharacter
está lá. Para desativar um filtro. Você pode simplesmente clicar nele. Isso é com ele desligado,
isso é com ele ligado. Tudo bem, então essa é uma forma
de localizar ativos rapidamente é filtrá-los em
seu navegador de conteúdo. Mas eu quero falar agora sobre
como encontrar esse ativo se você estiver dentro desse
ThirdPersonCharacter em si. Bem, você tem
algumas maneiras. número um está na parte superior do seu editor de
Blueprint aqui, você tem esse
botão Procurar aqui. Se você clicar
nele, você será direcionado diretamente
para onde esse recurso reside no seu
navegador de conteúdo, o que é muito útil. Além disso, se você estiver dentro daqui e
fizer apenas Control mais b, você também o levará
direto para ele. Então Control plus b, era que hóquei, Tudo bem, Próximo, dentro de um plano, você deveria ter uma guia
Localizar Resultados aberta por padrão em
seu editor de Blueprint. É esse cara
aqui embaixo. Agora, isso é incrível porque você pode encontrar
marcadores aqui embaixo. Você pode encontrar coisas
como funções, eventos, variáveis, todos os tipos
de coisas simplesmente pesquisando
aqui embaixo. Agora, novamente, isso deve
estar ativado por padrão, mas na verdade existem quatro
maneiras de acessar esse painel. Novamente, a primeira maneira é que ele
deve estar ativado por padrão, mas vamos supor que esteja desativado. Você também pode ativar isso
na barra de ferramentas clicando no botão
Localizar aqui. Eles abrirão essa guia. Deixe-me clicar novamente, também
podemos
acessá-lo acessando
a opção de janela aqui. E você também
pode ativar seu
painel de resultados finais. Além disso, se você tiver isso desligado, você pode trazer esse braço
usando o Controle F, ou
seja, o
controle da tecla de atalho mais F abrirá a janela de
resultados da busca. Agora, esta é nossa ferramenta de
pesquisa
no editor Blueprint
que nos permite rastrear
rapidamente uma variedade
de coisas, como um nome de nó,
um pseudônimo, um comentário de nó, um nome de propriedade,
um valor da propriedade. Então, vamos demonstrar isso. Shelly. Vou apenas fazer uma
pesquisa para modificar a saúde, modificar a saúde e pressionar Enter aqui e podemos ver todos os nossos diferentes resultados
correspondentes a modificar saúde. Então, eu só preciso
clicar duas vezes em uma dessas opções aqui
para ver o que encontramos. Há uma
função modificadora de saúde colocada lá no gráfico. Este é um modificador de
função de saúde colocado lá. E isso até nos levará
à função, neste caso que criamos, chamada modificar saúde, clicando duas vezes aqui, Essa é minha função de ajuda Modificar. E mais uma vez, tivemos
uma
função modificadora de ajuda pura que pudemos localizar
clicando ali também. Vamos testar mais alguns resultados
de pesquisa. Vamos esclarecer isso. Vou digitar a palavra spawn e ver todos
esses resultados de pesquisa. Agora vale a pena notar que, se você passar o mouse sobre
esses ícones diferentes, ele vai te dizer a que
eles estão associados. Então isso é um pino de execução. Clique duas vezes sobre
isso, veja isso. Está falando sobre esses pinos de
execução de spawn aqui.
Eu posso passar o mouse sobre isso. Esta é uma transformação de spawn, struct, clique duas vezes
nessa transformação de spawn. Então, é encontrar a palavra spawn, e eu posso ver que é um
pseudônimo ali. O que mais temos aqui? Temos um
som de spawn associado. Eu posso clicar duas vezes sobre isso, que é um
nó de função ali mesmo. E isso nos permite saber
que é um nó. O sofisticado F é igual a uma função. Aí está. Muitas multas aqui
em nossos resultados de descoberta. Opção, tudo bem, vamos tentar digitar algo
como variável. Pressionando Enter. E observe que
eu tenho os resultados de um comentário. Então, se eu clicar duas vezes
nesse comentário, sim, de fato, posso até encontrar comentários que tenham essa palavra dentro dele. Nesse caso, está encontrando aquela palavra variável
logo ali em cima. Vamos experimentar a palavra
direcionado porque muitos nós contêm a palavra
alvo. Como você pode ver, muitos nós de função têm
essa palavra alvo. Aquele está procurando por
um objeto de personagem, que estava
procurando objetos de peão. Mais uma vez, você pode obter
muitas informações passando o mouse sobre os diferentes resultados da
pesquisa e clicando duas vezes no
item para ir até ele. Vamos também tentar encontrar o valor
de uma propriedade. Vou digitar a palavra quinhentos porque acho que
tenho isso aqui
em algum lugar? 500? Sim. Eu disse a velocidade máxima de
caminhada padrão ou a velocidade
máxima de caminhada para
um valor padrão de 500 no início do curso. Portanto, ele pode até mesmo encontrar o valor
da propriedade. Então, deixe-me
clicar duas vezes sobre isso. Isso vai me mostrar
exatamente onde está. Então, isso também pode ser útil. Se você é como eu coloquei esse
valor 500 em algum lugar. Onde estava isso de novo? Agora está tudo muito bem. Ser capaz de
pesquisar coisas de forma rápida e eficiente dentro de um plano
é, na verdade, uma habilidade fundamental. No entanto, é mais poderoso
encontrar uma janela de resultados aqui, podendo pesquisar em todos
os seus projetos. E sim, você pode fazer isso. A maneira de fazer isso
é clicar neste botão com
o ícone
do binóculo aqui, encontrado em todas as plantas. Agora, isso se torna especialmente
importante quando você está se comunicando de
um projeto para outro. Talvez você tenha uma variável de saúde como fazemos dentro de nosso personagem de
terceira pessoa aqui, que é referenciada em outros projetos,
como nosso exemplo de coleta, aquela captação de saúde que
criamos anteriormente em o curso. Então, para descobrir onde essa variável de saúde pode existir
em todo o seu projeto, você pode simplesmente fazer uma
busca por saúde. Ele entra. Agora é aqui que isso é referenciado
neste projeto. Mas se eu clicar nesse
botão aqui, ele descobrirá onde
a palavra saúde é referenciada em qualquer um
de nossos projetos. Então, nós o mencionamos
aqui em nosso WPP HUD. Aqui está nosso exemplo de coleta
ou coleta de crianças, etc. Só precisamos clicar duas vezes
em qualquer um deles para entrar diretamente nesse projeto
específico. Deixe-me
clicar duas vezes sobre isso. Obtenha saúde dentro
de nosso
coletor de exemplo de bp , que o abrirá do outro lado da parte superior. Podemos ver onde essa
variável de saúde de dentro do nosso ThirdPersonCharacter
está sendo obtida e, em seguida,
também configurada. Truque super útil. Tudo bem pessoal, isso vai fazer
tudo para pesquisar aqui nos projetos
do Unreal Engine. Nos vemos
no próximo vídeo.
109. Marcadores de livro: Receber e
navegar pelos projetos rápida e eficiente é uma habilidade essencial para
tirar o máximo proveito do trabalho no Unreal
e nos favoritos. Os marcadores do Blueprint são
uma das coisas que você pode utilizar para ajudá-lo a
se tornar mais eficiente. Neste vídeo,
aprenderemos como definir alguns marcadores de diagramas, como localizar esses marcadores
e, em seguida, demonstrar por que isso é útil. Então, o que é um marcador? Você pode pensar em um marcador de
planta como uma forma de identificar
uma seção de um gráfico. Pode estar no gráfico
do evento ou no roteiro de construção para o qual
você gostaria de
navegar rapidamente. Agora, isso é como colocar um alfinete ou um
marcador de waypoint em um mapa. E então, simplesmente selecionando
esse marcador em uma lista, você pode pular diretamente
para esse ponto no seu mapa ou, nesse
caso, no seu gráfico. Portanto, antes do
início deste vídeo, criei um marcador
chamado Visão geral
dentro do meu BP
ThirdPersonCharacter. E só para mostrar
rapidamente como isso funciona, se eu clicar duas vezes
no meu marcador, ele me levará
exatamente para onde coloquei esse marcador dentro deste BP, um ThirdPersonCharacter
Blueprint. Agora, deixe-me sair da minha guia de favoritos aqui e criar um marcador do
zero para que você
possa acompanhar esse processo. Tudo bem, então dentro
de qualquer planta, você pode criar um marcador de
planta
entrando aqui. Tudo bem? Agora vou ampliar até um determinado conjunto de nós
aqui que Ei, talvez eu queira criar
um marcador ali mesmo. Tudo bem, então talvez
eu esteja trabalhando em algum roteiro e eu seja
chamado e fique tipo, Quer saber? Não quero esquecer
esses nós aqui. Deixe-me
definir um marcador. Então você vem direto para cá. Vamos criar um marcador e eu
vou
chamá-lo meu marcador de saúde. Clique em Adicionar aqui. Agora, ele
vai se lembrar desse nível de zoom e desse posicionamento em
nosso gráfico aqui. Agora eu simplesmente preciso acessar meu marcador
para voltar a isso. Se por acaso eu
fugir disso, assim. Agora, sempre que eu
abro essa guia Favoritos que se
encontra no menu
do Windows, aqui em cima, marcadores. E aqui você pode
ver seu marcador nomeado. Então, se eu clicar duas vezes na saúde, isso me levará para
esse conjunto de nós, o mesmo nível de zoom. Agora você notará também
nesta janela de favoritos que podemos ver que temos
alguns nós comuns. Sempre que você criar
um nó de comentário. E eu estou falando sobre essas caixas comuns, como essa malha estática
conectada
ao soquete manual. Eles aparecerão
aqui embaixo
na seção de nós de comentários
da sua janela de favoritos. Então, sempre que você estiver criando uma caixa de comentários, e mais uma vez, você pode criar uma caixa de comentários
destacando uma
série de nós como esse e, em seguida, tocando na tecla C e criando
algum comentário. aqui mesmo. Você pode ver que,
assim que toco no CQI, ele adicionou esse comentário aqui embaixo da seção do nó de
comentários. Vou chamar isso de minha criação de HUD. Portanto, sempre que você cria
uma caixa de comentários como essa, tudo o que você precisa fazer
e, como você pode ver, ela
não atualizou isso. Se você compilar o mouse, ele atualizará isso. Então, se você clicar duas vezes nesse nó de
comentário ali
mesmo, você também será direcionado para ele. Então, por padrão, ao criar
também nós de comentários, essas caixas de comentários, você está criando uma espécie de marcador. Agora, uma última nota aqui, você também pode criá-los dentro de um
roteiro de construção. No lado direito, ele mostrará onde esse
marcador está definido. Temos tudo isso definido
em nosso gráfico de eventos. Mas se
os tivéssemos criado dentro do nosso roteiro de
construção, isso nos permitiria saber
que estão dentro do nosso roteiro de construção
aqui também. Tudo bem pessoal,
isso serve para oferecer marcadores aqui, veremos todos vocês
no próximo vídeo.
110. Painel de paleta / favoritos: Bem-vindos de volta a todos Neste vídeo,
mostraremos onde acessar o
painel de paladar em uma planta como adicionar nós
à parte favorita
desse painel. Então, como você pode ver
no lado direito, eu tenho o painel da paleta aberto. Estou dentro do meu
ThirdPersonacter Blueprint. No entanto, você pode adicionar esse
painel a qualquer Blueprint. Eu também tenho meu modo de
jogo em terceira pessoa aberto aqui. E você pode ver que eu o tenho
aberto lá também. Como acessar esse painel? Está logo abaixo do menu
Janela aqui. É assim que você pode ativá-lo. Então, se algum dia disparar,
você pode simplesmente
ativá-lo novamente clicando em Janela e abrindo
seu painel de paleta. Esse painel mostra uma lista não
contextual de todas as várias funções e eventos que podem ser usados
em seu projeto. E esse painel
consiste em duas seções. Começando pelo topo,
temos nossa seção favorita. Agora, isso é um
pouco enganador porque se passarmos
o mouse sobre a palavra favoritos, ela diz que esta é uma lista dos seus nós favoritos e
mais usados. Agora você pode definir
os nós como seus favoritos, e eu vou te mostrar como
fazer isso daqui a pouco. No entanto, ele detectará quais nós você está
usando mais. E isso é muito útil
porque, em vez de pesquisar esses nós
no menu do botão direito do mouse, você pode simplesmente pesquisar aqui na sua seção
favorita. E se você estiver usando
algo como obter todos os atores da
classe normalmente, basta
arrastá-lo e
soltá-lo em seu gráfico dessa forma. Agora, essa lista de
seus favoritos é compartilhada por todos os projetos. Então, se eu fosse acessar
meu plano de modo de
jogo em terceira pessoa da BP. E você pode ver que eu tenho meu painel de
paleta aberto aqui. Você pode ver que eu tenho a mesma
lista de nós favoritos. Agora, uma coisa
um pouco
chata é que você não pode reordenar seus favoritos arrastando-os e soltando-os. Isso seria uma boa
funcionalidade, mas, infelizmente, isso ainda
não existe. Abaixo, temos nossa seção
Encontre um nó que permitirá
filtrar por classe, você encontrará um determinado
evento ou nó de função. Agora você pode clicar
aqui
para reduzir qual aula
você deseja procurar. Ou com esse conjunto
para a classe all, você pode clicar em qualquer um
desses triângulos suspensos
para ver o que está disponível, exemplo, se eu entrar na
seção de caracteres aqui, você pode encontrar nós como se
agachar e pular, por exemplo, agora como adicionar nós à sua seção de Favoritos
aqui em cima. Há algumas maneiras
de fazer
isso no menu do botão direito do mouse. Se você clicar com o botão direito do mouse
e pesquisar um determinado nó, eu digitarei a
string de impressão logo ali. Ao passar o mouse sobre
esses diferentes nós, você vê esse pequeno
triângulo estelar à esquerda. É assim que você pode adicionar algo
aos favoritos. Portanto, observe que, quando
eu clicar
nisso, ele mostrará
uma estrela preenchida. E isso agora vai mostrar isso na minha
seção favorita ali em cima. Corda de impressão. Vamos imprimir texto também. Você vê que isso também aparece. Se você quiser tirá-los, basta clicar
aqui para tirá-los. Ou você pode me deixar
clicar novamente neles. Você pode clicar com o botão direito do mouse sobre eles aqui na sua seção favorita e escolher removê-los
dos seus favoritos. Você também pode optar
por adicionar notas aos seus favoritos acessando a
seção do nó de busca. E, assim como poderíamos fazer
com o menu do botão direito marcando-os com estrela aqui embaixo, ao passar o mouse sobre uma determinada
função ou eventos, você também pode adicioná-los aos favoritos
clicando nessas estrelas. Você também pode clicar
com o botão direito do mouse sobre eles aqui
na seção de notas e optar por removê-los de seus
favoritos também. Agora, se houver uma categoria inteira de nós que você gostaria de
adicionar aos seus favoritos. Você não precisa começar
cada um desses. Você pode simplesmente clicar com o botão direito nessa categoria e eu vou escolher personagem aqui,
clicar com o botão direito nele. Podemos dizer Adicionar aos favoritos da categoria
dois. E então você veria
no topo aqui,
todos esses nós, salto,
lançamento, personagem,
etc., foram adicionados
à nossa seção de Favoritos. E como isso listou
tudo em ordem alfabética, talvez
você precise rolar para
cima ou para baixo para ver todos os vários nós
que você pode ver no crouch, aqui também. Agachado ali mesmo, pare de pular, pare
de pular, etc. Agora, da mesma forma, se
você quiser remover todos esses nós da
sua seção favorita, não precisa fazer
isso um de cada vez. Você pode simplesmente clicar com o botão
direito aqui e remover essa categoria
dos seus favoritos, e todas elas serão removidas e removidas
da sua lista de favoritos. Outras opções dignas de nota aqui, se você quiser remover um determinado
nó de seus favoritos, basta
clicar
com o botão direito nele. Vou clicar com o botão direito do mouse no
meu nó Les aqui e removê-lo
de nossos favoritos. Outra opção que você tem
aqui é clicar com o botão direito do mouse e escolher limpar
todos os favoritos. Isso vai limpar tudo. Outra opção que
você tem aqui é
clicar com o botão direito do mouse e
escolher carregar um perfil. E se você escolher o perfil
padrão, basta recuperar
todos os favoritos associados ao perfil
padrão. Tudo bem, então aí está, o painel do paladar, ele mostra uma lista
sensível sem contato de todas as funções e eventos que podem ser usados nos projetos. Ele também tem essa
seção de Favoritos aqui, que oferece
acesso fácil aos seus nós favoritos e/ou mais usados. Caras, isso fará para
oferecer esse. Nos vemos na próxima.
111. Colapso de nós: Tudo bem, bem vindos de volta a todos. Neste vídeo, nosso
objetivo é demonstrar como se pode fazer o colapso nós em um gráfico com a
finalidade de limpeza
e legibilidade do gráfico. Agora, depois de um tempo,
um determinado plano, como meu ThirdPersonCharacter
Blueprint, aqui. Ele pode começar a ter muitos nós e redes
de nós, tornando a legibilidade um pouco
difícil. Agora, colapsando os nós, você pode manter sua grama
limpa e condensada. Tudo bem, então, no
início do curso, criamos esse script de rastreamento de
linha dentro do nosso plano de terceira pessoa
e personagem. E foi bom. No entanto, talvez você queira limpar seções do seu gráfico, como essa, apenas para tornar a legibilidade
um pouco mais simples. Na verdade, com todos
esses nós aqui, isso pode tender a sobrecarregar o
censo de tempos em tempos. Então, existe uma maneira de
aumentar a legibilidade
de um piscar de olhos ?
Sabemos que tudo isso funciona. Desligue um pouco essa
rede de nós. Bem, sim, ele pode. O que vou fazer
aqui é clicar com
o botão esquerdo, arrastar
e destacar todos
esses nós aqui, exceto minhas entradas de chave zero aqui. Então, com todos eles destacados, posso clicar com o botão direito do mouse sobre ele e
depois com o menu do botão direito. E eu poderia ter
clicado com o botão direito em qualquer dos meus nós selecionados aqui. Eu tenho a opção
de derrubar os nós. Então eu vou fazer
isso agora. E quando eu fizer isso,
veremos que toda essa rede de nós foi
condensada em um único nó. Agora podemos nomear e, de fato, isso está nos levando
a dar um nome a ele. Então eu vou chamar
essa linha de rastreamento, assim. E agora temos um gráfico bastante
simplificado. Nós dividimos todos esses nós em um
único nó colapsado. Na verdade, diz que
é um gráfico colapsado. Se ampliarmos Obama aqui, agora você pode ver enquanto eu estou passando o mouse sobre esse
conjunto de nós colapsado, temos uma pequena
prévia em nossa janela. Então, isso é útil à primeira vista. Você pode ver o que
está lá dentro, mesmo que seja muito pequeno. Mas se você quiser
obter a visualização completa, tudo o que você precisa fazer é
clicar duas vezes nele e dar
uma olhada na parte superior,
aqui agora você está em uma guia que
diz traçado de linha. Esse é exatamente o
mesmo nome do que chamamos de gráfico recolhido. E aqui está nossa rede de nós. Temos um nó de entrada. Aqui está todo o interior
desse gráfico
e, em seguida, temos
um nó de saída. Agora, nada é necessário para essa saída porque
não tínhamos nada que fosse necessário para
transmitir dados ou qualquer
coisa desse tipo. Agora você pode estar se perguntando
o que diabos aconteceu com
nosso gráfico de eventos. Então, gostaria de chamar sua
atenção para o painel
My Blueprint, aqui. E abaixo da nossa seção de
gráficos, clicando nesta
pequena seta para baixo, clicando na seção
Event Graph, não só temos
acesso a qualquer um dos nossos nós de eventos que
colocamos dentro de um gráfico
de evento de arte. Mas também temos
acesso rápido ao nosso conjunto
reduzido de nós de rastreamento de linha que acabamos de criar. Agora, no topo aqui, eu também tenho essa
seta para trás e a seta para frente. Agora olhe essa seta para trás. São palavras iluminadas. A seta para frente está
meio acinzentada aqui. Se eu clicar nisso,
nada acontecerá. Mas se eu clicar na minha seta para
trás aqui, ela vai
me tirar de volta do
meu gráfico
recolhido de traçado de linha aqui, volta para a grama do meu evento. Então, mais uma vez, se eu
clicar duas vezes no meu gráfico
reduzido de rastreamento de linha, isso mudará
minha guia Event Graph para meu conjunto de nós Align trace
collapse. Se eu clicar em voltar aqui, isso me levará de volta
ao Event Graph. Agora eu também poderia
clicar
aqui no meu
gráfico de eventos para voltar. E agora, de volta aqui,
no painel My Blueprint, posso voltar para esse
conjunto de nós de fechamento de traçado de linha clicando duas vezes aqui. Isso vai me levar de volta lá. E também posso voltar
ao meu gráfico de eventos
clicando duas vezes
na
opção Gráfico de eventos aqui também. Então, basta
mostrar maneiras diferentes de navegar em seu
gráfico ali mesmo. Agora, se você quisesse fazer
seu gráfico reduzido aqui, tudo o que você precisaria fazer, deixe-me ampliar novamente a minha linha. Trace collapse graph é
simplesmente clicar com o botão direito nele. Lá você tem
nós expandidos, então clique neles. E isso colocará todos esses
nós de volta em seu gráfico, como você fez antes. E você também notará
que esse
gráfico recolhido agora não
existe mais abaixo da seção Gráfico de Eventos do enxerto, embaixo da seção Gráfico
de
Eventos do painel My Blueprint. Agora, avançando aqui, vamos demonstrar nós em
colapso que têm outros nós conectados e
saídos dos nós de colapso. Então, eu tenho uma configuração aqui. Se eu pressionar a tecla a para, eu verificaria se essa enumeração que
configurei anteriormente no curso
é a enumeração do estado de saúde, na qual eu tenho os
valores possíveis de super ok. E ela mal. E
dependendo do que isso está configurado, se for ótimo, eu mudaria
o personagem. Componentes do movimento. Salte uma velocidade que
controla o quão alto meu personagem pode pular para 1.400 se meu estado de
saúde for ótimo, se estiver tudo bem, vou
deixá-lo em 700. E se eu tivesse essa
configuração para doer muito, eu ajustaria meus saltos para
a velocidade 2350. Agora, vou
demonstrar aqui novamente o que
aconteceria se eu colapsasse nós
que tenham outros nós conectados e saídos
dos nós de colapso. Agora, para demonstrar isso,
vou simplesmente selecionar esses três nós aqui. Então, observe esses fios
aqui, bem aqui e aqui, e
mesmo aqui, eles precisam ter
algo para se conectar. Então, quando eu colapso
esses nós e até mesmo eu tenho algo
fluindo para esses nós de seleção. Então, vou
clicar com o botão direito do mouse sobre isso. Vou
derrubar esses nós. E agora confira. Meu nódulo de colapso tem esta
aparência. Eu tenho um pino de entrada, mas também tenho
alguns pinos de saída porque precisamos
passar
as informações de movimentos desse personagem para
esse conjunto de saltos, ou seja, aviso de
velocidade, e
nós também precisa passar esses enumeradores. Então, vou nomear
esse gráfico em particular,
meu gráfico de saúde colapsado. É um bom nome. E agora, se eu clicar duas vezes
sobre isso e abri-lo, podemos ver que temos
um pino de entrada de execução, e podemos verificar isso
pulando de volta ao
nosso gráfico de eventos. Aí está meu único pino de entrada de
execução. Deixe-me clicar duas vezes
sobre isso. Mais uma vez. Deixe-me
limpar isso um pouco. Mas ele configura automaticamente alguns pinos de saída
nesse nó de saída. Portanto, temos três
pinos de saída de
execução e um componente de
movimento de caracteres, também um pino de
saída. Agora, isso permite que você os
nomeie se você não
gostasse de você, você sabe, novo enumerador seis, eu poderia
nomear esses dois muito bem. E ela mal. Na verdade, isso não
seria uma má ideia apenas
deixar isso claro, mais claro. Ok? OK. E vamos
mudar isso para doer gravemente. Então, agora, se
voltarmos ao nosso gráfico de eventos, parece fazer um
pouco mais de sentido ali mesmo. Tudo bem, então aí colapso, sabe que agora isso
é algo que eu geralmente não recomendo até que você
esteja nos estágios finais
do seu projeto. E você está feliz com
todos os seus scripts e só quer limpar um pouco
seus gráficos,
só por uma questão de legibilidade. Um bom truque útil que
você pode levar com vocês e fará
tudo isso neste vídeo. Nos vemos na próxima.
112. Layouts personalizados: Tudo bem, bem vindos de volta a todos. Bem, depois de passar
algum tempo trabalhando na Unreal,
você sem dúvida criará você sem dúvida criará sua própria maneira
de fazer as coisas, seu próprio fluxo de trabalho, se quiser, em sua própria maneira de organizar todas essas coisas diferentes
painéis informativos, não apenas dentro de um editor de Blueprint, como
eu abri aqui, mas dentro de qualquer um dos editores
do Unreal, que servem para seu editor de níveis, editores de
Static Mesh, editores de
materiais, todo esse tipo de coisa. Então, a pergunta é: existe uma maneira de salvar um layout personalizado que talvez
eu queira carregar mais tarde. A resposta para isso é
sim, claro que você pode. Então, para fazer isso, você pode encontrar essa opção
no menu do Windows. Se você estiver em Janela em
qualquer um dos seus editores aqui, janela abaixo da seção de layout, é
aqui que você pode criar e salvar um layout personalizado. Você pode carregar esse layout, você pode remover esse
layout, etc. Então, vamos mostrar como
fazer isso neste vídeo. Agora quero ressaltar
aqui que, enquanto estou no editor de níveis, tenho essa opção na seção
Janela, aqui. Se eu fosse entrar no meu personagem em
terceira pessoa. Então, estou em um plano
de classe de personagem e entro na janela. Eu posso ver as
opções de layout e também posso criar um layout personalizado
aqui embaixo. E vamos entrar em outro
editor aleatório também. Não sei,
vou abordar conteúdo
inicial, talvez solicite aquele bom e velho editor
Static Mesh.
Abra isso. Claro. E na
opção de janela aqui, eu também tenho essas
opções de layout. Então, o que vou fazer antes criar meu próprio
layout personalizado é
trazer vários painéis de janela aqui e
organizá-los ao meu gosto. E eu vou começar aqui na minha malha estática e a enfermeira
entrará por baixo da janela. Vou ligar,
digamos, meu registro de mensagens. Claro. Eu direi que quero
encaixar isso
ao lado dos meus painéis aqui em cima. Em seguida, entrarei no meu plano
de personagem de terceira pessoa. Vamos abrir outra janela. Vamos ver, vou
trazer meu registro de saída. Claro, vou colocar isso aqui embaixo. Vou colocar
meus marcadores de nível ao lado do meu painel de plantas. Assim. Vou pegar meu painel de paleta e também colocá-lo
ao lado dos meus componentes. Claro, por que não? A propósito, você tem a vantagem
de fazer uma pausa, para poder ver e lembrar onde estou colocando
todos esses painéis. E então eu vou
entrar no meu editor de níveis. Eu tenho minha janela de níveis aberta desde o início do curso. Eu coloquei isso de volta. Eu também tenho minhas configurações de
mundo ativadas. Que tal eu trazer também o painel de atores do
lugar. E vamos ver o que
mais eu tenho aqui? Eu vou continuar, vamos
trazer o particionador mundial. Isso se você estiver
trabalhando com paisagens. Então, eu vou
abrir isso aqui também. Ok, então, com
todos esses layouts, personalize como eu cito entre
aspas, como essa. Vou entrar na
minha opção de janela aqui. E eu vou usar o layout
de salvamento. E posso salvar meu layout , pois isso abrirá um
pequeno diálogo aqui. E vou chamar isso de
meu layout de figurino. E para minha descrição aqui, claro que é
opcional, como diz, vou chamar isso de
meu exemplo de layout. Vou clicar em
Salvar. Deixe-me saber que
ele foi salvo nesse diretório
logo ali embaixo. E agora o que vou fazer
é entrar por baixo de uma janela. E nas minhas opções de layout de carregamento, você pode ver meu layout personalizado. Mas isso é o que eu tenho
atualmente em vigor. Então, vou colocar
isso de volta no layout padrão do editor. Agora, quando você fizer
isso, ele fechará
o motor e, por padrão, todos os painéis da janela voltarão para onde
estavam por padrão. Então este é meu editor de malha
estática, meu personagem em terceira pessoa. Eu tenho meu
painel de detalhes aqui. Você pode dizer que o painel da
paleta desapareceu completamente. Onde estão minhas janelas aqui embaixo? Todos eles se foram. E aqui, no meu próprio editor de
níveis, estou sentindo falta da minha
guia de níveis aqui. Onde está meu navegador de conteúdo? Estou sentindo falta das minhas
configurações mundiais, da partição mundial. Tudo está de volta aos padrões do
editor. Agora, eu volto para debaixo de uma janela. Eu posso carregar esse layout. E Wallah, você pode ver que meu painel de paladar está de volta
exatamente onde eu o coloquei. Meu painel de favoritos está de
volta aqui. Tudo está de
volta para onde eu estava. Editor de níveis,
posicionadores, painel, níveis, configurações do mundo da
guia,
partição mundial, etc. Portanto, é importante notar
aqui que,
ao criar seu
próprio layout personalizado, depois de salvar esse layout, você está salvando o layout
não apenas para o editor atual em
que está trabalhando. Nesse caso, esse
seria meu editor de níveis, mas você também está salvando
esse layout para todos os outros
editores. Incluindo, no meu caso aqui, esses editores de mash estático e também
os editores de blueprint, para remover a permissão,
você simplesmente
entraria layout de remoção de janela. Aí está meu layout personalizado. Quando eu seleciono isso,
uma caixa de diálogo aparece aqui dizendo: Tem certeza de que
deseja fazer isso? Agora, se você clicar em OK, agora, você notará que
nada aconteceu com meu layout personalizado porque esse é o layout que
estou usando no momento. Portanto, isso não
removerá o layout que
você está usando atualmente. Então, se eu realmente quisesse
remover o layout do meu primo, primeiro teria que
voltar para outro layout. Nesse caso, voltarei
ao layout padrão do meu editor. E agora, se eu estivesse na nossa opção de janela, na
seção de layout e
estivesse tentando
carregar esse layout. Você pode ver que não existe mais. Agora, enquanto estamos aqui,
também gostaria de
salientar que você pode importar um
layout existente ou, ao salvar um layout, também
pode exportar
um layout. Não vou
demonstrar isso aqui, mas queria que
você soubesse disso. É altamente recomendável que você crie seus próprios
layouts personalizados, pois isso o
ajudará a melhorar seu fluxo de trabalho. Gente, isso vai fazer de
tudo para este vídeo. Nos vemos no próximo.
113. Dicas e truques: Bem-vindo. Neste vídeo, o
objetivo é fornecer
dicas e truques adicionais para ajudá-lo a trabalhar de
forma mais eficiente com
projetos no Unreal, não mostrar essas dicas
e truques que vou trabalhar dentro de Maya,
BP ThirdPersonCharacter. No entanto, observe que
você pode trabalhar em qualquer um dos seus projetos. Tudo bem, com nosso
ThirdPersonCharacter aberto, eu queria chamar
sua atenção para essas duas setas aqui no topo do meu gráfico de eventos. São setas
para frente e para frente, como você vê em qualquer tipo
de navegador da Internet. O que isso permite que você faça é
passar de gráfico em gráfico. Agora, agora está acinzentado. E se eu tentar clicar neles, nada acontece porque
acabamos de abrir isso. No entanto, quando clico em diferentes áreas do
meu painel Blueprint ou minha área de favoritos, abro
aqui em
Favoritos da janela. Quando eu começo a clicar em
algumas dessas coisas, como eu disse, pulo para
onde está minha chave de entrada zero. Eu entro na minha função de funcionamento
turbo. Ou eu navego até uma das minhas interfaces do
Blueprint aqui, vamos lá. A função de interação, ou uma das minhas macros em chamas, ou pulei para um dos
meus favoritos aqui, vou até meu marcador de saúde ou até meu marcador de visão geral. Agora você me viu clicar em uma
variedade de coisas lá. Então, agora eu criei um histórico e agora posso usar esses botões de
voltar e avançar para navegar até as coisas em
que cliquei. Então, se eu voltar aqui,
vou
voltar para o meu
marcador de saúde, novamente, para minha macro aqui, Maia em chamas, macro, de volta para minha interface de
interação novamente. E, como você pode ver, ele funciona como qualquer navegador da
Internet, botões para
trás e para frente,
para frente, para frente, para trás, etc. Agora, ao passar o mouse sobre
ele, você pode clicar com o botão direito do mouse para ver um histórico completo. Eu sei que em um
momento isso estava funcionando. No entanto, se eu tentar
clicar com o botão direito agora, não
consigo ver o histórico completo. Imagino
que
essa funcionalidade voltará. Tudo bem, a seguir, eu
queria mostrar a você como copiar e colar valores no irreal. Agora, isso é algo que eu sei, você sabe como fazer por meio tantos outros
aplicativos de computador. Controle C para copiar, controle V para colar. Mas esse é um
daqueles truques que por qualquer motivo,
escapa à mente de muitas pessoas
, tanto quanto possível. O que vou fazer aqui
no meu painel de componentes, e vou pular
para minha janela de visualização aqui porque isso vai ser um
pouco visual por natureza. Vou adicionar um componente
totalmente novo. Vou adicionar um bom sistema de partículas
Agora. Isso será anexado
ao meu componente de cápsula. Vou deixar esse nome de Niágara. Isso vai ficar bem. Vou definir um ativo do
sistema Niágara aqui. Ao clicar nesse menu suspenso, definirei um desses itens
mágicos. Claro. Agora, atualmente, ele está
aparecendo bem
no centro aqui
porque está
na localização 000 em relação
ao nosso componente da cápsula. Isso está anexado ao meu componente de
conselheiro. Mas digamos que eu quisesse que essa
partícula aparecesse exatamente
no local do meu componente manual
simulado. Bem, isso seria tão simples
quanto copiar esse local. Essa é uma localização relativa. localização
relativa deste componente em relação ao nosso componente
católico. E para fazer isso, eu posso simplesmente
clicar com o botão direito do mouse aqui no local, clicar com o botão direito do mouse em Copiar. Você pode ver o turno mais o arroz. botão direito do mouse é a
tecla de atalho para fazer isso aqui. Então eu posso ir até
minha partícula de Niágara, clicar com o botão direito aqui
e colá-la. Então, por qualquer motivo, esse é um
truque muito útil que escapa da mente das
pessoas,
tanto quanto possível. Mas confie em mim, eu usei
essa dica o tempo todo. Em seguida, gostaria de chamar
sua atenção para
o painel My Blueprint, onde
temos esse ícone de engrenagem. E se eu clicar nisso, quero falar sobre
essa opção principal
que mostra variáveis
herdadas. Atualmente, tenho
isso verificado. Agora, se eu marcar isso, você
notará que muitas categorias
variáveis
aqui vão desaparecer. E a razão pela qual
elas desaparecem é porque essas eram categorias de
variáveis herdadas que foram herdadas de nossa
classe de caráter original. Agora, a razão pela qual é importante saber
isso é
porque se você está criando alguma classe base e depois
herda dessa classe, você pode estar se perguntando: Ei, onde todas as variáveis que
eu configurei nessa classe base, onde elas ainda existem? Agora, para
ajudar a esclarecer esse ponto, vou abrir
outro projeto aqui. No início do
curso, criamos esse modelo de personagem infantil, herdado do meu personagem em
terceira pessoa. Então, deixe-me abrir esse
cara bem rápido. Isso é uma criança. Se você ver isso,
você pode abri-lo no editor de diagramas completo
clicando aqui. Você pode ver que a classe
principal aqui é meu personagem de terceira pessoa da BP. Agora, se olharmos na seção
variável da criança. exemplo, espere um minuto,
onde todas as variáveis dentro da
minha classe principal aqui, eu criei todas
essas variáveis. Acertei
uma variável de ator, uma meia e uma variável. Essas são variáveis
que creditamos ao longo do curso.
Onde eles estão? Bem, se eu entrar na
criança e clicar nesse ícone de engrenagem
no painel My Blueprint e
mostrar variáveis herdadas. E abrimos nossa categoria de
variáveis aqui. Agora podemos ver todas essas
várias variáveis
que configuramos em
nossa classe principal. Em seguida, gostaria de chamar sua
atenção para um ícone
de engrenagem localizado
no canto superior direito do nosso painel de detalhes. Se você clicar nele,
também verá uma variedade de opções. Vou falar sobre
alguns
deles que eu realmente gosto de usar, como mostrar apenas propriedades
modificadas. Se você marcar isso, reduzirá seu painel de
detalhes para mostrar apenas as propriedades
que você modificou. Isso é muito útil
para saber, tipo, Ei, o
que diabos eu realmente mudei nesse componente? Acho isso especialmente
útil para algo como o Componente de Movimento de Personagem porque
o
Componente de Movimento de Personagem contém todos os tipos
de propriedades. Então, se eu quiser
descobrir apenas as que eu modifiquei, posso clicar aqui e mostrar apenas as propriedades modificadas
versus, se eu marcar isso, essa enorme lista de propriedades que me
são apresentadas, caso contrário, algumas das outras
opções que eu gosto de
explorar nesse menu, temos que mostrar todos os detalhes
avançados. O que diabos é isso? Bem, em qualquer uma dessas
categorias, temos algumas
propriedades avançadas que são menos conhecidas, menos usadas, etc. Você pode clicar e
mostrá-los manualmente. No entanto, se você
não quisesse fazer que estou fazendo agora, expondo
todos eles um por um. Você pode simplesmente acessar ícone de engrenagem e
mostrar tudo o
que está avançado. E isso ativará todas essas
categorias avançadas
imediatamente para que você não
precise clicar em todas elas. Isso é útil.
Deixe-me desligar isso. Outra coisa
que eu gosto de usar aqui está nessa categoria, posso recolher todas as categorias
ou expandir todas as categorias. Mais uma vez,
selecionei os componentes de
movimento do meu personagem aqui. Há muitas
categorias diferentes aqui. Movimento do personagem, salto,
queda, componente, carrapato,
movimento do personagem, networking, muitas categorias diferentes. Então, se eu quiser
agrupar todas elas,
eu poderia simplesmente
clicar nela e ver todas as categorias individuais para que eu possa abrir apenas aquelas em
que estou interessado. E, claro, eu posso
fazer o oposto, que é expandir
todas as categorias. Então, essa é uma
maneira fácil de abrir
todos eles sem precisar
fazer isso um por um. Tudo bem, a seguir, gostaria de
falar sobre o que esse botão ocultar não relacionado faz ao longo da barra de ferramentas em
um editor de Blueprint. Agora que realmente
vê isso funcionando, você precisa estar em
seu gráfico de eventos ou seu script de construção, função
ou macro, algo com alguns nós. Vou destacar
meu componente de cápsula nessa rede de nós. E eu vou
clicar nesse botão. É como um botão
liga/desliga aqui. Quando está azul
, está ativado. Quando está cinza,
é desligado. Deixe-me ativar isso novamente. O que isso fez é
que ficou acinzentado. Qualquer nódulo é transformado em um fantasma. Quaisquer nós que não estejam
relacionados com aquele que eu selecionei, um ou aqueles que
eu selecionei. Então, por que tudo isso ainda está
iluminado? Bem, meus nós
de dois componentes do ator de conexão aqui, eles dependem do componente
capital porque estão conectados
à entrada principal. Eles geram atores dos nodos de
classe aqui. Eles dependem da
transformação mundial que estamos obtendo
do componente católico. Então, eles também estão
iluminados. Agora, se eu voltasse
aqui, você pode ver que
todos os outros nós também
estão fantasmas
porque não estão relacionados ao que eu selecionei atualmente,
esse componente católico. Agora, isso é extremamente útil se você tem um emaranhado de fios, difícil entender o que seu roteiro está fazendo. E você está realmente
tentando acender uma luz para focar em apenas um determinado
subconjunto de nós. Agora, eu também queria
ressaltar aqui que,
à direita do nosso botão ocultar não relacionado, aqui
temos esses três pontos. Se você clicar nele, você tem a opção de
bloquear o estado do nó. Agora, se eu clicar
e ativar isso, agora podemos ver que está
ativado com essa marca de seleção. O que isso vai fazer é
manter todos os nódulos em seu estado atual
destacados ou doses. Isso significa que se eu clicar em outro lugar e
clicar em outro nó, isso manterá todos os
outros nós de fora. E aqueles que eu tinha
bloqueado para serem iluminados, eles permanecerão iluminados
até que eu os desbloqueie. Então, é bom saber isso. Tudo bem, pessoal,
existem algumas dicas e truques para trabalhar com os projetos do
Unreal Engine. Espero que você os ache úteis. Veremos todos vocês
no próximo vídeo.
114. Chaves de produtividade: Tudo bem, bem vindos de volta a todos. Neste vídeo, nosso
objetivo é resumir todos os
atalhos de aumento de produtividade incorporados ao editor
Blueprint para que você possa criar e navegar seus scripts com mais eficiência. Agora, para começar,
vou mostrar onde as teclas de atalho estão definidas dentro do Unreal para que você possa personalizar suas teclas de atalho
para
aumentar a produtividade em todas as áreas do motor, não apenas dentro do
plantas, mas em todos os lugares. Então, onde você pode
personalizar essas teclas de atalho? Bem, isso é feito nas preferências do
seu editor. Você pode acessar suas preferências
de
editor clicando no botão Editar aqui. Preferências do editor. E
com essa aba aberta, vou
abri-la no canto superior direito, aqui em cima. No lado esquerdo, você tem atalhos de teclado. Você clica aqui. E é aqui que todas as várias teclas
de atalho são definidas para cada
área do motor, cada editor, editor Blueprint. É aqui que vemos algumas
teclas de atalho, como compilar F7. Você tem backspace
para acessar um controle gráfico principal mais F
abrirá esse menu de busca, etc. Agora, isso é obviamente
ótimo, porque
se você estiver fazendo uma determinada
ação repetidamente, você pode criar algumas
teclas de atalho para si mesmo. Além disso, você pode personalizar as
teclas de atalho ao seu gosto. E, de fato, isso é
valioso para mim fazer aqui porque a tecla F7, que atualmente está vinculada à compilação, também é a tecla de atalho que eu
vinculei ao meu
software de gravação OBS para iniciar
e parar. meu jogo. Então, se eu quisesse
mudar isso, eu poderia simplesmente clicar aqui e dizer que
eu quero que esse seja o clique em que o
espaço será F8. E você também pode adicionar
uma segunda encadernação. Então, posso dizer, com certeza, o
F9 também fará isso. Agora não há
botão Salvar nem nada aqui. Então, se eu fosse entrar no meu
ThirdPersonCharacter Blueprint e fazer algum tipo de mudança,
como simplesmente cortar este fio, então conecte-o novamente. Agora você pode ver que está me
pedindo para compilar. Então, se eu pressionasse
F8, isso o compilaria. Mas deixe-me redigir mais uma vez
e conectá-lo novamente. E se eu pressionasse F9 e, obviamente, você não conseguisse me
ver pressionando essas. Você só vai confiar nisso. Estou fazendo isso. F9, Isso também vai
compilá-lo. Uma maneira muito prática de
personalizar suas combinações teclas de atalho para várias
áreas do editor. Tudo bem, então, com
isso resolvido, vou
mostrar como executar vários comandos de teclas de atalho
em projetos. Eles serão específicos para projetos que você
deve conhecer. Agora, passei por muitas
delas ao longo do curso. Mas isso vai
servir como um ótimo resumo. Então, no meu
ThirdPersonCharacter, basta encontrar uma seleção de nós, se quiser, para
jogar em casa. Se você quiser selecionar qualquer nó, basta clicar com o botão esquerdo
nele para selecioná-lo. Se você quiser adicionar algo
a uma determinada seleção, basta manter
pressionada a tecla Shift. Vou manter pressionada a tecla Shift
e clicar com o botão esquerdo desse jeito. Se você quiser
alternar uma seleção, a tecla
Control e clique com o botão esquerdo. Assim. Para criar uma seleção de
marquise, basta clicar com o botão esquerdo
e arrastar e você obterá essa pequena caixa de linha
pontilhada. E sempre que isso acontecer, é
isso que você selecionará
na seleção
da marquise ,
clique com o botão esquerdo e arraste. Se você quiser adicionar à sua
seleção de letreiros aqui, mantenha pressionada a tecla
Shift e clique com o botão esquerdo
e, em seguida, adicione alguns
nós a ela dessa forma. Se você quiser remover seleções de sua seleção de
letreiros, basta manter pressionada a tecla
Control, clicar com o botão esquerdo e arrastar, e isso removerá tudo o sua seleção de letreiros tocar. Então, esses eram os comandos de
seleção de um modelo. Tudo bem, comandos de navegação
que você deve conhecer. Você tem o
botão direito do mouse pressionando isso. Vamos arrastar você
pelo gráfico inteiro. Você tem esse ícone de mão
para arrastar assim. Se você quiser
ampliar a seleção, basta pressionar
a tecla home no teclado e
isso ampliará o que você selecionou. Se quiser, emoldure. Se você quiser ampliar
e diminuir o zoom em seu gráfico, basta rolar
para dentro e fora, como aquela
roda de rolagem, para cima e para baixo. Agora, se você quiser
ampliar a escala Beyond 1.1. Então, aqui
está o seu nível de zoom no canto superior direito do Zoom, dois pontos, se você
quiser ampliar além disso, segure a tecla Control
e, em seguida, você pode
realmente ampliar Passat até um
nível de zoom de mais sete. Tudo bem, vamos ver
alguns comandos genéricos que você deve conhecer sobre
control plus b. Isso fará com que você
use esse recurso. Nesse caso, o
ThirdPersonCharacter reside no navegador
de conteúdo. Deixe-me voltar para
dentro de lá. Você tem o controle mais S que
salvará seu projeto. Então, temos um tipo genérico
de comandos de computador aqui, onde se você fizer algo como Control mais y, isso refará algo, Control mais z, isso
desfará alguma coisa. Então, vamos explorar isso simplesmente movendo esse nó um pouco
para baixo. Vou fazer o Controle Z para desfazer isso, Controle Y para refazer isso, para encontrar algo
neste plano, você pode
controlar mais F. Eu também tenho essa
bela janela de resultados aberta aqui embaixo.
Deixe-me encerrar isso. Então, se eu fizesse
o controle mais F, isso traria
meus resultados finais. Se eu tentasse encontrar
algo como “ Minha coisa relacionada à saúde”,
eu poderia procurá-la. Eles estão apenas dentro
desse plano. No entanto, se eu quisesse encontrar
algo em qualquer Blueprint, eu faria Control Shift e F, que trarão minha descoberta em
qualquer menu de plantas aqui. E se eu digitasse
saúde agora e pressionasse Enter, eu poderia descobrir onde
a palavra saúde é referenciada em qualquer
tipo de plano. Personagem de terceira pessoa, meu WPP, exemplo de HUD,
pickup, etc. Agora, como você se lembra do
início do curso, F7 é a tecla de atalho padrão para
compilar seu plano. Eu o alterei
para mim pessoalmente, nas minhas preferências de editor, mudei para F8, F9,
mas F7 é a
forma padrão de compilar suas, tudo mas F7 é a
forma padrão de compilar suas, bem, algumas ações variáveis que
você deve conhecer. Deixe-me ir para
um espaço vazio. Vou
abrir rapidamente um anúncio. Operadores, adicione uma maneira de obter
e definir uma variável rapidamente. Se você for
conectá-lo no lado da entrada,
basta clicar com o botão esquerdo
e arrastar em cima de um pino como esse para obter o
conteúdo dessa variável. No entanto, se você for
arrastar e soltar
no lado de saída de um nó, clique com o botão esquerdo e arraste na
parte superior desse pino e você trará automaticamente o
centro dessa variável. Você também deve saber
que, se você manter
pressionada a
tecla Control e clicar com o botão esquerdo no
controle, clique com o botão esquerdo e arraste-o em um gráfico
e solte-o em qualquer lugar. Você pode obter essa variável
se você manter pressionada a tecla Alt,
clicar com o botão esquerdo e arrastar, você pode trazer um
centro dessa variável. E se você não tiver certeza do que deseja fazer com
essa variável,
clique com o botão esquerdo do mouse em arrastar e, em seguida, obtenha o menu para
obter ou configurar. E essa é uma maneira de você decidir rapidamente o que
quer fazer com isso. Agora, algo que
muitas pessoas não conhecem com as variáveis
no painel My Blueprint, você pode reordená-las
simplesmente arrastando-as. Então, se eu quiser colocar todas as minhas variáveis flutuantes
próximas umas das outras, posso simplesmente
clicar com o botão esquerdo e arrastar. Então, qualquer um que você arraste em cima, ele vai pular
logo acima dele, assim. Então você poderia fazer
algo assim para organizar suas variáveis, tudo bem na seção
myvariable. Em seguida, vou mostrar
várias ações do node
que você pode realizar. E vou
excluir alguns
desses getters e
setters aqui. Vou deixar esse nó de
adição aqui. Também vou clicar com o
botão direito do mouse e trazer eventos personalizados. Vou deixar isso com
um nome genérico agora. Também vou trazer uma
das minhas funções
personalizadas, minha
função Modificar saúde. Tudo bem, primeiro temos o menu de contexto específico do
nó. Se eu clicasse com o
botão direito do mouse em um determinado nó, abriria um
menu de contextos
específicos do nó. Coisas que posso
fazer com esse determinado nó, eu poderia adicionar um ponto de interrupção
ou alternar um ponto de interrupção. Essas são duas ações muito
comuns. Quebrar links de nós é
uma ação muito comum. Atualizar um nó é
uma ação muito comum. Obviamente, você também tem
sua cópia e recorta, duplicada, todo esse
tipo de coisa. Observe, no entanto, que esse era meu menu de clique com o botão direito do mouse para
esse nó de função. Se eu tivesse que
clicar com o botão direito do mouse nesse nó de adição, confira uma das minhas opções específicas para esse nó. Eu tenho a capacidade de adicionar um alfinete. Eu poderia adicionar um pino
específico a esse nó, esse não está disponível. No entanto, se eu clicar nesse
nó de função aqui, nós
diferentes podem ter ações de nó
diferentes , como esse
nó de adição aqui. Agora, alguns nós permitem que
você clique duas vezes
neles para acessar o nó
associado ou um gráfico. Esta é uma função personalizada. Então, se eu
clicar duas vezes nessa função que
criei anteriormente
no curso,
isso abrirá a guia de função fornecida para me
mostrar o que está
dentro dessa função. Então, é bom
conhecer os nós do Timeline. Você também pode fazer isso. Para abrir o Editor da Linha do Tempo, mova uma nota, você sabe que
já pode clicar com o botão esquerdo e arrastá-la assim. No entanto, você também pode
usar as teclas do
teclado para
empurrá-lo para cima e para baixo, para esquerda e para a direita, etc. Para excluir um nó,
basta selecioná-lo desta forma e pressionar a tecla Delete para renomear um
nó, como um evento personalizado. Observe novamente que isso não está
disponível em todos os nós fornecidos, mas em um evento personalizado em
que você pode nomeá-lo. Você pode simplesmente clicar com o botão esquerdo
no título aqui. E isso permitirá que você o
renomeie como meus eventos de fantasias. Pressione Enter. Como alternativa, você pode pressionar F2 com a opção selecionada, e isso permitirá que você
também renomeie evento personalizado
renomeado. Outros comandos aqui,
deixe-me excluí-los e ativar
alguns novos nós, vou clicar com o botão direito do
mouse para trazer
a tecla sete, vou dizer sete teclas. Vamos modificar um pouco de saúde. E deixe-me voltar aqui, acidentalmente
cliquei duas vezes nele. Também vou trazer um nó de
atraso. Portanto, você já deve saber
que, se selecionar o nó e
pressionar a tecla F9, poderá adicionar um
ponto de interrupção para isso, e eu posso fazer isso
para cada um deles. Então, cada um deles tem
um ponto de interrupção. Para limpar todos os pontos de interrupção, posso fazer Control Shift e F9, que eliminarão todos
eles imediatamente. Para cortar uma seleção, posso simplesmente fazer o Controle X. Obviamente, controlar um
V é colá-lo. Para copiar uma determinada seleção. Eu posso
selecionar apenas
alguns nós , como este
controle C, controle V. Você deve saber isso
de praticamente qualquer tipo de
aplicativo de computador. Vamos ver como duplicar
uma seleção. Então, vou
selecioná-los e fazer Control mais D, e isso os duplicará. E, por fim, você já
deve saber que pode adicionar
um comentário em torno de
uma seleção simplesmente selecionando os nós nos quais
deseja criar um comentário. Como todos esses três, pressione a tecla C para adicionar uma caixa de
comentários, minha caixa de comentários. E, novamente, depois de criar uma caixa de comentários na janela de
favoritos, que é acessada pelo Windows. Favoritos. Você deve então conseguir encontrar essa caixa de comentários em
algum lugar, na parte inferior,
conhecida como Comentário. No entanto, se eu compilar, agora atualizar para minha caixa de comentários, se eu quisesse
sair dela, eu poderia clicar duas vezes nela
para ir para minha caixa de comentários. Tudo bem, várias ações de pin
que você deve conhecer. Vamos trazer alguns
pontos aqui para
ajudar a facilitar essa discussão. Quer saber,
vou trazer
um ator de spawn do node de
classe porque é
bom demonstrar com ele. Se eu tivesse que
clicar com o botão direito do mouse em um determinado pino, como minha
transformação de spawn aqui. Vou abrir um menu de
diferentes ações de pin
que eu posso realizar, promover isso para uma variável que é uma ação de pin muito comum. Você pode ver que em
praticamente qualquer dor aqui promove uma variável também com uma transformação de desova,
um vetor ou um pino rotador. Se você clicar com o botão direito do mouse nele, poderá dividir o
Struct Pin porque uma transformação
consiste em dados de localização, rotação e escala. Então, adote o botão direito do mouse sobre isso. Eu posso essencialmente expor os componentes fornecidos
desse pino, a localização, a rotação e os dados
de escala dessa transformação. Se eu trouxer meu Add
Node de volta aqui, vou clicar com o botão direito do mouse e
trazer esse nó de adição. Se eu tivesse que
clicar com o botão direito do mouse
nessas canetas cinza, são pinos curinga. Eu poderia clicar com o botão direito nele. E eu também tenho
diferentes ações de pin que posso realizar aqui,
embora essas não estejam
listadas como ações de base, eu as considero ações de fixação. Posso converter
a caneta em um determinado tipo de dados. Então, se eu sei que quero que isso
seja um número inteiro mais, digamos, uma caneta flutuante, posso
alterá-las adequadamente. Agora, às vezes, quando você começa a
criar um código de espaguete, você tem fios funcionando em
todos os sentidos. Às vezes, você só
quer enfatizar um fio conectado para que seja mais fácil de ler, por assim dizer. Então, se eu fosse conectar
um dos meus fios aqui, deixe-me pegar qualquer
boia aqui, saúde, e arrastá-la para
cima de lá. Se eu passar o mouse sobre esse pino, você pode ver como ele ilumina
aquele fio ali mesmo. E funciona nos dois sentidos. Não importa de que lado
do fio eu estou passando o mouse, mas você pode ver
que gradualmente esse fio ganha força e
se ilumina um pouco mais. Então, isso pode ajudar apenas para fins
de legibilidade. Agora, digamos que eu queira
conectar essa variável
a uma caneta diferente. Eu poderia recortar a
caneta mantendo pressionada a
tecla Alt e clicando com o botão esquerdo no trecho da ferramenta
Caneta, dessa forma. No entanto, se eu quisesse movê-lo, eu poderia manter
pressionado o botão esquerdo do mouse e arrastá-lo para outra
entrada. E, novamente, isso funciona nos dois lados da nossa
conexão aqui. Então, se eu
quisesse mover esse pino também, eu poderia manter pressionada a tecla Control, clicar com o botão esquerdo e movê-lo. Ou se você quiser
cortar esse fio, mantenha pressionada a tecla Alt, clique com o botão esquerdo e isso cortará o fio. Tudo bem, e finalmente, vamos
mostrar as teclas de atalho para adicionar alguns dos nós mais usados
ao seu gráfico. Mantemos pressionado
o B e clicamos com o botão esquerdo. Vamos adicionar um nó de ramificação. Se você pressionar a tecla
D e clicar com o botão esquerdo, você abrirá um nó de atraso, use-o o tempo todo. Mantenha pressionada a tecla S e
clique com o botão esquerdo que traz um nó de sequência, o GT, e clique com o botão esquerdo que
traz um nó de porta, o M, M como em Mary, e clique com o botão esquerdo, eles
trarão um nó de várias portas. Se você mantiver pressionada a tecla
F e clicar com o botão esquerdo, você inserirá um para cada loop. Se você mantiver pressionada a tecla
N, N como em Nancy, clique com o botão esquerdo e isso
abrirá um nó do n. Se você mantiver pressionada a tecla 0 e clicar com o botão esquerdo,
eu quero nevar. E se você pressionar a tecla
P e clicar com o botão esquerdo, você trará o
Event Begin Play. Se ele ainda não
tiver sido
adicionado ao seu gráfico, eu uso essas
teclas de atalho o tempo todo. Bem, pessoal, isso vai
fazer tudo para este vídeo. Nos vemos na próxima vez.