Unreal Engine 5: introdução ao script de blueprint | Greg Wondra | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Unreal Engine 5: introdução ao script de blueprint

teacher avatar Greg Wondra, Unreal Authorized Instructor

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Vídeo promocional do curso (Sobre o curso)

      1:10

    • 2.

      Primer do curso

      4:09

    • 3.

      Baixar e instalar

      3:33

    • 4.

      Criar projeto

      3:03

    • 5.

      Exemplo de projeto

      9:10

    • 6.

      Painel de componentes

      18:35

    • 7.

      Guia do painel de visualização

      14:40

    • 8.

      Painel de detalhes

      7:44

    • 9.

      Meu painel de planos

      7:54

    • 10.

      Gráfico de eventos

      14:12

    • 11.

      Roteiro de construção

      16:36

    • 12.

      Planos de aula

      6:19

    • 13.

      Planos de níveis

      15:35

    • 14.

      Tipos de nós

      7:48

    • 15.

      Execução e pinos de dados

      6:45

    • 16.

      Fiação de nós

      6:40

    • 17.

      Organização de nós

      10:29

    • 18.

      Nível BP - Referências de objetos de tempo do design

      10:44

    • 19.

      Nível BP - Referências de objetos em tempo de execução

      16:57

    • 20.

      Curso BP - Referências de objetos de tempo do design

      10:58

    • 21.

      Curso BP - Referências de objetos de tempo de execução

      13:33

    • 22.

      Referências de objetos moldados

      14:27

    • 23.

      Referências de widget BP

      11:33

    • 24.

      Referências de tags

      10:40

    • 25.

      Início do jogo de eventos

      10:03

    • 26.

      Tick de evento

      12:52

    • 27.

      Entrada de eventos

      15:40

    • 28.

      Eixo de eventos

      18:42

    • 29.

      Sobreposição do início de eventos

      13:02

    • 30.

      Sobreposição do final de evento

      5:26

    • 31.

      Início do evento - cursor

      11:34

    • 32.

      Cursor do final do evento

      3:57

    • 33.

      Evento clicado

      5:31

    • 34.

      Evento lançado

      2:11

    • 35.

      Acertamento de evento

      12:21

    • 36.

      Evite qualquer dano

      8:25

    • 37.

      Danos em ponto de evento

      7:44

    • 38.

      Dano radial de eventos

      8:48

    • 39.

      Evento destruído

      8:44

    • 40.

      Eventos personalizados

      14:40

    • 41.

      Visão geral das variáveis

      9:26

    • 42.

      Booleano

      9:54

    • 43.

      Inteiro

      12:02

    • 44.

      Flutuante

      14:36

    • 45.

      Nome

      12:11

    • 46.

      Corda

      9:33

    • 47.

      Texto

      13:54

    • 48.

      Vetor

      8:01

    • 49.

      Rotador

      16:38

    • 50.

      Transformação

      11:03

    • 51.

      Ator (objeto)

      9:18

    • 52.

      Coisas variáveis para saber (parte 1)

      11:53

    • 53.

      Coisas variáveis para saber (parte 2)

      9:36

    • 54.

      Dicas e truques variáveis

      12:27

    • 55.

      Visão geral das funções

      7:20

    • 56.

      Funções de atores

      6:14

    • 57.

      Funções do curso

      7:52

    • 58.

      Funções de componentes

      4:31

    • 59.

      Criando funções

      11:39

    • 60.

      Funções de chamada

      15:05

    • 61.

      Comprimir para função

      14:09

    • 62.

      Funções puras e impuras

      11:18

    • 63.

      Biblioteca de funções

      17:17

    • 64.

      Variáveis locais

      10:55

    • 65.

      Funções — o que você precisa saber

      15:17

    • 66.

      Visão geral de macros

      8:43

    • 67.

      Como criar macros

      13:23

    • 68.

      Comprimir para macro

      7:39

    • 69.

      Biblioteca de macros

      15:32

    • 70.

      Matriz

      16:00

    • 71.

      Conjunto

      10:45

    • 72.

      Mapa

      18:12

    • 73.

      Enum

      14:34

    • 74.

      Estrutura

      18:31

    • 75.

      Visão geral do controle de fluxo

      3:56

    • 76.

      Filial

      10:21

    • 77.

      Sequência

      7:15

    • 78.

      Faça uma vez

      8:01

    • 79.

      Faça N

      5:10

    • 80.

      Flip Flop

      10:23

    • 81.

      Portão

      9:53

    • 82.

      MultiGate

      9:17

    • 83.

      Para loops

      17:30

    • 84.

      Para cada loop

      14:17

    • 85.

      Loop “while”

      7:57

    • 86.

      Interruptores

      18:31

    • 87.

      Selecionar

      18:13

    • 88.

      Escolhendo o elenco

      11:30

    • 89.

      Comunicação direta (parte 1)

      8:53

    • 90.

      Comunicação direta (parte 2)

      12:20

    • 91.

      Despachantes de eventos

      16:08

    • 92.

      Interfaces de blueprint (parte 1)

      15:39

    • 93.

      Interfaces de blueprint (parte 2)

      8:55

    • 94.

      Aula principal (Base)

      12:50

    • 95.

      Curso infantil (parte 1)

      14:09

    • 96.

      Curso infantil (parte 2)

      13:17

    • 97.

      Visão geral do quadro

      4:32

    • 98.

      Modo de jogo (parte 1)

      11:47

    • 99.

      Modo de jogo (parte 2)

      10:50

    • 100.

      Peão

      9:52

    • 101.

      Personagem

      11:47

    • 102.

      Controlador de jogadores

      19:38

    • 103.

      Instância de jogo

      18:31

    • 104.

      Compilação

      9:21

    • 105.

      Pontos de interrupção

      14:33

    • 106.

      Valores de assistir

      7:50

    • 107.

      Log de mensagens

      8:07

    • 108.

      Pesquisa

      8:19

    • 109.

      Marcadores de livro

      4:06

    • 110.

      Paleta/Painel de favoritos

      5:23

    • 111.

      Nós de colagem

      8:02

    • 112.

      Layouts personalizados

      6:17

    • 113.

      Dicas e truques

      9:59

    • 114.

      Teclas de atalho de produtividade

      15:55

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

1.284

Estudantes

4

Projetos

Sobre este curso

Se você já quis programar seus próprios jogos, mas não tem nenhuma experiência ou sabe por onde começar, este curso é para você!

O designer de jogos e educador, Sr. Wondra, ensina todos os conceitos principais, habilidades e técnicas necessários para dominar o Blueprint Scripting — o sistema visual baseado em nós do Unreal Engine para criar jogos funcionais.

Neste curso, você aprenderá:

  • Como criar e configurar projetos no Unreal Engine

  • Como criar/usar eventos, funções, macros e variáveis

  • Como criar diferentes tipos de blueprints
  • Como se comunicar entre os blueprints

  • Como criar classes para pais/filhos (herança)

  • Como compilar e depurar blueprints

  • Como criar MUITOS scripts úteis: 
    • Como criar scripts de captação
    • Como criar scripts de objetos interativos
    • Como criar scripts de objetos em movimento
    • Como criar scripts simples de inimigos
    • Como criar scripts de conteúdo processual
  • Dicas e truques para se tornar um roteirista eficiente!

Para quem é este curso?

Em resumo, TODOSEstudantes jovens e mais velhos (12 a 70!) e de iniciantes completos a experientes desenvolvedores de jogos AAA têm conquistado e encontraram um valor imenso neste curso.  Os estudantes comuns incluem:

  • Iniciantes completos (nunca programaram antes!)
  • Desenvolvedores já existentes da Unreal (que queiram aprender essas ferramentas)
  • Conversões de Unity
  • Educadores (procurando currículo de desenvolvimento de jogos para seus cursos) 

Vamos!

Com o conhecimento adquirido nessas videoaulas, você terá o conhecimento e as habilidades necessárias para começar a criar seus PRÓPRIOS scripts personalizados para seus PRÓPRIOS projetos de jogos!  Mal posso esperar para ver o que você vai criar!

Conheça seu professor

Teacher Profile Image

Greg Wondra

Unreal Authorized Instructor

Professor

Hello! I'm Greg but most of my students know me as "Mr. Wondra." I'm an active game designer and Unreal Engine Authorized Instructor.

As a kid growing up in rural Wisconsin I dreamed of leaving the corn fields and cow pastures to one day become a video game designer. For 12 years I LIVED that dream! I've designed titles for 2K Sports, KingsIsle Entertainment, and Nickelodeon and have had rare lifetime opportunities such as directing LeBron James and Derek Jeter in motion capture sessions.

My design credits include:

- Wizard 101 (PC)

- Lost Planet 3 (360, PS3, PC)

- MonkeyQuest (PC)

- Sports Champions (PS3)

- Major League Baseball 2K5, 2K6, 2K7, 2K8 (various consoles)

- SpongeBob Moves In (Mobile)

- Grub ... Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

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.