Unreal Engine 5: criando Mario | 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: criando Mario

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

      1:31

    • 2.

      Criar projeto

      7:59

    • 3.

      Crie o nível

      7:34

    • 4.

      Configuração da câmera do player

      6:30

    • 5.

      Câmera personalizada do jogador

      12:35

    • 6.

      Movimento do jogador

      9:42

    • 7.

      Salto do jogador

      6:04

    • 8.

      Efeitos de salto do jogador

      7:39

    • 9.

      Camadas de configuração de snap 2D

      5:56

    • 10.

      Widget de tradução 2D

      3:13

    • 11.

      Salto pela plataforma (parte 1)

      7:11

    • 12.

      Salto pela plataforma (parte 2)

      16:22

    • 13.

      Plataforma em movimento

      15:20

    • 14.

      Plataforma de lançamento (parte 1)

      19:25

    • 15.

      Plataforma de lançamento (parte 2)

      16:33

    • 16.

      Componentes de captação de moedas

      8:50

    • 17.

      Script de captação de moedas 1

      5:01

    • 18.

      Controlador de jogadores

      3:26

    • 19.

      Script de captação de moedas nº 2

      18:20

    • 20.

      Concorrência de som de captação de moedas

      3:49

    • 21.

      Barra de fogo (parte 1)

      18:31

    • 22.

      Barra de fogo (parte 2)

      19:57

    • 23.

      Layout de HUD

      17:46

    • 24.

      Exibição HUD

      2:38

    • 25.

      Vinculações HUD

      8:36

    • 26.

      Biblioteca de funções do Blueprint

      4:50

    • 27.

      Interface de blueprint

      1:47

    • 28.

      Widget de exibição de pontos BP

      2:38

    • 29.

      Animação do widget de exibição de pontos

      8:58

    • 30.

      Classe do ator de exibição de pontos BP

      9:07

    • 31.

      Função Adicionar pontos

      2:13

    • 32.

      Base de blocos

      12:13

    • 33.

      Block quebrável

      13:52

    • 34.

      Block coin

      11:39

    • 35.

      Block coin

      12:26

    • 36.

      Bloco falso quebrável (moeda dentro)

      16:17

    • 37.

      Bloqueio? (Moeda dentro)

      1:35

    • 38.

      Bloco da moeda invisível

      9:54

    • 39.

      Caixa de moedas em bloco

      11:44

    • 40.

      Flor de fogo de bloco n.º 1

      13:48

    • 41.

      Flor de fogo de bloco n.º 2

      5:49

    • 42.

      Transformação de jogador no Flower de fogo

      18:55

    • 43.

      Plano de fogo

      7:03

    • 44.

      Atire bolas de fogo (básico)

      13:02

    • 45.

      Atire bolas de fogo (avançado)

      17:48

    • 46.

      Componentes e funções do bloco base

      5:40

    • 47.

      Etiqueta de bloqueio infantil e ator infantil

      2:45

    • 48.

      Mapa do movimento da câmera

      2:03

    • 49.

      Recurso de feedback forçado

      2:21

    • 50.

      Materiais e sons do P-Block

      4:41

    • 51.

      Blueprint de Bloco P

      8:13

    • 52.

      Roteiro de bloco P (parte 1)

      15:44

    • 53.

      Roteiro de bloco P (Parte 2)

      4:59

    • 54.

      Correções de erros no Bloco P (Parte 1)

      6:22

    • 55.

      Correções de erros no Bloco P (Parte 2)

      9:16

    • 56.

      Correções de erros no Bloco P (Parte 3)

      3:59

    • 57.

      Mapa do Goomba

      12:08

    • 58.

      Goomba Damages Player

      6:44

    • 59.

      Destrua um Goomba via Stomp

      15:45

    • 60.

      Destrua o Goomba via Fireball

      4:21

    • 61.

      Goomba Patroller (Parte 1)

      6:05

    • 62.

      Goomba Patroller (Parte 2)

      14:46

    • 63.

      Procurador de Goomba

      10:08

    • 64.

      Mapa de tubo de distorção

      11:33

    • 65.

      Script de construção de tubo distorcido

      6:23

    • 66.

      Entradas de tubo de distorção

      7:26

    • 67.

      Script de tubo de distorção 1

      11:42

    • 68.

      Script de tubo de distorção 2

      10:52

    • 69.

      Script de tubo de distorção 3

      11:19

    • 70.

      Conexões de tubos de distorção

      7:07

    • 71.

      Blueprint do modo de jogo

      6:12

    • 72.

      Blueprint de ponto de verificação

      10:21

    • 73.

      Script de ponto de verificação

      12:21

    • 74.

      Modo de jogo — script de respawn

      9:09

    • 75.

      Sequência de morte do jogador 1

      9:34

    • 76.

      Sequência de morte do jogador 2

      9:52

    • 77.

      Sequência da morte e o P-Bloco

      6:03

    • 78.

      Atualize as vidas dos jogadores

      11:41

    • 79.

      Risco de morte instantânea

      5:14

    • 80.

      Mapa do pólo de bandeira

      17:55

    • 81.

      Roteiro de pólo de bandeira n.º 1

      15:55

    • 82.

      Roteiro de pólo de bandeira n.º 2

      12:19

    • 83.

      Roteiro de pólo de bandeira 3

      9:52

    • 84.

      Roteiro de pólo de bandeira 4

      10:49

    • 85.

      Roteiro de pólo de bandeira n.º 5

      14:42

    • 86.

      Blueprint de configurações de nível

      9:26

    • 87.

      Script de configurações de nível nº 1

      10:24

    • 88.

      Script de configurações de nível 2

      12:29

    • 89.

      Script de configurações de nível 3

      7:00

    • 90.

      Configurações de nível e o bloco P

      5:43

    • 91.

      Configurações de nível e poste de bandeira

      10:07

    • 92.

      Polo de bandeira e bloco P

      4:48

    • 93.

      Transição de nível

      16:21

    • 94.

      Nuvens

      16:17

    • 95.

      Peças de nível

      6:47

    • 96.

      Acessórios de nível e ajuste da câmera

      11:58

    • 97.

      Nível do menu principal

      2:14

    • 98.

      Layout do menu principal

      10:52

    • 99.

      Script do menu principal

      10:31

    • 100.

      Animações do widget do menu principal

      12:16

    • 101.

      Interação do controlador do menu principal

      3:03

    • 102.

      Layout do menu de pausa

      7:35

    • 103.

      Script do menu de pausa

      13:32

    • 104.

      BBONNUS - Jogador sprint

      5:11

    • 105.

      BBONNUS - Dilatação de tempo da flor de fogo

      3:12

  • --
  • 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.

368

Estudantes

3

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ê!

Na aula, o designer de videogames e educador, Sr. Wondra ensina todos os conceitos, habilidades e técnicas essenciais para dominar o Unreal Engine 5 e criar um projeto de jogo simples.

Neste curso, você aprenderá:

  • Como configurar e criar um projeto no Unreal Engine
  • Como construir um nível 2D usando objetos 3D
  • Como configurar uma câmera de rolagem lateral
  • Como configurar a mecânica de movimento de um personagem
  • Como criar objetos interativos usando Scripts de Blueprint
  • Como criar poderes e habilidades especiais de jogadores
  • Como implementar uma IA de inimigo simples
  • Como criar um sistema de pontos de verificação
  • Como reproduzir um jogador
  • Como criar um HUD funcional
  • Como criar menus interativos
  • Como criar uma maneira dinâmica de implementar “Configurações de nível” (personalizando músicas e limites de tempo por nível com rapidez!)
  • Como arquitetar um projeto de jogo dentro das configurações de projeto do Unreal

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á trabalham com a Unreal (querem aprender essas ferramentas)
  • Conversões de Unity
  • Educadores (procurando um 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 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 promocional: Neste curso, aprenderemos como usar o Unreal Engine Five para criar e roteirizar um jogo no estilo Mario com rolagem lateral Meu nome é Greg Andro. Nos últimos 20 anos, trabalhei como designer de jogos profissional e professora. Ao longo dos anos, ensinei a milhares de estudantes satisfeitos o campo do design de jogos, tanto online quanto na sala de aula física. Neste, aprenderemos como criar captadores, plataformas móveis, plataformas saltitantes, blocos interativos, inimigos, power-ups, canos, postos de controle, respostas, configurações de nível, um Hud, menu principal, menu Paz Quase tudo o que você precisa para começar a criar qualquer projeto de jogo. Este curso é para todos, desde o jovem aspirante a designer de jogos até o profissional da indústria da temporada e qualquer pessoa intermediária Começaremos do início, supondo que você não saiba nada No final, este curso servirá como um recurso valioso. Você pode consultar repetidamente, ver o que você é capaz de aprender e criar. Eu desafio você a experimentar este curso e ver se não é a melhor experiência educacional que você já teve. Nos vemos lá dentro. 2. Crie um projeto: Tudo bem, vamos começar aqui criando um novo projeto dentro do lançador da Epic Games Agora, deve-se observar que no Epic Games Launcher, temos a opção Unreal Engine selecionada À esquerda e na parte superior aqui, temos a guia da biblioteca selecionada. Então é aí que estou no lançador da Epic Games agora para acessar diferentes versões do motor, ou para adicionar uma nova versão do motor, você pode clicar neste botão amarelo de adição aqui data de hoje, eu tenho 5.21. Essa é a versão mais recente do motor No entanto, observe que, no futuro, Unreal sempre terá versões mais novas, mais recentes e melhores do mecanismo que você pode usar para criar esse projeto Basta usar a versão mais recente, mas vou usar a 5.21 para criar este projeto Agora, para criar nosso projeto, vou clicar no botão Iniciar. E, eventualmente, você deve ver esta janela do navegador do Unreal Project Desde que você ainda não tenha um projeto existente e ainda não estivesse carregando último projeto na inicialização, basicamente, essa caixa não estava marcada no momento. Aqui você pode ver meus projetos existentes. Por trás do meu projeto recente no qual trabalhei, faremos um projeto de jogo Então, vamos selecionar os jogos. Aqui, você pode escolher o tipo de modelo de projeto com o qual gostaria de começar. Para isso, usaremos o modelo de terceira pessoa para nos ajudar a começar a controlar um personagem em terceira pessoa. Este será um projeto básico. Nossa plataforma alvo será o desktop. Queremos manter tudo como está aqui, rastreando. Não vamos realmente nos concentrar em nada desse tipo de coisa para este projeto. Você pode verificar isso ou não, mas para garantir nossos projetos sejam carregados em tempo hábil, vou deixar isso fora do local do projeto. Onde você quer que isso seja armazenado no seu computador? Vou deixar o meu em meu único drive e vou ter nome do meu projeto Platformer Agora você não pode ter nenhum espaço aqui. Os sublinhados bastarão. Mas se você adicionar um espaço, ele gritará com você. E quando você tiver o nome do seu projeto e seus jogos de localização , em terceira pessoa, vamos clicar em Criar. Agora, uma vez que isso tenha terminado, eventualmente você verá uma janela como esta. Bem-vindo ao Unreal Engine. Você deve ver o nome do seu projeto aqui no canto superior direito. Aí está, plataforma. E eu vou fazer algumas coisas aqui para fins de qualidade de vida. Vou entrar em uma janela aqui no canto superior esquerdo, clicar na janela e carregar um layout. Eu quero fazer o layout clássico do UE four. Esse é o que eu prefiro e acho que também é melhor para iniciantes. Ao clicar aqui, o editor será reiniciado. E o que ele fez foi apresentar esse navegador de conteúdo aqui embaixo. Falaremos sobre diferentes partes do editor ao longo de todo o projeto. Mas o navegador de conteúdo é essencialmente sua gaveta de guloseimas que você pode usar para construir seu nível aqui, este é o nosso O nome do nosso nível inicial é mapa em terceira pessoa. Estaremos criando o nosso próprio, mas é isso que você verá em um nível inicial Agora, outra coisa que eu gostaria de fazer imediatamente é criar algumas pastas aqui em nosso navegador de conteúdo que serão específicas para este projeto. Eu só vou trazer isso à tona um pouco. Você pode pegar essas janelas. Basta colocar meu mouse aqui. E eu vou entrar em colapso onde diz Starter Content. Vou clicar na minha pasta de conteúdo, clicar com o botão direito nela e criar uma nova pasta. Vou ligar para esse jogo plataforma e pressionar Enter Em seguida, vou clicar com o botão direito na minha pasta Plataforma. E vou criar mais algumas pastas. Clique com o botão direito do mouse em nova pasta, essa primeira será chamada de áudio. Vou clicar com o botão direito do mouse novamente na pasta da plataforma, Nova pasta, e vou escrever clicar novamente na pasta da minha plataforma e vou chamá-la de Texturas Agora, pessoalmente, gosto de ter minhas pastas facilmente identificáveis quanto à pasta com a qual estou trabalhando Então, vou escrever, clique na minha plataforma ou pasta e adicionarei uma cor para isso. Ao definir a cor, farei algo como uma cor verde desagradável, porque ela realmente se destacará Agora eu quero adicionar algum conteúdo a essas pastas. Agora, adicionadas a este projeto, algumas pastas de conteúdo, texturas, fontes e áudios em formato de arquivo zip Eu os tenho na minha seção de downloads agora , apenas para mostrar esse processo. Essas são as pastas das quais estou falando agora, essas são pastas compactadas Para extrair as guloseimas de dentro, tudo o que você precisa fazer é clicar com o botão direito em qualquer uma delas e escolher Extrair tudo Depois de fazer isso, a pasta compactada começa a ficar assim Pasta dentro do. É aqui que você encontrará as guloseimas. Vou começar com texturas aqui. Vou apenas manter pressionado controle e a roda do mouse para poder clicar com o botão esquerdo e arrastar. Vou destacar tudo isso, agora vou clicar com o botão esquerdo e arrastar todos esses, todos os 31, todos os 31 minha pasta Texturas Depois de ver o botão de adição, você pode soltar e ele começará a adicionar todos eles. Isso importará todos eles. Vamos usá-los em todo o projeto. Então eu vou fazer o mesmo com minhas fontes. Selecione minha pasta de fontes. Agora você pode ver o caminho aqui. Como alternativa, posso ir para o jogo de plataforma e simplesmente colocá-los diretamente nessa pasta Vou voltar aqui para Downloads Fonts. Vou destacar todos esses cliques com o botão esquerdo e arrastá-los para as fontes. Vai dizer: você gostaria de criar um novo recurso de fonte para tudo isso? Vamos apenas dizer sim, vamos nos inscrever para todos e clicar em sim. OK. Em seguida, vou voltar para minha plataforma ou pasta. Mais uma vez, vou voltar aos meus arquivos de áudio. Clique duas vezes aqui. Vou encontrar alguns áudios relacionados a esse projeto. Há vários arquivos de áudio, podemos adicionar mais à medida que avançamos aqui. E quem sabe, talvez nem usemos tudo isso, mas isso nos ajudará a começar. Clique com o botão esquerdo e arraste-o para a pasta de áudio. E você notará que, para todos esses arquivos diferentes, há um asterisco ao lado de todos eles que mostra que eles ainda não foram salvos Para salvar tudo isso, tudo o que precisamos fazer aqui é clicar em salvar, tudo o que eles dirão: você quer salvar todos esses ativos que acabou de adicionar? Nós vamos dizer que sim. Então, como uma boa medida aqui, vamos salvar nosso projeto. Se estivermos em arquivo, também podemos salvar todos os arquivos. Agora nosso projeto está salvo e estamos prontos para começar. Agora, só para voltar às coisas, criamos nossa plataforma ou projeto. Se eu voltasse ao lançador de jogos da Epic e depois voltasse para a seção da biblioteca Unreal Agora podemos ver que temos nosso projeto de plataforma aqui, embora sem nenhuma imagem em miniatura Mas para voltar ao seu projeto, digamos que devêssemos encerrá-lo, tudo o que precisaríamos fazer é entrar Unreal Engine Library e você poderia clicar duas vezes nela para relançar Tudo bem, pessoal, isso vai bastar para este vídeo. Nos vemos na próxima. 3. Crie um nível: Ok, vamos começar nosso projeto aqui criando um novo nível, bem como configurando a câmera de rolagem lateral para nosso personagem Então, vamos cuidar do nível primeiro. E podemos criar um novo nível em vez do nosso mapa de terceira pessoa padrão, entrando no canto superior esquerdo, onde diz arquivo. Vamos escolher um novo controle de nível fazer com que você também chegue lá. Essa combinação de teclas de atalho aqui. Temos alguns modelos que podemos escolher. Eu vou escolher esse novo nível básico. Vou selecionar isso porque quero ter um fundo de céu. E eu vou criar, agora, no momento em que eu fizer isso, vamos trocar nosso mapa em terceira pessoa para um nível Sem título Agora se chama Sem título porque ainda não o salvamos. Nós não lhe demos um nome. Podemos salvar nosso nível clicando no ícone do disco aqui. Ele nos perguntará um local onde gostaríamos de salvar esse nível. Bem, vamos entrar na pasta da nossa plataforma. Eu só vou expandir isso. Vou clicar onde diz plataforma. Vamos criar uma pasta totalmente nova. Vou chamar isso de Levels. Com meu diretório de níveis de plataforma selecionado, vou chamar esse nível, vou chamá-lo apenas de LV underscore 01 para o nível um, vá em frente e clique em E no momento em que fazemos isso, agora você pode ver no canto superior esquerdo, isso agora é conhecido como sublinhado de nível 01 Agora, outra coisa que eu gostaria de fazer imediatamente é configurar meu projeto para que, se eu fechasse o Unreal aqui e depois o abrisse novamente, digamos amanhã, ele automaticamente abriria esse nível novamente Agora, do jeito que está, atualmente abrirá esse mapa em terceira pessoa. Se fecharmos o motor e o abrirmos novamente, onde podemos mudar isso? Bem, nas configurações do nosso projeto, é onde podemos escolher qual mapa é aberto por padrão. Quando abrimos o editor, alguns lugares para acessar as configurações do seu projeto. Um está no canto superior direito aqui, e vou ampliá-lo momentaneamente Está aí mesmo. Além disso, você pode acessá-lo acessando o menu Janela, aqui em cima. Deixe-me sair de lá. Vá também. Desculpe, não é janela. Eu quis dizer editar. Queremos entrar em Editar e escolher Configurações do projeto, não Janela. E aqui vamos nós. Temos nossas configurações de projeto e, se eu entrar em Mapas e Modos, deixe-me encaixar as configurações do projeto na parte superior aqui. Mapas e modos. Aqui temos nosso mapa de inicialização do editor. Atualmente, está mapeado para nosso mapa em terceira pessoa. Vamos trocar isso por B. Vou continuar até o nível 01 Agora não há nenhum botão Salvar nem nada aqui, então você pode simplesmente fechar isso. E isso fará com que, quando você tentar abrir seu projeto amanhã, ele se abra para o nível um por padrão. Tudo bem, a próxima coisa que eu quero fazer é remodelar um pouco nosso nível aqui para que seja mais uma plataforma compacta. No momento, isso é de natureza muito quadrada. Então, o que eu quero fazer é mudar da minha visão em perspectiva aqui para uma visão de cima para baixo. E o que eu vou realmente fazer agora é clicar nesse botão no canto superior direito, aqui, ele meio que tem o ícone da grade. Quero acessar minha vista superior aqui. Agora, minha vista superior está em estilo wireframe. E vou clicar aqui para maximizar isso. E depois diminua o zoom com minha roda de rolagem. Se eu fosse selecionar essa coisa roxa aqui, essa é aquela plataforma gigante que vemos em nossa visão em perspectiva. Então, se eu quisesse minimizar isso momentaneamente. Aqui está aquela plataforma gigante da qual estou falando agora, quando estamos trabalhando neste nível de rolagem lateral de uma visão de cima para baixo Eu quero que isso flua essencialmente da esquerda para a direita. Então, tudo o que vou fazer é esmagar essa plataforma para ficar um pouco mais fina O que você pode fazer é com a plataforma selecionada, se você pressionar a barra de espaço, alternar entre o modo de movimento, modo de movimento, modo de rotação, modo rotação e modo de escala E todos esses três botões trocarão você aqui na parte superior da sua janela de visualização Eu gosto de usar uma barra de espaço para alternar entre eles. Agora vou para o modo de escala e vou pegar essa alça verde aqui. E eu vou simplesmente esmagar isso, algo assim Não vou ser muito preciso com ela do que com minha alça vermelha, vou apenas alongá-la um pouco Essencialmente, queremos que nossos jogadores comecem aqui e depois se movam para a direita. Isso é de uma visão de cima para baixo. Agora vamos minimizar nossa visão de cima para baixo. Vá aqui, vamos para nossa visão em perspectiva. Quero deixar isso na visualização de quatro painéis agora. Você pode ver de cima para baixo que aquela alça verde está apontada para baixo. Então isso significa que, na minha visão em perspectiva , para combinar com essa visão de cima para baixo, vou segurar o botão direito do mouse e usar W, S e D para escolher esse ângulo aqui que corresponde um pouco ao que vejo no painel superior. Ok, então é assim que vamos trabalhar. Vou ver isso em tela cheia agora. E agora o que eu quero fazer é colocar o que é conhecido como ator principal de jogador à esquerda aqui. Para indicar o local onde eu quero que meu jogador apareça, basta clicar no botão play Para fazer isso, precisamos de um ator iniciante. Isso pode ser encontrado no painel de atores locais. Agora, se você não tem o painel de atores locais aqui, talvez você tenha saído dele, algo parecido Você pode vir aqui, você tem o painel de atores do lugar. E com essa guia selecionada na guia básica, você pode encontrar um ator inicial do jogador. Vá em frente e arraste isso para a nossa parte de visualização. Eu só vou apertar a tecla para usar minha ferramenta de movimento. E se eu a colocar no ar dessa forma, posso pressionar a tecla End, que é a tecla END localizada ao lado da tecla delete para encaixá-la no chão Agora vou ser bem específico sobre onde quero que isso seja colocado no plano Y. Esse é o plano verde aqui no meu painel de detalhes, onde posso encontrar todos os vários detalhes relacionados ao meu ator selecionado. Vou definir a localização y, a localização verde lá como zero. Então, vou selecioná-lo, pressionar zero e depois pressionar Enter. E veja o que acontece com meus jogadores. Comece como ator, ele vai pular para aquele local. Isso vai ser bom o suficiente por enquanto. Agora, se eu passar para a posição de ator inicial do meu jogador, posso ver essa seta azul aqui, ou seja, que indica a direção nosso personagem estará voltado quando entrar no nível Agora, se eu clicar no botão verde de jogo aqui em cima, você pode ver que meu personagem apareceu mais ou menos naquele local Agora estou apenas pressionando botão direito do mouse e girando em torno dele Na verdade, depois de clicar na janela de exibição, se você apenas mover o mouse, poderá deslocar a câmera assim Agora, para uma plataforma de rolagem lateral, isso não é ideal para um jogo de plataforma com rolagem lateral Queremos que a câmera se mova para trás e queremos que a câmera seja classificada, bloqueada nessa visão lateral. Então é disso que vamos cuidar no próximo ano. 4. Configuração de câmera de jogador: Agora, quando entramos no jogo, só então, aparecemos como personagem de terceira pessoa no local inicial de nossos jogadores Agora, a razão pela qual aparecemos como personagem de terceira pessoa é porque esse é o personagem padrão que estamos usando Para este modelo específico. Estamos usando o modelo de terceira pessoa. Agora, isso pode ser encontrado nas configurações do nosso projeto, e você pode acessar as Configurações do projeto no canto superior direito, aqui mesmo, onde diz Configurações. Se eu clicar em Configurações e acessar as Configurações do meu projeto, temos uma seção no lado esquerdo conhecida como mapas e modos. E se eu selecionar isso, podemos encontrar nossa classe de peão padrão, que é a classe de personagem, se você quiser, que estamos controlando em nosso jogo como personagem de terceira pessoa E podemos navegar até esse ativo clicando no ícone dessa pasta aqui. Isso navegará até esse ativo no navegador de conteúdo. Eu farei isso clicando com o botão esquerdo sobre ele. E você pode ver onde esse ativo reside nas pastas da pasta de esquemas em terceira pessoa com todo o conteúdo Agora vamos trabalhar aqui para começar a ajustar a câmera do nosso personagem Então, vamos clicar duas vezes sobre isso para abri-lo. Ao abrir isso, usamos como padrão esta guia de gráfico de eventos aqui É aqui que reside todo o script, onde reside todo o código relacionado a esse personagem Vamos ignorar isso agora e ir para a guia Viewport Em nossa guia Viewport, podemos ver todos os diferentes componentes que compõem esse esquema Temos nosso modelo de personagem, que é representado por esse componente de malha. Também temos essa câmera. Essa é a lente pela qual estamos vendo nosso personagem atualmente. Nossa câmera está atualmente conectada a uma câmera, boom. O que é realmente conhecido como componente de braço de mola. Podemos identificar essa relação de apego sempre que vemos esse No momento, a câmera seguinte está conectada à nossa câmera, boom. Agora, o que queremos fazer aqui é fazer algumas modificações em nossa câmera, boom. Nosso componente de braço de mola. Você pode pensar nesse componente do braço de mola conhecido como nossa câmera. Boom, esse é o nome desse componente como bastão de selfie Atualmente, o que queremos fazer é puxar esse bastão de selfie para trás Agora lembre-se, nossa câmera está conectada à nossa câmera. Estrondo. Aqui, atualmente, o comprimento do braço, o comprimento do nosso autobastão é de 300 unidades irreais Queremos alongar isso um pouco. Tenho alguns valores em mente aqui para vários parâmetros. Vamos definir isso para 1.500 e, ao pressionar Enter, veremos que nossa câmera está lá agora Não queremos ter nossa câmera atrás do nosso personagem, queremos que ela fique de lado aqui Então, vamos desmarcar algumas caixas aqui, abaixo das configurações da câmera Vamos desmarcar herdar o tom e herdar a guinada. Atualmente, se fôssemos jogar nosso jogo, deixe-me voltar e jogar bem rápido. Vou clicar na minha janela de visualização. Você pode ver que estou muito atrás do nosso personagem agora porque coloquei aquele bastão de selfie bem atrás Estou clicando na minha janela de visualização e posso mudar a inclinação da nossa câmera Essa é a esquerda e a direita, assim como o campo, a subida e a descida. E eu não quero fazer isso. Eu quero ter a câmera essencialmente trancada aqui. Vou apertar a tecla Escape e sair daqui. E eu vou desmarcar herdar tom e herdar você. Agora, se eu tiver que voltar e jogar e clicar na minha janela de visualização, não consigo realmente modificar a posição da nossa câmera Estamos trancando isso no lugar. Em seguida, quero trazer essa câmera para o lado. Não quero que fique para trás. O que eu vou fazer é mudar a rotação da nossa câmera. Estrondo. Aqui mesmo na rotação, a rotação z. Eu quero definir isso para menos 90. Pressione Enter. E você pode ver agora que ela salta a câmera para cá, mais ou menos aquela visão lateral Agora, se eu clicar em Jogar e clicar na minha janela de visualização, você pode ver que agora ela rastreia nosso personagem Agora, nossos controles W, AS e D ficarão um pouco instáveis Na verdade, eles vão ficar um pouco atrasados. Não se preocupe Vamos corrigir isso aqui em apenas um momento. Mas há algumas outras configurações da câmera que eu quero cuidar, já que já estamos aqui. Uma coisa que eu quero fazer é habilitar alguma perna da câmera. Então, mais uma vez, com a lança da câmera, aquele componente do braço de mola selecionado, queremos marcar esta caixa para ativar a perna da câmera. Agora, normalmente você não quer uma câmera de pernas compridas, mas se ela for muito apertada para seguir nosso personagem , pode ser um pouco chocante Então, isso vai suavizar um pouco o movimento da câmera Observe que, uma vez ativada, ela ativará um valor de velocidade da perna da câmera. Vou deixar isso às dez agora, mas à medida que avançamos neste curso, saiba que você pode brincar com isso para ter mais ou menos perna de câmera. E outra caixa de seleção que quero desmarcar é este teste de colisão Agora, atualmente, ele está ativado e vou deixá-lo ligado por um momento para mostrar o que isso faz. Vou voltar ao meu nível muito rapidamente e você não precisa seguir esta parte. Eu só vou demonstrar. Vou trazer um dragão em forma de cubo, coloque isso aqui E eu simplesmente vou pressionar a barra de espaço algumas vezes e criar esse tipo de bloqueador de primeiro plano, se você quiser Então, teremos nosso personagem correndo para a esquerda ou para a direita aqui e nossa câmera será impedida de ver nosso personagem aqui. Com isso, faça a verificação de colisão. Faça o teste de colisão. Verifiquei se eu deveria clicar em reproduzir e vou pressionar o botão WK para seguir em frente Veja o que acontece com nossa câmera. Vai pular na frente desse jeito. Isso é um pouco chocante. Se você não quer esse efeito, o que podemos fazer é com aquela câmera, boom, selecionada. Vamos desmarcar isso para que, quando jogarmos, a câmera agora funcione assim Não vai pular na frente daquela parede. Isso será útil no caso de construirmos qualquer tipo de decoração em primeiro plano enquanto construímos nosso nível Tudo bem, vamos continuar e salvar esse ativo. E isso vai bastar para este vídeo. No próximo vídeo, vamos criar algumas personalizações em nossa câmera para que você possa fazer o que quiser, personalizá-la ao seu gosto. Nos vemos lá. 5. Câmera personalizada de jogador: Bem-vindos de volta a todos. Agora que temos nossa câmera de rolagem lateral instalada, vamos personalizá-la um pouco Vou mergulhar novamente no projeto do meu personagem em terceira pessoa aqui Aqui está o caminho para isso, caso você pule, planta em terceira pessoa, personagem em terceira pessoa E vamos começar aqui adicionando algumas variáveis. As variáveis contêm os dados que podemos acessar nos scripts. E vou adicionar alguns tipos diferentes de variáveis aqui, começando por entrar em variáveis, apertando o botão de adição Vamos adicionar um chamado pode ajustar a câmera em tempo real. Em seguida, vou adicionar outra variável, e vou chamá-la Camera Distance from Player. Vou mudar isso de uma variável booleana, que contém dados verdadeiros e falsos, para uma variável flutuante Um float é um número com um decimal, 0,2 tipos diferentes de variáveis que vamos adicionar Neste, vou adicionar outra variável, será chamada de deslocamento X da câmera Agora, o que podemos fazer aqui é clicar com o botão direito do mouse nessa variável e escolher criar uma nova. Mas eu vou apenas duplicar este. Control plus D é a tecla de atalho para isso. Este será chamado de deslocamento Y. E é por isso que eu escolhi duplicá-lo. Como vou apenas alterar um pouco do texto aqui com a opção selecionada, vou fazer o controle D para duplicar isso E isso será chamado de deslocamento Z. Seremos capazes de compensar isso em qualquer uma das direções diferentes, Y ou Z. E então eu duplicarei esse controle mais D, embora eu vá sobrescrever Isso será chamado de velocidade da perna da câmera. Tudo bem, e com todas essas variáveis, vou clicar nesses ícones do globo ocular Agora, o que isso faz é para cada um deles, quando clicamos neste ícone do globo ocular, e atualmente eu tenho a velocidade da perna da câmera como minha variável selecionada no painel de detalhes Verificar se o globo ocular está ativado faz com que essa variável seja editável por instância Da mesma forma, se eu clicar nisso, você verá que o globo ocular agora está fechado Duas maneiras diferentes de tornar suas variáveis editáveis por instância clique aqui ou clique no globo ocular Então, se eu clicar novamente, esse globo ocular está de volta O que isso significa mesmo? Bem, o que isso significa é que essa variável agora estará disponível para edição quando voltarmos ao editor. E vamos dar uma olhada nisso aqui em apenas um momento. Agora vou usar essas variáveis em um script. Eu vou escrever aqui em apenas um momento. Mas antes de fazer isso, quero dar a essas variáveis um valor padrão. E antes que eu possa fazer isso, como vemos no painel de detalhes, preciso compilar nosso plano antes de poder dar a ele um valor padrão Então, vamos entrar no canto superior esquerdo aqui e compilar nosso plano Começando com nossa variável mais alta, podemos ajustar a câmera em tempo real Vou deixar isso como desmarcado. Para a distância da câmera do jogador, vou definir isso como 1.500. Você notará que esse valor corresponderá aos estrondos nossa câmera, ao comprimento do braço alvo Selecionando nossa variável novamente, vou usar o deslocamento da câmera Vamos definir isso como zero deslocamento Y da câmera. Vou deixar isso como zero deslocamento da câmera. Vou definir isso para 150. E então a velocidade da perna da câmera, vou definir isso para dez. Agora você notará a velocidade da perna da minha câmera aqui, o valor de dez, que vai coincidir com a minha câmera, boom. Esse componente do braço de mola corresponderá a esse valor aqui. Velocidade da perna da câmera. E eu queria deslocar minha câmera na direção Z em 150 Então você vai ver isso em jogo aqui em apenas um momento. Ok, com essas variáveis definidas, vamos sair da guia Viewport para o gráfico de eventos e usar algumas dessas variáveis Agora eu quero fazer cada quadro, eu quero atualizar a posição da nossa câmera a cada quadro. Então, vou usar um marcador de evento. Mantenha pressionado o controle e a roda do mouse para ampliar o gráfico aqui. O botão direito do mouse girará em torno desse enxerto. Clicando com o botão direito do mouse, vou digitar a marca de eventos. Agora isso dispara todos os quadros. E o que vou fazer é arrastar até aqui e trazer um nó de ramificação. A primeira coisa que faremos antes de continuarmos além daqui é verificar uma condição. A condição que eu quero verificar é poder ajustar a câmera em tempo real. Posso arrastar e soltar isso diretamente no pino de condição para conectá-lo automaticamente dessa forma. Se isso for verdade, queremos fazer algo com nosso braço de mola. Vou trazer nosso componente de braço de mola , chamado câmera, Boom. Vamos arrastar isso para pegá-lo. Vou sair da ramificação verdadeira aqui e digitar localização relativa definida. Eu quero fazer isso para minha câmera, boom. E você pode ver aqui , entre parênteses, mostra o boom da câmera Então, se eu trouxesse esse nó de função, veja isso, ele traria minha câmera, boom, imediatamente. Agora, eu já tinha trazido isso. Eu só queria mostrar que você poderia fazer isso. Mas vou deletar isso. Não precisava. Eu poderia ter deletado esse intestino também. E vamos colocar isso como alvo. É isso que queremos atualizar a cada quadro. Só vou mover isso tudo para cá. Acabei de clicar com o botão esquerdo e arrastar tudo isso até aqui. Agora eu quero definir um novo local para isso. Cada quadro que vou arrastar para trás desse novo local e digitar make vector Queremos poder atualizar as posições X, y e Z disso. Cada quadro que vou arrastar na câmera X é deslocado para o X, o deslocamento Y da câmera para o Y e o deslocamento para o Z. Você pode movê-los. Como você quer organizar isso, tudo bem. Agora vamos continuar o fluxo de execução aqui. Fazer mais do que apenas definir a posição da nossa câmera. Estrondo. Aqui vou trazer a velocidade das pernas da nossa câmera. Se eu arrastar isso e soltar, posso obtê-lo ou configurá-lo Quero obter as informações contidas nessa variável. Então eu vou sair daqui para dentro, na verdade eu não vou me arrastar para lá. Vou arrastar nossa câmera, boom. Vamos sair daqui e digitar a velocidade da perna da câmera. Queremos definir a velocidade da perna da nossa câmera. Então, o que estamos essencialmente dizendo aqui é, ei, nossa câmera, boom. Queremos poder atualizar a velocidade da perna de nossa câmera com qualquer valor que esteja aqui. Então, estamos nos comunicando. Basicamente, estamos dizendo: “ Ei, câmera, boom”. Em vez de ter esse padrão de dez, vamos torná-lo qualquer que seja esse valor. Atualmente, são dez. Mas poderemos ajustar isso. Vamos manter esse fluxo de execução em andamento. Então, a próxima coisa que eu quero fazer é arrastar para fora da minha câmera, Boom. Mais uma vez. E eu quero aumentar o comprimento do braço alvo. Eu quero ser capaz de definir o comprimento do nosso braço alvo mais uma vez. Se eu fosse selecionar nosso componente de lança de câmera aqui, esse componente de braço de mola, teríamos esse comprimento de braço alvo. Atualmente, está definido para 1.500 Vamos manter esse fluxo de execução funcionando aqui E eu posso atualizar isso a cada quadro conectando nossa câmera Onde está a distância da câmera do player, diretamente nessa entrada. Esse será nosso roteiro final. Vou enquadrar isso. Em seguida, vou clicar com o botão esquerdo do mouse e arrastar uma seleção marcante em torno de todo esse tipo, a tecla C para abrir uma caixa de cometas, que chamarei de permite que você personalize chamarei de permite que você temporariamente temporariamente as configurações da câmera durante o Tudo bem, vamos continuar e compilar nosso plano para garantir que nosso código aqui esteja bom. Agora eu vou jogar aqui. Mas eu quero voltar ao meu mapa principal aqui, meu editor de nível principal. E note que eu sou. Acabei de clicar nesses três pontos reproduzidos na minha janela de visualização selecionada E a razão pela qual estou fazendo isso é porque agora estou jogando acabou no esboço O que você verá é que nesta fonte alaranjada amarelada, temos nosso Isso mostra uma geração no Asset quando jogamos nosso jogo. Qualquer coisa em Orange Hears acabou de aparecer. Uma vez que jogamos nosso jogo. Agora posso selecionar nosso personagem em terceira pessoa no painel de detalhes. Você vai notar algo lá embaixo. Temos uma categoria na seção todas chamada padrão. E aqui estão todas as variáveis que acabamos criar e expor ao nosso editor de níveis. Isso é o que aquela instância editável, caixa de seleção, aquele ícone do globo ocular Isso tornou todas essas variáveis aqui acessíveis no editor. E agora o que podemos fazer é atualizar posição da nossa câmera aqui ao vivo enquanto jogamos o jogo. Agora, lembre-se de nosso personagem em terceira pessoa. No momento, estamos prestes a avançar além daqui Somente se pudermos ajustar posição da câmera em tempo real se essa variável for verdadeira e, por padrão, tivermos que é falsa. Então, vou verificar isso primeiro porque, caso contrário, nenhuma dessas edições aqui embaixo faria nada Eu vou verificar isso e o que você vai ver é imediatamente que a câmera está virada para cima E agora podemos modificar qualquer um desses valores, como a distância da câmera do jogador, basta clicar com o botão esquerdo e arrastar. E assim que eu lanço, você pode ver que ele atualiza isso. Eu poderia definir isso para algo como 500, pressione Enter, atualize para que isso seja atualizado ao vivo. Clicar nesse botão Voltar fará com que ele volte ao valor padrão. Você pode realmente ter uma ideia quantidade de personalização que temos para essa câmera em particular Tente configurar o deslocamento Z da câmera para 400, pressionando Enter, você o desloca para cima. Aqui está muita personalização de como você deseja configurar isso, Y, vamos definir isso para 200, pressionar Enter, etc Defina isso como 222, pressione Enter. Você pode mudar isso dessa forma. Muita personalização fina. No entanto, você notará que, quando parar de jogar aqui, voltar aos seus planos e clicar nas várias variáveis, nenhum desses valores realmente foi atualizado Eles são todos iguais aos que definimos por padrão. Agora, o motivo pelo qual eu rotulo isso permite que você personalize temporariamente as configurações da câmera é porque se você estiver alterando as configurações da câmera aqui e disser que gosta de alguma mudança, deixe-me, assim como meu personagem em terceira pessoa, mais uma vez, você quer que a distância seja 1.000. O que você precisa fazer é lembrar esses valores ou copiar esses valores para que, quando parar de jogar jogue e volte para seu personagem em terceira pessoa, você pode inserir um novo valor padrão. Então, só para esclarecer mais uma vez, quando você está jogando e atualizando qualquer um dos valores associados à sua câmera, isso é apenas temporário até você parar de jogar. E quando você parar de jogar, se gostar desses valores, deverá atualizá-los aqui no próprio editor para que essas alterações ocorram permanentemente. Tudo bem, aí está. uma boa câmera personalizada, faça o que quiser. Isso bastará para este vídeo. Nos vemos na próxima. 6. Movimento do jogador: Tudo bem, bem-vindos de volta a todos. Neste vídeo, nosso objetivo é aperfeiçoar as noções básicas de como nosso personagem se move dentro do jogo Para isso, vamos trabalhar dentro do nosso personagem de terceira pessoa da BP Então, clique duas vezes nesse ativo para abri-lo. E eu só quero fazer alguns ajustes no script de entrada da câmera e no script de entrada de movimento. Agora conecte o script de entrada da câmera. Bem, se eu fosse entrar e jogar agora, não tocaria nem um pouco no mouse e uso a tecla Wkey e a tecla S. Obviamente, esses controles não estão corretos, e eu estou usando W, S e D, eles não estão certos, mas meu personagem está se movendo solidamente em uma direção ou outra No entanto, se eu bater o mouse, e vou bater um pouco o mouse aqui, eu o movo da direita para a esquerda e agora estou usando essas Você pode ver que está meio que me desequilibrando um pouco, correndo em um ângulo O que está acontecendo agora é esse script de entrada da câmera está afetando a direção do nosso personagem. Como isso ainda está configurado para corrigir isso, tudo o que precisamos fazer é simplesmente eliminar esse script Eu poderia deletar tudo isso. No entanto, vou manter pressionada a tecla Alt, Ol, e clicar com o botão esquerdo e isso cortará o fio Agora, se eu entrar e jogar e usar as teclas W, S e D, não importa o quanto eu mova o mouse, meu personagem se moverá solidamente em uma direção ou outra Agora, obviamente, eles não estão se movendo na direção certa. Isso será para nós consertarmos a seguir. Para isso, vamos descer até nossa seção de entrada de movimento. Agora, atualmente temos dois tipos de entradas configuradas, uma para a esquerda, para a direita e para frente e para trás No entanto, isso é um pouco enganador nosso script para frente e para trás aqui é, na verdade, o que queremos usar para ir para a esquerda e para a direita aqui é, na verdade, o que queremos usar para ir para a esquerda e para Esse pequeno roteiro aqui, nós vamos acabar com isso. E isso é porque vamos simplesmente nos preocupar com nosso personagem se movendo para a esquerda e para a direita ao longo do eixo X. E não precisamos nos preocupar com eles se movendo em todas as direções, não precisamos nos preocupar com o eixo Y. Então, vamos acabar com isso. Nós vamos acabar com isso também. Alguns desses são nós de rota aqui embaixo. E isso é um pouco de pirataria, mas farei o possível para descrever exatamente o que pretendemos fazer Só nos preocupamos com a forma como estamos nos movendo ao longo do eixo x. Eu deixei isso intencionalmente ligado por um motivo. Agora, quando estamos em um jogo, temos nosso controle esquerdo em um joystick, por exemplo, podemos pensar nosso manípulo esquerdo sendo dividido em dois eixos Este é o eixo Y, aqui em cima. Ele vai direto para cima e para baixo, e esse é o eixo X. Agora, novamente, só nos preocupamos com o eixo X. Nosso personagem vai correr da esquerda para a direita. E é com isso que nos preocupamos com essa ação de entrada. Como estamos inserindo e como estamos exibindo o movimento de nossos personagens com base em nossa contribuição Isso vai se mover na direção x negativa, e isso vai se mover na direção x positiva. Queremos nosso vetor para frente aqui, nossos personagens voltados para frente com base em sua rotação z. Ou seja, se você desenhasse uma linha reta ao longo de seu personagem, nosso vetor para frente será nosso personagem voltado para frente. Agora, queremos que o valor x da nossa entrada aqui seja a direção real em que nosso personagem se move. Vamos modificar nosso script de forma que, ao acionarmos essa ação, usemos nossas teclas a e D no teclado Ou, inversamente, se você tiver um controlador conectado, leremos o valor x, que é a tecla a e D, ou esquerda e direita em um Nós vamos ser, estamos indo em uma direção positiva ou negativa? E a direção que queremos enviar ao nosso personagem será baseada no vetor de avanço do nosso personagem. Essencialmente, para que direção eles estão voltados. Com essa modificação aqui, isso não vai realmente ser para frente e para trás, eu acho que é, em relação à localização de nossos personagens Mas em termos de como vamos encarar, indo para a esquerda e para a direita, vou rotular isso agora como nossa nova esquerda, direita. Quando nosso valor X for negativo, que significa que estamos pressionando a tecla ou a esquerda no manípulo esquerdo, vamos para a esquerda na tela e quando o valor X emitido pela tecla D ou pela direita no manípulo for positivo, moveremos nosso personagem clicando com o botão direito do mouse direito Agora você pode ver que quando pressiono a tecla, estou me movendo para a esquerda, a tecla D está se movendo para a direita. E eu também tenho um controle conectado, então eu estou apenas pressionando a esquerda no manípulo esquerdo e a direita no manípulo esquerdo aqui para mostrar que Em seguida, quero mostrar onde você pode mexer nos parâmetros de movimento de alguns dos seus personagens E eles podem ser ajustados dentro do componente de movimento do personagem que vive dentro do seu BP, personagem de terceira pessoa Muitos parâmetros podem ser ajustados com esse componente selecionado no painel de detalhes. Não vamos ajustar todos eles, mas vamos ajustar alguns. E vou falar sobre alguns dos mais importantes com os quais muitos designers se preocupam. Agora, o primeiro que eu quero ajustar vai estar bem abaixo. Vou pegar esse controle deslizante aqui. Estamos procurando um movimento interno. Agora só queremos que nosso personagem se mova ao longo do plano X, voltando ao nosso nível aqui. Mais uma vez, se eu tivesse uma visão de cima para baixo, essa é uma visão de cima para baixo do nosso nível. Vamos nos mover ao longo do eixo X. Aqui está nosso pequeno truque aqui embaixo, o eixo X, da esquerda para a direita Não queremos passar para o primeiro plano ou o plano de fundo ao longo do eixo Y, do eixo para cima e para baixo, a fim de garantir que, mesmo quando esbarramos em coisas, não possamos sair da nossa linha a fim de garantir que, mesmo quando esbarramos em coisas, x ali O que vou fazer é dizer que restringiu um avião Sim. E eu quero restringir nosso plano ao longo do eixo y. Eu não quero ser capaz de me mover ao longo do eixo y. Agora, quando eu fizer isso, ele definirá esse valor como um automaticamente. Basicamente, isso significa que você não pode se mover no eixo Y. Você pode se mover no eixo X que está à esquerda e à direita, bem como no eixo Z que está para cima e para baixo. Pulando para cima, talvez, descendo. Tudo bem, então está tudo bem. A próxima coisa que quero mudar são as configurações de rotação de nossos personagens. E para isso eu estou procurando aqui, configurações de rotação do movimento do personagem. Essa taxa de rotação definirá a taxa na qual nosso personagem gira. Se eu clicasse em reproduzir agora mesmo e pressionasse a tecla, ou a tecla, você pode ver que eu não me viro muito rápido e quero virar mais rápido do que isso Então, vou definir minha taxa de rotação aqui como um valor alto ao longo do eixo Z de 2.500. O eixo z é a direção voltada do nosso personagem Imagine uma linha reta passando pelo nosso personagem. Então, queremos girar em torno desse eixo mais rápido nessa taxa, 2.500 Então, agora, se eu clicar em play, pressione a tecla Você pode ver a rapidez com que me virei para lá, a tecla D, etc Então, mexa com isso ao seu gosto. Certifique-se de que você também tenha rotação orientada para o movimento marcada Se isso não estiver marcado, se não estiver marcado e você estiver pressionando A e D, você terá esse tipo de efeito. Portanto, certifique-se de que a rotação do oriente para o movimento também esteja verificada E agora, por fim, quero ajustar a velocidade com que meu personagem se move, essencialmente o quão rápido ele vai E isso pode ser feito controlado com um parâmetro chamado velocidade máxima de caminhada. Está aqui na seção de caminhada do movimento do personagem. Não deixe a palavra andar te enganar. Isso é essencialmente o quão rápido seu personagem pode ir. Por padrão, é 600. Vou configurar o meu para 1.000, mas configurá-lo ao seu gosto Então, agora, se eu tiver que entrar e jogar, você pode ver o quão rápido e eu estou me movendo agora que meu personagem parece não deslizar, certo? Agora, quando eu me viro, eles param em um centavo e eu quero um pouco de escorregador até lá Então, o que vou fazer é ajustar minha configuração de atrito com o solo aqui Isso está definido para oito. Um valor menor terá menos atrito. Vou configurá-lo para dois. Agora, quando eu entro e jogo me movo para a direita e depois me ajusto para ir para a esquerda, você pode ver que ele não para exatamente em um centavo Há apenas um pequeno slide lá. Brinque com isso ao seu gosto também. Outro que você pode querer considerar ajustar é chamado de aceleração Vou deixar o meu como está por enquanto, mas você pode encontrá-lo Configurações gerais de movimento do personagem, aceleração máxima. Obviamente, essa é a rapidez com que seu personagem se atualizará quando for parado. Tudo bem, pessoal, isso vai acabar com este, com o movimento dos nossos jogadores. Nos vemos a todos na próxima. 7. Salto de jogador: Bem-vindos de volta a todos. Neste vídeo nosso objetivo é ajustar algumas das características de salto do nosso personagem jogador. Vamos direto ao assunto. Vamos entrar no nosso BP, personagem em terceira pessoa. Dentro daqui. Vamos começar mais uma vez com o gráfico de eventos. E se rolarmos para baixo, vou usar o botão direito do mouse. Encontramos nossa seção de entrada de salto do script que deveria estar aqui por padrão. Agora, atualmente tenho coisas configuradas dessa forma quando pulamos, ou seja, a barra de espaço acionará esse evento e fará nosso personagem pular por meio dessa função de salto. Na verdade, vamos pular. E se fizermos isso, e eu pular no jogo e segurar a barra de espaço, e eu a segurar, você verá que nosso personagem continua pulando. E isso não é necessariamente o que queremos. O botão em um controle do Xbox, que estou pressionando agora. Se você tiver isso conectado , nós também faremos isso. Eu quero fazer isso para que meu personagem só pule quando pressionamos esse botão. Não, se eu segurar, ele continua pulando. Uma maneira fácil de corrigir isso é que só queremos pular quando começamos a pressionar a barra de espaço ou o botão. Eu simplesmente vou mudar isso de acionado porque estamos constantemente acionando esse evento de salto Quando pressionamos o botão ou a barra de espaço em um controle, vou mover esse fio mantendo pressionado o botão esquerdo do controle e movendo-o para iniciar Agora, se eu jogar, eu mantenho pressionada a barra de espaço, meu personagem pula Mas para pular novamente, preciso soltar e pressionar novamente. Isso resolverá esse problema. Em seguida, tudo o que eu quero fazer é ajustar alguns de nossos personagens pulando os parâmetros de suas propriedades E, novamente, isso pode ser ajustado dentro do nosso componente de movimento do personagem. A primeira coisa que quero ajustar é a altura do nosso salto. E isso é um pouco enganador. Isso pode ser alterado com nossa velocidade de salto Z. Não há apenas um parâmetro de salto direto. Esse é o cara aqui que está controlando o quão alto nosso personagem está pulando Atualmente, está definido para 700 para mim, vou mudar isso para 1.500. E agora, se eu pular no play e pressionar a barra de espaço, você pode ver Eu pulo muito mais alto. No entanto, a sensação de pular não está relacionada apenas a essa propriedade singular. Você pode ver que está um pouco flutuante, então eu quero que seja um pouco mais rápido em termos de meu personagem voltar ao chão Isso pode ser ajustado dentro do componente de movimento do nosso personagem ajustando nosso efeito à gravidade Essa propriedade de escala gravitacional aqui, menos atualmente definida como 1,75, quero aumentá-la, fazer que o efeito da gravidade seja maior no meu personagem, com um valor de 2,5. Se eu entrar e jogar, terei esse Eu pulo um pouco mais alto, mas também estou sendo derrubado um pouco mais rápido Então, ajuste isso ao seu gosto. Agora, outra coisa que eu também quero resolver é se eu pular no ar e depois usar as teclas A e D para tentar me controlar enquanto estou no ar Atualmente, tenho muito pouco controle e geralmente gosto quando tenho um pouco mais de controle aéreo que pode ser ajustado por meio um parâmetro de controle aéreo que está abaixo da nossa velocidade de salto z. Há o salto Z, há controle aéreo. Vou definir isso para um valor de 1,0. Agora, se eu entrar e jogar, eu pulo, estou tentando corrigir um pouco o curso com A e D enquanto estou no ar. Tenha um pouco mais de controle, mexa, isso também é do seu agrado Agora, existem alguns outros parâmetros relacionados ao salto que não estão no componente de movimento do nosso personagem que eu pessoalmente não vou ajustar. Mas eu queria que você soubesse pode ser encontrado nos padrões de sua classe Esses são parâmetros relacionados à nossa classe de personagem. Se eu rolar para baixo, role para baixo. Na verdade, vou apenas digitar jump no painel de detalhes. Aqui, temos dois que você vai querer conhecer. Uma é a contagem máxima de saltos. Se eu mudasse isso para três e depois entrasse e jogasse, você pode ver que agora eu posso ir 123 e só consigo fazer três. É assim que posso implementar um salto triplo, salto duplo e salto quíntuplo Agora seu personagem não vai jogar outra animação de salto. Se você aumentar esse número além de um, saiba que isso exigiria uma configuração mais especializada. Mas é assim que você pode criar saltos duplos ou triplos, etc. Isso está dentro dos padrões da classe que busca por jump. Outro que você talvez queira conhecer é chamado jump max hold time atualmente definido como zero, mas se você quiser um pouco de efeito de impulso de foguete, vou configurá-lo para um valor de 1 segundo aqui Agora, se eu entrasse e jogasse, pressionaria a barra de espaço e a seguraria pressionada. Então, vamos lá, pressionando, isso me dá um pouco de efeito tipo foguete. Vou tocar nele agora mesmo. Então, isso é um toque. Mas se eu aguentar, isso vai me dar um pouco de impulso. Então, se você quiser um pouco mais de impulso ao pular, você pode ajustar o tempo máximo de espera do salto. Eu não quero esse efeito, então vou voltar para zero. Mais uma vez, tudo isso estava dentro dos padrões de classe do nosso personagem em terceira pessoa Estou feliz com tudo isso. Vou compilar e salvar aqui. E aí está. Acabamos de ajustar alguns parâmetros de salto de personagem. Nos vemos a todos no próximo vídeo. 8. Jogador Jump FX: Bem-vindo de volta. Bem, agora que nosso personagem está pulando, vamos adicionar um efeito sonoro e um visual, um efeito de partículas, para acompanhá-lo Agora, para pegar um efeito de partícula, vou até nosso lançador de jogos épicos Unreal Engine selecionado no lado esquerdo. Marketplace Selecionado no topo do mercado, vou fazer uma busca por infinity blade. Agora, depois de pensar um pouco aqui, vou procurar efeitos de lâmina infinita Agora, esse é um pacote adicional um pouco mais antigo, mas tem um efeito visual específico aqui que acompanhará nossos personagens. Salte como um pouco de poeira emanando de seus pés. Para adicionar esse pacote de conteúdo, tudo o que preciso fazer é clicar para adicionar este projeto. E selecione qual projeto eu gostaria de adicionar. Esse será meu projeto de plataforma. Aí está. Selecione isso e clique em Adicionar ao projeto. Agora, ele adicionará esses arquivos, esses efeitos de partículas, ao nosso projeto Eu posso sair daqui. E depois volte para o Unreal Engine. Isso demorará um pouco, dependendo do seu computador. Então, eventualmente, em seu navegador de conteúdo, você verá o Infinity Blade Effects Pack aparecer Se você se aprofundar aqui, aqui estão todos os vários efeitos que existem dentro dessas pastas. Vou procurar por um em particular chamado Sentinel, que acabei de digitar Senti acabei de digitar Vai ser esse cara aqui. Esse salto na trilha de lançamento. É uma partícula de poeira que sairá dos pés de nossos personagens Novamente, os efeitos de lâmina infinita são selecionados. Esse é o que vou usar aqui daqui a pouco. Tudo bem, com esse pacote de conteúdo adicionado, o que eu quero fazer a seguir é mergulhar em nosso projeto de personagem em terceira pessoa Veja plantas em terceira pessoa. Vou esclarecer minha busca aqui. Clique duas vezes no personagem de terceira pessoa e eu quero selecionar minha malha. Agora, o motivo pelo qual estou selecionando minha malha aqui é porque, no painel de detalhes, quero selecionar o ativo de malha esquelética associado a esse clique duplo aqui na imagem do Sumnil para abri-la e a primeira coisa que eu gostaria fazer é adicionar um soquete a um determinado osso No lado esquerdo aqui, eu tenho uma árvore esquelética e isso mostra todos os diferentes ossos que existem em nosso esqueleto Personagem, vou escolher nosso osso pélvico que está bem no meio e, em seguida, vou clicar com o botão direito nele e vamos escolher adicionar um soquete Agora podemos nomear esse soquete. É apenas chamado de soquete pélvico. Mas você pode pressionar F dois nisso. E vou encurtar esse VFX e pressionar Enter Com isso selecionado, posso posicioná-lo. Vou pressionar a barra de espaço aqui na minha janela de exibição. Vou clicar com o botão direito do mouse aqui para ativar essa janela de visualização, pressionar a barra de espaço e movê-la para cima ou Agora, a razão pela qual coloquei esse soquete na pélvis é porque eu queria que esse soquete em particular ficasse direto para baixo da pelve, não preso a não preso a E eu não vou ser muito exigente com isso, mas vou colocar isso aí mesmo. Isso é muito bom. Ok, você pode encontrar essa música ao seu gosto. Tudo bem, aqui no topo eu tenho esse pequeno ícone de homem correndo. Vou selecionar isso e isso me dará acesso às várias Deixe-me colocar essa nova guia na parte superior aqui. As várias animações que nosso personagem pode jogar. Atualmente, estamos jogando essa animação de salto M, M quando nosso personagem pula. Agora eu quero pausar isso porque isso me distrai um pouco Então eu posso pausar essa animação clicando aqui. Quero chamar sua atenção para esta área aqui. Queremos adicionar o que é conhecido como notificação para reproduzir um efeito sonoro e um efeito de partícula em um determinado ponto dessa animação Agora podemos esfregar isso para frente e para trás assim. Para cronometrar isso até onde queremos nesta animação de salto específica Agora eu quero reproduzir esse efeito visual de efeito sonoro logo no início. Vou posicionar isso logo no início aqui. Você não precisa ser perfeito. Aqui embaixo. clicar exatamente onde está essa faixa. Vou clicar com o botão direito do mouse e adicionar uma notificação. Agora, adicionaremos esse efeito de partícula daqui a pouco, mas primeiro quero adicionar um som Vamos tocar um som aqui neste menu suspenso. Agora você pode ver que adicionamos esse lugar. Notifique, clique com o botão esquerdo nele e arraste-o para estar em um ponto diferente da animação. Com isso selecionado em nosso painel de detalhes, podemos associar um som a isso. Isso será acionado quando tocarmos e atingirmos esse ponto na animação aqui na seção de som do painel de detalhes. Verifique se você selecionou essa notificação. Vou digitar Mario jump. Tenho Mario big jump, ou Mario jump. Eu só vou escolher Mario jump aqui. Nós importamos esses atos sonoros logo no início do curso. Se você não fez isso, volte ao início do curso e importe esses arquivos. Depois, vou mover meu controle deslizante aqui um pouco mais longe Você pode ouvir esse efeito sonoro sair lá. E vou clicar com o botão direito e adicionar outra notificação. Deixe-me ir direto por aqui. Clique com o botão direito em Adicionar, Notificar. Vamos adicionar um efeito de partícula e selecionar nosso efeito de partícula E no painel de detalhes digite Su, e é essa trilha de lançamento É isso que eu quero jogar agora. Ainda não terminamos nosso efeito visual, nossa notificação de efeito de partícula selecionada aqui No painel de detalhes, temos que associar qual soquete ele deve usar E podemos descobrir isso voltando à nossa árvore esquelética. Lembre-se de que se chama VFX. Então, se você simplesmente digitar VFX e encontrar todos os soquetes diferentes aqui, pronto, encaixe-o para Vamos salvar isso. Volte para o nosso editor de níveis e jogue. E vou pressionar a barra de espaço uma vez. Depois de clicar na janela de exibição, vejo minha partícula Eu não ouvi nenhum efeito sonoro. Agora, se você não vê nenhuma partícula ou não ouve nenhum som, às vezes é uma questão de apenas ajustar o posicionamento delas na linha do Se você colocá-los muito perto da frente, às vezes você não ouve o efeito sonoro que espera ouvir ou vê o efeito visual que deseja ver. Vou tentar mudar um pouco o efeito sonoro de Mario aqui. Eu vou salvar isso novamente. Vamos tentar isso mais uma vez agora, mexendo mais algumas dessas notificações em nossa animação de salto MM entre os cortes da câmera Descobri que, se eu reproduzisse meu quadro de áudio três com minha partícula logo a seguir, elas se sobrepõem um pouco aqui Eu fiz com que as duas funcionassem perfeitamente . Agora, se você entrar e jogar, poderá ver esse efeito de partícula e ouvir esse efeito sonoro Tudo bem, pessoal, isso vai acabar com essa. Veja quando será a próxima. 9. Camadas de ajuste de snap 2D: Bem vindo de volta. Em um futuro não muito distante criaremos algumas plataformas e alguns blocos. E vamos preencher nosso nível. Agora, o problema é que queremos colocar essas plataformas e tijolos que vamos criar dentro da linha do nosso personagem Agora, para ajudar a facilitar isso, queremos fazer com que, sempre que arrastarmos esses blocos e plataformas para o nosso nível, eles sigam automaticamente o caminho de viagem do jogador. Se eu colocasse um cubo do meu painel de atores, por exemplo, no meu nível, você pode ver que eu coloco aquele lá e esse aqui atrás, mas eles não estão necessariamente alinhados com o meu personagem Quero fazer com que, ao arrastar uma plataforma ou um bloco para o meu nível, ele fique exatamente na profundidade que eu quero. Nos próximos dois vídeos, vamos ativar algumas configurações para tornar esse processo muito mais fácil. Confie em mim, isso valerá a pena no futuro. Vamos começar ativando e configurando cerca de duas camadas de configuração de snap Para fazer isso, vamos acessar nossas Configurações do projeto, que estão no canto superior direito aqui. Configurações, Configurações do projeto. E em nossas Configurações de projeto, no lado esquerdo, queremos rolar para baixo até chegarmos onde diz dois D aqui embaixo do editor. Agora, o que queremos fazer aqui é configurar algumas camadas de snap. Então, primeiro precisamos habilitá-los simplesmente para habilitá-los Se eu quiser voltar para o meu editor de níveis aqui, podemos ver que agora temos isso aqui em nossa janela, uma configuração de dois D snap, bem como a capacidade de definir uma determinada profundidade No momento, temos apenas o primeiro plano como nossa profundidade. Tudo isso fará sentido em um pouco mais de tempo, mas vamos voltar às configurações do nosso projeto. Com isso ativado, quero definir algumas camadas de snap. Vou clicar nesse menu suspenso e vou criar mais do que apenas três índices aqui. Na verdade, eu quero definir cinco, então vou clicar nesse botão de adição mais algumas vezes depois vou expandir tudo isso. Basta clicar com o botão direito aqui para abrir este pequeno menu para expandir tudo. Ok, o primeiro nível que eu quero definir aqui será chamado de Foreground Mas entre parênteses eu vou colocar extremo. E vou definir isso para uma profundidade de 1.000. E tudo isso fará sentido aqui daqui a pouco. Ao contrário de eu te dizer o que isso vai fazer. Eu vou te mostrar o que ele vai fazer. O próximo, índice um. Vou chamar isso simplesmente de primeiro plano. Vou definir essa profundidade como 500 índicos dois aqui. Vou definir isso como principal e vou deixar a profundidade em zero, índico três, vou ligar de volta Vou definir a profundidade como menos 500. Então eu vou colocar meu último em quatro aqui para voltar ao extremo. E vamos definir a profundidade aqui menos 1.000. Certo, com tudo isso definido, não preciso salvar nada aqui. Quero garantir que meu eixo de encaixe esteja ao longo do eixo y. Agora, eixo y, y. Vamos sair daqui voltar ao nosso nível. A razão pela qual eu quero configurá-lo nosso eixo y é porque se eu mudasse nossa visão em perspectiva aqui de uma perspectiva em perspectiva para uma visão de cima para baixo, ampliando o zoom, é aqui que meus jogadores começam O ator está aqui. Vamos seguir essa linha de viagem aqui mesmo. Quero garantir que estamos definindo nossas camadas de profundidade ao longo desse eixo y aqui. Tudo bem, vamos voltar para nossa janela de visualização em perspectiva. E agora, se eu arrastasse um cubo simples para o nosso nível, pareceria que nada realmente aconteceu Sr. Wonder, pensei que você disse que eles se encaixariam em uma determinada profundidade. Bem, isso é. Porque deixe-me excluí-los daqui porque eu não tenho minhas duas configurações de D snap realmente ativadas Aqui em cima, no canto superior direito da minha janela de visualização. Na verdade, eu tenho que clicar aqui em Agora, quando eu coloco isso no meu nível, não importa para em Agora, quando eu coloco isso no meu nível, onde eu o mova dentro do nível, você pode ver que ele está se encaixando meu nível atualmente selecionado, que é extremo em primeiro plano Eles estão todos na mesma profundidade, se você quiser, perfeitamente alinhados. Você me viu configurar várias camadas de profundidade nas configurações do meu projeto. Primeiro plano extremo. Altere-o para o padrão. Deixe-me voltar ao primeiro plano Aqui estão o primeiro plano, o fundo extremo, isso deve dizer o plano de fundo principal e o fundo Como faço para alterá-los novamente no meu editor de níveis? Bem, se eu clicar aqui onde diz primeiro plano extremo, você pode ver que eu posso escolher primeiro plano, plano Todas aquelas camadas diferentes que acabei de configurar. Se eu fosse dizer fundo extremo. Agora, quando eu coloco um cubo no meu nível, você pode ver que ele vai colocá-lo naquela profundidade, aquela, aquela profundidade Se eu mudasse isso para principal, estaria no meu caminho de viagem. Se eu fosse definir isso como fundo extremo, não como fundo extremo. Eu queria usar o primeiro plano de forma extrema. Isso o colocará nesse nível de profundidade, o que tornará ainda mais fácil organizar nosso nível com blocos, plataformas e organizar nosso nível com blocos, plataformas e adereços Tudo bem, pessoal, isso vai bastar para este vídeo. Nos vemos na próxima. 10. Widget de tradução 2D: Bem-vindos de volta a todos. Bem, no último vídeo, habilitamos cerca de duas camadas de snap nas configurações do nosso projeto E elas podem ser vistas em nossa janela de exibição aqui no canto superior direito, temos nossas duas camadas de snap configuradas E se eu clicar aqui, aqui estão as várias camadas que configuramos. A propósito, você pode acessar esta seção das Configurações do Projeto, onde as configuramos clicando aqui. Clicamos aqui, clique em Editar camadas e, em seguida, você será direcionado para a seção adequada, as duas seções D das configurações do nosso projeto, onde configuramos essas camadas de snap Agora, queremos fazer outra coisa aqui: habilitar nossos dois widgets combinados de tradução e rotação em D. Esse é o objeto, o objetivo deste vídeo em particular, isso funciona muito bem em conjunto com essas camadas instantâneas Eu só vou verificar isso aqui. Novamente, isso também pode ser encontrado na seção 2 D das Configurações do seu projeto. E o que isso vai fazer, voltando ao nosso editor de níveis, isso adicionará outro botão, se você quiser Aqui em cima na nossa janela de visualização. Acabou de adicionar isso, o que nos permite selecionar e traduzir ou girar objetos em dois D. Agora, por que quereríamos selecionar isso Bem, deixe-me mostrar esse cenário. Colocamos um cubo em nosso nível, e agora eu o coloquei no meu nível principal E você pode se deparar com uma situação em que está tentando movê-lo ao redor do seu nível, e talvez acidentalmente o mova ao longo do eixo y e agora ele não está mais em nosso caminho principal para viajar como queríamos que fosse Existe uma maneira de se proteger contra isso? Sim, existe. Se selecionássemos essa opção que acabamos de habilitar. Agora, quando selecionamos um determinado objeto, nosso widget de rotação de translação parece um pouco diferente Agora só podemos movê-lo para cima ou, neste caso, para a esquerda e para a direita. Também podemos girá-lo simplesmente clicando nessa seta verde e movendo-a dessa forma Agora você pode ver que está quebrando quando eu o giro. Isso respeita nossas configurações de encaixe angular ou configurações de encaixe rotacional Então, se eu quiser movê-lo suavemente, girá-lo suavemente, posso simplesmente desligá-lo e agora pegar a seta verde e girá-la Da mesma forma, ainda posso ativar minhas configurações de captura de movimento aqui Ele está se movendo agora em incrementos de 100, mas isso é apenas para evitar que o movamos de volta para o eixo y. Mais uma vez, aqui nas configurações do projeto, Configurações projeto, na seção de dois D, acabamos de habilitar nosso widget combinado de tradução e rotação em dois D marcando Não há como dizer, botão ou qualquer coisa Isso apenas torna esse botão disponível em nossa janela de exibição para que, ao selecionarmos um objeto, possamos movê-lo apenas em nossos vários eixos ou girá-lo dessa forma, segurando a seta verde Esse será um truque muito útil no futuro, pois colocamos blocos e plataformas em outros objetos dentro do nosso nível Tudo bem, pessoal, isso vai acabar com essa. Nos vemos na próxima. 11. Salte pela plataforma (parte #1): Bem-vindos de volta a todos. Neste vídeo, nosso objetivo é criar uma plataforma pela qual nosso jogador possa pular ou cair. E só para mostrar o que quero dizer, vou clicar no botão play aqui. Eu adicionei uma plataforma entre os vídeos. E se eu tentar pular por essa plataforma, não consigo fazer isso no momento. E se eu estivesse na parte superior, atualmente também não posso descer por ela. Então, vamos criar uma plataforma pela qual possamos pular e também descer. Então, para fazer isso, vamos criar um modelo. E vamos criar uma nova pasta aqui em nosso navegador de conteúdo, onde vamos colocar vários esquemas que criamos ao longo deste curso com a pasta da sua plataforma selecionada. Vamos clicar com o botão direito sobre isso. Vamos adicionar uma nova pasta. Vamos simplesmente chamá-lo de Blueprints. Com esse diretório selecionado, você pode ver nosso caminho aqui. Vamos clicar com o botão direito do mouse em algum espaço vazio criar uma nova classe de blueprint Queremos escolher a classe de ator, porque esse é um objeto que vamos colocar em nosso mundo. Escolha este top. Então, isso nos levará a dar um nome a ele. Vamos chamar isso de Plataforma BP Underscore. Sublinhado. Vou chamar Jump Through, sem mais nem menos. Então vamos clicar duas vezes nesse cara para abri-lo. Agora, só uma dica rápida aqui. Não gosto quando meus novos ativos se abrem em uma janela separada como essa. Eu gosto quando eles se abrem automaticamente na parte superior aqui. Então eu vou sair daqui. Vá em Editar Preferências do Editor. Nas preferências do nosso editor, aqui. Se estivermos no local aberto do editor de ativos, ele deverá estar na primeira página, se você preferir ele deverá estar na primeira página, , de suas preferências de editor. Vou mudar isso para a janela principal. Eu posso fechar aqui então. E então, quando eu clicar duas vezes sobre isso, ele vai abrir isso logo na parte superior. Agora, se você alguma vez ver algo que diga que este é um esquema somente de dados, podemos clicar aqui para abrir nosso editor de diagramas podemos clicar aqui completo Agora, essa é a visão que queremos ver. Agora, por padrão, ele se abriu em nossa guia de gráfico de eventos. É aqui que vamos fazer a codificação desse projeto Quero ir para nossa janela de visualização para começar, porque vamos adicionar alguns componentes que queremos poder ver Tudo bem, agora o primeiro componente que eu quero adicionar aqui no canto superior esquerdo abaixo do painel de componentes é uma malha estática. Embora eu possa escolher uma malha estática de qualquer tipo, vou simplesmente escolher um cubo Então, vou usar o cubo aqui, mas saiba que, depois de adicionarmos isso, podemos nos dar um nome Vou apenas ligar para essa plataforma. Poderíamos mudar isso de um cubo para alguma outra malha estática Quero dizer, você poderia fazer com que parecesse a cadeira se realmente quisesse ou qualquer outra malha estática que quisesse. Mas o cubo vai funcionar bem para nós porque vamos dimensioná-lo e moldá-lo em uma plataforma que parecerá bem branda, mas, novamente, você pode se animar o quanto Eu vou mudar a escala aqui para ser três no X, no Y, eu também vou mudar isso para cinco. Então, no Z, vou mudar isso para 0,2 um pouco mais fino Ok, então eu vou adicionar alguma colisão nos lados superior e inferior desta plataforma Ok, então eu vou aparecer no componente de anúncio. Mais uma vez, o que eu quero fazer é rolar para baixo e adicionar colisões de caixas Então vá em frente e selecione isso. Isso vai me fazer dar um nome a isso imediatamente, e vou chamar isso de colisão Agora observe que esse recuo está aqui e eu posso clicar nesse triângulo para mostrar ou ocultar Isso mostra uma relação de apego. No momento, este colisor de caixas está conectado à malha da minha plataforma Se eu movesse a plataforma, a colisão, o colisor de caixas viria com ela No entanto, eu poderia mover isso independentemente da própria plataforma. Vou redimensionar isso com esse componente superior de colisão selecionado no painel de detalhes Eu vou mudar a escala. Eu só vou apertar essa seta para trás aqui. Está herdando essa escala relativa da plataforma. É por isso que tem esses valores de escala específicos. Vou definir isso de volta para 11,1 e vou definir minha localização aqui como um valor Z de 100 Agora você pode ver que está lá em cima. Vou mudar as extensões da caixa aqui. Esse é o tamanho, a extensão dessa caixa Em vez do valor padrão de 302-30-2302, tenho alguns Eu vou fazer 50 por 50 por 50. Agora, o que devemos ter é um colisor de caixas que fica bem no topo , como o nome sugere, no topo da colisão Agora vamos adicionar outro desses na parte inferior. Então, o que vamos fazer é botão direito do mouse em nossa parte superior de colisão Vamos simplesmente duplicá-lo, e vou chamá-lo de Collision Bottom A única coisa que vou fazer com este é alterar o valor, o valor Z da nossa localização de 100 para menos 100. Em seguida, pressione Enter. Temos um na parte superior e outro na parte inferior. Agora, algo que eu deveria ter feito com nosso topo de colisão antes de duplicá-lo, porque então ele também teria duplicado as propriedades, é definir um parâmetro em nosso painel de Vou colocá-lo em nossa bunda aqui primeiro. Como eu selecionei isso no painel Detalhes, queremos entrar na seção de colisão e alterar a predefinição de colisão Clique neste pequeno menu suspenso. Por padrão, ele está configurado para sobrepor todas as dinâmicas. O que eu quero fazer é mudar isso para ser personalizado. E isso vai mudar todos os canais de colisão ou melhor, iluminá-los para que possamos mudá-los ao nosso gosto Vou configurá-lo para ignorar tudo, exceto que vamos fazer com que nosso peão, nosso personagem, seja considerado um tipo de objeto de peão Vamos configurar isso para se sobrepor, e você verá por que aqui, um pouco acima, temos uma predefinição de colisão personalizada Estamos ignorando a colisão de todos os outros tipos de objetos exceto o peão, que é Vamos detectar uma sobreposição. Então, queremos fazer isso não apenas para a parte inferior da colisão, mas também para a parte superior da colisão. Assim como o topo de colisão, vamos alterar a predefinição de colisão para ser personalizada Vamos configurá-lo para ignorar colisões com todos os outros tipos de objetos, exceto que vamos detectar uma sobreposição do peão 12. Salte pela plataforma (parte #2): Tudo bem, vamos sair da guia Viewport e entrar no gráfico de eventos para que possamos adicionar um script que permita que nosso personagem pule pela parte inferior da plataforma E vou selecionar nosso componente de colisão aqui mesmo Vamos clicar com o botão direito do mouse sobre isso e adicionar um evento. O que queremos fazer é detectar quando nosso personagem se sobrepõe colisão. Isso adicionará esse nó na sobreposição de início do componente e o nome do componente aqui, fundo de colisão Vamos manter pressionado o controle e roda do mouse para ampliar isso. Também vou adicionar outro evento imediatamente. Queremos detectar quando ambos começamos a sobrepor o fundo da colisão, bem como quando terminamos sobrepondo Então, podemos adicionar outro evento aqui. Ao selecionar nossa parte inferior de colisão, eu poderia clicar com o botão direito do mouse e adicionar um evento Mas também quero mostrar outra maneira de adicionar eventos para vários componentes. Com o fundo de colisão selecionado. Role para baixo no painel de detalhes, aqui você também pode encontrar uma lista de vários eventos. Eu vou fazer o End Overlap. Também vamos adicionar esse nó ao nosso gráfico. E eu vou posicioná-los dessa forma. OK. O que eu quero fazer é detectar quando o outro ator se sobrepõe ao componente inferior da colisão. Queremos fazer algo quando o personagem do nosso jogador, ou seja , o outro ator, está se sobrepondo ou terminando na parte inferior da colisão Então, vou escrever, clique em algum espaço vazio e obtenha o personagem do jogador. Isso retornará nosso personagem de jogador com o qual estamos jogando. E vou retirar outro ator aqui da nossa sobreposição inicial E vamos digitar o sinal de igual e ver se o outro ator que se sobrepôs ao fundo da colisão é igual a isso, ou seja, é o personagem do nosso jogador Se for, vamos trazer um nó de ramificação. Vou manter pressionado o B como na ramificação, clique com o botão esquerdo para abrir um nó da ramificação. E essa será a nossa condição de que verifiquemos se algo se sobrepõe ao nosso fundo de colisão Vamos verificar se foi o outro ator? Eles eram iguais? Se fosse verdade, vamos trazer nosso componente de plataforma, arrastar e soltar isso em seu gráfico dessa forma. Então, o que vamos dizer à nossa plataforma para fazer, arrastar, isso é digitar e definir colisão ativada Coloque isso assim, e queremos definir nossa colisão para que nossa plataforma não seja uma colisão Agora, só para voltar atrás e mostrar exatamente o que diabos está acontecendo aqui, se eu selecionar nossa plataforma e rolar para baixo, nossa plataforma também tem algumas configurações de colisão No momento, ele está configurado para bloquear todas as dinâmicas e para bloquear todos os tipos de objetos, incluindo nosso peão. Isso vai bloqueá-lo. O que estamos dizendo aqui ao começar a sobreposição é que, se for nosso jogador que a estiver sobrepondo, diremos a essa plataforma que não tenha Basicamente, é alternar essa predefinição de colisão de bloquear totalmente dinâmico para nenhuma E você pode ver que, quando está configurado para não colidir, aqui está, desativando completamente nossa colisão, ignorando o fato de que aqui embaixo não parece estar permitindo que nosso peão Desde que esteja configurado como habilitado para colisão, sem colisão, na verdade permitirá que nosso personagem passe direto Vou redefinir isso clicando nesse valor aqui e voltar para bloquear todas as dinâmicas. Agora, continuando aqui, vou apenas copiar esse nó. Esse nó e esse nó. Estou pressionando o controle para selecionar esses três. Vamos fazer o controle C para copiar o controle V para colar. Vou conectá-los assim, se o personagem do nosso jogador for igual ao outro ator. Quando terminarmos nossa sobreposição, a plataforma será o alvo aqui embaixo Vamos configurar nossa colisão aqui para ser ativada. Isso basicamente fará com que a colisão volte a quando terminarmos de sobrepor o fundo da Tudo bem, com tudo isso feito, você pode pausar o vídeo aqui se precisar ver tudo isso Vou clicar com o botão esquerdo e arrastar tudo isso. Vou tocar na tecla C. C está no comentário, e vou chamar isso de meu salto através de plataforma, plataforma, script. Vamos pressionar o botão de compilação aqui para ter certeza de que nosso código está bom e está bom Então, vamos continuar e salvar isso também. Vamos arrastar um desses para o nosso nível e ver se podemos pular pela nossa plataforma. Aqui vamos nós. Voltando ao nosso nível, vou deletar esse cubo temporário que eu aumentei Vou colocar isso no meu nível. Você pode ver que ele vai colocá-lo diretamente no meu nível principal, aqui. Porque eu tenho minhas duas configurações de D snap ativadas agora. Vou clicar aqui para ir diretamente para o meu movimento no widget rotacional Mova-o um pouco acima do meu personagem. Gostar. Então eu clico em play, tento pular. E aí está, podemos pular direto para cima. OK. Em seguida, precisamos de uma forma de rastrear para ver se nosso jogador está no topo da plataforma. Para que possamos inserir algo em nosso controle ou teclado para fazer nosso player descer pela plataforma. Novamente, para fazer isso, vamos voltar para nossa plataforma. Passe pelo Blueprint mais uma vez. Vou clicar e descer um pouco até aqui. Quero fazer algo quando nossos jogadores colidirem com esse colisor superior aqui, vou ativar e desativar uma variável booleana Vamos entrar no meu painel de plantas, em Variáveis. Vamos clicar nesse botão de adição aqui. E vamos criar uma nova variável chamada is no topo do ponto de interrogação da plataforma. Uma variável booleana contém informações verdadeiras ou falsas. E se eu compilar aqui, podemos ver que, com isso selecionado por padrão, ele está desmarcado Ou seja, por padrão, será falso. Agora vamos usar essa variável booleana daqui a pouco, mas o que vamos fazer é voltar ao nosso gráfico de eventos Vamos selecionar nosso topo de colisão. Vou clicar com o botão direito do mouse. Vamos adicionar um evento para quando começarmos a sobrepor E também clicaremos com o botão direito do mouse no topo da colisão novamente na sobreposição de eventos Em muitos aspectos, isso será semelhante ao que temos acima. Na verdade, vou roubar alguns nós daqui de cima Vou segurar o controle e clicar com o botão esquerdo, clicar com o botão esquerdo, clicar com o botão esquerdo, clicar botão esquerdo e clicar com o botão esquerdo. Temos esses cinco selecionados aqui. Vou clicar com o botão direito do mouse sobre isso e duplicar o controle D faria o mesmo, mas aqui vou duplicá-los. Vou mover todos esses controles Z para lá. Na verdade, eu também selecionei um desses aqui embaixo. Clique com o controle nesses cinco. Vou fazer o controle D para duplicar. E vamos colocá-los diretamente na posição aqui embaixo. Conectando-os assim. Tudo o que vamos fazer com esse script é ativar ou desativar essa variável de ouro . Queremos configurá-lo. Se eu arrastar isso para o meu gráfico e soltar, ele dirá: você deseja obter esse valor ou deseja defini-lo? Queremos definir o valor dessa variável quando estamos sobrepondo essa colisão Queremos que isso seja verdade, estamos no topo da plataforma. Por outro lado, se clicarmos com o botão esquerdo do mouse e arrastarmos isso para o conjunto quando terminarmos de colidir com o volume de colisão superior, queremos dizer que não, não estamos mais no topo dessa queremos dizer que não, não estamos no topo Esse script será bom para a próxima seção que escreveremos aqui em termos de script, então clique com o botão esquerdo e arraste, toque na tecla C. E vamos colocar esse comentário como uma ferramenta para detectar se o jogador está no topo da plataforma Tudo bem, vamos compilar e salvar isso imediatamente. Tudo bem, em seguida, o que queremos fazer é voltar ao nosso editor principal aqui e vamos entrar na terceira pessoa vamos entrar na terceira pessoa e na entrada. Este é o novo sistema de ação de entrada implementado no Unreal, e vamos adicionar uma nova ação de entrada Agora vou construir a partir desse sistema existente para que não precisemos reinventar a roda Na verdade, vou clicar nessa pasta de ações. Aqui estão algumas ações de entrada que estão acionando alguns eventos de entrada, como nosso evento de salto E eu vou clicar em algum espaço vazio aqui. E nós vamos entrar em contato. Vamos adicionar uma nova ação de entrada. Quando o fizermos, vou renomear esse IA para sublinhado da ação de entrada Vou chamá-lo de player down. Vou clicar duas vezes nesse ativo para abri-lo. O que estamos fazendo aqui é definir uma ação de entrada. Agora, não vou entrar nos detalhes básicos de tudo isso agora, porque todo esse sistema é bastante extenso Vamos deixar nosso tipo de valor como um touro por enquanto. Essencialmente, isso aconteceu ou não? Agora, em gatilhos, vamos clicar nesse botão de adição e o que queremos fazer é clicar nesse pequeno menu suspenso E vamos simplesmente verificar se uma determinada entrada foi pressionada e está configurada para fazer digital bull. Clique em Salvar aqui. E está tudo muito bem. Em seguida, o que vamos fazer é voltar ao nosso editor de níveis principal aqui. E vamos voltar para uma pasta. Portanto, atualmente estamos em ações de entrada em terceira pessoa. Vamos voltar para essa pasta de entrada. Também posso acessá-lo clicando aqui. E vamos clicar duas vezes nesse padrão do I MC. E é aqui que todos os vários mapeamentos de ações de entrada são configurados em nosso personagem de terceira pessoa para que nosso personagem de terceira pessoa use Agora, aqui está nossa lista de mapeamentos. Atualmente, nossa ação de salto é mapeada na barra de espaço ou na parte inferior do botão frontal do gamepad Esse é o botão do controle Xbox. Eu vou enrolar isso de volta. Vamos adicionar um novo mapeamento aqui mesmo clicando neste botão de adição. Depois de fazer isso, adicionamos essa entrada, clique neste menu suspenso. Vamos adicionar essa nova entrada, desativando o player de ação. Agora, o que precisamos fazer é mapear isso para determinadas entradas em um teclado ou controlador O que vou fazer é clicar nesse pequeno ícone de teclado. E assim que eu fizer isso, ele vai ficar com essa cor alaranjada Eu só vou pressionar a tecla no teclado. E, ao fazer isso, ele colocará isso como entrada. Agora, isso é ótimo para um teclado. Eu também vou fazer isso em um controlador. Vou clicar nesse botão de adição. Ele adicionará essa entrada aqui. Podemos reunir o resto dessas entradas aqui. Basta clicar nessas setas aqui. Vou pressionar esse ícone do teclado. Agora, tudo o que vou fazer é pressionar o manípulo esquerdo de um controle que conectei Isso vai verificar se meu game pad, manípulo esquerdo, tem algum tipo de entrada ao longo do eixo y. Esse é o meu manípulo esquerdo para cima ou para baixo, essencialmente. Tudo bem, vamos salvar isso também. Agora, só para deixar claro que essas são as entradas que nosso personagem está usando, o IMC é Se eu entrar no meu personagem em terceira pessoa, você não precisa fazer isso. Só estou te mostrando. Volte para minha guia de gráfico de eventos aqui. Esse é o nosso contexto de mapeamento de entrada. E aqui está nosso ativo padrão do IMC que nosso personagem de terceira pessoa está usando Apenas deixe você saber onde tudo isso entra em jogo. Tudo isso está em nosso personagem em terceira pessoa. Tudo bem, agora com tudo isso feito, vamos voltar para nossa plataforma BP. Passe por aí, vamos continuar aqui um pouco. Roda do mouse para baixo, clique com o botão direito para baixo. Vou clicar com o botão direito do mouse em algum espaço vazio e vou digitar Player down. Aqui está meu evento de ação de entrada para jogadores desativados. Este é esse evento que acabei de criar. Ele será acionado pressionando a tecla S ou pressionando meu manípulo esquerdo O que eu quero fazer é verificar o valor desse booleano Estamos no topo da plataforma ou não? Se eu arrastar e soltar isso em nosso gráfico, quero obtê-lo desta vez. Queremos obter o conteúdo dessa variável que vou arrastar para fora daqui e trazer um nó de ramificação quando começarmos a inserir isso, ou seja, inicialmente pressionamos a tecla S ou pressionamos o botão esquerdo, informaremos nossa plataforma Vamos falar com nossa plataforma aqui arrastando uma referência à malha da nossa plataforma Vamos falar com essa plataforma, depois vamos sair dela e digitar set collision enabled aqui embaixo O novo tipo não será uma colisão. Basicamente, estamos dizendo que pressionamos S ou pressionamos o botão esquerdo para baixo. Vamos verificar se estamos no topo da plataforma? Se for verdade, vamos fazer com que essa colisão passe Vamos clicar com o botão esquerdo e arrastar, tocar na tecla C e chamar isso de nosso script de permissão para que o jogador desça pelo script da plataforma. Vamos compilar isso, ter certeza de que é bom salvar o Momento da Verdade Vamos jogar isso, mas você notará um problema. Estou jogando clicando na janela de visualização, vou pressionar a barra base para pular por ela Vou tocar no SK. Parece que não funciona. Isso é porque estamos perdendo mais uma coisa. Aqui está o que está dentro de um plano de aula de ator. Essas ações de entrada não funcionarão por padrão. Eles funcionariam por padrão dentro de um personagem de terceira pessoa, mas não em um plano de classe de ator Então, como podemos fazer com que isso reconheça entradas como essa? Bem, temos que entrar padrões de nossa classe de nossa plataforma de salto Aqui embaixo, no painel de detalhes, onde diz entrada, vamos mudar o modo automático, receber a entrada do desativado para o jogador zero. Isso é essencialmente nós, o personagem do jogador. Vamos compilar isso mais uma vez. Volte e jogue. Agora estou pulando e, se eu tocar na tecla S, vou passar por ela Vamos testar isso também no controlador. Pulando para cima, pressionando meu manípulo esquerdo. E aí parece funcionar muito bem. E aí está, pessoal, um salto pela plataforma, como eu gosto de chamá-la. Isso é, cara, pronto para essa. Nos vemos na próxima. 13. Plataforma em movimento: Bem-vindo. Neste vídeo, vamos criar uma plataforma móvel. Então, vamos direto ao assunto agora. Para começar aqui, vamos herdar da nossa plataforma BP, que criamos no último vídeo apenas para tornar as coisas um pouco mais rápidas Então, encontre essa plataforma, clicaremos com o botão direito nela e criaremos uma turma de modelo infantil a partir Quando fizermos isso, isso nos levará a dar um nome a ele. Então, vou chamar esse motor de plataforma BP. Em seguida, vou clicar duas vezes nele para abri-lo. Agora, como fizemos disso um filho de nossa plataforma de salto, podemos ver que essa é a classe principal no canto superior direito aqui. Isso significa que ele já vem com todos os componentes que já foram configurados em nossa plataforma. Salte. Além disso terá o mesmo script interno. Se formos até o enxerto de eventos, veremos que todo esse script é herdado do pai Então, isso já está configurado para ser capaz de pular. Podemos pular por essa plataforma. No entanto, ele não se move como gostaríamos. Então é isso que vamos abordar neste vídeo. Agora, só para facilitar um pouco a identificação de uma plataforma móvel a partir de uma plataforma de salto estática. Vou voltar para nossa janela de visualização aqui e vou selecionar nossa plataforma E eu vou mudar o material associado a isso. Você pode mudar isso para algum material do Mario ou qualquer coisa dessa natureza. Só para deixar isso super óbvio, vou digitar em azul aqui embaixo dos materiais. Vou mudar para esse azul claro. E então vou arrastar um deles para o nosso nível também, para que possamos identificá-lo facilmente como uma plataforma. Tudo bem, vamos voltar ao nosso plano de movimentação de plataformas Vamos criar algumas variáveis para começarmos aqui no painel My blueprint A primeira variável que vamos criar é LOC. Isso é baixo para o início da localização. Isso vai ser uma variável vetorial. Isso determinará o ponto de partida da nossa plataforma de movimentação aqui. E então eu vou clicar com o botão direito sobre isso e vou duplicar esse controle Além disso, D é uma tecla de atalho. Isso será chamado de “Terminar os pontos finais com nossa localização, final selecionado”. Há algumas caixas de seleção que vou marcar aqui. O primeiro é Instance Editable. Quando verificarmos isso, ele também clicará nesse globo ocular Eles fazem a mesma coisa, essencialmente fazer um faz o outro, etc E também vamos mostrar os três widgets D. Agora vou verificar isso e, em seguida, vou compilar meu plano para que eu possa nos dar um valor padrão No painel de detalhes, vou alterar meu valor final Z local para 200 por padrão. Agora, a razão pela qual eu fiz isso é porque agora, se eu verificar este projeto em nosso editor de níveis aqui, podemos ver que, com ele selecionado, vejo esse diamante de extremidade loc Este é o widget de três D que acabei de habilitar aqui em nosso movedor de plataforma , selecionando essa variável e selecionando a instância editável e mostrando três widgets D. A razão pela qual ele está localizado 200 unidades irreais acima da base da nossa plataforma aqui é porque eu configurei isso como 200 Observe, no painel de detalhes, essa extremidade do local também é exposta aqui no painel Detalhes. Eu poderia alterar a localização disso simplesmente clicando nele e arrastando E você está vendo que, enquanto eu faço isso, também está alterando a localização Z aqui Isso definirá o ponto final dos movimentos de nossas plataformas. Vai começar aqui, vai acabar aí. Esse ponto de partida da localização será nosso ponto de partida relativo, basicamente, ali mesmo. Tudo bem, com tudo isso feito, vamos entrar em nosso gráfico de eventos e começar a criar o script. Clique com o botão direito, arraste até um gráfico vazio aqui e, em seguida, clique com o botão direito em algum espaço vazio. E vamos procurar um nó da linha do tempo. Vamos nomear esse nó da linha do tempo Movimentos da plataforma Um nó da linha do tempo nos permite alterar o valor de uma variável ao longo do tempo Esse nó é especial porque podemos clicar duas vezes nele para editar uma linha do tempo Vou clicar duas vezes nisso e, quando fizer isso, abro uma nova guia aqui , podemos adicionar uma faixa, o que farei agora. Ao clicar neste botão Plus Track, queremos adicionar uma faixa de fluxo. Ou seja, vamos alterar um valor decimal ao longo tempo e você verá por que faremos isso daqui a pouco Sou solicitado a nomear essa faixa, então vou chamá-la de movimento Vou deixar a duração em 5 segundos, mas agora preciso. Adicione alguns dos chamados quadros-chave à nossa linha do tempo aqui. Agora eu posso clicar com o botão direito aqui e arrastar isso para frente e para trás. Use uma roda de rolagem para aumentar e diminuir o zoom. Mas vou adicionar alguns quadros-chave. Esses são alguns momentos em que eu quero definir não apenas um valor de tempo , mas um valor de valor. Vou clicar com o botão direito do mouse, vamos adicionar uma chave à nossa linha do tempo, que está em azul Clicar com o botão direito fará isso. Ou se você segurar a tecla shift e clicar com o botão esquerdo, isso também funcionará. Eu só queria acrescentar três pontos aqui. Não importa onde você os coloca por enquanto, porque vamos selecionar cada um deles porque vamos selecionar cada um deles e, em seguida, inserir uma hora em um valor Selecione seu primeiro aqui. Vou definir a hora zero e o valor como zero, o início da nossa linha do Essencialmente, vou selecionar este último, este último aqui. Vou definir o tempo cinco e o valor como zero. Agora eu percebo que acabou de saltar da borda do gráfico aqui, não se preocupe com isso E então eu vou selecionar nosso meio aqui. Vou definir o tempo 2,5 e vou definir o valor como um. Agora, se eu diminuir o zoom aqui, posso ver todos esses três quadros-chave, esses três pontos, vou simplesmente clicar com o botão esquerdo e arrastar ao redor de todos eles para selecionar todos eles E então eu vou selecionar essas setas para emoldurá-las, essas setas aqui Agora, isso representará o movimento da nossa plataforma ao longo do tempo. Se você pensar na maneira como eu digo que uma porta se abre, ela se abre e se fecha facilmente Queremos que nossa plataforma se adapte a um movimento e depois passe para o próximo movimento de um lado para o outro. Não é tão rígido, se você quiser. Com tudo isso selecionado, vou clicar com o botão direito do mouse e definir minha interpolação de teclas E isso criará essa curva suave em que entraremos em um lado do nosso movimento e depois relaxaremos. Ok, o que isso faz aqui? Bem, isso nos dará, voltando à nossa guia de gráfico de eventos aqui, uma saída de movimento, uma saída flutuante, onde vamos gerar o valor variável dessa Agora, observe que o valor que isso produzirá mudará ao longo de 5 segundos. Aqui, ele começará com um valor zero. Então, ao longo de dois a 2 segundos, ele vai subir para um valor de um, depois vai voltar para zero. Agora, a razão pela qual vamos 0 a 1 a zero é porque vamos usar isso para impulsionar o movimento da nossa plataforma Vamos trazer uma referência à nossa plataforma aqui mesmo no painel de componentes. Vamos arrastar isso para dentro. O que queremos fazer é sair disso e, digamos, definir a localização relativa. Vamos mudar a localização relativa da nossa plataforma ao longo do tempo. Agora precisamos alimentar isso com um novo local. Como vamos determinar isso? Bem, há um nó que podemos usar chamado vetor p. Vou escrever, clicar em algum espaço vazio e digitar o vetor P. O que vamos fazer é conectar a saída de movimento da nossa linha do tempo ao alfa E então vamos inserir o vetor de localização inicial em A e o vetor de localização final em B. Então descreverei como tudo isso funciona. Se você olhar o cabeçalho, estou apenas passando mouse sobre o cabeçalho desse nó Diz que vamos interpolar linearmente entre a localização e a localização, essas localizações vetoriais com base no Veja como funciona. Quando esse valor alfa, essa flutuação de movimento, for um valor zero, estaremos em nosso local inicial enquanto ele faz a nosso local inicial enquanto ele transição de um valor de zero para um valor de um Vamos nos mudar progressivamente para nossa localização. Vamos ir de a para B para a para B com base nessa mudança de valor, indo de 0-1 a zero a um É aí que atualizaremos a nova localização da nossa plataforma. Vamos atualizar a nova localização da nossa plataforma. Agora vamos analisar isso e como vamos fazer isso? Bem, faremos isso voltando ao cronograma de movimentação de nossa plataforma Aqui. Aqui em cima, temos um botão onde podemos percorrer essa linha do tempo. Vamos começar em nosso local A, nosso local partida, passando para nosso local B quando esse for um valor de um. De volta à nossa localização A quando esse for um valor zero. E depois começar de novo. E depois reiniciá-lo ao longo de 5 segundos. É assim que isso funciona. Outro recurso interessante da linha do tempo é que ela tem esse botão aqui em cima, Autoplay Vamos ativar isso temporariamente. Quando acessamos nosso gráfico de eventos, podemos ver que esse ícone também está aqui. Reprodução automática em loop. Na verdade, não precisamos conectar um nó de eventos para que tudo isso funcione Vou compilar e salvar. Agora, se eu pular para o meu nível, vou jogar isso e você notará que isso vai passar daqui para o final da nossa localização. Eu só pulei um pouco para lá. Deixe-me mudar isso para baixo. Vou ter um pouco de movimento aqui. Ao longo de 2,5 segundos. Ele vai subir até lá e depois vai voltar para baixo. Eu entro e jogo, gaguejando um pouco no vídeo, mas na verdade ele está se movendo bem na minha frente Aí estão nossos movimentos. Desculpe pela baixa qualidade do vídeo. Ok, então isso é bom. Mas e se eu quisesse mover esse local final para muito, muito longe? Quero dizer, então a plataforma vai se mover muito rápido. Existe uma maneira de personalizar essa linha do tempo de forma que eu possa alterar as taxas de jogo Sim, existe. Esta é nossa configuração temporária aqui. O que vou fazer é voltar nosso motor de plataforma e vamos contar aqui nosso nó de movimentação de plataforma. Basta clicar duas vezes nele para não reproduzir mais automaticamente. Mas, em vez disso, vamos pegar uma referência aos movimentos de nossa plataforma. Depois de criarmos essa linha do tempo, nossa referência a ela está aqui na seção de variáveis do painel My blueprint Vamos arrastar isso para dentro, vamos pegá-lo e, em seguida, vamos arrastar para fora e digitar a taxa de jogo definida. Isso nos permitirá personalizar uma taxa de jogo para essa plataforma. Vamos inserir isso no jogo de nossa linha do tempo. Agora, eu poderia codificar uma taxa de jogo aqui. Na verdade, farei isso 1.0 Mas quero tornar isso exclusivo para cada instância, cada cópia do nosso motor de plataforma. O que posso fazer aqui é clicar com o botão direito neste pino. Podemos promover isso para uma variável. E ao fazer isso, uma nova variável é conectada automaticamente do tipo flutuante, e vou chamar isso de taxa de jogo A única coisa que eu quero fazer com essa variável selecionada é clicar no ícone do globo ocular para tornar essa instância editável Agora, quando eu compilo e volto ao meu editor de níveis, posso ver, com meu motor de plataforma selecionado, que o valor da taxa de jogo está aqui para eu personalizar para cada instância, cada cópia desse plano em meu Agora eu preciso fazer mais uma coisa aqui para que isso realmente funcione. Porque eu desconectei a reprodução automática do nosso movimento de plataforma Eu preciso de algo para realmente disparar isso, para dizer à nossa plataforma que realmente se mova. Para isso, vou simplesmente arrastar este evento e começar a jogar aqui. Se você não herdou da sua plataforma BP, você poderia simplesmente fazer com que um evento começasse a ser jogado Mas como isso é herdado de nossa plataforma de salto, tudo o que precisamos fazer é estender isso dessa forma Novamente, se você não está herdando de uma plataforma de salto através uma plataforma, comece a jogar conectado aqui. Nós vamos te fazer muito bem. Essa será sua configuração final, seu roteiro final aqui. Se você quiser pausar o vídeo aqui, você pode conferir. Vamos compilar isso e voltar para o nosso editor de níveis Agora você pode ver que vou até Alt, clique com o botão esquerdo e arraste para trazer outra referência a isso. Eu poderia fazer com que essa plataforma em particular subisse, digamos assim. Talvez também vá em um ângulo como esse. Mas vou mudar a taxa de jogo para 0,05. Algo muito lento Talvez nesta plataforma, eu mude a localização para ir até aqui. E eu vou mudar isso para 0,1 Agora eu tenho os dois indo bem devagar. Se eu fosse entrar e jogar, na verdade, não vou entrar e jogar. Vou simular meu jogo clicando nesses três pontos simulação rodará o jogo sem que eu realmente controle um personagem Então, vamos lá. Você os verá se movendo na janela de exibição E lá estão eles se movendo. Este está se movendo bem devagar no lado esquerdo. E à direita também está se movendo, mas eles estão se movendo muito devagar. Mas a questão é que, para qualquer uma dessas plataformas, você pode determinar um local final bem como a taxa de jogo em que ele ocorre. Você pode fazer com que fique louco rápido, louco, lento. Sua escolha. Tudo bem, pessoal, isso bastará para oferecer este. Nos vemos na próxima. 14. Plataforma de lançamento (parte #1): Bem-vindos de volta a todos. Neste vídeo, vamos criar uma plataforma de lançamento Esse será um que fará nosso jogador voar no ar quando ele pousar em cima dele Então, vamos direto ao assunto agora. Se você ainda não importou as texturas que fizemos no início do curso, faça isso agora, porque usaremos algumas delas neste vídeo Vamos fazer com que essa plataforma de lançamento pareça uma espécie de cogumelo gigante Então esse é o nosso objetivo visual aqui. Depois de importá-los e eu entrar na pasta Texturas do meu jogo de plataforma, vou criar alguns E se eu rolar até aqui, os que vou usar para isso serão esse T Mushroom One, bem como esse Dirt Agora eu tenho os dois selecionados. Eu mantive o controle pressionado, selecionei aqueles. Em seguida, clicarei com o botão direito em um deles e criaremos materiais a partir deles. Agora, ao fazer isso, vamos criar dois materiais diferentes. Aqui estão, você pode ver que são materiais pela etiqueta aqui na imagem em miniatura Vou deixá-los com seus nomes atuais. Eu vou salvá-los. Salve tudo para salvar esses ativos Nós os usaremos daqui a pouco aqui. Em seguida, o que vamos fazer é voltar para nossa pasta de blueprints e criar um novo blueprint do zero clicando com o botão direito do mouse em alguma classe de blueprint de espaço vazio Essa será uma aula de atores, e vamos chamá-la de plataforma de sublinhados da BP Lançador de sublinhados. Tudo bem, e então vamos clicar duas vezes sobre isso para abri-lo. Tudo bem, em primeiro lugar, vamos começar adicionando alguns componentes ao nosso projeto No painel Componentes, clique no botão Anúncio. A primeira que vamos adicionar é uma malha estática instanciada Esta aqui, vamos usá-la daqui a pouco, mas vamos adicioná-la por enquanto. Vou dar um nome a isso, vamos chamar esse baú. Isso será usado para representar o tronco, se você quiser, de nossa plataforma em forma de cogumelo aqui Em seguida, vou selecionar meu componente raiz de cena padrão. Mais uma vez, para adicionar outro componente, este será simplesmente um componente de malha estática. Vou chamar isso de Mushroom Top. Em seguida, vou anexar um componente ao meu Mushroom Top aqui Com esse cara selecionado, vou clicar em Adicionar. Em seguida, vou adicionar um colisor de caixas. Colisão de caixas aqui. E vamos chamar isso de fundo de colisão. Tudo bem, com tudo isso pronto aqui, agora vou definir os detalhes. Então, começando com nossa malha estática instantânea aqui, no painel de detalhes, vou encaixar uma malha estática e quero encaixar em forma de cilindro. Vou digitar silinilindrf. Eu posso soletrar corretamente. Lá vamos nós. Agora há vários cilindros aqui, aquele que eu vou usar E você pode ver na ponta da ferramenta o caminho para ela, bem como o tamanho aproximado. É este aqui do caminho das formas básicas do motor Tem um tamanho aproximado de 100 por 100 por 100. Escolha esse, para garantir que você tenha exatamente o mesmo Esme e verá esse povoado daqui a pouco Você ainda não vê nada no ponto de vista, mas verá isso sendo usado em pouco tempo Também vamos aplicar um material nisso e isso vai ter nosso material sujo. Se você apenas digitar sujeira, é esse material. Dirt one matt, esse é o material sujo que acabamos de criar. Agora, para a localização disso, vou definir a localização Z como 50, 80, 50. Pressione Enter. E você pode ver que ele será colocado neste ponto , mais ou menos aqui. E eu sei que você não vê nada ainda, mas estaremos gerando alguns pedaços do tronco, se você quiser, quando adicionarmos algum script a esse projeto A seguir, vamos selecionar nossa parte superior de cogumelos. O que eu quero fazer para obter esse formato está na parte de malha estática do painel de detalhes com o Mushroom Top selecionado Eu quero escolher a cápsula larga underscore. Está na pasta Shapes do conteúdo inicial. Então eu vou adicionar o material dele, daquele cogumelo, um material que acabamos de criar Vai dar uma olhada nisso. E então eu vou mudar a localização Z para 80 também. Aumente um pouco. Ok. Em seguida, vou escolher nosso componente de fundo de colisão Aqui está esta caixa para obter detalhes sobre isso, vamos definir o formato da caixa para 5.050,50 Também vamos mudar a localização z para 35, 35. Movendo-o um pouco para cá, pendurando um pouco a parte inferior da parte superior do nosso cogumelo Em seguida, vamos descer para a predefinições de colisão Predefinições de colisão, atualmente estão configuradas para sobrepor todas as dinâmicas Vou alterá-lo para personalizado e vamos configurar todas as nossas caixas aqui para serem ignoradas. Então, clique aqui para configurá-los todos para serem ignorados, exceto que vamos configurar nosso lago para se sobrepor Vamos fazer com que essa plataforma passe por uma tigela, para que nosso jogador possa pular pela parte inferior e depois pular pela parte superior. É basicamente assim que isso vai funcionar. Então, essas serão nossas configurações de colisão para essa colisão De baixo para cima, aqui em cima. Também vou alterar a extensão da caixa do Z. Atualmente, é 50 Acho que vou definir isso para 60, um pouco mais grosso assim Sim, está quase certo. Feito isso, vamos em frente e economizemos. Ok, em seguida, vamos adicionar algumas variáveis aqui embaixo no painel do meu plano E essas variáveis nos permitirão personalizar altamente a aparência e a forma dessa plataforma em forma de cogumelo, porque certamente não parece muito no momento Então, clicando aqui, no botão de adição das variáveis, o primeiro será chamado de mush top, underscore Opa, escala de sublinhado, sublinhado x. Essa será uma variável Vou marcar esta caixa, por exemplo, Editável imediatamente. Vou continuar e compilar isso. Quero definir um valor padrão para um imediatamente, uma escala de 1,0 basicamente significando 100% de seu tamanho normal. Com isso criado, vou clicar com o botão direito do mouse nele. Vou duplicar isso. E eu vou chamar essa escala de Y. Ela vai ser encontrada e compilada Ele terá todas essas mesmas instâncias de configurações editáveis com o mesmo valor padrão Vou fazer o controle mais D para duplicar essa variável Isso será mushtpscale z. E mais uma vez, se você compilar, poderá ver que ele também tem um valor padrão de um, também também próxima que vamos criar, clicando nesse sinal de mais para a variável, ela será chamada de velocidade Isso controlará a velocidade do nosso lançamento quando saltarmos da Isso vai ser uma variável vetorial. Também vamos definir isso para ser editável por instância. Se eu compilar isso, definiremos nossa velocidade de lançamento por padrão 2.500. Mas poderemos alterar isso por instância, por cópia desse esquema no editor devido a essa caixa de no editor devido Vamos adicionar mais uma variável aqui, clicando neste botão de adição. Este será chamado, vamos chamá-lo de endpoints de tronco Nosso ponto final do tronco de cogumelo. Vamos usar isso para determinar o ponto final do nosso tronco de cogumelo Teremos um baú que se estenderá para fora daqui e que construiremos em pouco tempo Vamos continuar e compilar essa instância comestível. Queremos que isso seja verificado. Também queremos que esse widget show three D também seja verificado Assim, podemos arrastar o ponto final. Vamos deixar os valores em 0,00 agora. Tudo bem, em seguida, vamos pular para a guia de script de construção de nossas plantas Agora, a guia do script de construção será muito parecida com a nossa guia de gráfico de eventos, onde você pode colocar alguns scripts para fazer as coisas acontecerem. No entanto, ao contrário de uma guia de gráfico de eventos que executa o script em tempo de execução, o script de construção é executado em tempo de design. Isso é ótimo para criar um projeto como esse. Isso nos permitirá personalizar coisas altamente. Vou te mostrar o que quero dizer aqui. A primeira coisa que preciso fazer é trazer uma referência ao nosso topo de cogumelos aqui Vamos arrastar e soltar isso em nosso gráfico. Com isso, podemos conversar com ele, podemos alterar algumas propriedades sobre ele. Vou sair disso e digitar uma escala mundial definida três D para nossa escala. Vou arrastar para trás e digitar make vector. Agora, com isso, podemos inserir nossa escala de cogumelos, x, y e z à medida que alteramos esses valores no editor Sempre que alteramos qualquer um desses valores no editor, ele aciona o script e, na verdade, ajusta o tamanho da nossa parte superior em forma de cogumelo Aqui mesmo. Aquele cara ali mesmo. Ok, continuando, vou conectar isso a um nó de quatro voltas. Agora que você tem cada nó de loop para cada um com break, queremos quatro loops simples. Esse cara aqui sob controle de fluxo de quatro circuitos, vamos usar esses quatro circuitos para determinar quantas seções essencialmente do tronco queremos adicionar à base do nosso lançador de cogumelos Para fazer isso, vou trazer meu terminal de tronco. Vamos pegá-lo, vou arrastar para fora disso e digitar o comprimento do vetor. Vamos obter o comprimento desse vetor, essencialmente, qual será o comprimento desse ponto final Veremos um exemplo dessa matemática aqui em breve. Agora, porque nosso baú é essencialmente 100, lembre-se de que temos nosso baú de mingau aqui E estes serão essencialmente em incrementos de 100 Esse tamanho total do cilindro era de 100 por 100. Por 100. Vamos dividir isso, trazer um nó de divisão pelo número 100. Agora, isso vai gerar um valor flutuante. Queremos converter isso em um valor inteiro. O que vou fazer é arrastar até aqui e digitar truncado Ele vai arredondar isso para o número do orifício mais próximo. Vamos inserir isso em nosso último índice. Agora, o que um nó de quatro loops faz é que, ao chegar a esse nó, percorrerá esse nó, quantas vezes especificarmos aqui, começando com o índice zero e indo até o último índice. Se for 0-9, ele passaria por isso. Ou seja, executar isso dez vezes 012-345-6789 O que queremos fazer dez vezes? Bem, o que queremos fazer é trazer nosso baú, arrastá-lo para dentro, e então vamos tirar isso e dizer que vamos adicionar uma instância desse tronco de mingau Uma instância, que é uma cópia, se você quiser, desse cilindro. Agora, precisamos especificar para onde queremos que essa instância vá. Agora, novamente, esse cilindro tem a forma de uma haste. Então, imagine que se você estiver empilhando essas coisas umas sobre as outras, isso basicamente formará uma coisa com aparência de caule Vamos especificar para onde eles vão conectando-os a essa transformação de instância Então, vou me arrastar para trás e digitar transform E uma transformação consiste em dados de localização, rotação e escala. Na verdade, vamos nos preocupar apenas com esses dados de localização Vamos recuar daqui e digitar make vector like Então, deixe-me dar um pouco mais de espaço aqui. O que vamos fazer para determinar para onde esses troncos vão ir é sair desse índice e eu vou fazer um nó de multiplicação Vamos multiplicar isso por um valor flutuante. Poderíamos fazer disso um valor inteiro. Na verdade, vou manter isso como um valor inteiro, na verdade, Vou clicar com o botão direito sobre isso. Vou transformar esse pino de saída em que também vou transformá-lo em um flutuador A razão pela qual vou converter isso em um float é porque preciso conectá-lo como um float ao nó do vetor make Vou inserir isso no valor Z e multiplicar esse índice por menos 100 Você verá o porquê aqui daqui a pouco. Para dar um exemplo matemático, ver é acreditar e fazer com que isso faça muito mais sentido Tudo bem, vou compilar esse plano e depois vou pular para o meu nível No momento, nossa plataforma de lançamento parece estranha, mas poderemos personalizá-la altamente Agora eu tenho minhas duas configurações de snap D definidas para o meu nível principal aqui Vou arrastar um desses para cá agora. Na verdade, eu vou colocá-lo aqui de uma forma um pouco mais ampla. Agora veja isso. Nossa parte superior não parece muito, mas no painel de detalhes, expomos todas essas variáveis Mushtop scale, must y, mush top scale, z, etc. Nós os usaremos aqui em pouco tempo, porque se os escalarmos, você poderá ver como isso está alterando o tamanho da nossa plataforma Nosso topo, esse valor aqui está sendo aplicado aqui em nosso script de construção. Sempre que editamos esses valores , esse script é imediatamente acionado Sempre que fizermos alguma alteração qualquer um dos valores associados a esse script, esse script será executado e, assim, ajustará o tamanho do nosso topo em forma de cogumelo É assim que esse script é acionado. Durante o período de design, quando alguma coisa em nosso projeto aqui está mudando Agora observe que, se eu entrar no meu nível e encontrar meu endpoint aqui, esse widget de três D, você pode ver que eu o selecionei aqui embaixo Veja o que acontece quando eu retiro isso. A cada cem unidades que eu desço, estamos adicionando um pedaço de baú. Então, isso fará com que possamos torná-los curtos ou longos, etc Então, vou definir meu endpoint de tronco aqui para um número sólido Vamos usar algo como menos 200, um bom valor redondo, desse jeito, menos 200. Lá vamos nós. Agora vamos voltar ao nosso script de construção e examiná-lo com esse valor negativo 200 como exemplo. Aqui estamos em nosso lançador de plataformas. Toda a nossa escala do topo do cogumelo é determinada aqui pelo que definimos esses dois em nosso editor, que está definindo a escala mundial do topo do cogumelo Mas agora estamos nos considerando com esse loop dianteiro. Nosso ponto final de tronco está atualmente definido como menos 200, nosso comprimento vetorial é 200 Agora 200/100 é igual a dois. Nosso primeiro índice será zero. Nosso último índice será 2012. O que significa que esse corpo de loop vai disparar três vezes 012 E toda vez que dispara, ele emitirá o índice zero, depois um, depois dois A primeira vez que ele dispara o índice é zero. Vamos multiplicar isso por menos 100, que é zero E colocará uma versão desse tronco obrigatório nesse local. Na segunda vez que disparar, ele exibirá o índice de 11 vezes menos 100 será igual a menos 100 E então vamos colocar outra seção, nosso tronco de mingau, abaixo de menos 100 de onde ele está localizado Na próxima vez, nosso índice será 22 vezes menos 100 é menos 200. Assim, ele colocará outra seção do tronco abaixo da anterior, compensada por 100 unidades irreais Podemos ver isso aqui com 12,3 seções de tronco. Agora está construído de tal forma que não podemos ir na direção oposta. E, de fato, se você arrastasse isso para a outra direção, ele ainda construiria o tronco na outra direção. A direção negativa, se você quiser. Mas eu estou bem com isso assim. Agora, eu recomendo que você deixe suas escalas X e Y superiores iguais. Na verdade, poderíamos ter feito disso apenas um valor, caso contrário, você pode ter alguns efeitos de aparência estranha como esse, em que ele fica realmente esticado Mas eu queria dar a você o poder de personalizar isso, como você quiser, é o que é. Agora você também pode ver que, à medida que escalamos o topo do cogumelo, nosso colisor na parte inferior aqui está escalando junto aqui está escalando Isso é muito bom. Vou definir um pouco todo esse plano porque quero que nosso jogador possa tentar pular pela parte inferior da plataforma aqui 15. Plataforma de lançamento (parte #2): Agora, ainda não conseguiremos percorrê-lo porque não adicionamos nenhum script para que possamos percorrê-lo. Então, vamos fazer isso a seguir. Vamos voltar ao nosso lançador de plataformas BP. Desta vez, vamos ver nosso gráfico de eventos. Porque queremos que esse script seja executado durante o tempo de execução. Vou passar para a direita aqui, algum espaço vazio, e queremos selecionar nosso fundo de colisão Vamos clicar com o botão direito do mouse sobre isso e adicionar um evento para iniciar a sobreposição Vamos continuar e clicar com o botão direito nele novamente. Adicione também um evento para finalizar a sobreposição. Agora, o que vamos fazer é descobrir quem foi o outro ator que esteve por trás Podemos fazer o que fizemos antes, podemos escrever, clicar em algum espaço vazio e obter o personagem do jogador. Assim, podemos descobrir se o outro ator é igual ao personagem do nosso jogador. Então, vamos copiar isso e trazer isso aqui para a sobreposição final Ambos se conectarão a uma ramificação. Então, vou manter pressionada a tecla B e clicar com o botão esquerdo, essa será a nossa condição que verificaremos com curtidas. Então, o que queremos fazer é falar com nosso topo, nosso topo de cogumelos Arraste uma referência a isso, vamos arrastar isso e digitar set collision enabled Quando começarmos a colidir com o fundo da colisão, queremos definir isso como nenhuma colisão, como a que temos aqui Vamos copiar e colar isso. Podemos inserir a mesma referência e, se for verdade que estamos encerrando essa sobreposição, queremos ativar a colisão novamente, que será ativada Tudo bem, então vamos compilar e salvar isso e ver se podemos pular até o fundo da nossa plataforma de cogumelos Nossa plataforma de movimento muito lento. E sim, de fato, podemos ir até o fundo dela. No entanto, ainda não lançamos. Então, vamos resolver isso. Em seguida, para lançar nosso personagem, vamos querer detectar quando nosso personagem pousa em cima do nosso componente principal de cogumelo aqui Então, queremos um evento associado a isso. Vamos clicar com o botão direito do mouse em nosso componente mush top. Vamos adicionar um evento. E o que queremos fazer é adicionar um hit de componente quando atingimos esse componente que adicionará esse evento aqui embaixo. Vou navegar um pouco até aqui, criar uma seção totalmente nova do script. Agora, não queremos que isso comece ou não queremos continuar nenhuma execução aqui. Se alguma coisa atingir nosso topo de cogumelo, somente se for nosso personagem Então, vou me afastar do nosso outro ator. Vou colocar o sinal de igual. E, mais uma vez, vamos verificar se isso é igual ou obter o nó do personagem do jogador, se o outro ator é nosso personagem de jogador, se for igual ao nosso personagem de jogador, vamos trazer um nó de ramificação, segurar e clicar com o botão esquerdo. Se tudo isso for verdade, vamos querer fazer algo uma vez. Posso clicar com o botão direito do mouse e pesquisar um único nó. No entanto, vou manter pressionada a tecla e clicar com o botão esquerdo e isso trará um único nó. O que eu quero fazer uma vez é sair do nosso personagem get player aqui e pesquisar um nó chamado personagem de lançamento. Esta é uma função associada ao personagem, então você deve arrastar para fora do personagem get player neste caso para conectá-lo imediatamente como alvo e encontrar essa função. Então, só queremos lançar nosso personagem uma vez. Qual será a nossa velocidade de lançamento? Bem, se eu selecionar minha velocidade de lançamento aqui, podemos ver que armazenamos isso em uma variável Vou arrastar e soltar isso em cima desse alfinete assim. Atualmente, definimos isso para 2.500. Mas tornamos essa instância editável, que possamos personalizá-la para cada instância do nosso lançador de plataforma Agora eu quero disparar isso, não só quando nosso personagem atingir o topo do cogumelo, mas quando ele pousar sobre ele Não queremos fazer isso sempre que atingirem a lateral da parte superior do nosso cogumelo Para verificar isso, queremos sair do nosso hit não componente aqui e abriremos esse resultado de hit. Este alfinete aqui tem muitas informações para nos dar. Podemos extrair essas informações por meio de um nó de resultado de break hit. Vou expandir isso para que possamos ver todas as coisas diferentes relacionadas a esse sucesso que possamos descobrir. O que estamos procurando para este é que queremos sair do normal de impacto. Essa é essencialmente a direção em que estamos impactando o topo do cogumelo . Vou arrastar para fora daqui e trazer um vetor igual ao nó vetorial Não faremos exatamente o mesmo vetor. Na verdade, não, nós queremos um vetor igual. Desculpe, foi minha culpa. Vetor igual ao vetor. Tem o triplo sinal de igualdade para isso. Vamos trazer um valor z de menos um. Ou seja, essencialmente, estamos impactando isso na direção descendente Negativo, ou seja, para baixo na direção z. Ok, na verdade, também queremos verificar isso como uma condição. Em vez de conectar isso a outro nó de ramificação. O que posso fazer aqui é arrastar o resultado dessa verificação para ver se nosso outro ator é igual a. O personagem do jogador pode arrastar isso e trazer um nó, o booleano Então, vamos verificar se o outro ator que atingiu nosso topo de cogumelo é nosso personagem E vamos verificar se nosso impacto na parte superior do cogumelo está na direção descendente Então, nosso fluxo será assim. Estamos verificando se essas duas coisas são iguais. E se isso for verdade, então uma vez vamos lançar o personagem. Agora, isso deve estar muito bem, mas eu também quero acrescentar um pouco de habilidade a isso. Eu quero adicionar um pequeno efeito de partícula emissora. E também quero fazer com que a parte superior do cogumelo pareça estar saltando, adicionando um pequeno efeito de animação Então, o que vou fazer é arrastar meu personagem de lançamento até aqui e colocar um nó chamado Spawn Emitter no local Agora, isso é para reproduzir um efeito de partícula mais antigo, um efeito de partícula em cascata E a razão pela qual vou procurar isso, em vez de um sistema de desova no local que funcionaria como Niágara, um novo efeito de sistema de partículas é porque tenho um em mente daquele pacote de efeitos de em vez de um sistema de desova no local que funcionaria como Niágara, um novo efeito de sistema de partículas é porque tenho um em mente daquele pacote de efeitos de lâmina infinita. Resumindo, você pode gerar um emissor para um emissor em cascata mais antigo ou gerar um sistema et, local para um efeito local para O que eu tenho em mente aqui se chama skill underscore launch Pelo contrário, isso é o lançamento de um salto de habilidade. Lançamento da base Skill Leap. Skill Leap Base, lance aquele cara ali mesmo. Agora eu preciso especificar um local em que isso vai aparecer Para isso, vou usar nosso ponto de impacto do resultado da ocorrência, podemos arrastá-lo até nossa localização. Vou clicar duas vezes nesse fio para adicionar um pequeno nó de redirecionamento e deixar isso um pouco mais limpo Acho que também vou definir a escala dessa partícula para três vezes seu tamanho normal Só para torná-lo um pouco mais proeminente. Fácil de ver. Ok. Em seguida, o que eu quero fazer, e eu vou segurar o botão direito do mouse e deslizar para a direita aqui, é trazer um nó da linha do tempo, clicar com o botão direito Faça uma busca por uma linha do tempo. Adicione a linha do tempo aqui embaixo. E isso vai me levar a nos dar um nome. Vou chamar isso de minha melhor linha do tempo. E vou conectar isso ao nosso jogo a partir do Início. Agora, neste nó aqui, vou clicar duas vezes nele para criar uma linha do tempo Isso servirá como multiplicador de escala para nossa escala X, Y e z, para nossos valores máximos de cogumelos aqui Na verdade, vou trazer todos os três imediatamente, em alta escala x. Vou me divertir. Na verdade, se você segurar a tecla control, clicar com o botão esquerdo e arrastar, você obterá uma versão melhor delas imediatamente. Assim. Vou multiplicar cada um desses valores. Então, posso sair disso e digitar o símbolo de multiplicação imediatamente. Eu vou multiplicar tudo isso. Vamos precisar de uma cópia exclusiva para tudo isso. Controle C, controle V por meio algum multiplicador que estamos prestes a extrair de nossa linha do tempo Crie e saia da nossa linha do tempo. Vamos clicar duas vezes em nossa linha do tempo imediatamente. O que eu quero fazer aqui é adicionar um novo flutuador. Isso será chamado de nosso multiplicador de escala. Vamos criar uma pequena animação aqui que durará três décimos de segundo Vou apenas manter pressionada a tecla de controle e rolar aqui para aumentar um pouco o zoom. E mantenha pressionado o botão direito do mouse do arroz para colocar isso de volta à vista dessa forma. Tudo bem, vou adicionar quatro quadros-chave aqui. Então, vou manter pressionada a tecla shift e continuar assim, 123,4 aproximadamente nesse padrão em ziguezague Você pode obter esses quadros-chave clicando com o botão direito do mouse e adicionando também um quadro-chave. Deslocar e clicar com o botão esquerdo também os obterá. Ok, com elas prontas, vou agora selecionar cada uma delas individualmente e adicionar uma hora. Para este primeiro , será zero e o valor será um. Posso clicar nessas setas para ver isso. Vou ampliar um pouco aqui atrás. Vou selecionar meu segundo quadro-chave. Agora, no segundo, vou adicionar um tempo de 0,1 e um valor de 0,8. Novamente, esses serão valores de escala. O segundo que vou selecionar será um tempo de 0,2 e um valor de 1,3. Então esse último será um tempo de 0,3 e um valor de um se ultrapassar Tudo fora da tela, você pode ampliar para trás. Vou clicar com o botão esquerdo, arrastar para destacar todos eles. Eles estão todos em azul. Agora eu posso clicar nessas setas para emoldurá-las, que você possa ver esse padrão em ziguezague que eu padrão em ziguezague que Ok, então o que acabamos de fazer é adicionar uma pista flutuante chamada multiplicador de escala Vou pular da nossa linha do tempo aqui novamente, essa linha de tempo de três décimos de segundo Agora, esse multiplicador de escala é produzido de nossa linha do tempo ao longo de três décimos de Ele vai se multiplicar ou vai gerar um valor flutuante . Isso vai passar de 1-2 0,8 para 1,3 para um. Alterando esse valor ao longo do tempo. Esse é o valor que vamos multiplicar em relação à nossa escala máxima de cogumelo x, y e z. Agora vamos conectar tudo isso em um nó vetorial Então, vou clicar com o botão direito do mouse em algum espaço vazio digitar make vector. Vamos conectá-los dessa forma para criar um único valor vetorial x, y e z. A razão pela qual estamos fazendo isso é para que possamos trazer nossos principais componentes em forma de cogumelo Então, vamos conseguir isso. Em seguida, arraste para fora dela e digite escala relativa definida três a escala relativa definida três D. Esse será nosso novo valor x, y e z para a parte superior do cogumelo À medida que isso for atualizado ao longo de 0,3 segundos, alteraremos os multiplicadores associados ao tamanho do topo do nosso cogumelo, criando um pequeno efeito saltitante Tudo bem, agora, antes de testarmos isso, vamos fazer mais uma coisa. Atualmente, todo esse lançamento saltitante no topo da árvore está programado para acontecer apenas uma vez O que queremos fazer é redefinir isso de alguma forma para que isso possa acontecer novamente. Então, para fazer isso, vou clicar com o botão direito do mouse e adicionar eventos personalizados. Clique com o botão direito, evento personalizado. Vou nomear esse lançador de reinicialização em maiúsculas. Vou conectar isso ao reset. Agora, o que eu preciso fazer é chamar esse inicializador de reinicialização no final do meu script aqui, apenas para tentar ver isso um pouco mais dessa forma Vou arrastar até o final daqui, vou introduzir um atraso. E vamos atrasar dois décimos de segundo antes de reiniciarmos isso Agora eu posso sair daqui e digitar reset launch lá. Vai, vai convocar esse evento personalizado aqui para permitir que eu caia convocar esse evento personalizado aqui para em cima do meu cogumelo mais uma vez e reinicie todo esse efeito de salto Tudo bem, então, tentando colocar tudo isso em vista, é isso que temos para o nosso roteiro final. Se você precisar pausar o vídeo aqui, vamos compilar e salvar. Agora, vamos tentar . Aqui vamos nós. Ok, vou passar pela baixo do meu cogumelo aqui e pousar em cima Bounce, aí está, salte novamente, tocando aquele efeito de partícula E isso é muito bom. Agora, só para mostrar a você, podemos tornar tudo isso um pouco único. Vou clicar no meu cogumelo aqui. Vou apenas manter pressionada a tecla Alt, clicar com o botão esquerdo e arrastar. E agora, com essa instância do cogumelo, tudo o que vou fazer é alterar minha velocidade de lançamento, essa variável, então, em vez de esta me lançar nesse valor, vou alterá-la para simplesmente 500 Então, este segundo não vai me lançar tanto. Então, se eu voltar e jogar aqui, veja que esse primeiro vai me lançar muito. E então o segundo, só um pouquinho, você pode ver que está me permitindo mais uma vez. Ele está reiniciando esse lançamento para que eu possa pular nele repetidamente. Então é assim que podemos criar uma plataforma de lançamento altamente personalizável Tem uma animação, tem a personalização de quão alto estamos lançando. Muito legal, pessoal, isso vai acabar com este. Nos vemos na próxima. 16. Componentes de captação de moeda: Bem-vindo. Ao longo dos próximos vídeos aqui vamos criar uma coleta de moedas. Mas antes de fazermos isso, quero ter certeza de que você importou algumas das texturas e arquivos de áudio que deveria ter importado logo no início do curso Porque neste vídeo vamos lidar com algumas dessas texturas de moedas Vamos transformar alguns deles em materiais, bem como vamos fazer referência ao áudio dessa moeda aqui Portanto, se você não os importou no início do projeto, faça-o agora. Tudo bem. Feito isso, vou começar na minha pasta Texturas aqui Agora eu tenho duas versões diferentes da moeda. Se você quiser ter uma moeda mais nova ou uma moeda retrô, o que eu quero fazer é selecionar uma, depois manter pressionado o controle e selecionar a segunda E com os dois destacados, vou clicar com o botão direito do mouse e convertê-los em materiais. E você pode ver que há um ali e outro ali. O que vou fazer a seguir é selecionar minha pasta Plataforma aqui, plataforma. Vou adicionar uma nova pasta e vou chamar isso de materiais. Na verdade, vou arrastar esses materiais para dentro dessa pasta. Atualmente, tenho esse cara aqui, clique com o botão esquerdo e arraste-o para os materiais, digamos, mova aqui. E eu também tenho alguns outros materiais aqui da plataforma de lançamento. Então, vou puxar isso para cima, mantendo pressionado o controle, vou selecionar esses são os outros três que você pode ver porque eles têm esses ícones de esfera. E vou clicar com o botão esquerdo do mouse e arrastá-los para a pasta Materials também. Vamos movê-los para cá, depois vou para minha pasta de materiais e esses dois materiais de moedas. Eu só vou abrir porque há alguns pequenos ajustes que eu quero fazer dentro de cada um deles. Também vou pular para a outra, a moeda retrô, dependendo de qual você vai usar Agora, o que eu quero fazer aqui é, antes de tudo ter uma forma diferente aqui no meu visualizador. Aqui embaixo, na parte inferior, você pode definir uma malha de visualização diferente. Vou simplesmente escolher o cubo, mesmo que ele esteja em todos os lados Em seguida, vou manter pressionado o botão esquerdo. Você pode ver que eu vou tornar isso invisível em cada lado também. Você pode ver o fundo com ele. Então, clicar no ícone do cubo e, obviamente, isso parece terrível, mas vamos resolver isso. Ok, então o que precisamos fazer aqui é selecionar nosso nó de material mestre aqui. E no lado esquerdo, onde diz modo de mesclagem, vamos treinar isso. Faça a transição para translúcido. Treine isso. Em seguida, vamos inserir um pino no pino opacidade do nosso nó de material mestre Agora eu posso ver que é translúcido. Nós vemos exatamente aquela moeda. Queremos fazer isso com dois lados também. Suas alterações são, portanto, alterar o modo de mesclagem para translúcido e configurá-lo para dois lados Você pode dizer isso e depois fazer o mesmo com a moeda retrô Estamos mudando esse modo de mesclagem para translúcido. Mudando-o para dois lados. Certifique-se de inserir esse a, o valor alfa, na opacidade do nó do material mestre dessa forma Clique em seguro e podemos sair de lá. Quando terminar isso, farei a transição para nossa pasta de esquemas aqui em nosso navegador de conteúdo Vou clicar com o botão direito do mouse em algum espaço vazio, nova classe de blueprint Vamos basear isso em uma aula de ator porque vamos colocar isso em nosso mundo. E eu vou chamar essa moeda BP pick underscore, então vá em frente, clique duas vezes nela para abri-la no painel de componentes, haverá alguns componentes que gostaríamos de adicionar O primeiro será um componente de colisão esférica. Agora, ao clicar aqui, não se confunda e clique em Sphere imediatamente. Isso é uma bagunça estática. Você tem que rolar para baixo e estamos procurando uma colisão esférica Vou deixar isso ter o nome de esfera. No entanto, no painel de detalhes aqui, vou alterar o raio da esfera para 75 Agora vamos usar isso para ser o volume, o volume do gatilho que verificamos, para ver se devemos coletar essa moeda ou não. Agora, com essa colisão de esfera selecionada, vamos adicionar outro componente e este vamos adicionar um cilindro para que você possa simplesmente digitar cilindro e há um cilindro de formato básico Vá em frente e selecione isso. No painel de detalhes. Há algumas coisas que eu quero modificar. Essencialmente, vou inclinar isso de lado e apertá-lo para que pareça Tenho algumas configurações que predeterminei com antecedência a rotação Vou definir a rotação x para menos 70. Vamos definir a rotação y para menos 90 e vamos definir a rotação z para menos 20. Então eu vou mudar a escala também, porque essa seria uma moeda de aparência bastante gorda. 20,75 no x. E eu vou passar a tecla Tab e fazer 0,75 no Y. E para o Z, vou fazer 0,07 e Isso o esmaga. Parece uma moeda. Como você pode ver, tenho um volume bastante generoso para coletar isso. Eu também vou colocar um material sobre isso imediatamente. Se você selecionar essa lista suspensa no tipo de moeda, você tem uma das opções para escolher aqui. Eu tenho a moeda retrô ou a moeda da era mais recente. Acho que vou usar o Retro por enquanto, mas você pode ver que isso vai imprimi-lo nos dois lados Sim, temos uma pequena lacuna lá, mas vou viver com isso por enquanto. Tudo bem. Agora, outra coisa que eu quero fazer imediatamente é que essa malha tem uma colisão nela Se eu descer até a seção de colisão, diz-se que ela bloqueia todas as dinâmicas Eu não quero que o jogador colida com isso de jeito nenhum. Eu quero que eles simplesmente o captem quando se sobrepõem ao volume do gatilho Agora você pode pensar, ei, uma vez que sobreponhamos esse volume de gatilho, vamos fazer essa coisa passar de qualquer maneira Então, o que importa se isso colidir com ele? Bem, poderemos atirar algumas bolas de fogo mais tarde e não queremos necessariamente que algumas bolas de fogo colidam contra essa Então, vamos apenas desativar algumas colisões. E podemos fazer isso usando as predefinições de colisão e simplesmente alterando isso para nenhuma E isso vai resolver isso. Tudo bem, queremos adicionar mais um componente aqui no painel de componentes. Vamos clicar em Add In, Type in Rotting. E se você selecionar isso, isso não será anexado a nenhum componente específico. Pelo contrário, é aplicado a todo o nosso projeto aqui. Isso fará com que essa moeda gire e gire na taxa de rotação definida no painel de detalhes Atualmente, ele está configurado para uma rotação z para girar em torno do eixo z, um valor de 180 E isso vai ser muito bom. E se você quiser visualizar isso, basta pressionar botão Simular e ver aproximadamente sua aparência Isso é muito bom. Novamente, se você não gostar da aparência dessa moeda, pode alterá-la para o outro modelo de moeda. O novo modelo de moeda. Caramba, eu poderia optar por isso em vez disso Isso parece talvez um pouco melhor. Sim, vamos continuar com isso. Tudo bem, vá em frente e guarde isso. Isso é tudo o que queríamos realizar neste vídeo. Mais trabalho a ser feito no próximo vídeo, onde começaremos a criar alguns scripts. Nos vemos lá. 17. Roteiro de captação de moedas #1: Tudo bem, com nosso modelo de coleta de moedas aqui, criado. Vamos adicionar um ao nosso nível. E você pode ver que eu tenho minhas duas configurações de D snap atualmente definidas para o nosso nível principal, que é o nosso principal caminho a percorrer Se eu arrastar e soltar um desses em nosso nível dessa forma, agora temos isso bem na frente de onde nosso personagem aparece Se eu fosse entrar e jogar, basta arrastar isso para a tela imediatamente, você pode ver que está girando No entanto, nada acontece quando nosso personagem se sobrepõe a ele. Vamos adicionar um script para fazer com que algo aconteça. E para fazer isso, vamos clicar duas vezes em nossa moeda BP, pegar e voltar aqui E vamos clicar com o botão direito do mouse em nosso componente esférico. Porque queremos que algo aconteça quando nosso personagem se sobrepõe a essa esfera. Para adicionar um evento para sobrepor isso, vamos clicar com o botão direito do mouse nesse componente, adicionar evento no componente e começar a Isso nos levará da nossa janela de visualização para a guia do gráfico de eventos E queremos verificar se o outro ator, a outra coisa que se sobrepôs componente da esfera, é nosso personagem Podemos fazer como antes e clicar com o botão direito do mouse e fazer um nó de obtenção do personagem do jogador, obter o personagem do jogador. Podemos ver se o outro ator é igual ao personagem do nosso jogador. Vou manter pressionada a tecla, clicar com o botão esquerdo, e inserir um nó de ramificação. Essa é uma configuração totalmente válida. Estamos verificando se o outro ator é nosso personagem de jogador e, se for, podemos fazer coisas. Agora, só para mostrar outra maneira de fazer isso, vou manter pressionada a tecla Alt e clicar com o botão esquerdo para quebrá-la. Eu poderia sair do outro ator aqui e fazer um gato para sublinhar o personagem em terceira pessoa da BP Agora, voltando para nosso navegador de conteúdo aqui, nossa pasta de plantas em terceira pessoa, este é o personagem real que estamos controlando no jogo no momento Outra configuração que você pode fazer para verificar se estamos sobrepondo aquela moeda essa classe de personagem em particular é fazer isso assim Se for verdade, podemos continuar saindo daqui. Se isso fosse falso, o elenco falharia e poderíamos continuar saindo daqui. Qualquer um dos métodos funcionaria bem. Vou deletar esse elenco por enquanto e seguir esse método. O que queremos fazer é que, se for verdade que sobrepomos essa esfera, vou arrastar para fora da nossa ramificação verdadeira e digitar Portanto, dois sons DA2d são aqueles que não estão sendo reproduzidos em um determinado local mundial É essencialmente ótimo para reproduzir algum áudio que você ouve em voz alta. É aqui que vou inserir nossos sons de moedas. Se você clicar nesse menu suspenso, basta digitar a moeda, você encontrará o som da moeda que está reproduzindo o efeito sonoro. Vamos reproduzir também um efeito visual. Vou sair daqui e digitar o emissor de spawn no local O emissor usa o antigo sistema de efeito de partículas em cascata. Como alternativa, você pode criar um sistema de desova no local, que é o efeito das partículas do Niágara Agora, a razão pela qual vou usar isso é porque, em nosso conteúdo estrelado, temos acesso atualmente, data de hoje, ao efeito de partículas de explosão Eu tenho essa explosão de sublinhados. Agora, precisamos especificar em qual local gostaríamos que isso fosse jogado. Atualmente, ele será reproduzido no local 000 do meu mundo. Mas isso é simples. Se eu clicar com o botão direito do mouse, obtenho algum espaço vazio que eu possa fazer para obter a localização do ator. Esse nodo aqui, o alvo somos nós mesmos. Então, basicamente dizendo, vamos jogar isso na localização desse ator para a escala. Você poderia aumentar isso em tamanho, vou deixar como 11,1 mas você poderia fazer uma explosão gigante se quisesse Por último, mas não menos importante, continuaremos o fluxo de execução e digitaremos o ator de destruição que destruirá nosso Led. O que significa que essa moeda BP aumenta depois de tocarmos o som e depois de tocarmos aquele efeito de partícula específico Vamos continuar e compilar. Isso diz que nosso roteiro parece bom. Vamos salvá-lo também. E agora vamos ver se podemos realmente entender isso. Aqui estamos tocando, ouvimos um som, vemos um visual e ele é destruído novamente. Ainda não há pontuação envolvida. Isso está por vir. Mas pessoal, isso vai acabar com isso. Nos vemos na próxima. 18. Controlador de jogador: Tudo bem, bem-vindos de volta a todos. Bem, no último vídeo, criamos um script muito básico para pegar nossa moeda. No entanto, você notará que não está realmente completo. Como se não tivéssemos aumentado o total de moedas nem ganhado pontos ou algo desse tipo. E isso porque precisamos dedicar algum tempo agora para criar algo conhecido como projeto de controle de jogador Agora, o projeto de um controlador de jogador é um projeto muito básico encontrado em E esse é um plano super útil para fazer coisas como armazenar pontos, você, o usuário, armazenar moedas para você, o usuário vive Ele pode ser usado para pausar e retomar o jogo, obedecendo ao desejo de você, o Ele pode ser usado para mostrar o Hud. Novamente, você, o usuário, o controlador do jogador serve esse tipo de relacionamento individual entre você, o usuário e o personagem que você está controlando Para cada personagem que você controla, há um plano de controle de jogador Tudo bem, então Sr. Wonder, esse projeto de controle de jogador, como criamos um Bem, aqui em nossa pasta de plantas, plantas no jogo de plataforma, vamos adicionar outra Vou clicar com o botão direito em algum espaço vazio. Vamos adicionar uma nova pasta. E vou chamar essa estrutura porque a planta que vamos adicionar é chamada de classe de esquemas de estrutura Esses são projetos muito fundamentais e importantes encontrados em muitos projetos irreais Vou mergulhar nessa pasta agora e você poderá ver onde estamos em nossa estrutura de pastas. Em seguida, vou clicar com o botão direito do mouse aqui, classe Blueprint. Aqui, queremos usar essa classe principal do Player Controller. E diz que o controlador do jogador é um ator responsável por controlar um peão Esse é um personagem usado pelo jogador. Vou chamar isso de BP Underscore Player Controller. Agora, com isso criado, precisamos acessar as configurações do nosso projeto e dizer nosso projeto para usar esse esquema de controlador de player Podemos acessar as configurações do nosso projeto aqui no canto superior direito. Definimos as configurações do projeto aqui em mapas e modos. No lado esquerdo, escolha se você pode encontrar essa classe de controlador de jogador. À direita, podemos escolher esse menu suspenso em vez do controlador de player padrão. Vamos usar o que fizemos sob medida. Agora vamos armazenar muitos tipos diferentes de funções e variáveis dentro do funções e variáveis dentro nosso controlador BP player Então, queremos ter certeza de que nosso projeto usará isso, essencialmente, nosso controlador de jogador BP se conectará ao nosso personagem em terceira pessoa Eles trabalharão em conjunto durante todo o curso deste projeto Tudo bem, com isso, vamos voltar ao nosso projeto em si. Vamos escolher salvar tudo. Isso é literalmente tudo o que queríamos realizar neste vídeo. Se você receber um diálogo como esse, salve todos os caras que farão tudo por este. Nos vemos na próxima. 19. Roteiro de captação de moedas #2: Tudo bem, bem-vindos a todos. Neste vídeo, adicionaremos um script dentro do nosso controlador de player BP para totalizar nossas moedas Então, vamos direto ao assunto. Mais uma vez, este é o Pathway Content Platformer, Blueprint Framework, onde eu tenho esse controlador BP Vamos clicar duas vezes nele para abri-lo. Se você já viu isso dizendo que é um blueprint somente de dados, clique aqui para abrir o editor de blueprint completo Agora, dentro desse esquema, não vamos fazer nenhum trabalho dentro da janela de visualização Não haverá nada para ver aqui. Tudo isso será feito no gráfico de eventos. Essa será a força motriz, se você quiser, para executar algum script em nosso jogo Isso vai ser fundamental. E a razão pela qual vamos alojar esse script dentro do nosso controle de jogador é porque, ao contrário um personagem que pode morrer, um controle de jogador persistirá durante toda a nossa sessão de jogo Tudo bem, a primeira coisa que eu quero fazer aqui é adicionar algumas variáveis no painel Meu blueprint, clicando neste botão de adição de variável O primeiro será chamado de moedas. O tipo de variável aqui será um número inteiro. Polegadas significam números inteiros porque não teremos décimos de uma moeda Então eu vou escrever, clicar aqui, vou duplicar isso, e vou chamar isso de moedas em vidas Tudo bem, vamos compilar isso imediatamente para que possamos adicionar alguns valores padrão para isso Para um número padrão de vidas no painel de detalhes, vou defini-lo como três para moedas. Vou definir nosso valor padrão. Bem, vamos deixar em zero. Não vamos começar com nenhuma moeda. Ok, então encontre uma área vazia em seu gráfico aqui. Você tem muito disso. Vou clicar e arrastar. E vou adicionar um evento personalizado imediatamente. Clique com o botão direito do mouse, digite o evento personalizado. Agora, um evento personalizado é aquele que você pode nomear e ele só é acionado quando você o chama manualmente. Então, vamos criar o evento personalizado aqui e vamos chamá-lo daqui a pouco. Vou chamar esse evento personalizado de moeda porque é isso que esse script vai fazer. Então, com esse nó selecionado, deixe-me ampliar aqui. Mantendo pressionada a tecla de controle e ampliando o painel de detalhes, adicionarei uma entrada Então clique neste botão de adição aqui. E a entrada será chamada de moedas a serem adicionadas, e vamos fazer esse número inteiro assim Agora, isso é sempre um pouco enganador. Estamos chamando isso de entrada e isso está aparecendo no lado de saída desse nó. Você verá um pouco por que isso é chamado de entrada , porque quando solicitarmos esse evento personalizado, inseriremos nó o número de moedas que desejamos adicionar. Ok, então aqui está como nosso script fluirá quando isso for chamado. Vamos alimentá-lo com uma certa quantidade de moedas para adicionar e vamos arrastar para fora e digitar o botão de adição. E vamos trazer um nó de anúncios, quantas moedas quisermos adicionar. Vamos adicionar ao nosso total aqui. Nosso número total de moedas será armazenado nessa variável, então podemos arrastá-la e soltá-la diretamente neste pino. Então, vamos inserir uma certa quantidade de moedas, adicioná-la ao nosso total e queremos fazer disso essencialmente nosso novo total. No entanto, quero fazer algumas verificações aqui. Primeiro, vamos verificar se isso é maior ou igual ao número 100, porque concederemos uma vida extra se você exceder esse valor de 100. Vou sair disso nos dar o resultado dessa matemática. E vamos trazer um maior que igual a n maior igual. Então eu vou sair disso e trazer isso para um nó de ramificação. Então, vamos dizer que se nosso total aqui for maior ou igual a 100, faremos alguma coisa. Se isso for verdade, faremos algo diferente se for falso. Agora, se é falso que não tenhamos chegado a um valor de 100, o que vamos fazer é arrastar para fora daqui esse total. Vamos trazer um nó de fixação. Vamos fixar um número inteiro, vamos fixá-lo entre um valor de 0,100. Então, teremos esse fluxo em um setter Veja como funciona. Quando arrastamos nossa variável coins, a arrastamos assim, podemos obtê-la como fizemos antes ou podemos configurá-la neste caso, vamos configurá-la, conectá-la assim, então vamos fazer com que ela saia da ramificação falsa dessa forma. Agora, só para falar sobre exatamente o que esse script atual está fazendo. Vamos alimentar uma certa quantidade de moedas para adicionar. Em seguida, adicionaremos isso ao nosso número existente de moedas. Vamos adicioná-los juntos. Descubra se esse número é maior ou igual a 100. Se for falso que não seja maior ou igual a 100, garantiremos que esse total aqui seja um valor 0 a 100. Estamos garantindo que ao configurá-lo como mínimo ou máximo de 100, esteja em algum lugar aqui E então vamos definir isso como nosso valor atualizado da moeda. Então, se fôssemos coletar uma moeda, pegaríamos uma. Foi adicionado ao nosso total atual, que é zero. Esse total será um. Não vai ser maior ou igual a 100. Então, sairemos dessa ramificação falsa e nosso total atualizado será um. Ok, em seguida, vamos lidar com o que acontece se atingirmos esse limite de 100 moedas Então, vamos mover isso um pouco para cá. Vamos sair desse nó de anúncios mais uma vez quando somarmos esses dois. E desta vez vamos trazer um nó de subtração, então basta colocar um símbolo de menos E isso nos trará o nó de subtração do operador aqui. Vamos subtrair 100, observe que temos um nó de anúncios aqui Subtraia o nó aqui. E então também vamos trazer outro nó inteiro do grampo Vou selecionar isso, vou fazer o controle D para duplicar isso imediatamente. E vou pegar a saída dessa matemática e inseri-la em nosso valor. Vou deixar o mínimo e o máximo da seguinte forma. Mais uma vez, garantindo que estamos dentro desse limite. Isso é apenas para evitar que qualquer matemática complicada ocorra. Então, mais uma vez, vou definir o total da minha moeda. Agora veja, esse é outro truque útil. Você pode arrastar sua variável de moedas aqui e, se quiser trazer uma versão setter dela, basta soltá-la em um pino de saída como este E isso vai trazer um setter como esse. Isso vai fluir por todo o caminho de nossa verdadeira filial. Agora, essencialmente, o que estamos dizendo aqui é se, digamos que tivéssemos 99 moedas aqui, e tivéssemos que adicionar uma, isso seria igual a 100. Então, o que aconteceria é que aqui diríamos que sim, é maior ou, neste caso, igual a 100, então fluiríamos desse ramo verdadeiro. E então o que faríamos é se isso fosse 100, subtrairíamos 100, basicamente redefinindo nosso total de moedas de volta para zero, e então esse será nosso total de moedas recém-refletido O que estamos fazendo aqui é que a cada 100 moedas queremos adicionar uma vida. Então, vamos adicionar uma vida, certo? Vou manter pressionado o controle e rolar roda um pouco para trás, só para ter um pouco mais de espaço Vou transformar nossas vidas em variáveis. Agora arraste e solte aqui. Nós vamos conseguir. E então eu vou sair disso e digitar incrementos. Agora, esse nó age como um getter e setter, tudo em um. Na verdade, não precisamos definir nosso número de vidas como fizemos aqui. O que isso fará é ceifar nosso número de vidas, neste caso três. E isso vai ser adicionado diretamente a ele. Então, eu não preciso fazer isso para aumentar nosso número de vidas. Só vai fazer isso automaticamente. Então, isso obterá nosso número de vidas e esse incremento o configurará para o valor atualizado Obviamente, precisamos garantir que nosso fluxo de execução realmente flua para ele. Assim. Então seria bom se nós realmente tocassemos algum tipo de som com isso também. Então, vou usar esse tipo de música no play Sound two D. Vou apenas trazer nossas opções aqui embaixo. O som que eu quero tocar é o nosso som único aqui. Você também pode ajustar o volume do som. Vou deixar assim, mas você pode configurar isso para cima ou para baixo, se quiser. Vou clicar com o botão esquerdo e arrastar todo esse script aqui, tocar na tecla e chamarei isso de meu script de moedas. No painel de detalhes, você pode definir uma cor comum. Eu geralmente gosto de configurá-los para algo como preto porque adiciona um bom contraste. Vamos continuar e compilar isso para garantir que nosso script esteja bem Guarde isso. Agora está tudo bem, exceto que ainda não há nada para realmente lançar esse script de moeda publicitária. Lembre-se de que, com um evento personalizado, você precisa dizer manualmente quando iniciar. Então é aí que a próxima parte disso vai entrar. Novamente, verifique se você compilou e salvou aqui. Em seguida, vamos entrar em nosso BP e pegar moedas. Então, encontre seu caminho dentro deste projeto. O que vamos fazer é, primeiro voltar a esse pequeno roteiro em um pouco de tempo. Mas eu vou deletar esses dois nós. Marcação do evento, ator do evento, início, sobreposição. E eu quero sair do evento e começar a jogar aqui. O que eu quero fazer é criar uma referência ao nosso controlador de jogador BP para que eu possa então chamar esse evento personalizado Adicionar moedas Para fazer isso, vou escrever, clique no espaço vazio e digite o controlador Get Player. O que vamos fazer então é arrastar isso e digitar controlador cast two BP player Gostar. Então, basicamente estamos dizendo, ok, ao começar a jogar, queremos descobrir se o controlador do BP player, aquele que definimos nas configurações do nosso projeto, é o que estamos de fato usando Então, o que podemos fazer aqui é clicar com o botão direito do mouse nesse pino, clicar com o botão direito do mouse e promover isso para uma variável. Ao fazer isso, o que você notará é que, no meu painel de plantas, você acabou de criar uma variável de controlador de player que armazenará seu controlador BP Player Vou apenas encurtar o nome aqui, clique com o botão direito do mouse. Vou renomeá-lo como meu Player Controller, que possamos clicar com o botão esquerdo do mouse e arrastar e tocar na tecla Este será meu script em que criarei uma referência ao meu Player Controller que estamos usando neste projeto. Vou configurar isso para ser preto imediatamente. Preto como minha alma. Ok, e então vamos nos debruçar sobre esta área do nosso projeto E vamos implementar um pouco mais de script aqui embaixo. Então, vamos continuar e mudar isso, clicando com o botão esquerdo do mouse e arrastando Então, o que vamos fazer é trazer uma referência ao nosso controle de player e clicar com o botão esquerdo do mouse e arrastar. Queremos obter isso agora porque temos uma referência ao nosso controlador de jogador, podemos chamar esse evento personalizado de moedas de anúncio que existe dentro do nosso controlador de jogador. Vamos voltar para o nosso BP, pegar a moeda e, do nosso controle de jogador, vamos digitar as moedas Eu realmente deveria chamar isso de moedas publicitárias. Na verdade, eu vou fazer isso. Vou clicar no meu evento personalizado de ad coins aqui nos detalhes. Vou atualizar isso para adicionar moedas. Vamos compilar isso e salvar. E agora você pode ver novamente na minha BP pegar moedas que também foram atualizadas Portanto, observe que esse nó chamará esse evento do cliente. Vai mandar ele disparar. Agora observe que adicionamos essa entrada, nossas moedas para adicionar aqui de volta em nossa moeda de coleta da BP Podemos ver que agora está no lado de entrada desse nó. Se for verdade que nosso jogador ou nosso personagem estão sobrepondo essa esfera, vamos conectar isso Então não perca isso aqui. Certifique-se de sair do ramal verdadeiro em que você está conectando isso. Então, agora temos que nos dizer quantas moedas queremos adicionar? Vou escrever, clique nessa variável, mas primeiro confira esse truque. Vou colocar o número um nesse campo. Então eu vou escrever, clique neste alfinete. Vamos promover isso para uma variável. Dê uma olhada em nosso painel My Blueprint. Isso agora é chamado de moedas para adicionar. Tem o mesmo nome, moedas para adicionar. Se eu compilar nosso blueprint, você pode ver que ele carregará o valor padrão que tínhamos dentro dessa caixa Agora, aqui está outro pequeno bônus. Vamos marcar esta caixa para nossas moedas adicionem variáveis à instância Editável Agora, o que isso vai fazer é nos permitir personalizar quantas moedas cada moeda vale. Então, se quiséssemos, poderíamos fazer uma única moeda valer uma moeda, cinco moedas, dez moedas, etc Dessa forma, será altamente personalizável. Tudo bem, esse será o nosso roteiro aqui. Vamos clicar com o botão esquerdo, arrastar, tocar na torre C, que será chamada de nosso script de coleta de moedas. Vou clicar aqui mesmo. Clique em OK. Amplie um pouco aqui. Você pode pausar o vídeo aqui se precisar. Vamos compilar e salvar isso. Agora vamos verificar se isso realmente funciona. Vou voltar ao meu editor de nível principal aqui. Agora observe que, com minhas moedas selecionadas aqui no meu nível, vou manter pressionada a tecla Alt, clicar com o botão esquerdo e arrastar. E eu vou colocar outra moeda de volta aqui. Posso fazer com que essa moeda valha a pena, veja meu painel de detalhes definido como um. Eu posso fazer esse à esquerda. Eu posso fazer com que valha 100 se eu quiser, para realmente ver esse número sendo exibido na tela, nosso total de moedas. Na verdade, vamos ajustar temporariamente nosso script de controle do player. Eventualmente, mostraremos isso nossa tela por meio de um Hud com aparência mais oficial Mas o que podemos fazer é clicar com o botão direito do mouse em algum espaço vazio. Vou trazer um nó de string de impressão novamente. Eventualmente, vou me livrar disso, mas vamos fazer isso. Sempre que coletarmos uma moeda, colocarei isso no final. Na verdade, vamos tirar isso do galho falso. Na ramificação verdadeira, essencialmente, vou conectar os dois aqui. Vou interromper isso e colocar um nó de acréscimo. Novamente, tudo isso é temporário. Então, podemos ver esse cuspir na tela. Vou colocar moedas, espaço base. Então, dentro do nosso valor B, vou colocar nossa moeda. Arraste isso aqui, moedas, nós vamos pegá-lo, conectá-lo aqui. Ele vai convertê-lo de um inteiro em uma string. Vamos continuar e compilar isso. Salve e jogue. Agora você verá que vou coletar nossa primeira moeda aqui no canto superior esquerdo da janela de exibição, que diz moedas uma vez mais. Veja o canto superior esquerdo da minha janela de jogo aqui. Agora, diga moedas mais uma vez, porque terminamos, fomos de 1 a 101. Só para demonstrar isso, vou pegar mais algumas moedas segurando a tecla Alt, clicando com o botão esquerdo do mouse e arrastando, tipo “Então, vamos jogar Eu dei uma olhada no canto superior esquerdo do meu Viewport 123. Agora este vale 100, então eu deveria voltar para três. Tudo bem, e aí está. Concluímos nosso script de coleta de moedas e o tornamos altamente personalizável para que, para cada instância , cada cópia de nossa moeda, possamos ajustar a quantidade de moedas que cada uma vale E se você quisesse fazer isso e torná-lo um pouco mais claro visualmente, você poderia configurá-lo para valer dez moedas. Você pode selecionar em seu painel de detalhes a malha cilíndrica que representa nossa moeda. Você pode trocar o material um material diferente, talvez uma moeda diferente. Talvez você possa definir a escala para que toda a coleta seja maior no geral Assim, você pode configurá-lo para um valor total de três, algo assim. E com isso bloqueado, se você definir um valor como três, ele define todos como três. Então aí está, pessoal, isso vai acabar com este. Nos vemos na próxima. 20. Concorrência de som de captação de moedas: Bem-vindo. Neste vídeo, nosso objetivo é criar um ativo de simultaneidade de som e , em seguida, usá-lo em nosso script de coleta de moedas para impedir nosso áudio de coleta de moedas seja apagado sempre que pegar uma tonelada de Agora, eu tenho um exemplo configurado aqui em que meu jogador vai aparecer aqui em cima e descer para coletar uma tonelada de moedas Então, vou expor o problema para vocês agora mesmo. Não é ótimo, certo? Então, para corrigir isso, vamos criar esse recurso de simultaneidade de som, e eu vou fazer isso na pasta de áudio do meu jogo de plataforma ali mesmo Eu fiz um teste antes de gravar este vídeo. Estou gravando este vídeo bem depois de o curso ter sido gravado. E vou clicar com o botão direito do mouse e criar um novo recurso de simultaneidade de som clicando em em Concorrência de áudio e som Vou me livrar desse alerta da Dell aqui. E então eu vou renomear isso imediatamente. Se eu selecioná-lo e pressionar F dois, chamarei essa moeda de sublinhado Cc e, se eu clicar duas vezes nesse ativo ou com ele selecionado, basta pressionar a barra de espaço Você verá alguns parâmetros associados a esse ativo. Agora, basicamente, o que esse recurso nos permite fazer é definir algumas regras em relação a esse tipo de cenário em que podemos ter um monte de sons tentando tocar ao mesmo tempo. E só para mostrar onde vamos eventualmente inserir esse recurso sonoro, vou voltar ao meu nível aqui. E eu vou abrir minha planta de moedas. Eu poderia selecionar uma aqui no meu nível ou no esboço, posso ver que também tenho um monte de moedas aqui embaixo Você pode simplesmente clicar em Editar BP Coin Pickup. E onde vamos inserir isso é em nossa função de reprodução de som TD. Este é o nosso script de coleta de moedas. Se você clicar nesse menu suspenso, aqui mesmo, ele exibirá mais parâmetros E uma delas é uma configuração de simultaneidade. Vou inserir isso imediatamente, mesmo que não tenhamos feito nenhuma alteração em nosso ativo de simultaneidade de moedas aqui. Vá para selecionar isso. é o que eu criei antes de gravar este vídeo. Vou inserir a moeda em simultâneo. Em que estamos trabalhando. Então, já está encaixado. Agora vamos voltar ao nosso ativo de simultaneidade de moedas Dentro daqui, você tem alguns parâmetros com os quais você pode mexer contagem máxima é o número de sons simultâneos que podem ser reproduzidos por vez Vou limitar isso a três, e chego a esse número por meio de alguns testes de jogo. Então, três é muito bom para esse cenário. Regra de resolução. Isso é para o que acontece quando nossa contagem máxima é atingida e você tem várias opções aqui. E ao passar o mouse sobre cada um deles, ele dirá exatamente o que ele faz. Para testar isso, eu gosto de parar com o mais antigo. Então, basicamente, se eu ultrapassar esse número de três, vou parar o som mais antigo que eu acionei e vou começar um novo E neste momento de reativação, vou deixar de lado, mas fique à vontade para mexer nisso também Mais uma vez, a dica da ferramenta mostra exatamente o que isso faz. Essa é a quantidade de tempo de espera em segundos entre diferentes sons para serem reproduzidos. Vou seguir em frente e salvar isso. E com isso já inserido na minha moeda de coleta da BP, vou prosseguir e compilar O roteiro está tudo bem aqui. Salve isso também, volte para o meu nível. E se eu clicar em Play, você vai ouvir uma experiência muito diferente Agora você não obtém aquele cacapone de áudio , se quiser, ao jogar Tudo bem, pessoal, isso bastaria para oferecer este. Nos vemos na próxima. 21. Barra de fogo (parte #1): Bem-vindo. Ao longo dos próximos vídeos aqui, vamos criar esse cara, nosso primeiro perigo, uma barra de fogo E vamos fazer isso de uma forma altamente personalizável para que possamos determinar quando ela é colocada em nosso editor de níveis, quanto tempo queremos que essa barra de fogo dure, quão rápido ela gira, quão rápido ela gira que direção ela gira, todo esse tipo de Então, vamos direto ao assunto. Tudo bem aqui e Unreal na pasta plantas da minha plataforma. Vou clicar com o botão direito em algum espaço vazio. Eu vou escolher a classe de projeto. Este será um plano de aula de atores , porque será um modelo que colocaremos no mundo E vou chamar isso de BP underscore fire bar. Vamos clicar duas vezes nele para abri-lo. E vamos adicionar alguns componentes imediatamente. O primeiro que vou digitar, caixa, será um componente de colisão de caixa Vou deixar isso como o nome da caixa. E eu não vou me preocupar com a extensão disso agora, porque vamos calcular isso dinamicamente por meio algum script de construção que escreveremos aqui no futuro Em seguida, vou selecionar nossa rota de cena padrão, mais uma vez porque quero anexar esse próximo componente à rota de cena padrão, essencialmente o ponto central aqui, não a caixa. Essa será a malha estática de instância, não a malha estática instantânea hierárquica A malha estática instantânea, na verdade, vamos deixá-la de lado. A malha estática instantânea é boa. Poderíamos chamá-la de bola ou algo desse tipo, mas com isso selecionado no painel de detalhes, vou transformar nossa malha estática em uma esfera. Clicando nessa esfera suspensa, quero uma que seja chamada simplesmente de esfera. Esse cara aqui na de 100, bem ali no meio, diz tamanho aproximado de 100 por 100 por 100 Está na pasta de formas básicas do motor. Você pode ver esse caminho no topo. Esse é o que eu estou procurando. Então, para material, qualquer coisa para isso serve. Embora eu queira algo que pareça um pouco chamativo, vou fazer uma busca por M. Underscore Fire underscore 03 É esse aqui que vem do pacote de efeitos Infinity Blade Novamente, o material realmente não importa, mas eu quero algo que pareça um pouco chamativo. Também adicionaremos isso. Agora, ainda não vemos nenhuma dessas malhas estáticas de instância. Embora possamos preencher nossa bola de fogo aqui dinamicamente por meio do script de construção em pouco tempo Agora, há mais um componente que eu quero adicionar aqui. Mas antes de fazer isso, esqueci uma coisa que quero mudar na malha estática de nossa instância aqui, rolada para mudar na malha estática de nossa instância aqui, baixo no painel de detalhes abaixo das configurações de colisão e onde diz Vou mudar isso de bloquear totalmente dinâmico para sem colisão. O motivo é que faremos com que nossa caixa seja a única que verificará a colisão qualquer uma dessas esferas de instância que formarão essa barra de fogo Eu não quero que nada colida com isso. Tudo será feito por meio do nosso colisor de caixas. Tudo bem, em seguida, vou adicionar mais um componente aqui no canto superior esquerdo e esse será nosso componente de movimento de podridão. Movimento rotativo Esse será o componente, não está ligado a nada. É apenas um modelo específico aqui que vai girar nossa arma de fogo de uma forma ou de outra Vou definir a taxa de rotação no painel de detalhes para ter uma taxa de rotação de 50 no Y. Vou configurá-la para zero Tudo bem, em seguida, vamos criar algumas variáveis aqui e vamos clicar nesse botão de adição. E o primeiro que eu quero será chamado de número Flame Ball. Isso vai ser um número inteiro. E isso determinará quantas dessas bolas de fogo formarão nossa barra de braço ou barra de fogo aqui. Também vou, no painel de detalhes, mudar algumas coisas. Quero tornar essa instância editável, para que possamos alterar o número delas no editor Então, eu também quero definir uma categoria para isso, para que tenhamos essas poucas variáveis que vou criar dentro de uma categoria em nossa seção de variáveis. Se eu clicar aqui, posso simplesmente sobrescrever onde diz padrão E eu vou chamar isso, vou chamar de personalização da barra. Lá vamos nós. Lá vamos nós. Agora você pode ver em nossa seção de variáveis que temos uma categoria chamada personalização de barras E um número de bola flamejante está contido nessa categoria. Com este selecionado. Vou controlar D nele para duplicá-lo. Essa vai ser chamada de distância da bola. À parte. Eu quero que isso também seja editável por instância Definiremos alguns valores padrão aqui em breve. Vou adicionar mais uma variável aqui. Este vai se chamar Flame Ball. Isso vai determinar o tamanho de cada uma dessas bolas de fogo. Vou definir isso como uma variável vetorial para que possamos determinar o tamanho x, y e z disso. Vou configurá-lo para ser editável por instância. E confira aqui em nossa categoria, você pode ver que na verdade não está listado em nossa categoria de personalização de barras Mas, no painel de detalhes, posso especificar personalização da barra clicando no menu suspenso e agora ela está nessa categoria última variável aqui que vamos adicionar será chamada de taxa de rotação. Isso vai ser um rotador. No painel de detalhes, vou verificar isso. Torne uma instância editável também, para que possamos personalizar a taxa de rotação E também vou definir isso para a categoria de personalização de barras categoria de personalização de Vamos compilar isso para que possamos definir alguns valores padrão para o número da minha bola flamejante Eu vou definir isso, vamos dizer cinco. Teremos uma barra de chamas que consiste em cinco, por padrão, uma distância de distância. Vou definir isso como 60, 60 porque esse é um valor que eu predeterminei com antecedência, o tamanho da bola flamejante. Vou definir isso para 0,5 em toda a linha. Mais uma vez, eu predetermino isso com antecedência. A taxa de rotação, vou fazer com que corresponda à taxa de rotação que eu tinha no meu movimento rotativo aqui de 50 no Y. Vou definir que seja 50 no Y também para essa variável Tudo bem, vamos salvar isso imediatamente para não perdermos nenhum trabalho aqui. E então vamos passar para o nosso roteiro de construção. Vamos colocar um script aqui em nosso script de construção porque isso mudará a aparência da nossa Fireball durante o tempo de design, antes de o jogo realmente rodar Temos algumas coisas legais que vamos fazer nesta seção. A primeira coisa que quero fazer é inserir o número da nossa bola flamejante, arrastar e soltar aqui. Nós vamos conseguir isso. Vamos tirar isso e subtrair isso Introduza um nó de subtração. Vamos subtrair isso pelo número um. E você verá o porquê aqui em pouco tempo. Porque vamos conectar a saída disso em um nó de quatro loops Vamos digitar quatro voltas, não quatro voltas. Com break just four loop, eu realmente quero que isso seja conectado ao último índice Vou manter pressionado o botão esquerdo do mouse e arrastá-lo para baixo até nosso último índice. A razão pela qual estou subtraindo isso por um é porque estamos começando esse loop com o número zero Então, vamos dar uma olhada nisso, queremos realmente adicionar cinco bolas de fogo, o número cinco. Se começarmos a contar em zero, precisamos subtrair um, fazendo com que a saída desse quatro seja 01234 É quantas vezes vamos passar por isso. Tecnicamente cinco vezes, mas começando pelo número zero, ok? Fora desse corpo de loop, vou trazer um nó de sequência mantendo pressionada a tecla S e clicando com o botão esquerdo. Vamos trazer uma sequência porque há várias coisas que vamos fazer aqui. Vou adicionar outro pino imediatamente. A primeira coisa que vou fazer é sair desse índice e inserir um nó de multiplicação Toda vez que examinarmos isso, ele exibirá o número do índice aqui, 0123, etc. E eu quero multiplicar isso pela distância da nossa bola de fogo Podemos arrastar e soltar isso aqui desse jeito. Agora, como resultado disso, vamos nos conectar, em última análise, a um nó vetorial make Voltaremos a isso daqui a pouco, mas a primeira parte do script é que vamos adicionar instâncias de nossa bola flamejante. Vou arrastar em nossa instância uma malha estática. Eram essas bolas de fogo esféricas, se você quiser. Vou sair daqui e digitar uma instância. Agora poderíamos ter feito isso. Agora, ele adicionará outra cópia dessa instância, malha estática, da qual eu não preciso. Vou deletar esse. É só mais uma cópia. Em última análise, o nó da sequência se conectará aqui. O nó de sequência nos permitirá fazer várias coisas praticamente ao mesmo tempo, sequencialmente, mas para nossos propósitos, quase ao mesmo Agora vamos especificar onde adicionar uma instância Vamos arrastar isso para trás e digitar transform, make transform Isso especificará um local, uma rotação e uma escala. Agora, para a balança, podemos simplesmente inserir tamanho da nossa bola flamejante. Essa será a nossa escala para cada uma dessas malhas estáticas de instância Vou clicar duas vezes nesse fio apenas para inserir um nó de redirecionamento Faça com que pareça um pouco mais limpo agora para nossa localização. Vou me arrastar para trás e digitar make vector porque um local consiste em dados x, y e z. Realmente, eu só quero especificar a distância aqui na direção, na direção z. Vou conectar isso diretamente ao meu Z e ele converterá o valor inteiro que será gerado aqui em um flutuante, porque esse nó precisa de uma entrada flutuante como essa Tente limpar isso um pouco. Ok, essa será a primeira parte do nosso roteiro aqui. Ok, isso vai clicar com o botão esquerdo e arrastar, tocar no céu. Eu vou dizer que adicione instâncias de Flame Ball. Ok, essa é a primeira coisa que vamos fazer. Vou tentar enquadrar isso, então se você quiser pausar o vídeo aqui, você pode ver o que isso está fazendo Ok, então se eu arrastar uma cópia disso, vou compilar e salvar isso imediatamente. Vou apenas arrastar uma cópia dessa barra de fogo para o nosso nível, ok? E na verdade, você sabe o que, deixe-me fazer isso da maneira correta. Vou definir isso para estar no meu nível principal aqui. Certifique-se de que minhas duas fotos em D estejam ativadas. OK. Assim, você pode ver mais ou menos o que parece lá. Então, no painel de detalhes, eu poderia especificar um número de bolas flamejantes. E você pode ver que vai se estender para cima, o que é muito bom Agora, separando a distância da bola de fogo, eu também poderia definir isso. Você vai ver o quão dinamicamente podemos fazer isso. Isso é muito legal. Podemos até mesmo alterar o tamanho da bola flamejante. Se eu quisesse, eu poderia mudar isso para 1 e 1.1 Isso vai torná-lo um pouco maior. Agora, essa taxa de rotação ainda não fará nada, mas deixe-me definir tudo isso de volta ao padrão. Você notará aqui que quando eu mudo isso, está tudo bem, mas vamos verificar a colisão aqui, nesta caixa de colisão E isso não está se estendendo para coincidir com meu número de bolas flamejantes Esse será nosso próximo roteiro aqui. Vamos voltar para nossa barra de incêndio BP. O que vamos fazer é extrair esse resultado aqui e trazer um nó de divisão. Divida, e vamos dividir isso pelo número dois. Isso será usado em algumas de nossas contas para ajustar o tamanho do nosso componente de caixa aqui. Vamos trazer a caixa aqui, nosso componente de caixa. E então vamos arrastar isso e digitar a extensão do set box. Essencialmente, o que queremos fazer aqui é alterar nossos parâmetros de extensão de caixa aqui mesmo por meio de um script. Ok, traga isso. Também vamos arrastar esse tipo na localização relativa definida. A caixa será nosso alvo para ambos. Ok, quanto à localização da nossa caixa, vou arrastar para trás a partir da nova localização e digitar make vector Então, vou pegar o resultado dessa matemática aqui e inseri-lo em nosso valor. Vamos garantir que conectemos esse nó de sequência imediatamente para realmente fazer com que esse script seja acionado. Agora, realmente não importa se conectarmos isso aqui primeiro, mas queremos que ambos sejam acionados. Certifique-se de que não importa se você coloca este ou aquele primeiro, ok. Em seguida, também queremos especificar um vetor make para a extensão da nossa caixa. Vamos digitar make vector aqui. Vamos pegar o resultado dessa mesma matemática que podemos extrair da mesma saída. Vamos conectar isso ao nosso Z e vamos mudar nosso X para um valor revestido de dez e um Y de 50. Vamos compilar e dizer isso mais uma vez. Agora, se olharmos para trás em nosso editor de níveis, você verá que esse trecho de script realmente estenderá nossa caixa de colisão Você pode vê-lo meio que cortando todas as bolas dinamicamente, de modo que se eu aumentasse, digamos, o número da bola flamejante aqui, você pudesse ver que aquela caixa também está se ajustando Agora, novamente, vou manter isso fino, mas se eu contornar esse ângulo, você pode ver que estou tornando isso um pouco mais grosso a partir dessa visão de viagem para que ele não perca nosso jogador quando tentar colidir com Ok, mais um script que temos que fazer em nosso BP Fireball. Volte para lá. O que vamos fazer é personalizar nossa taxa de rotação. Deixe-me clicar com o botão esquerdo em todos esses nós, mantendo pressionado o controle. Vou puxar para o lado, apertar a tecla C aqui e vou chamar essa caixa de tamanho de extensão como Então, mova isso para cá. Ok, então vamos trazer nosso componente de movimento rotativo. Vamos arrastar isso para dentro. Vamos parar com isso, vamos digitar a taxa de rotação definida. Essencialmente, o que queremos fazer com esse componente de movimento rotativo é ajustar manualmente nossa taxa de rotação Agora, atualmente, temos nossa variável de taxa de rotação. Vamos arrastar e soltar isso diretamente nesse conjunto de nós com exatamente o mesmo valor, mas como tornamos essa instância variável editável, podemos ajustá-la por instância dessa barra flamejante Isso vai ser muito bom, então vamos clicar com o botão esquerdo para destacar isso. E vou chamar isso de “ permitir uma taxa de rotação personalizada em nosso script final será mais ou menos assim. Vou tentar enquadrar tudo assim. Tudo bem, vamos compilar isso e salvar. Vamos trazer algumas dessas barras de fogo aqui. Vou segurar a tecla Alt, clicar com o botão esquerdo e arrastar para a segunda aqui. Eu só vou fazer com que o número de chamas seja dez. Vou mudar a taxa de rotação. Vamos para menos 100. Então, ele estará indo na direção oposta e um pouco mais rápido. Agora, se eu fosse entrar e jogar, você pode ver que temos duas barras de fogo girando em direções opostas Na verdade, eles ainda não fazem nada comigo, mas estão girando conforme o esperado Eles estão girando em ritmos diferentes, têm comprimentos diferentes, etc. Então, temos um ótimo começo para nosso projeto de barra de chamas Agora, mais trabalho a ser feito aqui , pois realmente fazemos com que isso afete nosso jogador. Mas pessoal, isso vai fazer tudo por esse. Nos vemos na próxima. 22. Barra de fogo (parte #2): Tudo bem, bem-vindos de volta a todos. Agora temos nossa barra de fogo BP e ela gira, mas na verdade não causa danos aos nossos jogadores Então, a segunda parte aqui abordará isso. Vamos criar um script para danificar nosso jogador. Para isso, vamos mergulhar em nossa pasta de terceira pessoa aqui. Desenhos em terceira pessoa do nosso BP, personagem em terceira pessoa. Vamos clicar duas vezes nesse cara para abri-lo. A primeira coisa que quero fazer é selecionar meu Eu. Vou entrar na minha guia Viewport para que possamos realmente ver nosso personagem E eu vou mudar o material de nossos personagens aqui no painel de detalhes, aqui temos materiais, temos um elemento zero e um elemento. Eles correspondem a diferentes aspectos desse código de pintura. O visual do nosso Me one é para o logotipo no meio e o resto é essencialmente para essa armadura, se você quiser Vou mudar o elemento zero aqui para azul. E compartilhar azul, algo azul puro assim. Ok, o que vamos fazer aqui é quando nosso personagem for danificado, simplesmente trocaremos esse material Basta um simples interruptor visual para ajudar a indicar que sim, nosso player foi danificado. Tudo bem, em seguida, vamos ao nosso gráfico de eventos e vamos adicionar um evento personalizado. Vamos clicar com o botão direito do mouse em algum espaço vazio digitar adicionar um evento personalizado. E vamos chamar isso de Just hit Points. E com isso selecionado no painel de detalhes, adicionaremos uma entrada, clicando neste botão de adição. E vamos chamar isso de modificador de pontos de vida. E eu vou mudar isso de um lingote para um inteiro que é um número inteiro Em seguida, vamos criar uma variável, no painel de detalhes aqui, criar uma variável. Isso será chamado simplesmente de pontos de vida. Eu vou mudar o tipo aqui para ser um número inteiro, isso vai ser um número inteiro Vou compilar meu plano aqui e vou alterar o valor padrão para 22 pontos de vida para começarmos Tudo bem, vamos criar um script aqui e vamos fazer algumas coisas com base no número de pontos de vida que nosso personagem tem. Então, vamos mover isso para o lado aqui. Vamos encerrar nosso evento de ajuste de pontos de vida para clientes. E vamos trazer um nó de sequência. Um nó de sequência porque faremos algumas coisas com esse evento personalizado quando ele finalmente for chamado. Tudo bem, a primeira coisa que vamos fazer é retirar nosso modificador de pontos e qualquer número que eventualmente passarmos pela chamada desse evento personalizado Vamos adicionar isso, vamos adicionar isso aos nossos pontos de vida que nosso jogador terá atualmente. Arraste e solte isso aí mesmo. Em seguida, vamos pegar essa matemática resultante e vamos corrigir isso Vamos fixar esse número inteiro entre um valor zero e um máximo de dois para garantir que nossa matemática aqui nunca saia desses limites Em seguida, vamos colocar isso de volta em nossos pontos de vida. Vamos definir nossos pontos de vida. Se eu arrastar e soltar meus pontos de vida nesse valor de retorno, ele trará um setter Faremos isso com nosso pino zero, então. Ok, então o que vamos fazer é sair disso e trazer um nó igual. Vamos descobrir se nossos pontos de vida são iguais a zero. E eu vou trazer um galho, como se nossos pontos vida fossem iguais a zero, faremos alguma coisa. E se não for igual a zero, faremos outra coisa. Se for igual a zero, tudo o que queremos fazer é arrastar o galho verdadeiro e digitar o ator de destruição com o alvo sendo nós mesmos. Basicamente, quando você atingir zero pontos de vida, destrua a si mesmo Você está pronto. Tchau tchau. Agora, se não atingimos zero pontos de vida, o que queremos fazer é mudar nossa malha, nossa malha é material. Este material está associado a essa malha. Ok, observe que isso está no elemento zero. Esse elemento azul é zero. Nossos braços e pernas aqui. Está bem? Então, vamos arrastar uma referência à nossa malha. Arraste e solte o que eu vou arrastar para fora daqui. E eu vou digitar o material do set. Se for falso que nossos pontos de vida não sejam, vamos mudar o elemento zero da nossa malha, elemento zero. Vamos mudar o material disso para outra cor. Agora, qual outra cor vai depender quantos pontos do quadril ainda nos restam. Vamos usar um nó de seleção para isso, e esse é um dos nós mais legais em todos os scripts de blueprint Vou arrastar para trás e digitar Selecionar Veja como esse nó funcionará com base em algum número de índice, neste caso, nosso número de pontos de vida Vamos conectar isso aqui mesmo. Vamos escolher um material diferente. Se isso for zero, vamos mudar nossa opção. Se for zero, fique vermelho. Vou digitar anum red para encontrar um material vermelho reto Se nosso índice de entrada, o número de pontos de vida, for um, vamos mudar isso para um verde de compartilhamento Vamos adicionar mais um pino aqui na opção dois. Se nossa quantidade de pontos no quadril for dois, ele escolherá, produzirá o material associado à opção dois aqui. E esse será nosso anum blue. Com base em qualquer que seja esse índice de entrada, exibiremos a opção associada 01 ou duas Se o índice for zero, ele exibirá esse anum neste material para alterar nosso material de mensagem Se for um, ele produzirá este. Se o índice for dois, ele produzirá o material associado a isso. Muito legal. A seguir, vamos lidar com alguns dos efeitos sonoros associados à obtenção ou perda de um ponto de vida. Então, o que vamos fazer é voltar aqui até nosso modificador de pontos E vamos sair disso, vou trazer um nodo maior que. Vamos dizer que se esse modificador de pontos de vida recebidos for maior que zero, se for esse o caso, vamos trazer outra Então, vamos garantir que nossa então única dor da sequência, serpenteie aqui embaixo Se isso for verdade, vamos tocar um som para sair daqui e digitar play. Sound Two D. O som que vamos tocar para isso será um som de power up. Clique aqui, no menu suspenso, digite power up, Mario power up. Você pode clicar aqui e ajustar o volume, se quiser. Eu vou derrubar isso. OK. Se for falso que não seja maior que zero, vamos conectar isso a outra ramificação que usaremos. Ok, volte aqui para dizer que, se ganharmos um ponto de vida, basicamente tocaremos um arrasto sonoro de power-up para fora daqui, mais uma vez, o modificador Hitpoints E vamos trazer um nó menor que. Vamos dizer que se for menor que zero, significa que fomos atingidos, estamos subtraindo um Essencialmente, vamos conectar isso a um nó E e a um booleano Também vamos verificar outra condição aqui. Se ambos forem verdadeiros, vamos pegar nossos pontos de vida, arrastá-los para dentro, vamos pegá-los, depois vamos arrastar para fora daqui e digitar não igual, não igual a zero E então vamos conectar isso ao nosso nó de ramificação. Em seguida, vamos sair da nossa verdadeira filial aqui e trazer outra peça. Soe para D. Para isso, aí está, Mario Warp. Vamos continuar com isso. Agora, basicamente, o que esse trecho de script está dizendo aqui é que se perdemos um ponto de vida, ou seja, é menor que zero, perdemos um ponto de vida em nossa quantidade atual de pontos de vida não é zero, significa que temos pelo menos um ponto de vida restante Se ambas forem verdadeiras, vamos tocar esse tipo de efeito sonoro negativo, esse som de Mario Warp Deixe-me ir em frente e ir direto ao assunto. E a maneira como eu pulo para isso é que eu simplesmente cliquei nessa lupa ali Ele vai navegar até esse ativo, e aqui está, para que você possa ver como isso soa. Ok, deixe-me voltar aqui um pouco. Vou tentar emoldurar tudo isso. Certifique-se de ter examinado todos esses nós com cuidado. Garantir que você tenha os valores corretos nos campos corretos, é fácil cometer um erro aqui. Então, analise isso com cuidado e, em seguida, vamos compilar esse script E salve-o. Vamos clicar com o botão esquerdo do mouse e arrastar todos esses nós também. Vou tocar na tecla C para que possamos adicionar um comentário sobre isso. E vou chamar isso de meu script de modificação de pontos de vida. E eu vou compilar e salvar isso mais uma vez. Ok, está tudo bem , mas, mais uma vez, esse evento personalizado precisa ser informado de quando começar. Então, vamos examinar nossas plantas de barra de fogo para trabalhar um pouco mais Agora posso navegar por isso acessando nossa pasta de plantas e clicando duas vezes nela dessa forma No entanto, você também pode acessá-lo aqui no Outliner. Se você a colocou em seu nível, clique em editar, BP, barra de fogo, qualquer uma delas serve Isso o abrirá imediatamente. Agora, o que queremos fazer é começar na seção de variáveis, vamos adicionar mais algumas variáveis. Clique nesse botão de adição. O primeiro que vamos adicionar será chamado Pontos, Ajustes ao Jogador. E você pode ver que, a cada mudança nosso script de construção é acionado, porque ele será acionado com qualquer alteração. Vamos fazer disso um número inteiro. Vamos adicionar outro imediatamente. Isso será chamado de velocidade de acerto do jogador. Isso vai ser um vetor. Então, o terceiro que vamos adicionar será chamado de hit down. Você verá para que tudo isso é usado em pouco tempo. Vou mudar isso para um valor flutuante. Vou compilar isso imediatamente. Então eu posso adicionar alguns valores padrão para isso, nosso ajuste de ponto de vida. Vamos começar com aquele cara. Vamos definir isso como menos um. Essencialmente, quando você for atingido, você perderá um ponto de vida aqui, menos um. Ok, para o nosso jogador acerte a velocidade. Vamos prosseguir e selecionar isso. Vou tornar essa instância comestível caso queira alterar isso no editor E vou mudar a velocidade de acerto do jogador para 500 Essencialmente, isso fará com que o jogador apareça um pouco quando for atingido. Essa é a ideia, é que eles sejam atingidos e o jogador apareça um pouco Então, este último, nosso hit, esfrie, vou mudá-lo para 1,0 e isso será essencialmente 1,0 segundo. Tudo bem, novamente, com qualquer mudança, novamente, você viu meu roteiro de construção sendo acionado Porque é aí que o script de construção acionado no momento do projeto. Sempre que alguma alteração for feita em seu plano, vou sair daqui e acessar nosso gráfico de eventos porque é aqui que queremos que o script de tempo de execução seja acionado Agora, o que queremos fazer é que algo aconteça quando sobrepomos essa caixa Você lembra que nossa caixa é essa caixa aqui, caixa invisível que não podemos ver enquanto jogamos conosco. Clicando com o botão direito do mouse nesse componente, podemos adicionar um evento em Begin overlap Isso nos levará de volta ao gráfico de eventos. O que queremos fazer é verificar se o outro ator era nosso personagem de jogador. A partir daqui, você pode transmitir BP em terceira pessoa em terceira pessoa. Você pode adicionar esse nó dessa forma e, em seguida, continuar o script dessa forma. No entanto, vou usar um método diferente caso eu queira mudar o personagem que estou usando. Vou sair do outro tipo de ator no sinal de igual e ver se isso é simplesmente igual ao nosso nó de obtenção de personagem de jogador Dessa forma, realmente não importa qual modelo de personagem eu estou usando que reflita meu personagem de jogador Ok, o que eu quero fazer se isso for igual? Vou levar isso para um nó de ramificação. Se forem iguais, é verdade que são iguais. Vou sair daqui em Do uma vez. O que eu quero fazer uma vez? Bem, o que eu quero fazer é ajustar a quantidade de pontos de vida que nosso jogador terá. Agora, mais uma vez em nosso BP, personagem em terceira pessoa, eu tenho esse evento personalizado chamado just hit points Então, eu gostaria de pedir que isso acontecesse. Agora eu cometi um erro aqui ao tentar adotar essa abordagem. Porque se eu saísse disso, pegasse o personagem do jogador e digitasse ajustar pontos de vida, não conseguiria encontrá-lo para poder realmente usar esse método, além de acessar esse evento personalizado de ajuste de pontos de vida. Então, neste caso, terei que arrastar meu elenco de outros atores para meu personagem de terceira pessoa da BP, porque meu personagem em terceira pessoa é aquele que tem esse evento personalizado de pontos de vida dentro dele Lá você me viu cometendo um erro em tempo real e eu ajustando em tempo real Ok, isso é o que eu quero fazer. Quando eu quiser chamar esse evento personalizado, vou clicar duas vezes nele para abrir um nó vermelho. Agora vou ajustar isso até. Meu ajuste do ponto do quadril para a variável do jogador. Vou conectar isso. Então eu vou sair daqui mais uma vez e digitar o movimento do personagem. Agora, esse é um componente, esse componente de movimento do personagem que vive no meu personagem em terceira pessoa, esse componente de movimento do personagem. Agora, aqui dentro, há um parâmetro para a velocidade. Eu vou procurá-lo. Velocidade, velocidade, que será atualizada à medida nosso personagem se move pelo nível Eu quero ajustar a velocidade dos personagens. Se eu sair daqui, posso digitar a velocidade definida Isso trará um nó setter como esse. A quantidade que eu gostaria de ajustar essa velocidade será determinada pela variável de velocidade de acerto do nosso jogador aqui determinada pela variável de velocidade de acerto do nosso jogador variável de velocidade de acerto Você pode conectar isso assim. Então, a última coisa que quero fazer aqui é inserir um nó de atraso. Eu vou sair daqui. Introduza um nó de atraso. Vou atrasar nosso tempo de resfriamento. Colocando esse nó para cima e este para baixo. Portanto, atualmente, isso tem um valor de 1 segundo. Vou fazer isso para que, em seguida, reiniciemos nosso nó único Então, basicamente, haverá uma pausa de 1 segundo entre o momento em que nossa bola de fogo pode danificar o jogador ao chamar isso, ajustar os pontos do quadril para que nosso jogador se levante um pouco e quando ela poderá fazer isso novamente para que isso não aconteça, e quando ela poderá fazer isso novamente para que isso não como acontece a cada centésimo de segundo Tudo bem, com isso, vamos clicar com o botão esquerdo e arrastar. Vou tocar na tecla C. Vou chamar isso de atropelamento por barra de fogo. Vou compilar esse script, vou salvar. E então eu vou entrar e jogar. Vamos ver o que acontece. Tudo bem, nosso personagem está atualmente azul. Eles têm dois pontos de vida. Eu vou ser atingido uma vez, coloquei meu personagem um pouco acima, ele mudou para um ponto de vida representado por Green. Eu vou ser atingido novamente, bam, morto. Essa é a sua visão quando você está morto. Não se preocupe Vamos mudar a sequência da morte mais tarde. Mas isso indica a morte de um jogador. Agora, se você está recebendo um erro como esse, isso faz todo o sentido. Porque o que está acontecendo aqui é dizer que está tentando acessar nossa velocidade definida, mas não acessa nenhuma O que aconteceu aqui, em nosso personagem em terceira pessoa aqui, é que estávamos tentando ajustar nossos pontos de vida. E lembre-se de que isso está sendo chamado do nosso bar de bombeiros. Estávamos tentando nos ajustar aos pontos de vida e isso nos reduziu a zero. Então, no momento em que estamos tentando ajustar a velocidade, nosso personagem já se despediu por meio desse trecho de script aqui Então nosso personagem é destruído. Está tentando chegar aqui dizendo: “Ei, ajuste-se à velocidade, não consigo Então, como você pode consertar isso? Bem, você pode tentar trocar o pedido aqui Então, vamos tentar fazer isso aqui rapidamente. Vamos abrir o player primeiro. Vou tentar desembaraçar esses fios um pouco para que tenhamos uma configuração que se pareça um pouco mais com esta Na verdade, posso deletar isso, isso pode ser conectado diretamente a ele dessa forma. Tudo bem, se eu compilar novamente, vamos tentar e ver se obtemos esse erro Atingido no segundo golpe, estamos mortos. Vou clicar em Escape e não receberemos mais esse erro porque agora estamos matando o jogador depois de ajustarmos essa velocidade Tudo bem, pessoal, aí está? Isso vai valer para este C quando for para o próximo 23. Layout de HUD: Bem-vindo. Então, agora que estamos chegando a um ponto em nosso projeto em que temos algumas coisas para coletar, como moedas, temos algumas vidas que podemos perder ou ganhar. Vamos adicionar um Hud ao nosso jogo, um heads-up display. Então, se você não está familiarizado com o que é um Hud, é esse tipo de informação que é exibida na tela enquanto você joga e , embora não estejamos criando exatamente isso, será algo assim E você vai poder ajustar isso ao seu gosto. Mas só para dar uma prévia que, essencialmente, vamos tentar criar Tudo bem, de volta aqui no Unreal, vamos começar. Vamos criar uma pasta totalmente nova em nossa plataforma ou pasta. Então, vamos clicar com o botão direito do mouse em adicionar nova pasta. Vamos chamar isso de dentro da nossa pasta de interface de usuário, vamos criar um novo ativo clicando com o botão direito do mouse e abaixo da opção de interface do usuário. Neste menu suspenso, vamos escolher um modelo de widget Agora, os esquemas de widgets são ativos que você deseja criar para criar telas de menu ou Hud de jogo Você só tem uma opção de classe principal aqui que está na seção comum, então escolha essa opção no widget do usuário, seremos solicitados a fornecer um nome Vou fazer isso um pouco maior. Mantendo pressionado o controle e rolando para cima. Vou chamar isso de WBP para Widget, Blueprint, underscore, Blueprint E então vamos clicar duas vezes sobre isso para abri-lo. Agora, o que você vê à sua frente neste espaço em branco, vou segurar o botão direito do mouse e fazer uma espécie de deslocamento. Essa é a nossa visão de designer. Isso é o que realmente veremos e usaremos para criar nosso layout Hud Agora, atualmente, não temos nenhum widget aqui ocupando nossa guia de designer Então, vamos mudar isso. Ao adicionar nosso primeiro widget no painel da paleta, podemos encontrar uma lista completa de E você pode expandir qualquer uma dessas categorias para encontrar uma grande variedade de extras. Agora eu tenho um curso totalmente separado que aborda tudo isso em grande profundidade. Não vou entrar em detalhes sobre tudo isso, vou apenas fazer o que precisamos fazer e seguir em frente. Mas um curso de interface de personagem em Unreal é o nome desse curso Se você quiser se aprofundar como aprender a usar todas essas coisas. O primeiro widget que vou adicionar à nossa guia de designer aqui é chamado de painel de tela Agora, um painel de tela, e eu posso adicionar um deles simplesmente arrastando-o e soltando-o em nossa visualização de designer Aqui está essencialmente uma espécie de prancha de aderência. Portanto, se você estiver familiarizado com a placa de aderência, poderá fixar coisas nela E é basicamente assim que isso vai funcionar. Vamos fixar, adicionar outros widgets para complementar isso no topo do nosso quadro de aderência Agora, atualmente, nossa escala aqui é 16 por nove, que podemos ver no canto inferior esquerdo. Mas se você quiser alterar seu dispositivo, o tamanho da tela aqui, é assim que você faz isso para telefones, tablets, laptops, etc Vou deixar isso inalterado porque gosto dessa proporção de 16 por nove Agora você notará que depois de adicionar esse painel de tela à nossa visualização de design, ele também o adicionou à nossa hierarquia Nosso painel de tela será nosso componente básico aqui. Nós vamos adicionar coisas a ele. Vamos limpar nosso painel de tela e adicionar nosso segundo widget aqui E essa será uma imagem aqui na seção comum. Vou simplesmente arrastar e soltar uma imagem em nossa visão de designer. Vou colocá-lo em algum lugar no canto superior esquerdo aqui. Este pequeno ícone de flor, se você quiser. Isso mostrará o ponto de ancoragem desse widget. Então, ele tentará manter esse widget de imagem ancorado na parte superior esquerda da tela Agora vou renomear isso imediatamente. E eu posso fazer isso selecionando aqui e pressionando dois. Como alternativa, com esse widget selecionado no painel de detalhes, você pode alterá-lo logo na parte superior Chame isso. Essa vai ser uma pequena imagem de Mario. E só um pouquinho, deixe-me adicionar meu segundo widget aqui. Meu segundo widget será um widget de texto. Não é um texto rico, mas simplesmente. Vou colocá-lo aqui mesmo. Mais uma vez, vou renomear isso, vou renomear o widget X do meu personagem Isso vai ser simplesmente um símbolo do tipo multiplicação, então é por isso que eu o estou chamando de caractere x. Então eu vou prosseguir e trazer outro widget de texto E eu vou arrastá-lo e soltá-lo aqui. Não sou muito exigente com o posicionamento porque vou ajustá-lo aqui daqui a pouco E eu vou chamar isso clicando dois neste widget ao vivo do meu personagem Agora vou selecionar minha primeira imagem de personagem, widget aqui E vou entrar no painel de detalhes e mudar alguma coisa. A primeira coisa que vou mudar é a localização exata disso. Vou ampliar isso mantendo pressionado o controle e usando minha roda de rolagem. Botão direito do mouse para se deslocar. No painel de detalhes, tenho meu ponto de ancoragem definido na âncora superior esquerda Isso é o que é por padrão. Então, essas posições x e y serão relativas a esse ponto de ancoragem A posição x que vou definir aqui será 24. E a posição y também será 24. A direção x positiva será para a direita e a direção y positiva será para baixo a partir dela. Ok, em seguida, vou definir uma imagem seção de imagem do pincel de aparência. Eu posso escolher uma imagem clicando neste menu suspenso. E eu tenho sublinhado super. Eu quero escolher isso, Super Mario pulando. Agora, você deve ter importado essa textura logo no início do núcleo. Então é aí que eu estou entendendo isso, obviamente coloque a imagem que você quiser. Porém, se você estiver jogando em casa, vou aumentar o tamanho dessa imagem de 32, 32 para 80, 80. Isso vai aumentar um pouco. Agora você realmente não viu nada mudar aqui. No entanto, se eu alterar esse tamanho para conteúdo, na verdade, ele aumentará o tamanho para ajustar o tamanho da imagem. Ainda um pouco exagerado aqui, você pode ajustar isso ao seu gosto Mas vou dizer que é bom o suficiente por enquanto. Em seguida, para meu componente X de personagem aqui, esse widget de texto, vou mudar algumas coisas sobre isso Primeiro, começando com a posição X, vou mudar isso para um oh dois, na posição y para 60. Vou mudar o texto desse bloco de texto para simplesmente ser um x minúsculo. Isso funcionará como meu símbolo de multiplicação Pressione enter para ver essa mudança. E então eu vou descer para a seção de fontes de aparência, porque eu quero mudar a família de fontes. Eu não quero Roboto aqui. Em vez disso, quero essa nova fonte Supermarrio. E essa foi uma fonte que importamos logo no início do curso. É aí que você pode encontrar isso. Eu incluí algumas outras fontes nessa importação no início do curso. Então você pode mudar isso. Você também pode explorar alguns desses outros tipos de fonte. Mas eu gosto muito dessa nova fonte Super Mario. Ok, eu também vou mudar o tamanho dele aqui. Vou alterá-lo para 30 e, em seguida, adicionarei um esboço a ele Deixe-me ampliar isso porque o contorno é um pouco difícil de ver Mas as configurações do contorno, vou mudar para duas, e posso ver um pequeno contorno preto ao redor que parece muito bom E também clicarei nesse tamanho na caixa de conteúdo. E o que isso vai fazer é mudar esse tipo de seletor aqui para contorná-lo bem, assim Tudo bem, em seguida, vou escolher o componente de vida do meu personagem. Eu poderia selecioná-lo aqui na minha hierarquia ou posso selecioná-lo aqui na minha revisão de design De qualquer forma, vamos selecioná-lo para a posição X. Para isso, vou mudar isso para 130 e a posição y, vou mudar isso para 32. O que vou fazer então é mudar a família de fontes para o novo Super Mario. Vou mudar o tamanho para 50, muito maior. Isso vai cair aqui. Também vou adicionar um esboço a isso. O tamanho do contorno definirá isso como dois. Agora, em vez de dizer bloco de texto, vou mudar para um valor de 99 por enquanto. Como isso serve para representar nosso número de vidas, esse é apenas um valor reservado Eventualmente, vamos vincular esse VS Code para realmente representar quantas vidas nosso personagem terá Agora, outra coisa que eu quero fazer aqui é adicionar um pouco de sombra projetada a isso. Posso adicionar uma sombra projetada a isso entrando minha configuração de cor de sombra, na seção de aparência aqui. Vou clicar nessa barra de cores aqui. E eu vou mudar o valor R, que é o valor vermelho para um. O valor, esse também é o valor alfa de um. O valor, o valor alfa, vai 1 a 00 significa que você não pode vê-lo Um significa que é totalmente opaco. Em algum lugar no meio, cerca de 0,5 significaria algo como se você pudesse ver parcialmente através dele. Você poderia mexer com isso, mas eu gosto dessa cor avermelhada Atualmente, não vemos nada aqui porque precisamos ajustar nosso deslocamento de sombra projetada Então, vou definir isso para ser quatro no X, depois cinco no Y, e agora você pode ver um pouco de sombra projetada lá. Agora, este é um pequeno toque agradável, podemos aplicar contorno à sombra projetada marcando esta caixa. Então, verifique isso. Ao fazer isso, também adicionamos um contorno preto ao redor dessa sombra Agora também, para agrupar esse seletor aqui em torno do nosso valor aqui, vou apenas verificar esse tamanho em relação ao conteúdo Então, opa, lá vamos nós. Ele vai ajustá-lo ao tamanho da nossa fonte. E isso parece muito bom. Tudo bem, depois de usar um pequeno atalho, vou selecionar todos esses três widgets Então, vou manter pressionada a seleção de controle. Eu tenho todos os três selecionados aqui. Vou clicar com o botão direito do mouse sobre eles. Vou copiar todos eles. Em seguida, vou selecionar meu painel de tela e clicar com o botão direito do mouse. E então eu vou colá-los uma vez. E então eu vou selecionar meu painel de tela novamente, e vou colá-los duas vezes. Essencialmente, tenho texto com imagem. Na verdade, eu quero encomendá-los novamente. Vou tirar minha vida aqui e vou parar com isso. Se você arrastá-lo e soltá-lo, poderá movê-lo para baixo, como para reordená-lo Não vou me preocupar em ser perfeito com eles por enquanto. Eles estão todos confusos. Mas vamos reposicioná-los daqui a pouco para reordenar tudo o que fiz aqui Pegamos aquele cara, deixe-me arrastar isso para lá. E eu tenho mais um desses. Vou arrastar isso para baixo desse jeito. Ok, então temos duas imagens de texto, duas imagens de texto, dois textos. Ok, vamos começar a renomeá-los. E eu vou começar com essa imagem aqui. Atualmente, está ao lado do Hud aqui, porque esse painel de tela representa a tela Atualmente, isso está de lado. Vou renomear isso clicando em dois em vez da imagem do personagem Esta será a imagem da moeda para esse componente específico. Vou ancorar isso no canto superior esquerdo, tudo bem. Mas eu vou mudar a posição x para isso para 52 e a posição y para 120. Essencialmente, isso vai ficar um pouco abaixo de Mario aqui. Vou mudar a imagem do nosso Mario pulando para uma moeda de sublinhado Para isso, vou usar a moeda retrô porque não? Algo parecido. Vou ajustar o tamanho aqui para ser 50,50 algo assim Eu digo que isso é muito bom. Em seguida, abaixo, em vez do caractere X, só para manter nossos nomes corretos aqui, vou citar dois sobre isso. E isso vai ser chamado de moeda X. E para ajustar a posição disso, vamos com uma posição x de 12 e uma posição y de 124 Como eu criei o resto desses parâmetros e defini a fonte, o contorno, etc., o contorno, etc., antes de duplicá-los, ele os transferiu para este também É por isso que defini todas essas configurações antes de duplicá-las, porque ao duplicá-las, todas essas configurações aparecem durante o passeio Muito bom, certo. Em seguida, vou selecionar a imagem ao vivo do nosso personagem, essa duplicada Vou renomear isso em vez do personagem Lives, vou chamar essas moedas de valor Esse será o número de moedas que estamos segurando. Vou mudar a posição x para 130, a posição Y para 100. Vou ficar feliz com todas essas configurações, e com certeza vamos deixar isso. Em vez de 99, vamos mudar para zero porque, por padrão, vamos começar com zero moedas. Tudo bem, nossa próxima imagem aqui, vamos renomeá-la a partir da imagem dois do personagem, atingindo dois na imagem do cronômetro Com esse cara selecionado. Vou mudar os pontos de ancoragem. Vou apenas ampliar um pouco aqui. Vou mudar a âncora no painel de detalhes para ficar no meio superior, assim E então eu vou mudar a posição x para zero e a posição y. Vou reduzir isso um pouco, eu não sei, vamos para 24. Algo parecido. E agora você pode ver que, como a posição x é zero, ela está essencialmente alinhada com aquele canto superior. Vou alterar o alinhamento aqui para 0,5 no x. E isso basicamente dividirá a diferença de onde esse widget deve estar localizado em relação ao ponto de ancoragem Obviamente, eu não quero essa imagem do Mario. Então, vou mudar isso para um cronômetro de sublinhado. Mais uma vez, essa é uma textura que importamos no início do curso. É uma espécie de coisa parecida com um relógio. E vou mudar o tamanho da imagem aqui para 100.100, então vamos chamar isso de muito bom Em seguida, vou selecionar meu personagem X. Aumentando o zoom. Atualmente, está bem ali. Eu vou mudar isso para ser, você sabe o que? Na verdade, vou deletar esse. A razão pela qual vou excluir este é porque eu quero ter esses parâmetros, esse sombreamento para o meu valor de tempo também Então, eu vou pegar isso e vou duplicar aquilo Eu posso simplesmente clicar com o botão direito nele e duplicá-lo. O Controle D fará a mesma coisa. Agora eu tenho dois desses. Vou selecionar este aqui e renomeá-lo imediatamente. Pressionando dois, isso será chamado de texto. Vou chamar isso de valor do meu cronômetro, algo assim. Vou mudar a posição disso para ter uma âncora desse meio superior bem ali em cima Agora, porque eu tenho isso, vou mudar a posição x para zero também. Defina isso de volta para zero, o alinhamento no x, vou dividir a diferença, 0,5 para centralizar isso na posição y. Eu posso clicar aqui e arrastar isso um pouco para cima ou para baixo. Eu só vou colocá-lo ali mesmo. Eu vou definir um valor fixo de algo como 60, talvez algo assim. Vamos descer 80% um pouco mais baixo. Lá vamos nós. Podemos ajustar isso ao nosso gosto. Ok, por último, mas não menos importante, temos este último texto que atualmente diz Character Lives. Vamos mudar isso para simplesmente dizer pontos, pressionando F dois sobre isso, mudando para pontos, vou ancorar isso no canto superior direito Mudando a âncora para o canto superior direito dessa forma. Agora preciso mudar a posição relativa. A exposição relativa será de menos 240. Então você pode ver aqui, este é o nosso ponto de ancoragem E esse é o deslocamento em relação ao ponto de ancoragem, menos 240 para a posição Por quê? Vou definir isso para 32. Abaixando um pouco. Então eu vou simplesmente mudar o texto aqui de 99999999, então isso vai representar nossa pontuação Então, mais uma vez, esse será nosso Hud. Vá em frente e salve isso. Boa música, é do seu agrado. Você não precisa ter esse layout exato, mas esse é o layout que eu vou escolher. Tudo bem, então criamos nosso layout Hud a seguir. Precisamos realmente exibir isso na tela. Então é isso que está por vir. Nos vemos lá. 24. Display HUD: Bem-vindos de volta a todos. Neste vídeo, vamos adicionar nosso lindo capuz aqui mesmo à nossa janela de visualização Então, vamos direto ao assunto aqui em nosso editor de nível principal, vamos usar nosso modelo de controlador de jogador BP que criamos quando estávamos trabalhando em nossa moeda colecionável Vamos usar isso para chamar nosso widget a ser criado e adicionado à nossa janela de visualização Vamos clicar duas vezes nele para abri-lo. Se você esqueceu o caminho onde estava, é aí que você pode encontrá-lo A razão pela qual vamos usar esse plano é porque o plano do controle do jogador persistirá, independentemente de seu personagem estar vivo ou não Portanto, esse é um ótimo local para hospedar esse tipo de código. Como você se lembra anteriormente quando estávamos trabalhando em nossa moeda, é aqui que, na verdade, estamos fazendo as contas para somar nossas moedas. Aqui em cima. Vamos, você deveria começar um evento aqui. Por padrão, se você excluiu acidentalmente, como eu fiz, você pode recuperá-lo clicando com o botão direito do mouse e digitando Iniciar, Há Event, Begin, Play. Este evento será acionado quando você iniciar o jogo O que queremos fazer é sair dele e criar um widget E o widget que gostaríamos de criar é nosso hub BP que acabamos de Agora, não basta apenas criá-lo. Precisamos pegar esse valor de retorno aqui, arrastar e dizer adicionar ao Viewport E essa é uma função que realmente adicionará nosso Hud à nossa tela Vou tocar na tecla C depois de clicar com o botão esquerdo e arrastá-la. E eu vou dizer janela de visualização hud, como se eu fosse mudar a cor do comentário aqui para preto E então eu vou compilar e salvar apenas para ter certeza de que meu código aqui está pronto para ser usado. E parece que é. Agora, se eu entrar no jogo, você pode ver que nosso Hud é exibido em nossa janela de exibição Agora, nada aqui funciona como se eu coletasse uma moeda, isso não aumentasse meu total de moedas Se eu perdesse uma vida, nada mudaria aqui também. Mas isso está por vir. Agora que temos nosso Hud na tela, podemos realmente vincular nossos vários valores aqui, duas variáveis Para que possa realmente refletir quantas vidas temos, quantas moedas temos, etc E vamos começar com isso no próximo vídeo. Nos vemos lá. 25. Encadernação de HUD: Tudo bem, agora que nosso Hud está aparecendo em nosso jogo, é hora de vincularmos algumas variáveis a esses vários widgets de texto Porque, no momento, todos esses são valores de espaço reservado. Na verdade, eles não atualizam, não mudam, não fazem nada desse tipo de coisa. Então, vamos seguir em frente e corrigir isso. E para isso, vamos trabalhar um pouco dentro do nosso controlador BP Player Então, se você esqueceu onde está, esse é o caminho, clique duas vezes nele para abri-lo Atualmente, temos duas variáveis aqui, uma variável de moedas e uma variável de vidas para armazenar seus respectivos dados, moedas e vidas. Vamos criar mais algumas aqui, então vou simplesmente clicar com o botão direito do mouse em nossas vidas aqui. E eu vou duplicar isso. E vou duplicar isso porque quero que próximas duas variáveis também sejam números inteiros Este será simplesmente um número de pontos. Se eu pressionar o controle D com essa variável já destacada, isso também a duplicará Este será chamado de tempo de nível. Agora, se eu compilar meu plano aqui, posso definir valores padrão no painel de detalhes para todos eles Para o tempo de nível, vou definir que seja 500 para pontos, vou fazer com que seja zero para vidas. Deixe-me realmente mudar que é às três, vamos manter às três. E moedas, também teremos isso em zero. Ok, muito importante aqui, você deve compilar esse plano para que a próxima etapa funcione Então, compile e salve o controlador do seu player BP aqui. Nosso próximo passo é fazer algum trabalho dentro de nossas cabanas da BP. Se você esqueceu onde está, está na pasta I da sua plataforma Tudo bem, entrando aqui, agora vamos pular da nossa guia de designer aqui no canto superior direito para a guia do gráfico Agora, a guia do gráfico é onde você pode adicionar alguns scripts ao seu esquema de widget Vamos fazer algo fora da construção de eventos aqui. Isso já está aqui por padrão. Só vou parar com isso. Vou clicar com o botão esquerdo, arrastar e deletar esses dois caras. Você pode pensar que a construção do evento é o início da reprodução do seu projeto de widget E o que vamos fazer aqui é, a partir da construção do evento, criaremos uma referência ao nosso projeto Como nosso blueprint do controlador do player contém essas variáveis, queremos poder acessar esses dados variáveis dentro do nosso controlador do player e apontá-los para nossos vários widgets de texto aqui dentro do nosso Primeiro, precisamos criar uma referência ao nosso controlador de player. Como fazemos isso? Bem, se clicarmos com o botão direito do mouse em algum espaço vazio aqui, podemos digitar get player controller. E se continuarmos com isso, podemos lançar um controlador de dois jogadores de BP Então, basicamente, o que estamos verificando aqui é, ei, esse é o controle do player? É esse o que estamos realmente usando em nosso projeto? E sim, é aquele que configuramos para ser usado nas configurações do nosso projeto. Só para revisar isso rapidamente, ele mapeia e modifica na classe de controlador de jogador. Este é o controlador Player que nosso projeto está usando aqui em nosso capô de sublinhado W BP. Basicamente, estamos fazendo a pergunta sobre como começar a jogar Esse é o controle do player que estamos usando? E se for, gostaríamos de criar uma referência a ele. Agora, a maneira de fazer isso é clicar com o botão direito do mouse aqui neste modelo e promovê-lo para uma variável Ao fazer isso, adicionamos uma variável no painel Meu blueprint Vou simplesmente encurtar isso para Player Controller. Assim. Então eu posso clicar com o botão esquerdo e arrastar todo esse script. Pressione a tecla C. Vou chamar isso de minha referência de criação ao Player Controller. Vou definir a cor do cometa aqui para preto também. Agora, por que isso é importante? Mais uma vez, estamos tentando extrair esses dados variáveis do nosso controlador BP player aqui em nosso BP Vamos sair daqui para nossa visão de designer. Agora eu posso selecionar esses vários widgets de texto aqui, começando com nossas vidas aqui, vidas de personagens, aquele cara Em seguida, no painel de detalhes, onde mostra o texto 99, podemos vincular isso a uma variável Agora, se eu clicar aqui, posso encontrar meu controlador de player. E agora eu posso apontar para a variável adequada que está dentro do nosso controle de player. Para isso, quero escolher vidas. Agora você não verá a atualização aqui, mas quando jogarmos nosso jogo, você verá nossas vidas variáveis de dentro do nosso controle de jogador refletidas aqui. Agora vamos fazer isso com nossos vários widgets de texto para nossas moedas Selecione o valor de suas moedas aqui na área de texto. Vamos vincular isso à nossa variável de moedas do controlador de jogador. Aqui em cima estará nosso valor temporal selecionando isso. Vamos vincular isso ao tempo do nível do controlador do jogador. Então, por último, mas não menos importante, aqui no canto superior direito eu tenho meus pontos. Vamos até o painel de detalhes e vamos vinculá-lo aos pontos de controle do nosso player Tudo bem, certifique-se de compilar e salvar isso. Agora vou jogar nosso jogo. E aqui vamos nós. Agora olhe para o canto superior esquerdo, agora temos três vidas, zero moedas, 500 para o nosso tempo, e nossa pontuação atualmente também é zero. Agora vou pegar algumas moedas. Mas antes de fazer isso, gostaria de ressaltar que, dentro do nosso controlador BP player, temos esse script em que vamos incrementar quantas moedas temos Podemos excluir isso agora porque tudo isso era um espaço reservado para mostrar quantas moedas tínhamos na tela antes de usarmos nosso capuz Então você pode excluir isso, mas por meio desse script, vamos incrementar a quantidade de moedas E se obtivermos mais de 100 moedas, aumentaremos a quantidade de vidas Portanto, eles devem ser atualizados à medida que coletamos algumas moedas. Lembre-se desse evento personalizado dentro do nosso controlador de jogador BP para adicionar moedas Isso está sendo chamado de dentro de nossa moeda de coleta da BP quando sobrepomos nossa esfera em nosso script de moedas Vamos chamar esse evento personalizado de ad coins que pertence ao nosso controlador de jogador, incrementando assim nossas E se conseguirmos moedas suficientes, aumentaremos nossas vidas Vamos ver isso no trabalho. Clique em Jogar aqui. Agora, ainda não tenho minhas vidas configuradas para serem incrementadas. Se eu for atingido e morrer, no entanto, coloquei algumas moedas com antecedência, essa vale uma. Você viu o incremento no canto superior esquerdo. Essa moeda vai valer mais 13. Agora eu configurei essas moedas grandes com antecedência. Cada uma vale 50, então eu tenho 53 moedas. O próximo que eu colecionar deve me render até 103, o que deve envolver meu contador de moedas. Agora você vê que eu tenho três moedas e quatro vidas, porque aquela valia 51, vai valer 50. Então, temos 535-45-5506, etc. Então você vê que minhas vidas estão funcionando e minhas moedas estão funcionando, nosso tempo de nível e nossos pontos ainda não funcionam. Mas, ao longo do curso, também vamos incrementá-los No entanto, observe que as variáveis no controlador do player estão, na verdade, conectadas a esses valores para que, quando as incrementarmos, elas também sejam atualizadas Só para mostrar mais uma vez aqui no nível, eu criei algumas duplicatas dessa moeda e fiz essas maiores, selecionando uma aqui no meu editor de níveis, eu a fiz no painel de detalhes no valor de 50 Então é por isso que eles valiam 50. Eu também os avaliei um pouco, esses menores que fiz valeram um, só para que eu também pudesse mostrar o aumento de vidas Tudo bem, aí está. Agora temos algumas encadernações de cores e farei tudo por Nos vemos na próxima. 26. Biblioteca de funções de blueprint: Tudo bem, vamos voltar nossa atenção agora para a criação de alguns blocos interativos. E vamos começar de uma forma um pouco interessante, criando algo conhecido como biblioteca de interessante, criando funções de blueprint Agora, uma biblioteca de funções de blueprint nos permite criar funções de uso geral que podem ser acessadas de qualquer blueprint Vamos usar isso neste caso para criar uma função de efeito de impacto de bloco que podemos então chamar de qualquer um dos vários blocos que criamos. Além disso, porque esse é um bom conhecimento geral para demonstrar aqui na Un rail. Tudo bem, então vá até a pasta de plantas da sua plataforma de conteúdo Eu vou escrever. Clique em algum espaço vazio aqui e eu vou criar uma biblioteca de funções de blueprint blueprint Vá em frente e selecione isso. Vamos chamar isso de nossa biblioteca BP underscore Underscore E então eu vou clicar duas vezes sobre isso para abri-lo imediatamente. Tudo bem, dentro daqui, ele já está me solicitando a criação de uma nova função Agora vou chamar essa primeira função, Play block interact X. Vamos renomeá-la aqui, Play block interact, X, abreviação de Em seguida, no painel de detalhes, quero adicionar algumas entradas Então, vou adicionar 123.4 e vou nomeá-los da seguinte forma Este primeiro será chamado apenas de FX, que será a abreviação de efeito sonoro. Vou mudar o tipo aqui daqui a pouco, mas vou renomear todos eles primeiro. O próximo será efeitos. Entre parênteses, vou colocar Niagara, vou colocar Niagara, porque esse é o nome do sistema de partículas que o Unreal usa Agora, no Unreal Engine Five, também vou usar outro campo aqui chamado partícula de sublinhado do efeito V, apenas para dar acesso aos efeitos de partículas em cascata, se você quiser efeitos de partículas em cascata Esse é o sistema de partículas mais antigo. E então, neste último, vou colocar a localização dos efeitos visuais, a localização dos nossos efeitos visuais Agora, precisamos definir os tipos associados a cada um deles. Para efeitos sonoros, clique neste menu suspenso. Estou procurando uma base sonora que seja o tipo de referência de objeto base sonora de entrada para Niagara Vou clicar aqui e, na barra de pesquisa, vou digitar Niagara Referência de objeto do sistema Niagara. Referência de objeto do sistema Niagara para partículas efeito V. Clique nesse menu suspenso. Vou pesquisar o tipo de objeto do sistema di, referência de objeto do sistema de partículas Não se deixe enganar com a estrutura do sistema de partículas, é a referência do objeto do sistema de partículas a localização do efeito, isso simplesmente será uma localização vetorial x, y e Com isso, vamos continuar e criar a funcionalidade que queremos que aconteça quando essa função de efeito de interação do bloco de reprodução for chamada. partir desse pino de execução, vou trazer uma peça Sound two D node. O som que eu vou querer tocar vai passar por aqui. Em seguida, vou me arrastar até aqui e digitar o sistema de desova no local Esse será o nosso sistema de Niágara, então precisamos especificar o local onde isso surgiria para que possamos conectá-lo ao Em seguida, vou arrastar o emissor de spawn no local. Este é o sistema de partículas em cascata mais antigo, então vou apenas conectá-lo a ele Clique duas vezes nesse nó apenas para inserir um nó de redirecionamento como esse. E a localização também pode ser conectada aqui. Também vou clicar duas vezes nessa linha. Ok, então essa será nossa primeira função que existirá aqui em nossa biblioteca de funções BP Vamos compilar e salvar isso. E agora criamos uma função que pode ser usada dentro de qualquer blueprint Vamos usar isso em muitos dos nossos projetos de blocos que estão por vir, pessoal Isso bastará para este. Veja quando será a próxima. 27. Interface de blueprint: Neste vídeo, vamos criar algo conhecido como interface de blueprint Agora, novamente, esse é outro recurso que vamos adicionar para ajudar nos próximos blocos que adicionaremos ao nosso nível. Esse é um conceito um pouco difícil de explicar de antemão Então, o que vamos fazer agora é simplesmente criar esse ativo e , à medida que avançamos, explicaremos exatamente como ele funciona. Então, vamos clicar com o botão direito do mouse na pasta de esquemas da nossa plataforma de conteúdo, clicar com o botão direito E na categoria blueprint, vamos escolher a interface de blueprint E vamos chamar isso de B I BPI para interface de blueprint Underscore, vou chamar essa plataforma. Em seguida, clicaremos duas vezes nesse ativo para abri-lo. Agora, tudo o que podemos fazer aqui é criar uma função. Essa será uma função vazia que pode ser chamada de dentro de outros projetos e personalizada de acordo com nossa preferência Tudo o que precisamos fazer aqui é criar uma função simples chamada. Vamos chamar essa função específica de Block. Agora, mais uma vez, não há nenhuma funcionalidade para criar aqui dentro de uma interface de blueprint Você simplesmente cria uma função nomeada, neste caso o bloqueio do quadril. E podemos então personalizar essa função dentro de qualquer plano ao qual essa interface seja adicionada E faremos isso um pouco mais tarde aqui. Mas já fizemos esse trabalho de base e pronto, certifique-se de compilar isso e salvar pessoal Isso é tudo o que queríamos fazer neste vídeo. Um pouco mais de preparação nos próximos vídeos, mas nos vemos lá 28. Widget de exibição de pontos BP: Bem vindo de volta. Neste vídeo, nosso objetivo é criar um modelo de widget que será usado para exibir a quantidade de pontos em um jogo quando, por exemplo, interagirmos com um bloco Portanto, um pouco mais de trabalho preparatório a ser feito aqui, mas isso renderá dividendos a longo prazo Então, vamos fazer tudo isso com antecedência, para que não precisemos voltar e refazer um monte de coisas. Posteriormente, criaremos esse ativo dentro da nossa pasta Platform I. Vamos clicar com o botão direito do mouse em algum espaço vazio interface do usuário. Vamos entrar em Widget, blueprint. E vamos escolher esse widget de usuário como nossa classe principal E vamos renomear esse BP Underscore Points. Ok, então vamos clicar duas vezes sobre isso para abri-lo. E vamos adicionar alguns widgets aqui em nossa visualização de designer, na área da paleta A primeira que vamos pesquisar é uma sobreposição E podemos arrastá-lo e soltá-lo aqui em nossa hierarquia ou aqui mesmo em nossa visualização de design Então, o que vamos adicionar além disso é um widget de texto simples Vá em frente, arraste e solte isso em cima da sobreposição Com essa configuração, nosso widget de texto é simplesmente anexado ao nosso widget de sobreposição Estamos simplesmente usando o widget de sobreposição como algo para anexar nosso texto Agora vamos personalizar alguns detalhes do nosso widget de texto Aqui, estou verificando minhas anotações aqui. O que vou fazer é alterar o widget de texto para simplesmente ler os pontos de sublinhado do texto, apenas dando a ele um novo nome alterar o widget de texto para simplesmente ler os pontos de sublinhado do texto, apenas dando a ele um novo Vou marcar essa caixa para ver se é variável, o que significa que podemos atualizar esse valor real no futuro. Quanto ao alinhamento para isso, vou definir os alinhamentos horizontal e vertical para ficarem bem no meio Então, vou mudar o texto aqui de bloco de texto para pontos. Mesmo que seja apenas um espaço reservado vamos atualizá-lo Vamos mudar a família de fontes aqui para ser nossa fonte Super Mario. Nova fonte Super Mario. Vou mudar o tamanho aqui para 50. Também terei um tamanho de contorno de dois. E então vamos compilar e salvar esse widget. Tudo bem, pessoal, isso é tudo queríamos fazer para isso. Mais um trabalho a ser feito aqui, mas também temos um bom ponto de partida para mostrar alguns pontos em nosso jogo. 29. Anim de widget de pontos: Bem-vindo. Neste vídeo, nosso objetivo é criar uma animação. Assim, quando nosso widget de pontos, modelo aqui apresentado, for introduzido no jogo, ele ganhará vida de uma forma interessante e atraente A ideia é que, quando interagimos com um dos blocos que vamos criar, ele meio que flutua e mostra quantos pontos fazemos valer um bloco Tudo bem, para criar uma animação aqui dentro do nosso esquema de widget E se você esqueceu onde está, atualmente está localizado nesta pasta Bp points é o que chamamos de pontos. Precisamos abrir a janela de animação. Onde podemos encontrar essa janela? Na parte superior da nossa janela de interface aqui, podemos encontrar animações aqui Clique nisso. Então, nesta janela de animação, precisamos criar uma animação nomeada. Em seguida, defina alguns quadros-chave ao longo dessa linha do tempo. Então, vamos criar nossa primeira animação nomeada. Então, clicando nesse botão de adição de animação, vou chamar isso de animação Points Underscore E então, com essa animação selecionada, vá em frente e clique nela. Precisamos adicionar uma faixa. Assim, podemos adicionar uma faixa clicando no botão de adição de faixa aqui neste pequeno menu suspenso. Temos todos os widgets nomeados. E o que queremos animar são nossos pontos de texto, não o espaço de sobreposição O texto aponta para aqui. Então vá em frente e clique nele. Em seguida, o que queremos fazer é clicar no botão Mais aqui para ver a faixa adicional. Isso trará essa pequena mosca no menu. E queremos adicionar uma faixa de transformação. Clique aqui, ele exibirá esse conjunto de opções. Vou clicar neste triângulo suspenso . A transformação consiste em parâmetros de translação, rotação, escala e distorção que possivelmente podemos alterar O que queremos fazer aqui é mudar a tradução. Então, vou clicar aqui para abrir. Vamos fazer isso flutuar. Também vamos mudar a escala desse texto ao longo do tempo. Queremos que isso não apenas aumente quando surgir , mas também aumente a escala Ok, agora que os revelamos, podemos adicionar alguns quadros-chave à nossa linha do tempo aqui Agora, os quadros-chave nos permitem especificar um determinado valor em um determinado momento. Em primeiro lugar, desça sua linha do tempo aqui, se você segurar o botão direito do mouse, poderá deslocar sua linha do tempo para frente e para trás Se você mantiver pressionada a tecla control e usar a roda do mouse, poderá esticá-la ou comprimi-la. Essa linha verde representa o início da sua linha Essa linha vermelha representa o fim. E você tem esse pequeno purificador de tempo aqui para arrastar para frente e para trás Agora, se você colocar o cursor do mouse aqui, verá que tem esses dois tipos de barras de colapso. É aqui que você pode especificar o início e o fim do seu cronograma aqui Então eu vou arrastar este para a direita e vou arrastá-lo para cerca de, e você pode ver no azul, quantos segundos? Vou demorar cerca de 0,95 segundos e vou ampliar aqui E você pode ver imediatamente que ele define alguns quadros-chave aqui, esses pontos vermelhos representam alguns quadros-chave Eu quero configurá-los manualmente. Só para mostrar esse processo, vou clicar com o botão esquerdo e arrastar para a direita até aqui. E então eu vou excluí-los para me livrar deles. Esses pontos vermelhos representam os tempos e os valores de determinadas propriedades aqui Ok, então a primeira coisa que quero alterar aqui é minha tradução y. Essa é a alta e a baixa desse valor de pontos para adicionar um quadro-chave. Em primeiro lugar, vou pegar meu depurador de cronogramas aqui e colocá-lo no Vou começar na marca de zero segundo e vou alterar essa propriedade Y, a de cima e de baixo Então, para adicionar um quadro-chave aqui, posso clicar nesse botão de adição Botão de adição minúsculo ali mesmo. E com isso eu posso especificar um valor. Eu tenho meu purificador de cronograma logo acima dele. Está definido como zero agora. Mas eu também poderia clicar com o botão direito e definir a propriedade. Aí está meu tempo zero, meu valor zero. Então, eu poderia configurá-lo dessa forma também. Um valor associado ao tempo para isso. Quero que o tempo e o valor sejam zero, ok? E eu vou trabalhar dessa maneira. Vou arrastar meu controle deslizante de linha do tempo agora para 0,2 segundos. Vou adicionar outro quadro-chave para a tradução y. Clicando neste pequeno botão de adição aqui, posso especificar um valor conectando-o aqui ou posso escrever Clique aqui e vá para Propriedades. E vou definir o valor para isso como menos 200. Em seguida, pressione Enter. Você verá isso imediatamente mover os pontos da palavra para cima. Ok, em seguida, vou pegar meu controle deslizante de linha do tempo aqui, deslizá-lo sobre 2,45 e vou adicionar outra Se eu clicar com o botão direito do mouse sobre isso, posso ver que a hora está definida como 2,45 e o valor está definido como menos 200 Na verdade, vou reduzir isso um pouco de menos 200. Vou fazer algo como talvez menos 150 para que possamos obter esse efeito. E você pode ver que quando eu arrasto isso, ele vai aparecer e depois trazê-lo de volta para baixo. Talvez eu altere isso com o tempo. Se eu clicar no meu botão Play aqui, posso ter uma ideia de como isso vai acontecer com o tempo. Algo parecido. Apareça, então você pode, obviamente, personalizá-lo ao seu gosto Ok, em seguida, vou ajustar a escala dos nossos pontos aqui. Então, vou clicar no controle deslizante da minha linha do tempo novamente. Vou arrastar isso até a marca de zero segundo. Agora eu quero ajustar a escala, x e y uniformemente. Em vez de clicar no botão de adição aqui para x e y. Se eu clicar no botão de adição, diretamente na linha de escala, adicionarei chaves aos valores x e y. Para os dois. Vou começar com um valor e estou clicando aqui com o botão direito. Um tempo de zero e o valor de zero, essencialmente, serão infinitamente pequenos Não podemos ver isso. E eu vou fazer isso para os dois aqui, clique com o botão direito. Defina esse valor como zero aqui também. Em seguida, vou mover meu controle deslizante da linha do tempo até a marca de 0,2 segundos aqui na linha de escala Vou clicar nesse botão de adição. Se eu destacar esses dois valores, basta clicar com o botão esquerdo do mouse e arrastar os dois Vou clicar com o botão direito do mouse. E, infelizmente, não consigo definir o valor para os dois ao mesmo tempo. Achei que talvez pudesse ir lá. Infelizmente, vou ter que clicar com o botão direito do mouse em cada uma dessas propriedades. Para isso, o valor será 1,5. Então, vou definir o texto para ser 1,5 vezes maior, clique com o botão direito do mouse em propriedades 1,5. E você pode ver que quando eu defino isso como 1,5, ele mostra esse valor de 1,5 aqui também. Ok, seguindo em frente, vou ajustar minha linha do tempo. Deslize para fora até a marca de 0,45 segundos na linha de escala. Aqui eu vou clicar nesse pequeno, minúsculo botão de adição. Ele adicionará quadros-chave para X, Y. Para isso, vou definir a propriedade como 11 para o valor y. Em seguida, vou arrastar minha linha do tempo até a escala de 0,85 segundo Clique neste botão de adição para adicionar quadros-chave e marcadores em nossa linha do tempo para a marca de 0,85 segundo Se eu escrever, clicar em cada um deles, a propriedade está atualmente definida como uma, que é o que eu quero. Então, por último, mas não menos importante, vou arrastar meu controle deslizante de linha do tempo aqui até 0,95 no final de nossa linha do Vou clicar nessa escala novamente. Ele adicionará quadros-chave para X e Y. Vou escrever, clique na minha tecla X aqui Vou definir a propriedade como zero, o valor de zero vez 0,95 e aqui vamos definir o valor dessa propriedade como zero também Então, agora, se eu fosse jogar isso, você veria que teria esse tipo de efeito. Vamos flutuar, meio que explodir, depois afundar e ir embora . Tudo bem, legal. Agora, criamos uma animação de widget que pode ser chamada, que é instruída a ser reproduzida sempre que pedimos que ela seja reproduzida E dica, dica, acorda, pisca. Vamos dizer isso para jogar quando interagirmos com um bloco e ganharmos alguns pontos com tudo isso pronto, vamos compilar e salvar os caras Isso vai acabar com este. Nos vemos na próxima. 30. Pontos de exibição Ator Class BP: Bem-vindos de volta a todos. Neste vídeo, vamos criar um plano de classe de ator que aparecerá no jogo sempre que interagirmos com um de nossos blocos Isso, por sua vez, mostrará esse modelo de widget, nossos pontos aqui para mostrar no jogo E também vamos chamar nossa animação de pontos para jogar. Para facilitar tudo isso, precisamos de um plano de ator. Ok, vamos continuar, volte para o nosso editor de nível principal aqui. Vamos criar esse ativo dentro da pasta de diagramas da nossa plataforma aqui em algum espaço vazio Vá em frente e clique com o botão direito na classe Blueprint. Vamos escolher uma classe de ator porque ela será introduzida no jogo E vamos chamar isso de BP Underscore Points. Não deve ser confundido com Widget. Pontos de sublinhado do Blueprint. Ok, vá em frente e clique duas vezes nisso. Para abri-lo, basta adicionar um único componente aqui no painel de componentes. Clique em Adicionar. Vamos adicionar um componente de widget Não é uma interação com um widget, mas simplesmente um widget. Vou manter o nome do widget com esse componente selecionado No painel de detalhes, podemos especificar uma classe de widget E aqui nesta lista suspensa, podemos escolher nossos pontos WP. Vá em frente e selecione isso. Você notará imediatamente em nossa janela de visualização isso mostra que o texto aponta mais uma vez Vamos alterar esse texto dinamicamente Quantos pontos gostaríamos de adicionar? Bem, vamos adicionar uma variável para isso no painel meu plano na seção Variável Clique nesse botão de adição. Vamos chamar isso de Add. Vamos fazer disso um número inteiro. Podemos alterá-lo aqui ou no painel de detalhes, tipo de variável, vou alterá-lo para simplesmente um número inteiro com isso selecionado Vou prosseguir e compilar imediatamente. Vou examinar o painel de detalhes. Vou tornar essa instância editável. E também vou verificar essa exposição no spawn. Isso fará com que, quando esse determinado ator for gerado no jogo, possamos expor essa variável específica e seja fácil de alterar para torná-la facilmente editável expor essa variável específica e seja fácil de alterar para torná-la facilmente editável Portanto, precisamos que essas duas caixas de seleção estejam marcadas. Vamos deixar o valor padrão aqui definido como zero. OK. Em seguida, adicionaremos alguns scripts e, para isso, entraremos em nosso gráfico de eventos. Queremos fazer algo com o event start play, que já existe aqui. Então, vamos clicar com o botão esquerdo e arrastar. Livre-se desses dois caras. Aqui está o evento, comece a jogar. Se você excluir isso acidentalmente, mantenha pressionada a tecla e clique com o botão esquerdo para obtê-la ou clique com o botão direito do mouse e faça uma busca pelo início do evento. Jogue. Você vai encontrá-lo. Vamos querer trazer nosso componente de widget aqui Vamos clicar com o botão esquerdo e arrastar isso para dentro. A razão pela qual vamos querer trazer isso é porque queremos ver se esse widget é, de fato, nossos pontos P. Para fazer isso, vamos sair daqui digitar cast two BP. Na verdade, ainda não podemos lançá-lo. Preciso sair daqui e pegar o widget. Obtenha o widget. Basicamente, estamos dizendo que queremos obter essa classe de widget Se eu digitar get widget, widget, já trazemos outra cópia disso Só precisamos disso do nosso widget, você arrasta para fora daqui e digita get widget Você quer esse nodo aqui. Para que possamos então sair daqui e fazer um elenco. Dois pontos BP. Agora, toda essa configuração é necessária para que possamos extrair algumas informações do nosso plano de widget Ao transmitir isso, poderemos solicitar especificamente que nossa animação de pontos seja reproduzida aqui. Na verdade, esse será nosso próximo passo aqui. Então, volte para seus pontos BP. Vamos retirar nossos pontos de BP e digitar uma animação de pontos Queremos obter uma animação de pontos. Essa é a animação que acabamos de criar. A razão pela qual estamos recebendo isso é porque vamos sair daqui e digitar animação de reprodução. Reproduza a animação. E, ao fazer isso, ele conectará isso como a animação que queremos reproduzir. Agora, para o alvo, queremos que esse seja nosso widget, ponto de planta Vamos conectar isso ao alvo. Essa nota é legal aqui. Essa animação teatral? Não, porque podemos especificar não apenas o número de loops, que neste caso só queríamos jogar uma vez Também podemos especificar o modo de jogo, avançar, reverter ou pingue-pongue, bem como a velocidade de reprodução Então, se você não estiver satisfeito com a velocidade da animação, você também pode ajustá-la aqui. Vou deixar tudo isso inalterado. Ok, em seguida, quero personalizar o valor real do ponto que é exibido agora. Tudo o que tenho é esse texto Points que diz pontos. Então, eu quero ser capaz de ajustar o valor real do texto associado a isso aqui no painel de detalhes. Então, como podemos fazer isso? Bem, aqui em nossos pontos BP Podemos retirar do nosso elenco dois pontos de BP e fazer uma busca por pontos Queremos obter nossos pontos de texto. Isso se refere especificamente a esse widget de texto aqui. Com isso, queremos alterar nosso conteúdo de texto arrastando para fora daqui para eu poder digitar o texto definido Eu quero definir o texto. Basicamente, estamos dizendo que queremos alterar esse valor de texto associado a esse widget de texto Vou apenas diminuir um pouco o zoom mantendo pressionado o controle. Vamos colocar isso para dentro, então eu vou trazer isso para cá desse jeito Eu clico duas vezes sobre isso para trazer um nó de redirecionamento. Como se o texto real que eu quero exibir aqui fosse determinado por esses pontos a serem adicionados. Se eu incluir isso em nosso gráfico, vou obtê-lo. Eu posso tentar inserir esse número inteiro neste texto. Ele vai convertê-lo de um número inteiro em texto. Também trará aquele cara quando você tentar fazer isso. Agora ele exibirá zero em vez de pontos. Agora, outra coisa que queremos fazer aqui, indo um pouco para o lado aqui, é destruir esse ator depois de inseri-lo no jogo Uma maneira muito fácil de determinar quando destruir isso é determinar quando terminará nossa animação. Quando nossa animação terminar, vamos destruí-la. O que posso fazer aqui é arrastar para fora da minha animação de pontos dessa forma. Digite get end time, isso nos dará o horário de término em segundos. Então eu posso arrastar para fora daqui e conectar isso um atraso de controle de fluxo do nó de atraso. Só vou manter esse fluxo de execução nesse fio branco que vai dessa configuração de texto até nosso nó de atraso. E quando isso estiver concluído, clicaremos com o botão direito do mouse em destruir o ator. O alvo aqui é o próprio significado desses pontos de BP. Lembre-se, esses pontos BP destruirão essa tela aqui Agora eu sei que isso diz pontos aqui, mas quando incluirmos isso no jogo, o que ele vai fazer é, na verdade mostrar nossos pontos a serem adicionados aqui Atualmente, é zero, mas poderemos mudar isso dinamicamente quando fizermos com que os pontos desse BP apareçam em Com tudo isso feito, vamos compilar e salvar novamente. Depois de dizermos que isso apareça em nosso jogo, quando interagirmos com o bloco, descobriremos se estamos lidando com esses pontos de WBP Na verdade será com ele que estamos lidando. A razão pela qual estamos usando isso é para que possamos extrair a animação de pontos que criamos. Diga a ele que toque também para modificar o texto que está contido nele, vamos alterá-lo, esse texto para ser o número de pontos a serem adicionados. Depois que nossa animação de pontos terminar de ser reproduzida, obteremos o tempo de 0,95 segundos. Vamos atrasar esse valor antes de destruirmos o ator. Vamos esperar quase um segundo antes destruirmos a exibição desse ponto. E tudo isso vai se encaixar muito bem em pouco tempo Aqui pessoal, isso vai fazer tudo por este. Nos vemos na próxima. 31. Função de adicionar pontos: Tudo bem, então temos várias coisas relacionadas a pontos, todas reunidas em preparação para juntar nossos blocos e marcar alguns pontos No entanto, ainda falta uma coisa importante somar pontos quando realmente marcamos alguns pontos. Atualmente, temos nossa variável de pontos. No momento, ele está vinculado a esse widget de texto aqui em nosso WBPud Essa variável existe dentro do nosso controlador de player. Então, vamos mergulhar nisso a seguir. Voltando ao nosso editor de nível principal, vamos clicar duas vezes no controle do player. Dentro daqui, estamos fazendo uma pequena adição para somar nossas moedas, mas ainda não estamos somando pontos. Atualmente, é apenas uma variável que está aqui e essa variável está vinculada ao nosso WBP Vamos fazer um pouco de matemática aqui. Clique com o botão direito em algum espaço vazio, vamos procurar um evento personalizado. Vamos chamar isso simplesmente de Adicionar pontos. Com este evento personalizado selecionado. Deixe-me aumentar o zoom. Mantendo pressionado o controle e ampliando o zoom no painel de detalhes, vou adicionar uma entrada Ao clicar neste botão de adição, chamarei esses pontos de dois pontos para somar, não apenas pontos, dois pontos para adicionar, vamos torná-lo um número inteiro e nossa matemática aqui será super simples Eventualmente, forneceremos alguns pontos e ele os exibirá aqui sempre que esse evento para clientes for convocado. E vamos adicionar esse arrastamento, clicando no botão Adicionar à nossa quantidade atual de pontos, arrastar e soltar aqui E então vamos definir isso como nosso novo valor de pontos. Basta arrastar e soltar seus pontos nessa saída, que exibirá um setter E aí está. Isso será fundamental para que nossos blocos avancem. Portanto, certifique-se de compilar e salvar. Você pode clicar com o botão esquerdo e arrastar tudo isso. Chamaremos isso de cor preta do nosso script de pontos de anúncio. E pessoal, isso vai fazer tudo por esse. Compilando e salvando. Mais uma vez. Nos vemos no próximo vídeo. 32. Base de bloco: Bem-vindo. Agora, como você sabe dos jogos anteriores de Mario, há uma variedade de blocos interativos dentro deles. Vamos começar a criar nossos blocos começando com um bloco base. Agora, esse será um tipo de bloco pai em que reunimos todos os componentes básicos, variáveis, scripts, etc E então vamos criar blocos secundários a partir dessa base principal. Então, essa será uma espécie de base para nos preparar para todos os outros blocos que estão por vir que eles herdarão desse pai que estamos prestes a criar Agora, antes de começarmos com tudo isso, certifique-se de ter importado essas texturas e esses arquivos de áudio muito antes, logo no início do curso, porque vamos usá-los ao longo deste vídeo Agora, para começar aqui, vou entrar na pasta de texturas da minha plataforma e criar materiais três texturas diferentes Temos nosso uso de blocos. Vou usar esse bloco de perguntas, embora tenha algumas variedades aqui que você pode escolher. Mas não importa qual você escolher, eu vou escolher esse bloco, a primeira pergunta, e depois vou escolher esse bloco quebrável Então, estou apenas mantendo o controle. Então, eu tenho todos os três selecionados. Em seguida, vou clicar com o botão direito do mouse em qualquer um dos que selecionei e criarei um material a partir de cada um deles. Ok, agora ele adicionou três materiais separados, 12.3 e só para organizá-los, vou arrastar todos os três para minha pasta de materiais, assim Vou movê-los para cá. Deixe-me entrar na minha pasta de Materiais depois que isso for concluído, apenas para ter certeza de que eles estão lá e parece que estão versão 12.3. Em seguida, criaremos um plano Então, vá para a pasta de diagramas do seu jogo de plataforma, nós vamos escrever Clique em alguma classe de projeto de espaço vazio. Este será um modelo de classe de ator para o nome Vamos usar o bloco de sublinhado da BP. Base de sublinhado. Então, vamos clicar duas vezes nesse cara para abri-lo no painel de componentes na parte superior, vamos adicionar um componente. Vamos adicionar um componente de cubo. Vou deixar esse nome como cubo com esse componente selecionado no painel de detalhes, vou inserir nosso material Vou digitar o bloco de palavras. Eu tenho meu bloco quebrável, esse será meu material padrão aqui Em seguida, vamos ao meu painel de plantas e criaremos algumas variáveis Mais uma vez, como esse será nosso bloco base, nossos blocos secundários que herdarão desse pai também herdarão essas variáveis Vou clicar aqui mesmo. A primeira variável que vamos adicionar será chamada de interação finalizada Eu gostaria de colocar um ponto de interrogação no final de uma variável de ouro. Isso será um lingote. A segunda que vou criar aqui será chamada de moedas para adicionar, será um número inteiro Na próxima, vou acrescentar que vou clicar com o botão direito do mouse e duplicar serão pontos No próximo, clicar no botão de adição se chamará Interact X. Vou colocar entre parênteses, Niagara Vou mudar o tipo aqui para ser um sistema de Niágara. objeto do sistema Niagara. Lambendo. Outra variável sobre isso será interagir x e, entre parênteses, será partícula Niagara é o sistema de partículas mais novo, mas poderemos escolher entre o sistema de partículas mais novo e o mais antigo apenas para oferecer alguma flexibilidade aqui partículas mais novo e o mais antigo apenas para oferecer alguma flexibilidade apenas para No tipo que vamos escolher o sistema de partículas, é a referência do objeto do sistema de partículas abaixo dos tipos de objetos Em seguida, vamos adicionar o Interact X, que é efeito sonoro. Para este, será uma base sonora, uma referência de objeto baseada em som. Este top aqui, por último, mas não menos importante, vamos clicar nele e ele se chamará Interact Material. Esse tipo vai simplesmente entrar na categoria de tipos de objetos. Referência do objeto. Ok, então vamos compilar isso imediatamente e nos dar alguns valores padrão Clique em Compilar na parte superior. Aqui, terminando de interagir, podemos deixar isso como falso É perfeitamente normal que nossas moedas sejam adicionadas. Essa é a quantidade de moedas que gostaríamos de adicionar. Absolutamente por interagir com esse bloco. Vou tornar essa instância editável para que possamos alterá-la por instância de um bloco Se escolhermos, vou deixar isso como zero agora. Você sabe o que? Vou configurá-lo para um por enquanto. Mas é claro que podemos atualizar isso conforme quisermos , vou selecionar isso. Também vamos tornar essa instância comestível. O que significa que podemos atualizar isso quando um bloco herdado desse pai é colocado em nosso nível Definirei os pontos como dez por padrão. Para os efeitos do Interact V na partícula do Niágara, vou escolher Para a partícula de efeito Interact V, vou usar um pote de sublinhado quebrável Isso vem daquele pacote de efeitos de lâmina infinita que eu adicionei Agora, novamente, você pode escolher o que quiser para eles. É exatamente isso que estou escolhendo. Esse é apenas o padrão para o Interact. Vou fazer do Interact x uma moeda por último, mas não menos importante, para nosso material do Interact. Vou fazer com que esse seja meu bloco usado para que possamos interagir. Este bloco, para alguns deles que não são quebráveis, vamos trocar por esse determinado material Tudo bem, com tudo isso feito, vamos passar para o nosso gráfico de eventos e vamos adicionar um pouco de script. A primeira coisa que vamos fazer aqui é excluir esses dois nós do nosso evento. Comece a jogar. com o botão direito em algum espaço vazio. Vamos digitar get player controller. Em seguida, vamos transmitir isso para o nosso controle de jogador. Transmita para o controlador Player, nosso controlador BP Player Vamos configurar isso clicando com o botão direito do mouse nesse pino, transformando-o em uma variável. Vamos criar uma referência ao nosso controlador Player. E vou encurtar o nome para Player Controller porque queremos que nossos blocos secundários, os blocos que eventualmente herdarão desse bloco básico, tenham uma referência ao nosso controlador de jogador Clique com o botão esquerdo e arraste. Vou chamar isso para o player Controller. Lembre-se de que nosso plano de controle de jogador é o modelo poderoso que estamos usando para fazer coisas como somar moedas Isso será importante no futuro aqui. Tudo bem, a seguir, o que queremos fazer é detectar quando nosso bloco é atingido. Então, basicamente, o que queremos fazer é detectar quando nosso bloco é atingido pela parte inferior aqui, OK, com nosso componente de cubo selecionado Basta clicar com o botão direito do mouse e ir para algum espaço vazio aqui. Clique com o botão direito do mouse no evento para ver o componente ser atingido. Agora, do outro ator, podemos trazer um símbolo igual. E vamos verificar se o outro ator é igual a O. E você já me viu fazer isso antes. Obtenha o personagem do jogador. Se for nosso personagem jogador que atingir esse bloco, faremos algumas coisas. Mas o que precisamos fazer também é detectar que forma atingimos esse cubo Só queremos que algo realmente aconteça quando atingirmos a parte inferior desse bloco Agora, felizmente, quando atingimos esse cubo, podemos extrair algumas informações sobre esse impacto diretamente desse Então, se eu arrastar até aqui, posso digitar break e clicar em Resultado assim. Esse nó nos permitirá extrair algumas informações dele. Clicando nesta seta para baixo aqui, podemos ver todas as informações que ela contém. Em particular, estamos interessados nessa saída normal de impacto que vou retirar dela e digitar o vetor de quebra. Essencialmente, isso nos permitirá detectar em que direção atingimos esse tijolo. Queremos descobrir se a direção z, a direção para cima e para baixo é igual a agora um impacto do valor um na direção z. Basicamente, estamos verificando se atingimos isso por baixo Um negativo seria o lado superior, um positivo fora do impacto normal aqui. Essa superfície plana detectará se a atingirmos pela parte inferior Queremos descobrir se essas duas coisas são verdadeiras. Se foi um personagem do jogador que atingiu esse cubo e se o atingimos pela direção inferior Como queremos descobrir se os dois são verdadeiros, arraste para fora de qualquer um desses pinos vermelhos Digite a palavra e vamos trazer um booleano. Queremos descobrir se isso e isso são verdade. Se ambas forem verdadeiras, vamos conectar isso a um nó de ramificação dessa forma. Se ambas forem verdadeiras, o que queremos fazer é que, fazendo backup aqui dentro da nossa interface de blueprint, queremos chamar essa função hit block É chamado apenas de hit block. Se eu arrastar para fora da ramificação verdadeira aqui, vou digitar hit block e você verá esta mensagem de hit block. Agora, se você clicar aqui, eu trarei este nó que tem esse pequeno ícone de envelope para o alvo aqui Você pode simplesmente arrastar para trás e digitar self porque o alvo será você mesmo. Queremos obter uma referência para nós mesmos, e esse será nosso script de blocos de sucesso Agora, o que vamos fazer aqui também é adicionar essa plataforma BPI, essa interface de projeto a esse plano Para fazer isso, abordaremos as configurações de classe e, na seção à direita, temos uma seção para interfaces implementadas. E é aqui que podemos adicionar nossa plataforma BP I. Agora, isso vai ser importante porque queremos que nossos blocos que herdam dessa base também tenham isso Agora, a mágica dessa configuração se tornará aparente à medida que criarmos alguns blocos secundários a partir dessa base de blocos da BP Em nossos blocos secundários, precisaremos apenas convocar um evento de hit block. E então podemos fazer coisas específicas para esses blocos, evitando assim ter que enxaguar e repetir esta seção do código aqui. Tudo bem, com tudo isso feito, vamos compilar e salvar os caras Isso vai acabar com este. Nos vemos na próxima. 33. Bloqueie quebrável: Bem-vindo. Neste vídeo, nosso objetivo é criar um bloco secundário que herde a funcionalidade básica de nossos pais, nossa base de blocos BP Em seguida, personalizaremos nosso bloco infantil para ser quebrado ao ser atingido. Agora, antes de começarmos com tudo isso, vou criar outra pasta dentro do nosso navegador de conteúdo. Aqui, especificamente para tijolos. E eu vou fazer isso dentro da pasta de plantas, direita, clicando nas plantas aqui Vou criar uma nova pasta e vou simplesmente chamar isso de blocos. E então, imediatamente, vou clicar novamente na minha pasta de plantas e arrastar essa base de blocos para a minha pasta de blocos E se você deixá-lo aqui, você pode movê-lo direto para lá dessa forma. Ok, agora estou neste diretório, minha pasta de blocos, vou criar um filho desse bloco base. E podemos fazer isso clicando com o botão direito classe Create a Child blueprint Isso vai nos levar a dar esse nome. Então eu vou chamar esse bloco BP underscore Breakable. Esse vai ser um bloco quebrável. Tudo bem, vamos clicar duas vezes sobre isso para abri-lo. Muitas coisas se juntarão neste vídeo. Agora, para começar, quero mostrar como as coisas foram herdadas No canto superior direito, podemos ver nossa classe principal é a base de blocos BP No painel de componentes, podemos ver que herdamos esse componente do cubo Se eu entrar nas configurações de aula, posso ver que herdamos nossa plataforma BPI, nossa plataforma de interface de blueprint E aqui, no lado esquerdo o painel do meu projeto Podemos ver dentro da nossa interface de blueprint que temos essa função de bloco de acertos Agora, só para voltar aqui, minha pasta de plantas. Aqui está minha plataforma de BPI na qual temos essa função chamada hit block Também quero ressaltar que herdamos nossas variáveis que configuramos em nosso bloco pai aqui Agora, se você não os vê aqui embaixo, se você clicar neste ícone de engrenagem, você tem essa caixa de seleção para mostrar variáveis herdadas Se estiver desativado, você não verá as variáveis herdadas com ele ativado, você verá Deixe-me expandir a categoria de variáveis mais uma vez. Essas variáveis que configuramos em nossos pais, nosso bloco base. E a razão pela qual queríamos fazer isso é porque temos esses padrões, se você quiser Mas podemos personalizá-los para as crianças. E, em particular, uma das coisas que eu sei que vamos querer ajustar para esse bloco quebrável é nosso efeito sonoro aqui Por padrão, temos esse efeito sonoro do Interact configurado como uma variável e nosso valor aqui atualmente é um efeito sonoro de moeda. Para isso, vou querer mudá-lo para um quebrável, uma quebra de tijolo Então, vamos mudá-lo para o som de quebra de tijolos imediatamente. Ok, agora vamos pular para o nosso gráfico de eventos. E vamos adicionar um script para personalizar o que queremos que aconteça quando interagimos com esse bloco. Então, vou pular para o nosso gráfico de eventos aqui. Agora você pode ver que esse evento começou a ser jogado. E está vinculado ao início da brincadeira dos pais. Agora, vale a pena notar isso aqui, porque se eu for até nossa base de blocos da BP aqui, posso navegar até onde está no navegador de conteúdo, ou posso abrir o principal Vamos abrir o pai. Aqui está o pai, nossa base de blocos da BP Basicamente, estamos garantindo que, ao começar a jogar aqui em nosso breakable, todo esse código também apareça Tudo bem, aqui no nosso bloco BP quebrável, isso é Vamos deixar tudo isso. Vou clicar com o botão esquerdo e arrastar, e vamos deletar isso. Agora, o que eu quero fazer é trazer um evento para nosso hit block, nossa interface aqui. Então, se eu clicar com o botão direito em algum espaço vazio e digitar hit block, posso adicionar um evento para acertar o bloco Agora, esse evento será acionado quando nosso bloco for interagido Agora, lembre-se de que nossa base de blocos BP contém todo o script para quando interagimos Atingimos a parte inferior desse cubo. Encerramos esse script de interação solicitando esse hit block. Agora, quando chegarmos a esse ponto em nosso script, ele fará com que esse evento de bloqueio de acertos aqui em nosso filho seja acionado e, em seguida, faça com que um script personalizado ocorra. Portanto, não precisamos repetir todo esse script aqui que já foi feito para nós no pai. Essa chamada aqui é boa o suficiente para, em seguida, transmitir essa funcionalidade aqui em nosso filho. Ok, o que queremos fazer com isso? Bem, queremos que várias coisas aconteçam quando atingirmos esse bloco. E como queremos que várias coisas aconteçam, vou trazer uma nota de sequência. Agora, a nota de sequência é muito útil para organizar várias coisas que gostaríamos que acontecessem. Gostaríamos que algo acontecesse aqui e depois aqui. E então, na verdade, vamos adicionar um terceiro pino clicando aqui. Então, teremos três coisas distintas acontecendo. Essa é uma maneira muito boa, organizada e ordenada de fazer isso acontecer Está bem? A primeira coisa que eu gostaria de fazer aqui é reproduzir alguns efeitos de interação com blocos. E se você se lembra aqui em nosso navegador de conteúdo, criamos essa biblioteca de funções do BP E aqui dentro, configuramos essa função para reproduzir os efeitos de interação do bloco. Isso vai entrar em jogo agora mesmo, aqui, dentro do nosso bloco BP quebrável Se clicarmos, podemos pesquisar os efeitos de interação do bloco de reprodução e podemos ver que essa função está em nossa biblioteca de funções BP Agora podemos acessar isso aqui dentro deste projeto. Agora, tudo o que precisamos fazer é inserir o tipo de efeitos sonoros e visuais que queremos reproduzir. Isso vai ser bem simples. Vamos apenas inserir esse N zero em nosso bloco de jogo Interact Effects. Vou clicar duas vezes nesse fio para fazer um pequeno redirecionamento Observe que, para fins organizacionais agora podemos inserir nosso efeito sonoro, nosso efeito sonoro Interact, que atualmente é quebrar tijolos, arrastá-lo e soltá-lo diretamente neste pino de efeito sonoro para nosso efeito visual. Novamente, estou lhe dando duas opções aqui. O novo sistema de efeito de partículas do Niágara ou o sistema de efeito de partículas mais antigo Para isso, vou trazer minha partícula mais antiga do Interact VX É esse pote quebrável. Vou simplesmente conectar isso aí. Observe que isso é um ou outro. É assim que isso deve ser configurado. Você pode fazer as duas coisas, mas escolha apenas uma para a localização do VFX O que vou fazer é clicar com o botão direito do mouse e digitar a localização do ator. O alvo aqui é autossuficiente, onde quer que esse bloco quebrável da BP esteja localizado no mundo Agora vou compensar isso um pouco. Eu poderia jogar isso no ponto central desse bloco, mas onde eu quero gerar isso é na verdade um pouco acima do eixo z. Então, vou arrastar para fora daqui e colocar um símbolo de adição. Vou trazer um operador de publicidade aqui. E vou simplesmente adicionar 50 no eixo z, só para gerar isso um pouco acima da localização exata desse bloco, quebrável por tentativa e erro Eu aprendi que isso é muito bom. Ok, eu só vou repassar um pouco esse roteiro aqui em cima Vou mudar esse pai para cá um pouco assim. E esse será nosso primeiro script aqui, jogando esse bloco de interação X. Ok, a próxima coisa que eu quero fazer é gerar nossos pontos de BP Queremos desovar em alguns pontos e também adicionar alguns pontos ao desovar em Configuramos esse ator de pontos B P aqui. Queremos incluir isso no jogo, que exiba a quantidade adequada de pontos Neste ato, pontos de BP, é o que pretendemos gerar aqui em nosso bloco de BP A maneira de fazer isso é evitar isso. Em seguida, com um pino, geraremos o ator da classe. Este é um nodo que queremos trazer. Aqui é onde podemos gerar pontos de sublinhado da classe BP. Agora temos que dar uma transformação de spawn de onde queremos que ela apareça Se clicarmos, podemos dizer get actor transform. transformação consiste em dados de localização, rotação e escala. Nosso objetivo aqui é dizer que esse bloco de BP é quebrável. Estamos obtendo a localização, a escala e a rotação desse bloco em particular. É aí que vamos gerá-lo. Neste nó, temos esses pontos para adicionar entrada A razão pela qual isso existe é porque aqui em nossos pontos de BP que configuramos, criamos essa variável chamada pontos para adicionar Over no painel de detalhes, dissemos expor na geração marcando esta caixa, tornando essa instância comestível tornando essa Exponha no spawn, marcando essas duas caixas. Isso é feito para que, quando estamos tentando gerar esse ator, essa variável seja disponibilizada para nós E podemos personalizá-lo a partir daqui dentro do nosso bloco BP quebrável Então, aqui está o que podemos fazer. Podemos inserir nossos pontos em nossos pontos para somar e podemos determinar quantos pontos queremos que sejam quando separarmos esse bloco Vou deixar isso às dez agora. Ok, próximo. O que também queremos fazer é trazer uma referência ao nosso controlador de jogador. E temos uma referência ao nosso controlador de player porque ela foi herdada aqui em nossa lista de variáveis herdadas Controlador do jogador, vamos arrastar isso para dentro. Vamos pegá-lo e, em seguida, vamos sair disso e digitar pontos de adição. Agora vou abrir nosso controlador de player aqui em pouco tempo. Você só encontrará esses pontos de adição se arrastar para fora da referência do controlador do player. De volta ao nosso controlador BP Player, criamos esse evento personalizado chamado adicionar pontos A razão pela qual pudemos chamar isso de pontos de adição é porque tudo isso existia em nosso controlador de jogador. Quando chamamos isso de quebrável em nosso bloco de BP, dizemos: ei, controlador do jogador dispara aquele evento personalizado adicione pontos para que possamos adicionar quantos pontos quiser Alimentamos isso com nossa quantidade atual de pontos e, em seguida, definimos isso como nossa nova quantidade de pontos. Lembre-se de que essa variável de pontos aqui, dentro do nosso controle de jogador, está vinculada ao nosso hud aqui em nosso ud, nossa variável de pontos em nosso controlador de player está vinculada aqui, então ela refletirá isso aqui em nosso hud Muito fofo. E veja como tudo isso está se encaixando. Obviamente, precisamos nos dizer quantos pontos queremos adicionar pois isso será alimentado por meio desses eventos personalizados. Então, se eu clicar duas vezes Adicionar pontos aqui, nossos pontos a serem adicionados, fluirão por aqui, por aqui e os adicionarão à nossa quantidade atual de pontos existente. É por isso que adicionamos essa entrada, nossos pontos a serem adicionados , para que aqui em nosso bloco quebrável, possamos inserir quantos pontos gostaríamos de adicionar E vamos simplesmente arrastar e soltar nossos pontos em cima disso. Agora eu poderia simplesmente tirar a droga daqui e colocá-la aqui também. Não importa se você tem múltiplos desses coletores de variáveis ou se você os arrasta para fora do mesmo, ele fará a mesma coisa Ok, agora estamos reproduzindo alguns efeitos de interação. Estamos gerando uma exibição de pontos e, na verdade, somando a quantidade de pontos A última coisa que precisamos fazer é simplesmente destruir esse ator. Então, se eu tirar os meus dois, posso digitar destroy actor. E queremos ter certeza de que essa é a última coisa que fazemos. Então, quando atingirmos esse bloco, tocaremos os efeitos, apareceremos em nossa exibição de pontos e, na verdade, somaremos alguns pontos Essa deve ser a última coisa que fazemos, porque se fizéssemos disso a primeira coisa que fizemos, nenhuma dessas outras coisas aconteceria. Ok, aí está nosso script finalizado, então vamos compilá-lo e salvá-lo E parece que nosso roteiro está pronto para ser o próximo. Vamos simplesmente arrastar e soltar um bloco quebrável em nosso nível aqui, algum lugar perto do início dos meus jogadores Apenas para fins de teste, coloquei minhas duas configurações de encaixe D no nível principal aqui, então vamos encontrar nossos blocos Vou apenas arrastar isso para dentro, então vou trazer alguns casos como esse. E vamos entrar e jogar. Agora eu podia ver minha exibição de pontos que, na verdade, estava sendo exibida sem a câmera voltada para a frente. O que posso fazer aqui é acessar meus pontos B P e selecionar meu componente de widget aqui Vou apenas girar isso para que fique voltado para a câmera Atualmente, está sendo exibido assim. Então, tudo que eu preciso fazer aqui é simplesmente girá-lo. Vou apenas pressionar a barra de espaço. Girar. Na verdade, deixe-me definir meus incrementos nas minhas configurações de snap aqui. Vamos girar essa face a câmera. Eu vou guardar isso. E agora, se eu entrar e jogar e interagir com esses blocos, tenho que tomar cuidado com aquela barra de fogo lá. Eu posso destruir esse bloco. Eu vejo os pontos realmente sendo exibidos no canto superior direito. Você pode ver no Hud que, como cada um desses blocos valia dez pontos cada, agora tenho 20 pontos no total Então, tudo parece estar funcionando como design. Tudo bem, pessoal, isso vai fazer tudo por esse. Nos vemos na próxima. 34. Block Coin: Tudo bem, então aqui está o acordo. Como você pode ver nesta filmagem clássica de Mario, Mario está interagindo com vários blocos E com alguns dos blocos com os quais ele está interagindo, como o que está agora, uma moeda está surgindo a Agora, nosso objetivo neste vídeo é criar um modelo de classe de ator de uma moeda de bloco que surgirá de vários blocos quando Mario interagir Ok, para começar aqui, de volta ao nosso editor, vou fazer isso na pasta de blocos do blueprint da plataforma de conteúdo Vou escrever clique em Nova classe Blueprint. Essa será uma aula de atores porque vamos incluir isso no jogo E eu vou chamar isso de moeda de pontuação de bloco de sublinhado da BP pontuação de bloco de sublinhado Não, novamente, isso vai ser diferente da nossa coleta de moedas. Deixe-me pressionar Enter aqui, pois essa será uma que surgirá no mundo e fará a coisa giratória quando interagirmos com vários blocos Vamos clicar duas vezes sobre isso imediatamente. Para abri-lo no painel de componentes, vamos apenas adicionar um componente. Vai ser uma malha estática. Vou chamar essa moeda no painel de detalhes. Tenho várias coisas que eu quero definir. A primeira é uma malha estática. Vou configurar isso para ser um cilindro. Vou escolher esse cilindro aqui mesmo. Eu também vou girá-lo de lado imediatamente, então vou definir a rotação para B. Eu tenho algumas configurações escolhidas com antecedência, menos 70 O y vai ser menos 90, o z vai ser menos 20. Para a escala, vou definir isso como 0,750 0,75 e, em seguida, 0,07, algo muito fino E como eu tinha minhas configurações de bloqueio de escala ativadas, sempre que eu altero um desses parâmetros, ele muda todos eles. Então, se eu desbloqueá-lo, posso configurar tudo isso individualmente. Então isso foi 0,75 no x e 0,75 no y. Eu quero 0,75 no z para deixá-lo bonito e fino na Tudo bem, também o que eu quero fazer é colocar um material aqui. Vou digitar uma moeda. Vou definir isso para o material de moeda mais recente, embora realmente não importe muito qual delas eu escolher na seção de colisão, vou alterar minha predefinição de colisão aqui para que não haja colisão, porque quero garantir que não haja chance de alguém colidir com ela como um inimigo que criamos no futuro vou alterar minha predefinição de colisão aqui para que não haja colisão, porque quero garantir que não haja chance de alguém colidir com ela como um inimigo que como um inimigo que Tudo bem, com tudo isso feito, vamos passar para nosso gráfico de eventos. E vamos criar em algum espaço vazio aqui. Certo, clique em uma linha do tempo. Cronograma. Porque há várias coisas que queremos mudar com o tempo. Então, vou adicionar uma linha do tempo. Vou chamar isso de minha moeda, uma linha do tempo pressionando o controle, girando o mouse para cima para ampliar isso Vou clicar duas vezes nisso para abri-lo em nossa guia de linha do tempo aqui, vou adicionar duas faixas imediatamente. Ao clicar na faixa, vou pressioná-la uma vez. Vamos adicionar uma pista flutuante. E eu vou chamar isso de primeiro movimento. Isso determinará o movimento de nossa moeda ao longo do tempo. Então eu vou adicionar outra faixa aqui, uma pista flutuante. E essa vai ser chamada de rotação porque vamos querer girar nossa moeda ao longo do tempo. Quanto tempo? Bem, vamos definir a duração da nossa linha do aqui em 0,4 segundos. Tudo bem, e agora trabalhando em nossa linha de tempo de movimento, primeiro vou clicar com o botão direito do mouse e movê-la para o meio, aumentar um pouco o zoom usando minha roda de rolagem, vou manter pressionada a tecla shift e vou clicar três vezes 123. Agora, realmente não importa onde eu clico, porque vou definir manualmente um tempo em um valor para cada um deles, ou este último quadro-chave que selecionei aqui, vou definir o tempo para 0,4 e o valor 2200 ou agora você pode ver que ele saltou da tela Isso é bom. Para o próximo, vou definir o tempo 0,25 e o valor como 300 E para esse primeiro quadro-chave, vou definir o tempo zero e o valor como zero. Agora, se eu clicasse nas minhas setas aqui, Zoo Line sairia um pouco Posso destacar todos esses quadros-chave clicando com o botão esquerdo do mouse e arrastando E o que eu quero fazer é com todos eles destacados, eu vou clicar com o botão direito em qualquer um deles. Eles estão todos destacados. Quando estiverem azuis, vou clicar com o botão direito do mouse sobre eles. E vou definir a interpolação de teclas como automática. O que isso vai fazer é suavizar essa linha curva aqui Em vez de ser uma linha reta, uma linha reta, vai torná-la uma linha suave e curvilínea como essa Agora, com tudo isso destacado, vou clicar nas setas mais uma vez. E você pode ver essa curva com um pouco mais de precisão. Agora, essa curva serve para alterar um valor flutuante ao longo tempo para determinar o movimento de nossa moeda Então, basicamente, indo de sua posição inicial para o ar e depois descer um pouco. Ok, em seguida, vamos alterar nossas configurações de rotação porque queremos essa moeda quando ela aparecer Não apenas para subir no ar e depois descer um pouco, mas também para girar. Para isso, precisaremos de apenas dois quadros-chave. Então, vou manter pressionada a tecla shift e clicar com o botão esquerdo na primeira que vou definir para um tempo zero e um valor zero. E então eu vou clicar com o botão direito do mouse em qualquer lugar aqui, vamos adicionar outra chave Essa é outra maneira de adicionar um quadro-chave para esta, vou definir o tempo como 0,4, essencialmente o final da nossa linha do E o valor pressionando a guia saltando para esse campo de valor que vou definir como 720, essencialmente Vou clicar nessas setas aqui para exibir cada um desses quadros-chave Estou bem com uma linha reta aqui. Eu não preciso curvar isso de jeito nenhum. Minha moeda vai subir no ar e depois cair um pouco E então ele também fará duas rotações completas, 720 graus ao longo de 0,4 segundos Tudo bem, agora vamos voltar ao nosso gráfico de eventos aqui, fora da nossa linha do tempo de moedas E você pode ver que agora temos dois pinos de saída para valores flutuantes de nossas faixas flutuantes Portanto, isso produzirá o valor de cada flutuação ao longo do tempo Ele mudará em 0,4 segundos para movimento e rotação. Precisamos recuar um pouco aqui. E vamos começar nosso evento. Jogue na frente deste gráfico. Esse nó deveria ter existido quando você criou esse blueprint pela primeira vez Caso contrário, você pode clicar com o botão direito do mouse e pesquisar o evento Begin. Jogue. O que vamos fazer com Event Begin Play é abordar nossas variáveis no painel My blueprint Entre em componentes e agora você deve encontrar este componente coin anum que está se comunicando com esta linha do tempo coin anum Vamos arrastar isso para fora, soltá-lo e pegá-lo. A razão pela qual vamos divulgar isso é porque vamos parar com isso e digitar a taxa de jogo definida. Atualmente, esse cronograma tem 0,4 segundos de duração. E vou definir as taxas 1,0. Você pode pensar nisso como um campo percentual, 0,5 seria metade de sua taxa de jogo normal. Então, eu vou jogar isso no ritmo normal. Observe, no entanto, que se você quiser alterar a taxa na qual isso é reproduzido, alterar esse número aqui permitiria que você alterasse o ritmo em que ele é reproduzido sem precisar ajustar a própria linha do tempo Agora eu poderia conectar isso ao play ou jogar desde o início. Vou jogar desde o início, porque quero que isso jogue desde o início. Sempre que esse plano específico começar, jogue. Agora, isso vai disparar para começar a jogar sempre que incluirmos isso em nosso jogo Então vá para a direita aqui. Traga uma referência à minha moeda no painel de componentes, porque eu quero ajustar a localização e a rotação dela ao longo do tempo. Clique com o botão esquerdo e arraste. O que vou fazer então é sair disso e digitar set. E eu quero mudar a localização relativa e a rotação disso ao longo do tempo. Quero mudar o relativo em relação à localização dessa moeda ao longo do tempo, à medida que atualizamos nossos valores ao longo do tempo. Aqui, quero atualizar onde nossa moeda mora. Vou me arrastar para trás da nossa nova localização aqui e digitar make vector Como um local consiste em x, y e z. E eu só quero alterar um deles, vou copiar isso. Controle de nó C controle V controle D. Poderia ter simplesmente duplicado isso imediatamente. Desculpe, eu não quero criar vetores para este. Eu quero fazer essa nova rotação. Vou escrever, clique aqui para se conectar à nossa nova rotação. Agora, vamos pegar nossos valores flutuantes e inseri-los em um campo específico Novamente, eu só quero mover minha moeda para cima no eixo Z. À medida que mudamos nosso valor ao longo do tempo, atualizaremos nossa localização z da moeda, a localização para cima e para baixo da moeda. E lembre-se, aqui em nossa linha do tempo, vamos passar da nossa posição inicial até 300 unidades irreais e, em seguida, desceremos no final para 200 unidades irreais para Vou fazer a rotação aqui e queremos girá-la ao longo do eixo z. Isso vai girá-lo como um pião à medida que sobe no ar E novamente aqui em nossa linha do tempo, vamos girar a 720 graus São duas vezes as revoluções em 0,4 segundos. E esse é um bom roteiro para simplesmente mover nossa moeda, mas eu quero adicionar um pouco de jazz aqui. Então, o que vou fazer é arrastar nosso pino de chegada. Quando essa animação terminar de ser reproduzida, vou sair daqui no emissor de spawn no emissor de spawn Sistema de geração no local é o nome do nó que você gostaria usar se quiser usar um sistema de partículas do Niágara Esse é o sistema de partículas mais antigo. O que eu quero fazer é aparecer em um emissor conhecido como underscore lot pick up aqui Este existe no pacote infinity blade EfFx. O que precisaríamos fazer então é arrastar uma referência à nossa moeda, sair daqui e dizer obtenha a localização mundial e insira isso aqui. Então, essencialmente, à medida que atualizamos a localização de nossa moeda, quando terminarmos com essa linha do tempo, ela gerará um efeito de partícula, uma espécie de efeito de partícula na localização mundial atualizada de nossas moedas, só para fazer com que a moeda exploda em uma chama de glória em Tudo bem, com isso, vamos compilar e salvar Isso garantirá que nosso roteiro esteja pronto para ser usado. Agora podemos fazer uso disso daqui para frente em vários de nossos blocos futuros. Caras, isso vai fazer tudo por esse. Nos vemos na próxima. 35. Block Coin: Tudo bem, então aqui está o acordo. Como você pode ver nesta filmagem clássica de Mario, Mario está interagindo com vários blocos E com alguns dos blocos com os quais ele está interagindo, como o que está agora, uma moeda está surgindo a Agora, nosso objetivo neste vídeo é criar um modelo de classe de ator de uma moeda de bloco que surgirá de vários blocos quando Mario interagir Ok, para começar aqui, de volta ao nosso editor, vou fazer isso na pasta de blocos de blueprint da plataforma de conteúdo Vou clicar com o botão direito do mouse na nova classe Blueprint. Essa será uma aula de atores porque vamos incluir isso no jogo Vou chamar isso de moeda de blocos BP Underscore. Agora, novamente, isso vai ser diferente de nossa coleta de moedas. Deixe-me pressionar Enter aqui, pois essa será uma que surgirá no mundo e fará a coisa giratória quando interagirmos com vários blocos Vamos clicar duas vezes sobre isso imediatamente. Para abri-lo no painel de componentes, vamos apenas adicionar um componente. Vai ser uma malha estática. Vou chamar essa moeda no painel de detalhes. Tenho várias coisas que eu quero definir. A primeira é uma malha estática. Vou configurar isso para ser um cilindro. Vou escolher esse cilindro aqui mesmo. Também vou girá-lo de lado imediatamente, então vou definir a rotação para, tenho algumas configurações escolhidas antecedência, menos 70 O y vai ser menos 90, o z vai ser menos 20. Para a balança, vou definir isso como 0,750 0,75 e depois 0,07 , algo muito fino porque eu tinha minhas configurações de bloqueio de balança ativadas Sempre que eu mudo um desses parâmetros, ele muda todos eles. Se eu desbloqueá-lo, posso configurá-los todos individualmente. Então isso foi 0,75 no x e 0,75 no y. Eu quero 0,75 no Z para deixá-lo bonito e fino na Tudo bem, também o que eu quero fazer é colocar um material aqui. Vou digitar uma moeda. Vou definir isso para o material de moeda mais recente, embora realmente não importe muito qual delas eu escolher na seção de colisão, vou alterar minha predefinição de colisão aqui para que não haja colisão, porque quero garantir que não haja chance de alguém colidir com ela como um inimigo que criamos no futuro vou alterar minha predefinição de colisão aqui para que não haja colisão, porque quero garantir que não haja chance de alguém colidir com ela como um inimigo que com ela como um inimigo que Tudo bem, com tudo isso feito, vamos passar para o nosso gráfico de eventos E vamos criar em algum espaço vazio aqui, clique com o botão direito em uma linha do tempo. Linha do tempo porque há várias coisas que queremos mudar com o tempo. Então, vou adicionar uma linha do tempo. Vou chamar isso de minha moeda, uma linha do tempo pressionando o controle do mouse girando para cima para ampliar isso Vou clicar duas vezes sobre isso para abri-lo. Em nossa guia de linha do tempo aqui, vou adicionar duas faixas imediatamente. Clicando na faixa. Vou pressioná-lo uma vez. Vamos adicionar uma pista flutuante. E eu vou chamar isso de primeiro movimento. Isso determinará o movimento de nossa moeda ao longo do tempo. E então eu vou adicionar outra faixa aqui, uma pista flutuante E essa vai ser chamada de rotação porque vamos querer girar nossa moeda ao longo do tempo Quanto tempo? Bem, vamos definir o comprimento da nossa linha do tempo aqui em 0,4 segundos. Tudo bem, e agora trabalhando primeiro em nossa linha do tempo, vamos clicar com o botão direito do mouse e movê-la para o meio. Aumente um pouco o zoom usando minha roda de rolagem. Vou manter pressionada a tecla shift e clicar três vezes 123. Agora, realmente não importa onde eu clico, porque vou definir manualmente uma hora em um valor para cada um desses ou este último quadro-chave que selecionei aqui Vou definir o tempo para 0,4 e o valor para 200. Agora você pode ver que ele saltou da tela aqui. Isso é bom. Para o próximo, vou definir o tempo 0,25 no valor como 300 Para esse primeiro quadro-chave, vou definir o tempo zero e o valor como zero. Agora, se eu clicasse nas minhas setas aqui, o Zoo se alinharia um pouco Posso destacar todos esses quadros-chave clicando com o botão esquerdo do mouse e arrastando O que eu quero fazer é com todos eles destacados, eu vou clicar com o botão direito em qualquer um deles. Eles estão todos destacados. Quando estiverem azuis, vou clicar com o botão direito do mouse sobre eles. E vou definir a interpolação de teclas como automática. O que isso vai fazer é suavizar essa linha curva aqui Em vez de ser uma linha reta, uma linha reta, vai torná-la uma linha suave e curvilínea como essa Agora, com tudo isso destacado, vou clicar nas setas mais uma vez. E você pode ver essa curva com um pouco mais de precisão. Agora, essa curva serve para alterar um valor flutuante ao longo tempo para determinar o movimento de nossa moeda, essencialmente indo de sua posição inicial para o ar E depois recue um pouco. Ok, em seguida, vamos alterar nossas configurações de rotação porque queremos essa moeda quando ela aparecer Não apenas para subir no ar e depois descer um pouco, mas também para girar. Para isso, precisaremos de apenas dois quadros-chave. Vou manter pressionada a tecla shift e clicar com o botão esquerdo. Este primeiro eu vou definir para um tempo de zero e um valor de zero. E então eu vou clicar com o botão direito do mouse em qualquer lugar aqui. Vamos adicionar outra chave. Essa é outra maneira de adicionar um quadro-chave para este. Vou definir o tempo como 0,4, essencialmente o final da nossa linha do E o valor pressionando a guia saltando para esse campo de valor que vou definir como 720, essencialmente Vou clicar nessas setas aqui para exibir cada um desses quadros-chave E eu estou bem com uma linha reta aqui. Eu não preciso curvar isso de jeito nenhum. Minha moeda vai subir no ar e depois cair um pouco E então ele também fará duas rotações completas, 720 graus ao longo de 0,4 segundos Tudo bem, agora vamos voltar ao nosso gráfico de eventos aqui fora da nossa linha do tempo da moeda. E você pode ver que agora temos dois pinos de saída, dois valores flutuantes de nossas faixas flutuantes Portanto, isso produzirá o valor de cada flutuação ao longo do tempo Ele mudará em 0,4 segundos para movimento e rotação. Precisamos recuar um pouco aqui. E vamos começar nosso evento. Jogue na frente deste gráfico. Esse nó deveria ter existido quando você criou esse blueprint pela primeira vez Caso contrário, você pode clicar com o botão direito do mouse e pesquisar o evento Begin Play. O que vamos fazer com o evento Begin Play é abordar nossas variáveis no painel My Blueprint Entre em componentes e agora você deve encontrar este componente de moeda anum que está se referindo a esta linha do tempo, moeda Vamos arrastar isso para fora, soltá-lo e pegá-lo. E a razão pela qual vamos divulgar isso é porque vamos parar com isso e digitar a taxa de jogo definida. Atualmente, esse cronograma tem 0,4 segundos de duração. E vou definir a taxa 1,0. Você pode pensar nisso como um campo percentual, 0,5 seria metade de sua taxa de jogo normal. Então, eu vou jogar isso no ritmo normal. Observe, no entanto, que se você quiser alterar a taxa na qual isso é reproduzido, alterar esse número aqui permitiria que você alterasse o ritmo em que ele é reproduzido sem precisar ajustar a própria linha do tempo Agora eu poderia colocar isso em jogo. Jogue. Vou jogar desde o início, porque quero que jogue desde o início. Sempre que esse plano específico começar , jogue Agora, isso vai disparar. Comece a jogar sempre que incluirmos isso em nosso jogo Então vá para a direita aqui. Traga uma referência à minha moeda no painel de componentes, porque eu quero ajustar a localização e a rotação dela ao longo do tempo. Clique com o botão esquerdo e arraste. O que vou fazer então é sair disso e digitar set. E eu quero mudar a localização relativa e a rotação disso ao longo do tempo. Quero mudar o relativo em relação à localização dessa moeda ao longo do tempo, à medida que atualizamos nossos valores ao longo do tempo. Aqui, quero atualizar onde nossa moeda mora. Vou arrastar para trás da nossa nova localização aqui e digitar vetor porque uma localização consiste em x, y e z. E eu só quero mudar uma delas e vou copiar isso Controle de nó C controle V controle D. Poderia ter simplesmente duplicado isso imediatamente. Desculpe, eu não quero criar vetores para este. Eu quero fazer um rotador para essa nova rotação. Vou escrever o rotador de cliques. Isso vai se conectar à nossa nova rotação. Agora, vamos pegar nossos valores flutuantes e inseri-los em um campo específico Novamente, eu só quero mover minha moeda para cima no eixo z. À medida que mudamos nosso valor ao longo do tempo, atualizaremos nossa localização z da moeda, a localização para cima e para baixo da moeda. E lembre-se, aqui em nossa linha do tempo, vamos passar da nossa posição inicial até 300 unidades irreais e, em seguida, desceremos no final para 200 unidades irreais para Vou fazer a rotação aqui e queremos girá-la ao longo do eixo Z. Isso vai girá-lo como um pião à medida que sobe no ar Novamente, aqui em nossa linha do tempo, vamos girar a 720 graus São duas vezes as revoluções em 0,4 segundos. E esse é um bom roteiro para simplesmente mover nossa moeda, mas eu quero adicionar um pouco de jazz aqui. Então, o que vou fazer é arrastar nosso pino de chegada. Quando essa animação terminar de ser reproduzida, vou sair daqui no emissor de spawn no emissor de spawn Sistema de geração no local é o nome do nó que você gostaria de usar se quiser usar um sistema de partículas do Niágara usar um sistema de partículas do Niágara Esse é o sistema de partículas mais antigo. O que eu quero fazer é aparecer em um emissor conhecido como underscore Pegue aqui mesmo. Este existe no pacote Infinity Blade Ef X. O que precisaríamos fazer então é arrastar uma referência à nossa moeda, sair daqui e dizer get world location. E conecte isso aqui. Essencialmente, à medida que atualizamos a localização de nossa moeda, quando terminarmos com essa linha do tempo, ela gerará um efeito de partícula desse efeito de partícula ruim na localização mundial atualizada de nossas Finalmente, antes de terminarmos este vídeo, precisamos limpar algumas coisas. Quase esqueci que, depois de nosso emissor de spawn estar aqui, precisamos destruir o próprio ator por meio desse Você pode obter um desses clicando com o botão direito do mouse em algum espaço vazio ao digitar e destruir o ator A ideia é que, depois de inserirmos essa moeda do bloco BP no jogo e terminarmos a animação da moeda, precisamos nos livrar dela para destruí-la, caso contrário, ela simplesmente ficará no mundo Por fim, nossa malha de moedas aqui. Esqueci que definimos nossa rotação aqui para ser menos 70 e menos 90 no X e Y, respectivamente. Precisamos defini-los como nossos rotadores iniciais para X e y neste nó rotador make Se não fizermos isso, essa moeda não girará ao longo do eixo como pretendíamos. Então, certifique-se de definir seus x e y para menos 70 e menos 90 para coincidir com nossos caras de rotação inicial de moedas . Isso vai funcionar com esta. Nos vemos na próxima. 36. Bloqueie quebrável falso (moeda dentro): Neste vídeo, vamos criar um bloco quebrável falso Esse é um bloco que parecerá quebrável, como nosso bloco BP, quebrável que já criamos No entanto, quando nosso personagem interage com ele, ele aparecerá em nossa moeda de bloco BP. Nosso jogador ganhará alguns pontos e aumentará seu total de moedas. E esse bloco não vai ser totalmente destruído, vai ficar por aqui. E nosso jogador pode usá-lo como uma plataforma. Tudo bem, vamos começar. Aqui vamos clicar com o botão direito do mouse em nosso bloco BP quebrável E vamos criar uma duplicata disso para ajudar a economizar tempo Vamos chamar esse bloco BP de falso Underscore E então eu vou pressionar enter sobre isso. Vamos clicar duas vezes nele para abri-lo. Agora, como podemos ver, isso herda da nossa base de blocos BP, que é nossa mãe Como também podemos ver, também copiamos todo o código que pertencia ao nosso bloco BP Aqui está nosso bloco quebrável e tudo isso, porque criamos uma duplicata dele, está presente em nosso falso Isso vai nos poupar um pouco de tempo, embora façamos algumas edições aqui Tudo bem, a primeira coisa que vamos fazer é mover esse pequeno roteiro aqui. Vou pegar nosso bloco de interação, FX. Temos que clicar com o botão esquerdo e arrastar isso. Vou tocar na tecla e depois vou colocar zero parênteses Este será o nosso roteiro do tipo play, Whoops, play FX Vou comentar a cor desse preto no painel de detalhes aqui apenas para adicionar um pouco mais de contraste. Isso é apenas para ajudar a manter as coisas um pouco mais organizadas e organizadas Agora, queremos reproduzir esses efeitos de interação de blocos quando atingirmos esse bloco. No entanto, vou estender um pouco nossa funcionalidade aqui. O que queremos fazer, além reproduzir alguns efeitos de interação com blocos, é alterar o material associado aos nossos cubos. Vou arrastar e soltar isso em nosso gráfico. Vou sair daqui e digitar o material definido. Aí está. Material do conjunto. Aumentaremos o zoom mantendo pressionado o controle e rolando para dentro Queremos mudar o material desse bloco quando interagimos com ele para o nosso material do Interact. Lembre-se de que herdamos todas essas variáveis de nosso pai, nossa base de blocos BP. E eles estão expostos aqui, mostram variáveis herdadas Se você não tiver essa caixa de seleção ativada, vou arrastá-la e soltá-la em nossa entrada de material aqui Basicamente, estamos dizendo que quando interagimos com esse bloco, vamos mudar o material associado ao nosso cubo aqui com o nosso bloco Aquele cara, vamos mudar isso para esse material, essa aparência de bloco usado. Não vai mais ter essa aparência de tijolo. Vai ter uma aparência marrom sólida. Ok, então isso vai sair do pino zero do nosso nó de sequência. Em seguida, vou clicar com o botão esquerdo do mouse e arrastar para tocar na tecla. Vou chamar isso de nossos pontos. Na verdade, vou fazer o 01 para mostrar que isso está saindo de uma sequência. Que tal apenas um? Esses serão nossos pontos adicionais. Vamos aparecer nesse widget de pontos e Nós vamos colorir isso de preto também. Agora, o que é ótimo nisso é que podemos modificar quantos pontos damos para esse bloco, atualmente ele está definido como dez, mas vamos fazer isso 100. Podemos alterar isso selecionando nossa variável aqui, ou você pode selecionar a variável real dentro do próprio gráfico. Vou definir isso para 100. Então, outra coisa que eu vou fazer, já que acabei de modificar essa variável de pontos, eu também vou voltar aqui E vamos modificar o efeito sonoro associado à interação com esse bloco Atualmente, está configurado para quebrar tijolos. Quando interagirmos com isso, na verdade estaremos surgindo em uma moeda. Então, vamos mudar isso. Clicando nesse menu suspenso, vou digitar uma moeda para um efeito sonoro. Ok, descendo um pouco mais. Vou adicionar mais alguns pinos aqui. E eu vou deletar esse ator de destruição porque não vamos destruir esse tijolo. Exclua isso. Vamos adicionar mais alguns pinos aqui, 12 clicando nesse botão A próxima coisa que vamos fazer é gerar outro ator, botão direito do mouse em gerar ator da classe O que eu quero gerar aqui é nossa moeda de bloco BP. Moeda em bloco Bp underscore. Vamos conectar isso imediatamente ao nosso, então, para fixar agora, temos que dar a isso uma transformação que é um local em uma rotação que vamos gerar isso Então, se eu clicar com o botão direito em algum espaço vazio, obter a transformação, isso obterá a localização e a rotação do nosso bloco falso onde quer que ele esteja no mundo. Vamos conectar isso dessa forma. Em seguida, vamos arrastar e soltar nossa referência do Player Controller. Vamos tirá-lo daqui e vamos adicionar moedas. Aqui é onde podemos realmente adicionar as moedas ao nosso total. Quantas moedas gostaríamos de adicionar? Bem, temos essa variável aqui. Atualmente, o padrão é um. Na verdade, você poderia fazer isso valer dez moedas se quisesse uma dose valendo dez moedas. Vou deixar como está e simplesmente conectá-lo assim. Agora vou arrastar esse trecho do roteiro. Clique com o botão esquerdo, arraste, pegue. Vou chamar isso de adicionar moedas, um pouco de script colorindo esse preto também. Eu queria destacar uma coisa aqui: lembre-se de que dentro do nosso controle de player foi onde criamos nosso script de moeda publicitária. E isso vai chamar esse evento personalizado. Na verdade, aqui está uma pequena dica para saber que, se clicarmos duas vezes nessas moedas publicitárias aqui, isso abrirá nosso controle de jogador e nos levará até onde está esse evento personalizado. Este é o evento personalizado que estamos chamando de nosso bloco falso, quebrável, e é aqui que a adição das moedas está realmente ocorrendo Agora, observe que estamos inserindo nossas moedas para adicionar. Isso vai alimentar esta chamada e essas moedas a serem adicionadas serão geradas aqui mesmo em nosso evento personalizado. Então, estamos alimentando o número um aqui. E aqui, em nosso evento personalizado, ele o distribui aqui para adicionar ao nosso total de moedas. Então, só queria deixar isso claro. Ok, a próxima coisa que quero fazer é adicionar uma pequena animação ao nosso bloco para que, quando o atingirmos, ele esbarre um pouco no ar e depois caia de volta Porque lembre-se, esse bloco não será destruído. Para facilitar essa animação em bloco, vou trazer uma linha do tempo Então, vamos clicar com o botão direito do mouse em algum espaço vazio. Insira uma linha do tempo, clicando com o botão direito do mouse, procurando por horas. Uma linha do tempo está na parte inferior. E vou chamar esse meu bloco de Anum. Tudo bem, vamos simplificar isso um pouco mais. Vou reduzir nosso nó de sequência um pouco mais. Então, quando finalmente conectarmos isso, agora esse bloco anum, podemos clicar duas vezes nele para criar algumas faixas de anum aqui para criar algumas faixas de anum Clique duas vezes sobre isso. adicionar uma faixa de movimento aqui. Será do tipo flutuador, então vamos clicar neste botão Plus Track Vai ser uma pista flutuante. Vamos chamar esse movimento. Nossa faixa aqui terá três décimos de segundo de duração Então, vou mudar nosso comprimento aqui para 0,3 segundos. Essa animação em bloco será bem rápida. Vou manter pressionado o controle e rolar. Ligue a roda para cima. Em seguida, vou clicar com o botão direito do mouse e deslizar para ver nossa linha do tempo de 0,3 segundo aqui. Agora vou adicionar três pontos, três quadros-chave ao nosso gráfico aqui. Vou clicar com o botão direito do mouse, vou adicionar um quadro-chave. Este primeiro eu vou definir para um tempo de zero e um valor de zero. Essencialmente, dizendo que , no início nosso movimento estará exatamente onde está agora. Vou clicar com o botão direito novamente. Bem por aqui. Vamos adicionar outra chave e vamos dizer que na marca de 1 segundo, nosso valor será 50. Agora ele vai pular do topo aqui, mas se eu clicar nessa seta vertical aqui, ele vai colocá-lo à vista. Estou basicamente dizendo que em um décimo de segundo, pule nosso bloco de 50 unidades irreais Em seguida, vou clicar com o botão direito do mouse novamente aqui embaixo. Vamos adicionar outra chave, e vou dizer que na marca de 0,3 segundo no final de nossa linha do tempo aqui, nosso valor será zero novamente , agora vou destacar esses dois quadros-chave Eu tenho aquele selecionado ali mesmo, mantendo pressionado o controle , clicando com o botão esquerdo, este aqui. Em seguida, você pode clicar com o botão direito do mouse em qualquer um deles. E vou definir a interpolação de teclas aqui para ser automática E o que isso vai fazer é deixar isso cheio de curvas Então, vamos escalar esse bloco em um décimo de segundo, muito rapidamente, de forma linear E então vamos acalmá-lo novamente. Isso vai acontecer rapidamente, mas vai facilitar o processo. Se você clicar com o botão esquerdo do mouse e arrastar para destacar todos esses pontos, todos eles serão selecionados. Você pode clicar nas duas setas para emoldurá-las e ter uma visão um pouco melhor de como será a aparência Ok, agora saindo da nossa linha do tempo e voltando ao gráfico de eventos, podemos ver que nosso pino de movimento agora está E podemos usar isso em nosso script para ajustar a localização do nosso cubo, nosso bloco aqui Então, vou trazer uma referência ao nosso cubo aqui, nosso componente de bloco Vamos sair disso e digitar a localização relativa definida. Vamos mudar a localização do nosso bloco aqui em relação a onde ele existe atualmente. Se arrastarmos para trás do novo local, podemos digitar make vector para expor o x, y e z de uma forma como essa Agora, só queremos mover isso para cima na direção que é para cima e para baixo, não para frente e para trás, para a esquerda e para a direita, para finalizar nosso roteiro. Aqui saímos do nosso pino de sequência. Vamos colocar isso em prática desde o início. À medida que isso for atualizado ao longo dos 0,3 segundos que configuramos em nossa linha do tempo, atualizaremos a localização, a localização relativa do nosso cubo Tudo bem, feito isso, vamos clicar com o botão esquerdo, arrastar e tocar nessa tecla. Isso vai ser chamado de nosso bloco. Hum, nós vamos colorir isso de preto também. Agora podemos realmente compilar isso e salvá-lo. Nossos scripts parecem bons e podemos testá-los em nosso nível, mas haverá um problema, que resolveremos aqui em alguns instantes. Mas só para ver como isso vai ficar, eu tenho minhas duas configurações de D snap no meu nível principal aqui Deixe-me trazer esse cara aqui. Vou trazer alguns deles imediatamente. Então, há um pressionando a tecla Alt, botão esquerdo e arrastando para trazer uma duplicata como essa Vamos lá, vamos entrar e jogar e verificar nosso total de moedas. E nossos pontos, devemos receber os dois. Então, vamos lá. Eu tenho uma moeda, eu tenho 100 pontos. Está tudo bem, você tem que escolher o segundo. Agora tenho duas moedas e 200 pontos. Mas aqui estão alguns problemas. Eu posso simplesmente continuar interagindo com ele. Então, obviamente, isso não é desejado, então é necessário mais script. Tudo bem, então o que temos que fazer para resolver isso? Bem, vamos voltar para nosso bloco falso quebrável Vamos trabalhar um pouco no início disso. E então também vamos incluir algo a partir disso, depois quatro pinos. Então, adicione um pouco de espaço entre nosso bloco de ocorrência de eventos e nosso nó de sequência aqui. Agora, o que queremos é que essa sequência faça essencialmente o que vai fazer na primeira vez que atingirmos esse bloco na segunda vez, nós meio que queremos reproduzir um efeito sonoro de banco, um efeito sonoro de colisão de tijolo Assim, podemos facilitar tudo isso trazendo nosso booleano de interação final que configuramos de volta em nossa base de blocos Novamente, tudo isso é herdado de nossa base de blocos da BP que configuramos há muito tempo Novamente, é assim que mostramos essas variáveis herdadas ali mesmo Nós vamos trazer isso , nós vamos pegá-lo. Por padrão, esse booleano é definido como falso. Vamos sair daqui e trazer um nó de ramificação. Vamos reprogramar isso assim. Vamos clicar com o botão esquerdo e arrastar. E vamos dizer que, se essa condição que começa como falsa for falsa, faremos toda essa interação de blocos como você acabou de me ver fazer. No entanto, se isso for verdade, vamos nos arrastar para fora do galho verdadeiro. Vamos tocar Sound two D. E, em vez disso, o que vamos fazer é tocar um efeito sonoro de colisão tocar um efeito sonoro de colisão Mario brick, bump, meio que um efeito sonoro estranho. Está bem? Então, está tudo muito bem. No entanto, isso levanta a questão: se isso está começando como falso, toda vez que atingimos esse bloco, deveríamos essencialmente sair desse galho e fazer todas essas coisas, certo? Quando isso vai se tornar verdade? Bem, é aí que vamos construir a partir disso. Em seguida, com quatro pinos, vamos manter pressionada a tecla Alt, clicar com o botão esquerdo e arrastar. Ao manter pressionada a tecla Alt, você exibirá imediatamente um setter dessa variável E se retirarmos os quatro pinos, diremos que isso é invertido para verdadeiro depois de interagirmos com ele pela primeira vez Então, podemos colocar isso aqui, então, essencialmente, o que está acontecendo é que a primeira vez que atingimos esse bloco, vamos dizer, ei, terminamos de interagir com Não, é falso. Então, vamos fazer todas essas coisas. Vamos tocar esses efeitos. Vamos adicionar esses pontos. Vamos adicionar essas moedas. Vamos reproduzir aquela animação em bloco. Ah, sim, e a propósito, vamos mudar essa variável agora para verdadeira para , na segunda vez que atingirmos esse bloco, seja avaliada como verdadeira. E, em vez disso, vamos simplesmente sair desse galho onde apenas tocamos aquele som. Vamos compilar isso, salvar e experimentar. Agora eu estou interagindo com esse bloco uma vez, ganhamos 100 pontos, pegamos uma moeda e eu interajo com ela novamente. O quarteirão não sobe aqui. Aquele efeito sonoro estranho. Salte sobre isso. Ainda é interativo em termos de que eu posso superá-lo Tudo está funcionando agora conforme o esperado. Tudo bem Emprego. Bem feito. Agora, só para enquadrar tudo isso, caso você queira pausar o vídeo e fazer uma captura de tela ou o trabalho que fizemos aqui Essa é a parte superior do nosso roteiro. Apenas seguindo em frente, essa é a parte inferior do script. A parte intermediária do roteiro, se você quiser, e depois voltando até o final. Tudo bem, pessoal, fizemos um bom trabalho aqui e, na verdade, isso está nos preparando muito bem para o próximo tijolo que vamos fazer, pessoal, que funcionará para este. Nos vemos na próxima. 37. Bloquear? (moeda dentro): Bem-vindo. Neste vídeo, nosso objetivo é criar um bloco de perguntas que quando nosso personagem interage com ele, produza uma moeda Agora, a boa notícia aqui é que esse será o vídeo mais curto de todos os tempos, porque basicamente criaremos uma cópia do nosso bloco quebrável falso e apenas alteraremos Então vá em frente e clique com o botão direito no seu bloco, falso quebrável. Vamos duplicar isso Vamos renomear esse bloco BP Q, sublinhando Então. Vamos clicar duas vezes sobre isso para abri-lo. Literalmente, manteremos todo esse script da mesma forma. A única coisa que vamos mudar está aqui. Vou selecionar nossa guia Viewport e, em seguida, selecionar nosso Cubo Vamos mudar o material associado isso para que fique bloqueado. Primeira pergunta, Matt. Podemos dizer isso imediatamente. Agora, se quiséssemos, você poderia mudar quantas moedas isso vale. Vou deixar isso de uma vez. A única razão pela qual estamos criando esse bloco é porque ele é fácil e oferece um pouco mais de variedade visual no nível. Em muitos jogos de Mario, existem blocos de perguntas que rendem uma única moeda, é por isso que vamos adicioná-la. Vamos tentar, entrando e jogando. Como você pode ver, podemos interagir com ele, mudar o material, obtemos 100 pontos. Nós ganhamos uma moeda, pronta , pessoal, isso vai fazer tudo por esta. Nos vemos na próxima. 38. Bloqueie moeda invisível: Bem-vindos de volta a todos. Neste vídeo, vamos criar um bloco que começará invisível. No entanto, se nosso personagem jogador encontrar e interagir com ele, ou seja, acertá-lo pela parte inferior, ele o tornará visível e receberá uma moeda A boa notícia aqui é que podemos duplicar muito do que criamos aqui para nos dar uma vantagem inicial Nossa moeda BP bloco Q aqui. Clique com o botão direito nesse cara. Vamos duplicar isso. E vou chamar esse bloco BP de moeda de sublinhado invisível. Vamos clicar duas vezes nele para abri-lo imediatamente. Muito desse código vai ser bom. Na verdade, tudo isso vai ser bom. Vamos adicionar um pouco a isso. Mas eu quero começar em nossa janela de exibição. Agora, isso começará invisível para o jogador. No entanto, o designer poderá ver isso ao trabalhar no editor de níveis. Na verdade, deixe-me arrastar e soltar isso em nosso nível agora. Agora, o problema aqui é que, se você for o designer, esse bloco será idêntico ao nosso bloco de moedas Q. Então, tudo o que eu quero fazer aqui é adicionar um visual diferente a esse bloco, apenas para destacar para o designer que isso é invisível, alguma indicação. Agora, antes de gravar este vídeo, entrei na minha pasta Texturas Cliquei com o botão direito no nosso bloco, pergunta dois, e criei um material a partir dele Depois de criar esse material, eu simplesmente o arrastei e soltei E eu o movi para nossa pasta de materiais. E você pode ver que aqui, vou aplicar isso ao nosso cubo aqui neste bloco de BP, invisível para que tenhamos alguma diferença visível Tudo bem, selecionando nosso cubo no painel de detalhes em Materiais, mudaremos para a pergunta do bloco dois apenas para fazer com que pareça um pouco diferente Ótimo, agora com nosso componente de cubo selecionado, vamos adicionar mais um componente aqui Vamos adicionar uma caixa de busca de caixa. Estou procurando uma colisão de caixa, adicione este componente, pressione Enter para manter o nome da caixa Com isso selecionado no painel de detalhes, quero ter uma caixa extensa. Vai ser 100 por 50 por 100. Então, vamos criar essa caixa invisível ao redor dela. E eu quero configurá-lo na direção z. Vou definir isso como 51. E a razão pela qual estou configurando isso é porque quero fazer com que mal atravesse a parte inferior do bloco A parte inferior do bloco está realmente exposta. A ideia aqui é que nosso jogador seja capaz de bater e colidir com a parte inferior No entanto, se eles pularem de um ângulo superior ou pularem assim, eles colidirão com essa caixa e desativarão a colisão dela Sendo assim, é possível não interagir com ele. Esta caixa poderá ser usada por nós, o designer, para desligar e ativar a colisão desse bloco Ok, para isso, vamos pular para o nosso gráfico de eventos. Agora, com nossos componentes de caixa selecionamos a caixa, a caixa invisível. Vamos clicar com o botão direito sobre isso. Vamos adicionar um evento para quando começarmos a sobrepô-lo Vamos reduzir isso um pouco mais. Em seguida, clicaremos com o botão direito do mouse na caixa novamente e queremos adicionar um evento para quando terminarmos de sobrepor Agora, verifique se você está falando com o componente da caixa. Está escrito entre parênteses aqui. Caixa de caixa, não o cubo. Queremos nos sobrepor e acabar sobrepondo a caixa. Vamos clicar com o botão direito do mouse em algum espaço vazio aqui e digitar o personagem do jogador. Em seguida, vou clicar com o botão direito do mouse em algum espaço vazio e digitar o sinal de igual. E eu vou trazer alguns nós iguais de controle D para duplicar isso E eu vou colocar isso como qualquer outro ator para conseguir o personagem do jogador. Outro ator para obter o personagem do jogador. Em seguida, vou inserir alguns nós de ramificação mantendo pressionada a tecla B e clicando com o botão esquerdo em mantendo pressionada a tecla B e clicando com o botão esquerdo 1.2 Tudo bem, nosso código será assim : se for nosso personagem de jogador, se nosso personagem de jogador for o outro ator que se sobrepõe à caixa, queremos falar com nosso cubo aqui, o bloco real com o qual queremos conversar e arraste-o para nosso gráfico de eventos Queremos definir apenas a colisão ativada. Queremos desativar a colisão deixando esse novo tipo sem colisão A ideia aqui é que, se fosse o personagem do jogador o outro ator se sobreponha à caixa Se isso for verdade, vamos dizer ao nosso cubo que desative a colisão O que significa que nosso personagem vai passar direto por ele com esse nó selecionado. Faça o controle D para duplicá-lo. Por outro lado, diremos, certifique-se de inserir seu cubo aqui embaixo, que se fosse nosso personagem de jogador, se você usar o outro ator que acabou sobrepondo aquela caixa, se isso for verdade, contaremos ao Essencialmente, para reativar sua colisão. Colisão ativada ali mesmo. Consulta em física ativada por colisão. Vamos clicar com o botão esquerdo e arrastar ao redor dessa tecla C e eu vou carregar isso, nosso script de colisão de blocos de alternância E vou colorir esse preto imediatamente no painel de detalhes, selecionando essa barra de cores. Tudo bem, vamos compilar e salvar isso imediatamente. E mais uma vez aqui em nosso editor de níveis, vemos esse bloco. Meu personagem vai aparecer à direita à esquerda dele, por assim dizer Vamos jogar isso. Se pudermos vê-lo agora, se eu bater na parte de baixo, posso colidir com No entanto, se eu jogasse isso de novo e desta vez passasse pela parte superior, cortaria direto pela parte inferior , poderia colidir na parte inferior, colidir na parte inferior, mas eu passaria por ela ou passaria por ela se me aproximasse por um lado ou por cima dessa forma Ok, então algumas coisas para corrigir aqui. Vamos voltar ao nosso bloco BP. Moeda invisível, vou descobrir que nosso evento começa a jogar, que existirá aqui em cima. Lembre-se de que esse bloco, em última análise, herda de nossa base de blocos Então é por isso que esse trecho de script aqui existe. Vamos construir a partir disso trazendo nosso cubo dessa forma Vamos sair disso e digitar a visibilidade definida. Podemos estender esse script aqui. Estamos dizendo hey cube. Ao começar a jogar, você não estará visível. Então, se eu fosse compilar e dizer isso, agora, se eu fosse entrar no meu nível, podemos vê-lo aqui no editor de níveis Mas quando começo a jogar, não consigo ver esse cubo Ok, eu posso interagir com ele ainda, mas não podemos vê-lo desde o início. Um pouco mais de trabalho a fazer aqui. Vamos voltar ao nosso roteiro aqui. Vamos rolar para trás. Vamos adicionar outro pino ao nosso nó de sequência aqui fora do bloco de ocorrência de eventos. Vamos adicionar mais um pino. E eu vou usar esse acabamento interação que estava fora dos então quatro pinos Vou apenas mover isso para os cinco pinos da época. Mantendo pressionado o controle, clique com o botão esquerdo e arraste. Eu posso mover esse fio para baixo até cinco. Deixe-me mover meu nó de sequência um pouco para cá , porque vou adicionar script aqui embaixo. Agora, aqui embaixo, vou trazer uma referência ao meu cubo. Mais uma vez, arraste e solte isso aqui. Vamos arrastar isso e digitar somente a visibilidade definida. Desta vez, vamos marcar essa caixa. Vamos conectar isso a partir dos então quatro pinos, assim. Nossa ideia é que, quando atingirmos o bloco, diremos ao nosso cubo que fique visível, poderemos vê-lo novamente. Outra coisa que também gostaríamos de fazer aqui é quando atingimos esse bloco, e agora é no jogo que o jogador o vê. Vamos dizer ao nosso colisor de caixas aqui, arraste e solte esse gráfico interno Vamos dizer que, para ser destruído, digite o componente destruidor porque, depois de revelarmos esse bloco oculto, não queremos mais poder passar por ele. Vamos clicar com o botão esquerdo e arrastar esse toque na chave do assento, vou chamar isso de nossa visibilidade de quatro pinos para ativar como. Então, vamos virar esse bloco para criar um pouco mais de contraste. Então esse será o nosso roteiro ali mesmo. Vou mover nosso nó de sequência aproximadamente de volta à posição. Vamos compilar e dizer isso. E volte ao nosso editor de níveis aqui. Vou mover esse bloco logo acima da cabeça do nosso personagem para que saibamos onde ele vai ficar. Vou clicar em play. Agora, se eu fosse pular, você pode ver que o bloco foi revelado e agora eu posso colidir com ele, como de costume Tudo bem se eu tentar bater na parte de baixo novamente, sem mais moedas, tudo bem. Agora vamos tentar abordar isso de lado. Então, vou selecionar isso, vou tentar abordar isso de um ângulo lateral, em algum lugar por aqui. Você pode ver que simplesmente passamos por ela como se nada estivesse lá. No entanto, se eu bater nele pela parte inferior, seremos capazes de interagir com ele. Aí está, pessoal. um bloco de moedas invisível que morrerá por causa deste. Nos vemos na próxima. 39. Caixa de moedas de bloco: Neste vídeo, vamos criar uma caixa de moedas. E se você não tiver certeza do que é isso, será um bloco que parece um bloco quebrável normal, mas aí está, ele vai ter moedas dentro E, eventualmente, ele expirará e se transformará em um bloco sólido, sem mais nem menos. É isso que estamos procurando. Para começar aqui, vamos entrar em nossa pasta de blocos de plantas Vou clicar com o botão direito do mouse em nossa moeda de bloco BP. Vamos duplicar isso imediatamente. E vou chamar esse ativo de caixa de moedas em bloco BP. E então, com isso destacado, podemos simplesmente pressionar a barra de espaço ou clicar duas vezes nela para abri-la com ela destacada. Gosto de usar a barra de espaço para abri-la imediatamente. O que vou fazer é trocar o material associado ao nosso cubo Se eu selecionar nossa janela de visualização, nosso cubo, quero que pareça um bloco quebrável no painel de detalhes Vou abordar os materiais e vou alterá-los para bloquear o sublinhado do material quebrável ali mesmo E então eu também vou adicionar algumas variáveis no meu painel de plantas A primeira variável que vamos criar será chamada de quantidade do cronômetro Isso determinará quanto tempo teremos para coletar máximo de moedas possível antes que elas se transformem em um bloco sólido. Vou mudar o tipo aqui para um flutuador. E também vou clicar nesse pequeno ícone de globo ocular aqui para tornar essa instância editável Portanto, observe que quando clicamos nesse globo ocular, ele também marca essa caixa Então, essas são as mesmas: marcar esta caixa ativa esse globo ocular Clicar neste globo ocular marca essa caixa. Em seguida, vou criar outra variável. Este será chamado se o cronômetro expirou. interrogação. Essa será uma variável booleana Vamos compilar isso imediatamente para que possamos definir alguns valores padrão. O Tim er expirou. Vou deixar isso como falso por tempo ou quantidade. Vou definir isso para um valor de 5,0 para começar. Em seguida, vamos passar para o gráfico de eventos. E vamos modificar nosso script aqui um pouco. O que eu quero fazer é, para começar, sob essa seção zero do roteiro, cortar esse fio aqui mesmo onde estamos colocando o material Vou manter pressionada a tecla Alt e clicar com o botão esquerdo. E eu vou mover isso para o início do nosso roteiro. Vamos adicionar um script na frente aqui. Se você quiser criar algum espaço entre esse nó de sequência e nosso evento, clique em bloquear. Vou colocar isso em algum lugar aqui embaixo para falar sobre isso daqui a pouco. Então, o que vou fazer é soltar nossa e terminar de interagir aqui embaixo Então, vou manter pressionada a tecla Alt e clicar com o botão esquerdo. Solte isso Então eu vou desligar todos esses fios um pouco porque quero um script novo que não seja zero. Então, vou manter o controle pressionado e vou colocar esse de lado, nossos pontos de adição. Na verdade, vou cortar esse fio pressionando a tecla Alt e clicando com o botão esquerdo do mouse aqui Bem, na verdade, eu não vou mudar a posição de tudo isso. Eu deveria ter mudado isso para baixo. Vou apenas manter pressionada a tecla de controle. Vou descer ou adicionar moedas. Vou conectar isso assim, embora isso produza efeitos, vou desligá-lo. Mantendo pressionado o controle clicando com o botão esquerdo. Nós vamos reduzir isso também. Agora eu sei que todos os meus números aqui estão um pouco errados. Eu posso ajustá-los no devido tempo. Talvez eu faça isso no final do vídeo. Mas vou reduzir tudo isso por enquanto , porque quero construir a partir do pino zero. Queremos essencialmente definir um cronômetro do nosso pino zero, porque só queremos ter permissão para interagir com esse bloco por um determinado período de tempo Então, o que vamos fazer aqui é inserir um nó único, manter pressionada a tecla e clicar com o botão esquerdo, que levará você a um nó único. E então o que eu quero fazer isso é arrastar e digitar cronômetro definido por evento, aquele cara aqui E vou adicionar um nó de evento personalizado. Então clique com o botão direito do mouse no evento, vou chamar esse cronômetro expirado Então, o que eu quero fazer é conectar isso aos nossos eventos personalizados. Podemos retroceder em nosso horário definido ou, por evento, conectá-lo aqui Nosso tempo será determinado por esse tempo ou quantidade. Eu posso arrastar e soltar isso aqui. Então, se nosso cronômetro expirar, o que eu quero fazer é definir se nosso cronômetro expirou Podemos arrastar isso para dentro e dizer configure. Eu quero verificar se isso é verdade. Essencialmente, o que vai acontecer é que, na primeira vez que interagirmos com esse bloco, vamos passar por aqui uma vez. Vamos definir um cronômetro. Após esse período de tempo, 5 segundos ou o que quer que tenhamos definido expiraram Isso iniciará esse evento para clientes. E isso vai transformar nosso ouro expirado no cronômetro Hes Vamos clicar com o botão esquerdo e arrastar o toque na tecla C. Este será nosso novo script de zero pinos, defina o tempo de interação do bloco. E eu vou colorir isso de preto também. E agora, por uma questão de tempo, não vou ajustar todos esses números aqui. Isso é opcional apenas para ajudar a indicar que está saindo de um ou dois pinos, etc No entanto, vou rolar para baixo e encontrar meu setter de interação finalizado aqui embaixo. Também vou mover isso para o início do nosso roteiro, porque vamos mudar nosso foco para a parte inicial desse roteiro. Como você se lembra, o que estamos fazendo no início é atingir esse bloco, tentando descobrir se terminamos de interagir, que esse ouro aqui embaixo transforma Por padrão, isso é falso. Então, nós apenas interagimos com nosso bloco. Queremos construir a partir desse falso galho. Então eu vou quebrar esse fio segurando as teclas alt e esquerda. E vou trazer nosso lingote expirado com cronômetro. Então, vou manter pressionado o controle e clicar com o botão esquerdo. E se mantivermos pressionado o controle clicarmos com o botão esquerdo e arrastá-lo para dentro, isso exibirá um setter Em seguida, vou tirar isso e trazer um nó de ramificação. Vamos trabalhar assim. Por padrão, isso será falso. Então, na primeira vez que atingirmos esse bloco, vamos dizer, ei, ainda não terminamos de interagir Vamos descobrir se o cronômetro expirou. Fora isso, vamos fazer uma vez manter pressionada a tecla e clicar com o botão esquerdo. Vamos fazer algo uma vez se for verdade, se for falso que o cronômetro não tenha expirado, vou conectar isso totalmente ao nosso nó de sequência e vou trazer alguns nós de redirecionamento redirecionamento Clicando duas vezes nesse fio. Vamos trazer alguns nós de redirecionamento. Agora, se for verdade, depois de atingirmos esse bloco pela primeira vez e esse cronômetro expirar, transformando esse ouro Se isso for verdade, queremos que algo aconteça uma vez. Bem, o que queremos que aconteça? Bem, na verdade, queremos que algumas coisas aconteçam aqui. Vou trazer o nó da sequência, manter pressionada a tecla S e clicar com o botão esquerdo. A primeira coisa que vamos fazer é colocar nosso material aqui. Queremos configurar nosso material para parecer que foi usado agora. Nosso cubo aqui é para o qual estamos configurando o material. O material do Interact que queremos configurar para esse bloco usado, como nós temos. Essa é a primeira coisa que vamos fazer. E então também vamos configurar isso para terminar de interagir logo depois disso. Depois de alterarmos esse material, diremos, ei, terminamos de interagir aqui, terminamos de interagir aqui, terminamos Então vá em frente e altere essa variável agora para verdadeira. Na próxima vez que nosso personagem tentar interagir com ele, ele simplesmente jogará aquele banco de tijolos. Som. Ok. A primeira coisa que queremos fazer, a segunda coisa que queremos fazer é simplesmente continuar em nossa sequência. Na verdade, isso não acontece apenas no interesse da organização aqui. Vou pegar nosso então pino zero e conectá-lo aqui. Isso eu posso conectar aqui assim. E vamos tentar arrumar isso para que nosso roteiro revisado pareça, então , na primeira vez que chegarmos ao nosso obstáculo, descobriremos se terminamos Por padrão, isso será falso. Então vamos até nossa filial e descobriremos, ei, o cronômetro expirou Por padrão, será falso, que significa que vamos interagir com isso na primeira vez. Em nossa primeira interação, uma vez definiremos esse cronômetro. Então o relógio está correndo, neste caso 5 segundos. Vamos fazer então todas essas coisas imediatamente após o cronômetro ser configurado Então, todas essas coisas virão imediatamente. Depois de 5 segundos, isso se torna verdade. Portanto, se tentarmos atingir o bloco após o tempo expirar, se for verdade, definiremos nosso material para ser esse bloco usado, basicamente permitiremos mais uma colisão, mais uma interação e, em seguida, inverteremos isso como verdadeiro, fazendo com que, da próxima vez que tentarmos atingi-lo, toquemos aquele som Vamos continuar e compilar isso. Vamos arrastar isso para o nosso nível e ver se funciona. E então eu vou enquadrar esse pequeno roteiro na câmera para todos vocês, para que vocês possam revisar se precisarem Aqui vai estar nossa caixa de moedas. Agora você notará, deixe-me trazer dois desses. Vou até Alt e arrasto em um segundo. Então, ambas são caixas de moedas no painel de detalhes. Posso personalizar por quanto tempo essa caixa de moedas permanecerá ativa. Então eu vou definir este segundo, este da extrema esquerda aqui para 10 segundos. E eu direi que cada vez que eu interagir com ela, ela adicionará cinco moedas em vez de uma e, em vez de 100 pontos para cada moeda, vou defini-la como 500. Portanto, esta primeira caixa de moedas, parâmetros padrão bastante normais. O segundo vai ser um pouco mais extremo. Vamos dar uma chance a isso. Tudo bem, nossa caixa de moedas normal vai ficar viva por 5 segundos aqui, 12. Você pode ver que está incrementando uma moeda por vez, 100 pontos por vez Depois de 5 segundos, não consigo mais interagir com ele. Este vai ficar vivo por 10 segundos. Aqui vamos nós. Cada um de nós vale 500 pontos e, como você pode ver, está adicionando cinco moedas por vez. Após 10 segundos, isso expirará. Aí está. Temos uma caixa de moedas altamente personalizável Vamos colocar isso na tela mais uma vez, para que você possa pausar o vídeo aqui se precisar Essa é a parte inicial do script. Então, saindo do nosso nó de sequência aqui, temos nosso novo pino zero. Verifique se você marcou essa caixa aqui. Valor do tempo definido como algum valor padrão e tudo isso será o resto como era antes. Tudo bem, pessoal, isso vai fazer tudo por este. Nos vemos na próxima. 40. Bloqueie a flor de fogo #1: Ao longo dos próximos vídeos aqui, trabalharemos para dar poder floral ao nosso personagem. Mas precisamos começar criando um bloco que, quando interagido, na verdade gera uma flor de fogo Então é nisso que vamos nos concentrar ao longo dos próximos dois vídeos. E então vamos nos concentrar em dar aos nossos jogadores algumas bolas de fogo para atirar primeiro, bloquear, depois a habilidade de realmente atirar bolas de fogo Vamos direto ao assunto aqui em nosso navegador de conteúdo. Vamos usar um atalho mais uma vez criando uma duplicata da nossa moeda Q do bloco B. Você pode clicar com o botão direito do mouse para duplicá-lo ou Control plus D também o duplicará Qualquer um dos métodos funcionará bem. Vou chamar isso de BP Block Fire Flower. Então, como de costume, vamos clicar duas vezes nele para abri-lo. Vamos começar adicionando alguns componentes aqui. Deixe-me ir para minha guia Viewport. E eu quero ter certeza de que esses componentes estão conectados ao nosso cubo aqui, nosso bloco Vamos selecionar nosso cubo aqui primeiro. O primeiro que vou adicionar será um colisor de caixas E isso vai ser encontrado aqui, uma colisão de caixa. Então vá em frente e selecione isso. Vou chamar essa caixa de Underscore Flower. E então, com isso selecionado, vamos definir a extensão da caixa imediatamente para que eu tenha um valor em mente. Vai ser 40 por 40 por 40. Vou pressionar Enter lá. Também vou fazer a espessura da linha. Vou definir isso para cinco, só para tornar isso um pouco mais proeminente e fácil de ver. Agora não vemos nada ainda porque isso está enterrado dentro do nosso cubo Mas a ideia aqui é que, quando atingirmos a parte inferior desse cubo, ele realmente se moverá para cima desse jeito Agora anexado a esse componente, quero adicionar uma malha estática. Portanto, certifique-se de ter sua caixa de farinha selecionada aqui. Vamos adicionar um componente de malha estática. Este, podemos simplesmente chamar-me de farinha de sublinhado. E com isso selecionado, nossa malha estática será um plano. Vamos simplesmente usar dois cartões D. Vamos escolher esse plano aqui embaixo para o material que realmente precisamos para criar esse material aqui em nosso navegador de conteúdo. Vamos voltar para nossa pasta Texturas. Eu tenho um aqui para os nossos quatro, aí está, sublinhe Fire Flour Se clicarmos com o botão direito do mouse sobre isso, podemos convertê-lo em um material. Vamos deixar esse nome. Então, vou pressionar Enter. E então eu vou mover isso para a minha pasta de materiais, arrastando e soltando Vamos dizer, mova-o para cá. Em seguida, vamos entrar em nossa pasta de materiais. Vou clicar duas vezes nele imediatamente para abri-lo, porque há algumas modificações que eu quero fazer aqui. Quero mudar o modo de mesclagem de opaco para translúcido O que isso vai fazer é tornar esse pino de opacidade disponível para nós E vamos querer pegar esse valor e conectá-lo à opacidade E ao fazer isso, deixe-me colocar isso em uma esfera. Vou colocá-lo, digamos, em uma caixa como essa. Agora podemos ver como isso realmente vai aparecer para o jogador no jogo. Só vamos projetar isso em um avião, então vai ficar assim. Isso vai ser muito bom. O que podemos fazer aqui também. Vou selecionar nosso nó de material mestre. Também podemos marcar a caixa de seleção nos dois lados. Não devemos precisar disso porque isso só vai estar voltado para um lado. Mas isso fará com que seja fácil para nós ver isso, não importa para que lado o jogador esteja voltado para o jogador. Vamos em frente e economizemos aqui. Então, podemos ir em frente e fechar isso novamente. E então vamos voltar ao nosso bloco BP. Flor de fogo com nossa flor de malha selecionada. Vamos colocar isso em um avião. Vamos aos nossos materiais e se eu digitar farinha de fogo assim, aí está nossa flor de fogo. Agora também quero ter certeza de que esta carta que vai aparecer daqui está voltada para o nosso jogador Agora, só para mostrar do que estou falando, vou selecionar minha caixa de farinha. Quando atingirmos o lado inferior, mais uma vez isso vai subir assim. Mas observe que nossa malha não está voltada para o jogador com a selecionada. Vou passar para a configuração de rotação. E vou definir minha rotação x para 90 para que fique voltada para o jogador Você pode ver como isso vai funcionar quando interagirmos com esse bloco que simplesmente se levantará assim. E vamos usar essa caixa para realmente detectar quando nosso personagem está se sobrepondo a ela para que possamos coletar a farinha Agora, mais uma coisa que preciso fazer aqui com nossa farinha de malha. Volte e selecione isso. Temos essa rotação definida para 90. Nós configuramos o material. Há mais uma coisa que precisamos fazer. Precisamos definir a predefinição de colisão aqui para que não haja Não queremos que nada colida com isso, sem colisão. Mais uma vez, vamos simplesmente usar esta caixa de farinha para verificar se estamos sobrepondo essa farinha, coletando-a assim Tudo bem, com tudo isso feito, vamos ver nosso gráfico de eventos e modificar nosso script aqui um pouco. Algumas delas vamos conseguir guardar, algumas das quais vamos nos livrar agora, não vamos adicionar nenhuma moeda aqui. Então, podemos simplesmente nos livrar desse pequeno script. Clique com o botão esquerdo e arraste, e podemos excluí-lo , adicionando alguns pontos. Nós vamos fazer isso um pouco mais tarde, não nesta parte do roteiro. Então, vou cortar esse fio segurando a tecla Alt e clicando com o botão esquerdo E eu vou arrastar isso para o lado por enquanto para o nosso play X. A única coisa que eu quero mudar sobre isso é o nosso efeito sonoro Interact Atualmente está configurado como moeda, vou definir isso como item e depois vou descer e ver quais modificações podemos fazer com nosso bloco anum Ok, para começar aqui, tudo vai ficar bem exceto que eu quero adicionar um pouco de script Depois de terminarmos essa animação em bloco, quero adicionar um pouco de efeito de partícula brilhante Então, o que vou fazer é trazer uma referência à nossa flor de malha, arrastá-la e soltá-la. Vamos adiar isso e dizer: obtenha localização mundial dessa forma. E vamos conectar isso a um emissor de spawn no local Emissor de geração no local. Novamente, isso usará o sistema de partículas mais antigo sistema de desova no local seria usar um efeito de partícula de Niágara Agora, a razão pela qual vou escolher isso é porque tenho um efeito de partícula específico em mente E se eu clicar aqui, isso virá do nosso pacote de lâminas infinitas Isso vai sublinhar Dead Man's, Dead Man's Lute Vou jogar isso depois de terminarmos aqui, assim. E então o que eu também vou fazer é promover isso para uma variável, então isso vai gerar esse emissor Vou clicar com o botão direito do mouse nesse valor de retorno. E vamos promover isso para uma variável porque, mais tarde, vamos querer destruí-la assim que coletarmos a flor de fogo. Então, depois de clicar, clicar com o botão direito do mouse promove uma variável, eu posso dar um nome a isso Vou chamar isso de meu brilho de power up. Parece um bom nome. E mais uma vez, vamos usar isso para destruí-lo mais tarde. Agora, tudo isso será para nossa animação em bloco, nosso bloco se movendo no ar. Vou apenas manter pressionado o botão esquerdo do mouse. E eu vou mover isso até o nosso então único pino. Na verdade, vou rotular isso novamente como tal. Agora preciso trabalhar em nossa animação de flores. Então esse é o tipo de bloco que está sendo jogado no ar Mas e a flor que realmente brota do quarteirão No momento, está enterrado dentro do bloco. Precisamos de algo para tirar isso daqui. próxima parte do nosso gráfico de eventos será construída abaixo do nosso bloco. Animação como. Então, vou clicar com o botão direito do mouse em algum espaço vazio e inserir uma linha do tempo. Vamos adicionar uma linha do tempo. Vou chamar isso de meu fluxo de ar. E flor anum. Deixe-me ampliar isso usando minha roda de rolagem. Dentro disso, vamos clicar duas vezes nessa linha do tempo. Temos nossa nova aba aqui. Vamos adicionar uma pista flutuante. Clicando em mais faixa, vou chamar esse movimento. E vou adicionar dois quadros-chave à nossa faixa. Aqui, novamente, algumas maneiras de adicioná-las. Você pode adicioná-los mantendo pressionada a tecla Shift, a tecla Shift e clicando com o botão esquerdo. Ou, alternativamente, você pode clicar com o botão direito do mouse em algum espaço vazio e adicionar uma chave. De qualquer forma, faremos nosso primeiro quadro-chave. Em vez disso, vou selecioná-lo. Um tempo de zero e um valor de zero. Então, para o nosso segundo quadro-chave, eu vou selecionar isso e vou definir o tempo de 0,5. Então, isso vai levar meio segundo, e eu vou definir o valor como 100. Posso enquadrar tudo isso clicando nessas setas, Y 100. Bem, se eu for ao meu Viewport e selecionar minha flor de malha aqui, veja isso. Eu vou mudar a localização aqui. 100 unidades irreais é , em última análise, o que queremos fazer para tirar isso do quarteirão Vamos movê-lo 100 para cima na direção Z. Ok, vamos nos certificar de que definimos o comprimento da nossa linha de tempo para na verdade, ser meio segundo agora, para corresponder ao nosso último quadro-chave Então, vou definir 2,5 e voltando ao nosso gráfico de eventos, vamos conectar isso ao nosso nó de sequência. Faremos isso com nossos então dois pinos. Nós vamos jogar isso. O que queremos fazer é conversar com nossos quatro. Nossa farinha de malha, nossa farinha de malha. Vamos fazer a farinha da caixa que precisamos para mover a flor da caixa para cima. É importante notar que, embora queiramos que a farinha de malha em si suba 100%, ela vai aparecer durante o passeio. Quando subimos a flor da caixa, é importante movê-la porque, eventualmente, verificaremos se há sobreposição desse colisor eventualmente, verificaremos se há sobreposição desse A flor em caixa é a coisa que realmente queremos que cresça. O cartão Mesh Flour aparece para a viagem de volta em nosso gráfico de eventos. Vamos arrastar nossa caixa de flores assim. Nós vamos conseguir isso. Vou clicar com o botão direito do mouse sobre isso e vou convertê-lo em um get validado, o que significa que só faremos esse movimento se for validado que essa flor em caixa realmente existe Vamos destruir isso quando finalmente o coletarmos aqui. Basicamente, estamos dizendo: esse componente ainda existe? E o que vamos fazer é que, quando atualizarmos nossa linha do tempo aqui em mais de meio segundo, só faremos algo se esse componente de flores em caixa existir Se ele não existir e não existir depois de coletá-lo, não faremos nada. O que queremos fazer se ela existir. Então, vamos nos afastar disso e dizer que definir localização relativa é localização relativa. Agora, a nova localização que vamos arrastar para trás daqui e digitar make, aí está, make vector Só queremos mover isso para cima na direção Z. Nosso movimento aqui, mais uma vez, nossa linha do tempo está especificando que em mais de meio segundo ela subirá 100 unidades irreais Esta será a nossa animação, clique com o botão esquerdo, arraste a tecla. Isso está saindo do nosso fluxo de dois pinos. Hum, vamos colorir isso de preto imediatamente. Ok, está tudo muito bem. Por fim, vamos subir nosso setter de interação final Na verdade, podemos eliminar isso e depois quatro pinos. Então, vou manter pressionada a tecla de controle e clicar com o botão esquerdo. Mova-o até os três pinos. Clicando com o botão direito do mouse sobre isso, vou remover o pino de execução. Essa será a primeira parte da nossa flor de fogo aqui. Um pouco mais de trabalho a fazer. Eventualmente, adicionaremos pontos, mas nosso roteiro final ficará assim. Vamos tentar enquadrar isso em porções de cada vez. Há essencialmente a parte superior e, em seguida, segue para baixo para as duas e depois três. Essa será nossa parte inferior. Vamos continuar e compilar isso. Vamos economizar agora. Precisamos jogar para testar isso. Mais uma vez, ainda não conseguiremos coletar a flor de fogo, mas devemos ver a flor de fogo surgir do bloco assim que interagirmos com ela. Aqui vamos nós. Voltando aos nossos blocos, temos nosso bloqueio, fluxo de fogo, vamos colocá-lo em posição aqui. Entrando e brincando. Tudo bem, interagindo com o bloco, a flor se levanta, vemos aquela partícula brilhante Obviamente, ainda não podemos coletá-lo. Mas concluímos nosso roteiro inicial . Trabalho feito, pessoal. Vamos passar para a parte número dois e terminar com isso. Nos vemos lá. 41. Bloqueie a flor de fogo #2: Bem-vindo. No último vídeo, criamos uma planta de bloco que gerará uma flor de fogo quando nosso personagem interagir com ela quando nosso personagem interagir No entanto, não criamos um script na funcionalidade de coleta da referida flor de fogo. Então é isso que vamos fazer na parte número dois. Vá em frente e clique duas vezes em seu bloco BP Fire flower para mergulhar de volta aqui A primeira coisa que quero fazer é adicionar um novo componente aqui. E isso vai ser simplesmente um ponto no espaço. Eu tenho minha raiz de cena padrão selecionada aqui. Vou adicionar um componente. Isso vai ser um componente de seta. Se eu for até o ponto de vista, isso é simplesmente essa seta vermelha aqui Eu quero mudar a localização disso e vou definir a localização z como 150. Meu único uso para esse componente, novamente, o usuário não verá essa seta quando estiver jogando, é revelar um ponto no espaço em que eu quero que um valor de pontos apareça Tudo bem, com tudo isso, vamos selecionar nossa flor de caixa, que é esse componente do colisor de caixas que está enterrado dentro Vou clicar com o botão direito sobre isso. Vou adicionar um evento para quando nosso personagem começar a se sobrepor a isso Isso nos levará de volta ao nosso gráfico de eventos. O que queremos fazer é verificar se é nosso personagem que está fazendo a sobreposição Mais uma vez, vamos inserir um sinal de igualdade. Vou me arrastar para trás. Obtenha um personagem de jogador para que você também possa escalar seu personagem em vez de fazer esse tipo de configuração. Mas eu venho fazendo isso durante todo o tempo, ou faremos, vamos trazer um nó de ramificação como esse. Se for nosso personagem jogador que está fazendo a sobreposição, vou trazer um nó de sequência porque há algumas coisas que eu gostaria de fazer Mantendo pressionada a tecla S, vou clicar com o botão esquerdo e inserir um nó de sequência. Então eu vou ampliar aqui de volta. E vou mover esse trecho do roteiro para cá, onde vou examinar nossa seção de pontos de adição do script. Agora, a primeira coisa que quero fazer é adicionar alguns pontos para coletar uma flor de fogo. Então, vou colocar isso em posição. Aumente o zoom um pouco, enquadre isso assim com nosso pino zero, adicionaremos alguns pontos nos quais clicaremos para adicionar um pequeno nó de redirecionamento adicionaremos alguns pontos quais clicaremos para adicionar um pequeno nó de redirecionamento Eu preciso especificar, vou colocar um zero lá. Onde exatamente eu quero que isso apareça. Bem, eu adicionei esse componente de seta por esse motivo. Então, vou arrastar e soltar isso em nossa transformação get. E você pode ver que isso realmente não vai funcionar porque esse não é um ator. Eu tenho que deletar isso. Vamos arrastar e soltar nossa flecha aqui. E eu vou sair daqui e digitar get world transform. Portanto, esse é um componente de cena em oposição a um ator. Esse é o local onde eu quero aparecer em nossos pontos. Agora, como essa é uma flor de fogo, posso especificar quantos pontos eu gostaria que tivesse. Em vez de 100, vou fazer com que valha 1.000. Novamente, você pode personalizar isso para essa variável específica. Isso agora acrescentará alguns pontos. A segunda coisa que eu quero fazer é destruir alguns componentes. Vou trazer minha caixa de flores. Vamos arrastar e soltar isso no gráfico. Vou me arrastar para fora disso e digitar um componente. Agora eu não quero destruir o ator inteiro. Eu quero que o quarteirão fique juntos. Eu não quero que essa coisa toda desapareça. Mas há alguns componentes que eu quero destruir com isso. Eu quero destruir minha flor de caixa, que é a caixa de gatilho, aliás. Eu também quero destruir nossa flor de malha. Vou arrastar isso aqui e podemos conectar os dois a esse componente de destruição. E eu também quero destruir nosso brilho de power up mais uma vez. Fizemos uma referência a isso aqui em nossa animação em bloco. Clicamos com o botão direito do mouse e transformamos isso em uma variável. E fizemos isso para que pudéssemos destruí-la quando o personagem coletasse aquela flor de fogo, caso contrário, esse brilho ficará lá E mais uma vez, aqui é onde estamos destruindo aquela flor de caixa Então, na primeira vez, isso será válido e o jogador verá essa localização relativa da nossa flor em caixa crescer. Mas na segunda vez após a coleta, ela não será válida, então não haverá nada para avançar. Destrua a flor da caixa, a flor da malha e nosso power up brilhará em todas as três Vou simplesmente selecionar tudo isso e tocar na tecla C. Vou chamar isso de destruir os componentes da fechadura. A cor do script também é preta. Temos isso muito bem emoldurado na tela. Vamos compilar e salvar isso Agora vamos testar isso novamente em nosso nível Agora devemos ver, quando jogamos nosso jogo, devemos ver a flor surgindo disso. E agora devemos ser capazes de coletá-lo dessa forma, agora nada realmente acontece ainda. Na verdade, não ganhamos nenhum poder floral, se você quiser. Então, isso virá no próximo vídeo. Mais trabalho a ser feito para dar poder floral ao nosso personagem. 42. Transformação de jogadores de flores de fogo: Neste vídeo, nosso objetivo é criar um roteiro, notificando nosso personagem de que ele recebeu uma flor de fogo, para que o personagem possa reagir de acordo Agora, esse script transformará o jogador ao coletar a flor de fogo. Há muito trabalho a ser feito neste. Vamos direto ao assunto e não percamos tempo. Vou começar aqui no meu projeto de BP, personagem em terceira pessoa Então, vou apenas selecioná-lo. Pressione a barra de espaço para abri-la. E dentro daqui eu quero começar. Vamos primeiro ao nosso Viewport. E vamos selecionar nosso componente de cápsula. Esse é o nosso principal componente aqui, com o qual outras coisas estão associadas a esse recuo mostrando uma relação de apego Vou reduzir isso imediatamente. E eu posso escalar isso uniformemente no painel de detalhes clicando neste pequeno botão de bloqueio E então pressione 0,75. Em seguida, pressione Nor, para reduzir nosso personagem Por padrão, queremos que nosso personagem, nosso personagem jogável, comece com um tamanho menor Agora, também vou definir a meia altura e o raio da cápsula aqui para serem ligeiramente diferentes Vou definir a metade da altura da nossa cápsula para 96. E vamos definir o raio de nossa cápsula aqui 34, algo um pouco mais fino assim, um pouco mais alto, só para perdoar um pouco Tudo bem, em seguida, vamos entrar no nosso gráfico de eventos e vamos criar um evento personalizado. Então, dê uma olhada, com o botão direito do mouse. Vou clicar com o botão direito do mouse, digitar eventos personalizados e adicionar eventos personalizados. Vou chamar isso de Got Flower Power. Agora, novamente, eventos personalizados precisam ser chamados manualmente, então teremos que chamar isso eventualmente. Mas agora já temos isso em vigor. Então está tudo muito bem. Em seguida, vamos criar duas variáveis. Clicando no painel do meu projeto, o botão de adição. O primeiro será chamado de escala de jogador pequena. Isso vai ser um vetor. Então eu vou adicionar outro chamado tem flor de fogo e este vai ser um booleano Tudo bem, se eu compilá-los, quero que tenham barras de flores Fire que sejam falsas, por padrão, nosso jogador seja pequeno, eu quero que seja uma em todos os aspectos Ok, em seguida, o que eu quero fazer é criar uma categoria na qual eles vivam. Na seção de categorias do painel de detalhes, podemos criar uma categoria. Então, vou chamar isso de minha categoria de Saúde do Jogador. Saúde do jogador pressionando Enter. Agora você pode ver que adicionamos uma categoria chamada Player Health no painel My blueprint e o Player Scale Small está lá Eu também vou colocar uma flor de fogo lá dentro. Com essa categoria selecionada, estará a saúde do jogador. Tudo bem, a seguir, o que eu quero fazer é criar uma linha do tempo que controlará o crescimento do nosso personagem quando eles coletarem a flor de fogo. Vai ser esse tipo de encolhimento e crescimento muito rápido, uma espécie de efeito Então, vou clicar com o botão direito do mouse em algum espaço vazio e digitar a linha do tempo. E vou nomear isso como nosso cronograma de crescimento. E essa provavelmente será a linha do tempo mais difícil que criaremos neste curso Vou clicar duas vezes nele para abri-lo. Vamos adicionar uma pista flutuante. Rastrear. Float Track, e eu chamarei isso de nosso multiplicador de crescimento Agora vou definir a duração disso para 0,8 segundos. Então eu vou definir as chaves a cada 0,05 segundos. Vou tentar fazer isso uma forma relativamente organizada e, em seguida, definiremos as chaves e os valores para eles à medida que avançamos. Vou apenas manter pressionado o controle e rolar. Bem, só para expandir um pouco mais nossa linha do tempo aqui Então, nossa primeira chave, clique com o botão direito, vamos adicionar uma chave. Essa primeira chave será definida para um tempo zero e um valor de 0,9. Pode trazê-los assim. Nosso próximo, vou colocar aqui embaixo, clique com botão direito do mouse em Adicionar chave. Isso vai ser um tempo de 0,05 e um valor de 0,65 Novamente, isso vai ser um multiplicador de escala Talvez seja necessário clicar nessas setas para exibi-las constantemente e rolar para dentro e para fora. Na próxima, vou clicar em Adicionar uma chave. Esse vai durar 0,1 segundos. O valor será 0,9. No próximo, clique com o botão direito, adicione a chave, 0,15 e o valor será 0,65. Assim, você pode ver esse efeito de serrar o mar Na próxima, vou clicar com o botão direito do mouse aqui. Vamos adicionar uma chave. Serão 0,2 segundos e um valor de 0,9 Então, mais um, aqui embaixo, clique com o botão direito, adicione uma chave, 0,25 e um valor de 0,65 Ok, agora vamos aumentar um pouco Teremos um crescimento menor, um crescimento médio e um alto crescimento. Na próxima, vou clicar aqui, clicar com o botão direito mouse em Adicionar chave. Vai ser um tempo de 0,3 e um valor de 1,1 No próximo, vou clicar aqui, clique com o botão direito do mouse. Serão 0,35 na época e o valor será 0,65 Essas partes inferiores da nossa lâmina de serra aqui serão essencialmente 0,65. Role um pouco para trás, vou clicar aqui, tecla Adicionar Este será de 0,4 segundos, 1,1 clique com o botão direito do mouse na tecla Adicionar, 0,45 0,65 para o valor. Clique com o botão direito. Adicione outra chave. Isso vai levar 0,5 segundos e 1,1 Vamos adicionar outro, aqui mesmo. Clique com o botão direito, 0,55 é a hora, 0,65 é o valor Então, temos mais algumas para fazer aqui. o botão direito. Planejando isso. Vou clicar com o botão direito do mouse aqui. Vamos adicionar uma chave. Este será de 0,6 segundos, o valor será 1,3 Vamos clicar em Adicionar uma o valor será 1,3 Vamos chave, 0,650 0,65 clique com o botão direito do mouse em Adicionar uma chave, 0,7 e 1,3 Clique com o botão direito do mouse em Adicionar chave Isso será 0,75 e 0,65 para Então, por último, estamos quase lá, pessoal, adicionem essa tecla, será 0,8 e um valor de 1,3. Então, vou destacar todas essas rolagens, rolar, voltar, ela será 0,8 e um valor de 1,3. Então, vou destacar todas essas rolagens, rolar, voltar, clicar com o botão esquerdo e arrastar Todos os meus pontos aqui estão destacados e podemos enquadrá-los assim. Agora você tem um padrão de gangorra que se parece com isso. Então, todos esses quadros-chave inferiores têm um valor de 0,65. Eu separei todos esses 0,5 segundos aqui Você pode ver a hora. Você está meio que vendo o padrão aqui, então tudo bem, acho que você o tem a partir daí. Tudo bem, então pulando daqui e voltando ao nosso gráfico de eventos Então, temos nosso poder floral. O que eu quero fazer é, depois de ligarmos para isso, e nos preocuparmos com a ligação para isso mais tarde, é colocar nossa flor de fogo em chamas. Então, vou arrastar nossa flor de fogo. Eu vou configurá-la e vamos dizer, sim, agora temos a flor de fogo, então vamos transformar isso em realidade. Vamos tocar um som logo após tocar o Sound two D, e nosso som aqui será nosso power up Sound Power up, assim. Então, queremos ajustar os pontos de vida, porque se tivermos a flor de fogo, basicamente adicionaremos um ponto de vida. Então, se eu clicar com o botão direito do mouse e digitar ajustar pontos de vida, e se você esquecer onde isso acontece aqui, deixe-me dar uma olhada um pouco Vamos conectar isso. Voltaremos a isso em apenas um segundo. Vou clicar duas vezes nisso. Isso nos levará a chamar esse evento personalizado, essa modificação de nossos pontos de vida. Todo esse roteiro que fizemos no início do curso. Então, vamos fazer uma chamada para modificar nossos pontos de vida. Agora eu preciso voltar para esse script de flor de fogo em que estamos trabalhando, porque quando obtemos a flor de fogo, queremos ajustar nossos pontos de vida porque quando obtemos a flor de fogo, um para cima aqui. Modificador de pontos de vida, vamos adicionar um para que esse valor de um seja passado aqui para esta equação Ok, então depois disso, ajustamos os pontos do quadril ao pegar nossa flor de fogo. É aqui que vamos introduzir nossa linha do tempo. Vamos jogar do início para garantir que sempre comecemos do início. Observe que temos esse multiplicador de crescimento. Vamos usar isso para multiplicar em nossa pequena escala de jogadores Então, vou manter pressionado o controle, clicar com o botão esquerdo e arrastar. Esse é o valor de um em geral aqui, então vamos usá-lo para multiplicar em relação ao nosso multiplicador de crescimento Vou clicar com o botão direito do mouse em algum tipo de espaço vazio na tecla de multiplicação para inserir um operador de multiplicação e multiplicaremos nosso multiplicador Que está oscilando para baixo e para cima e para baixo e para cima e para baixo e para cima Os valores disso continuam mudando rapidamente ao longo do tempo. Vamos multiplicar isso por unidades em toda a linha aqui Agora vamos usar isso para escalar nossa malha por nossa malha. Estou falando sobre, se eu for ao nosso ponto de vista aqui, essa verdadeira malha de manequim de três D Vamos voltar ao nosso gráfico de eventos e vou trazer uma referência à nossa malha. Vamos arrastar isso e digitar escala relativa definida três D. Então, à medida que nossa linha do tempo está sendo atualizada aqui, vamos modificar a escala da nossa malha por meio dessa parte da matemática aqui Agora, isso pode levantar a questão: por que estamos escalando nossa malha em vez de nosso componente de cápsula Porque se escalarmos nosso componente de cápsula, todo o resto surgiria durante a viagem. Por que não fazer isso dessa maneira? Bem, a razão para isso é porque, se escalarmos isso, em vez de nossa malha, nosso braço de mola e nossa câmera configurados aqui farão coisas estranhas Então, vamos seguir essa abordagem e, em seguida, vamos modificar manualmente o tamanho do nosso componente da cápsula. Então, isso virá aqui em pouco tempo. E, na verdade, cuidaremos disso a partir do alfinete de nossa linha Aqui vou me arrastar para fora de nossa direção. Isso pode nos dar a direção de nossa linha do tempo a ser retirada daqui E vou digitar o botão na direção da linha do tempo. Agora temos uma direção para frente e para trás na nossa linha do tempo pode ser reproduzida a partir desse conector de pino de acabamento. Assim, queremos trazer uma referência ao nosso componente de cápsula Agora arraste isso para dentro, o que queremos fazer é arrastar isso e digitar cápsula definida com meia altura. E então eu também vou tirar isso e digitar o raio definido da cápsula Quando terminarmos de jogar nossa linha do tempo na direção para frente, queremos definir a altura da cápsula porque nossa malha será essencialmente maior Precisamos que a altura da cápsula que envolve nosso personagem aqui também se ajuste em tamanho. Vamos definir a metade da altura da cápsula para 120. Opa, 120. Vamos definir nosso raio aqui como 40 Certifique-se de conectar isso assim. Então, estamos avançando e, essencialmente, crescemos em tamanho. Outra coisa que eu quero fazer aqui é trazer outra referência à nossa malha. Arraste isso assim. Vamos arrastar isso e digitar o local definido. Na verdade, também vamos ajustar manualmente a posição de nossa malha a posição de nossa malha para caber perfeitamente dentro desse componente de cápsula redimensionado Então, descobri todos esses valores por meio algumas narrativas experimentais para nos poupar algum E vou definir nossa nova localização aqui como menos 90. Ok, então isso vai sair da linha do tempo. Direção para frente. Ok. Agora, se quisermos jogar essa linha do tempo ao contrário, o que significa que fomos atingidos, queremos essencialmente reverter esses efeitos Então, o que vou fazer é controle pressionado e me certificar de selecionar esses nós aqui, 1.234,5. Deixe-me realçá-los Vou pressionar o controle D para duplicar todos eles. E eu vou colocar outro conjunto deles fora dessa direção inversa Se estamos basicamente reproduzindo essa linha do tempo ao contrário, o que significa que fomos atingidos, quero redefinir nosso componente de cápsula volta ao tamanho normal E nossa meia altura era 96 por padrão. Nosso raio era 34 por padrão. E nossa localização aqui era, por padrão, aproximadamente 8.060,86 negativos. Isso é o que eu tenho em De qualquer forma, esse é um trecho de roteiro saindo da parte final de nossa linha do Agora, obviamente, nada reproduzirá esta linha do tempo aqui ao contrário a menos que tenhamos algum evento que diga que sim O que vou fazer é clicar um pouco em panorâmica. Vou clicar com o botão direito novamente. Eventos personalizados. Queremos chamar esse jogador de Damaged. Portanto, temos um evento personalizado chamado Player Damage. Vamos conectar isso ao inverso da ponta, então temos que dizer isso manualmente quando quisermos chamá-lo. Agora, com isso implementado, podemos acessar nosso script de ajuste de pontos de vida e modificar um pouco as coisas. Então, vou clicar duas vezes nisso para acessar esse trecho do script. Nosso ajuste dos pontos de vida aqui embaixo, no canto inferior direito. Se você quiser interpretar tudo isso, você pode, mas essencialmente é aqui que estamos sendo prejudicados. Onde estamos sendo atingidos aqui, vamos acender nosso lingote de flores de fogo, vamos arrastá-lo para cima desse alfinete assim Isso trará um setter automaticamente. Vamos fazer com que isso volte a ser falso. E também vamos tirar isso e digitar o jogador danificado. Fazendo uma chamada para aquele evento personalizado que acabamos de criar e conectar no verso da linha do tempo Então, quando basicamente perdemos um ponto no quadril, vamos transformar essa flor de fogo em falsa e vamos chamar esse evento personalizado para reproduzir nossa linha do tempo ao reproduzir nossa linha do tempo Tudo bem, quase pronto aqui. Agora precisamos chamar isso de evento personalizado Got Flower Power. Vamos compilar e salvar aqui. É muito importante compilarmos e salvarmos, e agora precisamos chamar isso de nosso plano de incêndio Então, vamos abrir nosso bloco de flores de fogo. Blueprint, Onde está nossa flor de fogo? Aí está. Vamos clicar duas vezes nisso. Vá para dentro de lá. O que queremos fazer é chamá-lo de algum lugar aqui. Agora, atualmente, estamos verificando se é nosso personagem jogador que está fazendo a sobreposição e depois coletando a flor de fogo e todo aquele jazz Está tudo bem, mas na verdade precisamos acessar este evento personalizado da Got Flower Power. E essa configuração aqui não vai funcionar. Isso é suficiente para detectar uma sobreposição. Mas queremos verificar se é nosso personagem em terceira pessoa que está fazendo a sobreposição A razão para isso é que precisamos nosso personagem de terceira pessoa para chamar esse evento personalizado. Vamos simplesmente deletar esses três aqui, 12.3 Em vez disso, vamos nos afastar de nosso outro ator forma e vamos escalar para um personagem em terceira pessoa E a razão pela qual vamos usar essa configuração é porque agora podemos sair daqui e digitar got flower power fazendo essa ligação para nosso personagem em terceira pessoa. E então podemos conectar isso ao nosso nó de sequência. Ok, vamos tentar, compilar e salvar E voltando ao nosso editor de níveis aqui, vou começar a jogar. Você notará que eu sou menor por padrão, então vamos interagir com o bloco e pular para cima. Você pode ver que eu cresci de tamanho e a colisão do meu tamanho maior parece estar intacta Agora vamos em frente e seremos atingidos. Vamos ver se isso acontece ao contrário. Ao sermos danificados, diminuímos novamente e parece que nosso componente de capital também diminuiu Parece que tudo está funcionando conforme o esperado. Vamos apenas enquadrar nosso roteiro final dentro do nosso personagem de terceira pessoa da BP Se você quiser dar uma olhada novamente, verdadeiro modificador de ponto de quadril power up definido como um E então é aqui que estamos ajustando crescimento do nosso personagem e também modificando o tamanho dos componentes da cápsula e também a localização de nossas malhas dentro desse Tudo bem, pessoal, isso vai acabar com essa. Nos vemos na próxima. 43. Blueprint de Fireball: Tudo bem, agora que podemos colher a flor de fogo e nosso jogador se transforma, o próximo passo é fazer com que o jogador possa atirar algumas bolas de fogo E para fazer isso, precisamos criar um plano de bola de fogo. É isso que vamos realizar neste vídeo. E vamos realmente começar aqui dentro das configurações do nosso projeto, vamos criar algo conhecido como canal de colisão E isso será usado dentro do nosso plano de Fireball, no canto superior direito Temos essas configurações, vamos clicar nesse menu suspenso. Queremos acessar as configurações do nosso projeto. Dentro das configurações do nosso projeto, acessaremos a seção de colisão aqui no lado esquerdo Agora, aqui onde diz canais de objetos. Vamos criar um novo canal de objetos. Aqui, clicando aqui, seremos solicitados a fornecer um nome Vou chamar isso de Fireball e vou deixar a resposta padrão como bloco E eu clicarei em Aceitar. Agora vamos colocar isso em uso aqui daqui a pouco, mas, por enquanto, podemos fechar as configurações do nosso projeto. Tudo o que precisávamos fazer aqui era criar um novo canal de colisão Em vez disso, clique em sair daqui ou em um novo canal de objetos. Vamos entrar na pasta de plantas da nossa plataforma e vamos encontrar um espaço vazio Vou manter pressionado o controle e rolar roda para trás para encontrar algum espaço vazio aqui. Clique com o botão direito na classe Blueprint. Essa vai ser uma aula de atores. Planta. Vou chamar isso de BP underscore Fireball E com isso selecionado, vou tocar na barra de espaço aqui para abri-la. A primeira coisa que quero adicionar aqui é um componente esférico, então vou clicar em Anúncio e escolher o componente esférico logo abaixo de uma malha estática E vou deixar isso chamado de esfera. Agora, na verdade, vou fazer disso meu componente raiz para projéteis Você quer fazer o que quiser projetar. Nesse caso, esse será um componente raiz de projétil, então vou arrastá-lo e soltá-lo sobre a raiz da minha cena padrão dessa forma E isso vai fazer dela a nova raiz. Agora, no painel Detalhes, preciso expandir meu painel Detalhes novamente. Há algumas configurações que eu quero alterar aqui para estrelas. Vou mudar o material para isso na minha seção Material. Vou clicar nesse menu suspenso. E eu tenho uma dentro dessa lâmina infinita do pacote X chamada lava underscore hot Vai ser esse M fluindo de lava quente. E isso só vai dar uma olhada em bolas de fogo, muito legal E, abaixo, no painel de detalhes, temos nossa seção de colisão E para predefinições de colisão, vou expandir isso aqui Vou mudar isso para ser personalizado. E então eu vou mudar nosso tipo de objeto aqui para ser uma bola de fogo Agora, a razão pela qual isso existe é porque acabamos configurar isso dentro das configurações do nosso projeto. Vou configurar isso para Fireball. Agora, isso é rotulado como um tipo de objeto Fireball e agora podemos definir configurações de colisão para vários tipos Agora vou definir isso como um bloqueio para a maioria deles. No entanto, vou configurar isso para ignorar alguns canais de rastreamento aqui. Também vou configurar isso para ignorar o peão que somos nós, nosso personagem de jogador E também vou configurar isso para ignorar outras bolas de fogo. Isso vai ser importante porque seremos capazes de atirar várias bolas de fogo e não queremos que elas possam ricochetear umas nas outras Então, isso vai ser importante para isso aí mesmo. Então, apenas para revisar a predefinição de colisão, defina-a como personalizada, você deseja que seu tipo de objeto seja definido como Fireball Acabamos de criar isso nas configurações do nosso projeto. E então, para as respostas de colisão, certifique-se de configurá-las da seguinte maneira Em seguida, vou adicionar outro componente aqui. Parece uma espécie de máscara de fogo, mas também vou adicionar um sistema de partículas mas também vou adicionar um sistema de partículas. Clique em Adicionar. E o que eu estou procurando é digitar uma partícula e adicionar um componente do sistema de partículas em partícula e adicionar um componente do sistema de cascata Este é um sistema de partículas mais antigo. As versões mais recentes do Unreal usaram o Niágara. Mas eu sei que essa determinada partícula que estou prestes a inserir aqui existe dentro do nosso conteúdo inicial aqui Eu vou usar esse sistema de partículas. Você pode escolher qualquer partícula de sua escolha para mim. Eu vou vir aqui com esse componente selecionado. E onde diz modelo de partículas, vou escolher underscore fire Mais uma vez, isso existe dentro do meu pacote de conteúdo inicial. Você pode experimentar qualquer um desses outros, mas eu vou escolher este. Então, agora vai dar uma olhada nisso. Agora, só para fazer isso parecer um pouco mais perigoso, se você quiser, vou definir a dilatação temporal personalizada Essa é essencialmente a taxa de jogo desta vez dez, porque, uma vez que atirarmos, queremos garantir que nossas chamas não fiquem muito atrasadas Por trás desse sistema de partículas está ligado a essa esfera. E ao definir nossa jogada aqui, nossa dilatação temporal personalizada para dez, fará com que pareça que está constantemente pegando fogo Ok, mais um componente para adicionar aqui na adição superior esquerda, estamos procurando o componente de movimento do projétil E isso é o que realmente vai ser capaz de fazer essa bola de fogo se mover em nosso ambiente, é esse componente de movimento de projéteis Com isso selecionado, há várias propriedades que eu quero alterar no painel de detalhes. A velocidade inicial e máxima. Essa é a velocidade inicial e depois máxima. Vou defini-los para 2.500, respectivamente. Para os dois. Eu também vou pular aqui porque quero que isso salte do chão Então marque essa caixa de seleção. Então eu também vou descer, há uma elasticidade e uma configuração de atrito Vou definir a elasticidade 0,5 e o atrito Então, podemos ver que essas propriedades aqui foram alteradas. É isso que aquela pequena flecha traseira fica à vontade para jogar com elas à medida que as introduzimos em nosso Tudo bem, e por último, mas não menos importante, aqui temos nosso botão Defaults de classe que determina algumas propriedades sobre esse esquema de classe de ator Vou rolar para baixo em direção a eles, não exatamente em direção ao fundo. Aqui está, expectativa de vida inicial. Na verdade, podemos definir a vida útil desse ator aqui Novamente, um valor padrão de zero. Como você pode ver na dica de ferramenta significa que ela viverá para sempre. Vou definir isso como 2.0, o que significa que após 2 segundos isso seria destruído automaticamente. Com isso, vou seguir em frente e salvar esse projeto. Isso é tudo o que queríamos realizar neste. Nos próximos dois vídeos, vamos fazer com que possamos atirar essa bola de fogo. Nos vemos lá. 44. Atire bolas de fogo (básico): Bem, agora que criamos um plano de Fireball, vamos trabalhar para que nossos jogadores o eliminem Para isso, trabalharemos dentro da nossa pasta de blueprints Selecione seu BP, personagem de terceira pessoa com ele selecionado. Toque na barra de espaço para abri-la. E eu vou acessar nossa guia Viewpoort imediatamente porque vamos adicionar um componente aqui que eu gostaria que todos vocês Agora vou selecionar nosso eu aqui. E a razão pela qual estou selecionando isso é porque quero anexar outro componente à nossa malha. Desde que seja selecionado primeiro e adicionemos um componente. E vou clicar em Adicionar, vou adicionar um componente de seta. Portanto, esse componente agora está conectado à nossa malha. Atualmente está aos pés deles, mas vou alterar a posição aqui daqui a pouco Vou renomear isso para meus Fire Ball Spawn Points, porque é para isso que vamos usar isso Opa, eu esqueci o ponto de desova lá. Com isso selecionado, vou definir alguns detalhes no painel de detalhes, na localização Y. Vou definir esse 240. Vou colocá-lo um pouco na frente do nosso personagem A localização z, vou subir para 135 assim. E então eu vou girar essa rotação, a rotação y, eu tenho menos 30 E a rotação z, eu vou definir isso como 90. Essencialmente, teremos nosso componente de seta apontado nessa direção descendente Está preso à nossa malha dois. Quando viramos nosso personagem em nosso nível, essa flecha também gira Agora, isso não está apenas indicando o ponto de desova, mas vai aparecer aqui mesmo Quando tocamos em uma tecla, ela gera uma bola de fogo Também vai gerá-lo nessa direção. Então, saiba que se você quiser alterar a trajetória da sua bola de fogo, você também pode mexer nesse ângulo Ok, em seguida, voltaremos ao nosso navegador de conteúdo e usaremos o sistema de entrada que veio junto com nosso personagem em terceira pessoa. Isso foi introduzido em versões recentes do Unreal. E vamos entrar em nossa pasta de ações aqui. E o que precisamos adicionar é um novo ativo de ação de entrada. Agora podemos fazer isso clicando com o botão direito do mouse no navegador de conteúdo. Aqui neste diretório, eu vou entrar em input, e vamos adicionar a ação de entrada. E eu vou chamar esse tiro de sublinhado, underscore E então, se eu pressionar a barra de espaço para abrir isso, você pode ver que nossa entrada será do tipo booleano, como aconteceu? Não foi? Está tudo muito bem. Vamos salvar isso. E então vou voltar ao navegador de conteúdo. Em nossa pasta de entrada, aqui temos esse IMC, sublinhado padrão, esses são os mapeamentos de entrada E eu vou selecionar isso e pressionar a barra de espaço também Por padrão, é a abreviação de contexto de mapeamento de entrada. Vou pressionar a barra de espaço aqui para abrir isso. E agora preciso inserir nossa ação de entrada de atirar bola de fogo aqui dentro Então, vou clicar nisso mais o mapeamento. Vou inserir nosso recém-criado underscore Fireball ou, em vez disso, atirar Fireball vez disso, atirar Fireball Atirou em uma bola de fogo. Agora eu também tenho que decidir qual botão ou botões eu gostaria de mapear para essa ação. Algumas coisas que podemos fazer aqui é que, se você selecionar esse teclado dessa forma, agora você pode mapear qualquer tecla do teclado para ele. Então, se eu tocasse na tecla F, você pode ver que agora ela vai mapeá-la ali mesmo. Então, a tecla F vai fazer essa entrada acontecer. Também vou pressionar o botão mais uma vez e, para aqueles que têm um controle disponível, podemos configurá-lo como um controlador também podemos configurá-lo como um controlador se você simplesmente selecionar este teclado. E eu tenho um controle conectado e vou pressionar o botão X no meu controle Xbox, que é o botão esquerdo Você também pode ver como ele o mapeia automaticamente lá, pressionando a tecla ou, no meu caso, meu controle Xbox, para o botão X que chamarei para que essa entrada seja acionada. Vamos salvar isso imediatamente. Agora, se você não se lembra do início do curso, onde diabos tudo isso está sendo usado Bem, dentro do nosso personagem de terceira pessoa da BP, dentro do nosso gráfico de eventos Aqui, eu tenho que encontrá-lo. Logo no topo, é aqui nosso contexto de mapeamento de entrada está associado ao nosso personagem de terceira pessoa BP É por meio dessa função aqui, esse padrão do IMC. É aqui que está dizendo ao nosso personagem em terceira pessoa que use essa coleção de ações, por assim dizer. Tudo bem, eu vou acabar com isso. Certifique-se de que, salvo, você possa fechar isso , assim como sua bola de fogo IA shoot Ok, vamos fazer a primeira passagem do nosso tiro com a bola de fogo acontecer Vou encontrar um espaço vazio aqui e tenho meu poder floral aqui. Na verdade, vou clicar com o botão esquerdo e arrastar tudo isso. Toque na tecla C e digite got. poder das flores. Só para que eu possa identificar facilmente esse trecho do script, torná-lo preto. E então, logo abaixo eu vou atirar na bola de fogo Então, vou manter pressionado o controle e aumentar um pouco o zoom. Clique com o botão direito em algum espaço vazio. Vou apenas digitar tiro, aí está meu evento de ação de entrada para atirar a bola de fogo. Eu vou trazer isso. O que eu quero que aconteça é que, quando começarmos essa ação, eu vou abrir uma ramificação e descobrir se expandirei no meu painel de plantas, na seção de saúde do jogador Quero descobrir se temos a flor de fogo. Vou arrastar e soltar isso. Além de nossa condição, só queremos poder desovar, ou seja, atirar bolas de fogo se tivermos a flor de fogo Agora, se eu clicar com o botão direito na minha flor de fogo aqui, neste lingote, posso encontrar referências a isso neste gráfico e dar uma olhada Se você clicar duas vezes em qualquer um deles, poderá ver onde, quando obtemos o fluxo de fogo, o poder da flor, quando esse evento personalizado está sendo chamado, estamos transformando isso em verdade É assim que você pode descobrir onde várias variáveis estão sendo usadas. Você pode simplesmente clicar duas vezes neles depois de clicar o botão direito do mouse e encontrar a referência Ok, então vamos perguntar, nosso jogador tem a flor de fogo? Se isso for verdade, vamos sair daqui em Spawn Actor da aula Bem, acabamos de criar um plano de Fireball, então vou clicar aqui e digitar Seria um pouco estranho aparecer minha bola de fogo BP em uma barra de fogo e agora preciso nos dizer onde quero que ela Bem, acabamos de criar um ponto de desova de Fireball. Vamos prosseguir e arrastar esse componente. Então, arraste daqui e digite get transform. Queremos transformar o mundo, transformar o mundo aqui mesmo. Transforme o mundo onde quer que esteja localizado no mundo. No momento, pressionamos a tecla F e, em seguida, também tocamos um som dessa tecla. Então, vou sair daqui e digitar o som. Você pode reproduzir um som em um local ou dois D Sound. Acho que vou tocar um som no local do nosso personagem. Posso clicar com o botão direito do mouse em algum espaço vazio e digitar a localização do ator. Essa será a localização do nosso personagem em terceira pessoa. Para o som. Eu tenho uma bola de fogo. Tudo bem, então haverá nosso script básico aqui. Vamos compilar e salvar. E depois volte para o nosso editor de níveis aqui. Agora, antes de clicar em jogar, vou realmente expor um problema com isso logo de cara, que vamos resolver Mas vou entrar na minha pasta de plantas e colocar algumas moedas no caminho do meu personagem, garantindo que minhas duas configurações de encaixe D estejam no nível Vou colocar uma moeda aqui. colocarei um acima, porque estou tentando expor o problema Tudo bem, vamos entrar e brincar e ver se quando eu tiver a flor de fogo, eu posso atirar uma bola de fogo Tudo bem, no jogo aqui, tocando na tecla F, veja se podemos atirar uma bola de fogo direto da Eu não posso. Vamos pegar a flor de fogo transformada. Vou tocar na tecla F agora. Obviamente, aquela bola de fogo é um pouco grande e pudemos ver um problema aqui, o que eu esperava Deixe-me descer. Opa. Nós morremos lá. Vamos voltar e jogar. Você viu o primeiro problema. Está colidindo contra o, com nossa moeda invisível Então, teremos que lidar com isso em apenas um momento. Mas ao tentar cair aqui, você também descobrirá que ela também colidirá com o volume de colisão ao redor de sua moeda Então, alguns problemas aqui para resolver. O problema número um que vamos resolver é que nossas bolas de fogo colidem contra algumas coisas que não queremos, como essa caixa de gatilho aqui e esse volume de gatilho aqui E podemos fazer isso entrando nossas configurações, configurações do projeto. E nós estávamos aqui há pouco , sob a seção de colisão Vamos usar nossas várias predefinições aqui embaixo Então, basta clicar nessa predefinição aqui. E há alguns deles que eu quero editar. A primeira delas se sobrepõe a todas as dinâmicas. Se você selecionar essa sobreposição dinâmica e clicar em Editar, poderá ver suas respostas atuais a essas várias colisões de colisão No momento, nossa bola de fogo, qualquer coisa rotulada como bola de fogo, como nossa bola de fogo da BP, está configurada para bloquear qualquer coisa rotulada como bola de fogo, como nossa bola de fogo da BP, está configurada para bloquear. Isso está configurado para bloquear uma resposta do Fireball. Vou configurar isso para ignorar. Mais uma vez, dentro de nossa bola de fogo BP, podemos ver que nossa esfera está configurada para ser do tipo bola de fogo Voltando à nossa configuração de projeto, queríamos sobrepor toda a dinâmica, queríamos trocar Também entraremos para sobrepor tudo e editaremos isso Isso também está configurado para bloquear nossa bola de fogo. Vamos configurar isso para ignorar e aceitar. Também vamos selecionar nossa predefinição. Vamos fazer isso. E vamos configurar isso para ignorar e clicar em Aceitar. Precisamos fazer I porque nosso componente de widget de pontos BP usa a predefinição de colisão de interface do usuário Agora, talvez seja necessário fazer isso para outros tipos de objetos mais adiante no curso. Portanto, saiba que se sua bola de fogo está colidindo contra coisas, ela não deveria estar colidindo Para voltar aqui dentro das configurações do seu projeto, vá até a seção de colisão altere algumas das configurações predefinidas de colisão aqui, como acabei Vamos voltar ao nosso nível, clicando nessa tecla. Não está deslizando lá. Em seguida, vamos tentar ajustar o tamanho da nossa bola de fogo. Então, vamos voltar ao nosso projeto de bola de fogo com nossa esfera selecionada aqui Vamos até aqui, onde obtivemos nossa balança. Vou escalar isso uniformemente, então certifique-se de que temos nossa fechadura configurada aqui Você pode ativar e desativar isso. Isso fará com que a alteração de um desses parâmetros altere o resto. Vou definir isso 2.3. Vamos tentar isso. Então, vai ser um pouco menor. Então, se voltarmos ao nosso nível, entre e jogue. Vamos ver o que temos aqui. Ok, vamos ver. Vou pressionar a tecla. Não está mais colidindo contra aquele bloco. Então, isso é muito bom e também não parece estar colidindo com nossas moedas Então, obviamente, você pode alternar o tamanho da bola de fogo ao seu Vou deixar isso como está por enquanto. Mas pessoal, isso vai bastar para essa versão básica de atirar nossa bola de fogo Em nosso próximo vídeo, adicionaremos algumas regras para acentuá-lo ainda mais. Nos vemos lá. 45. Atire bolas de fogo (avançado): Tudo bem, bem-vindos a todos. Neste vídeo, vamos levar nossas bolas de fogo para o próximo nível implementando algumas regras E com isso quero dizer que vamos restringir o número de bolas de fogo vivas que temos por vez Também vamos restringir o número de saltos que a bola de fogo pode fazer o número de saltos que a bola de fogo Vamos gerar alguns efeitos visuais quando nossa bola de fogo quicar duas vezes aqui e, irreais, trabalharemos dentro de nossa bola de fogo BP e de nosso personagem Então, talvez você queira abrir os dois. Vamos começar com nosso personagem de terceira pessoa de BP e vamos criar uma variável totalmente nova imediatamente. Isso restringirá o número de bolas de fogo vivas por vez Então, a palavra certa diz variáveis aqui. Clique neste botão de adição e criaremos uma chamada bolas de fogo ao vivo E eu vou mudar isso para um número inteiro. Isso vai acompanhar quantas bolas de fogo ao vivo temos por vez Vou compilar aqui, começaremos com o valor padrão de zero Agora venha e encontre seu script atual de tiro de Fireball. Porque vamos modificar isso e, em particular, vamos pegar esses três nós puxá-los para o lado aqui. Vamos criar uma lacuna aqui mesmo. Então, dê a si mesmo um pouco de espaço assim. E vamos modificá-lo como tal. Depois de atirarmos uma bola de fogo aqui, se tivermos a flor de fogo, vamos arrancar o galho verdadeiro E agora vamos ter todos os atores da classe. E vamos receber todos os atores da nossa turma de Fireball. Vamos apenas digitar Fireball. E então o que vamos fazer é clicar com o botão direito do mouse nesse pino de atores. E vamos promover isso para uma variável. Vamos chamar isso de nossa matriz de bolas de fogo. E vamos conectar isso, então, o que isso vai fazer é que toda vez que lançamos uma bola de fogo, basicamente descobriremos , ei, quantas bolas de fogo existem no mundo? E vamos armazenar isso em nossa lista. Agora, a razão pela qual vamos fazer isso é porque vamos nos arrastar para fora desse pino. E vamos descobrir o tamanho da nossa matriz, o comprimento da nossa lista, quantas bolas de fogo existem nessa lista E a razão pela qual vamos fazer isso é porque vamos definir nosso número de bolas de fogo ao vivo Então, aqui no painel do meu projeto, encontre sua matriz de bolas de fogo ao vivo e podemos simplesmente arrastá-la e soltá-la neste outpin desta Se, por exemplo, lançássemos rapidamente duas bolas de fogo pressionando a tecla F duas vezes, Bang, bang, viríamos Temos a bola de fogo? Sim. Ou flor de fogo? Sim. OK. Existem duas bolas de fogo no mundo. Vamos adicioná-los à nossa lista. Esses dois estão lá fora. Esse será o comprimento. Essa variável terá o número dois dentro. Agora, isso vai ser valioso porque, em seguida, vamos sair daqui e trazer um nó. Vamos descobrir que bolas de fogo ao vivo são menores que duas. Somente se tivermos menos de duas bolas de fogo vivas permitiremos a desova Vou conectar isso a uma ramificação como será nosso script. E vou destacar essa parte do meio aqui. Toque na Sea Key e este será meu número restrito de scripts Fireballs ao vivo Isso vai ser opcional, mas eu gostaria de ter isso aqui e se você joga jogos de Mario, eles realmente fazem isso. Vou colorir isso talvez um pouco de azul escuro, algo parecido. Só para ampliar o que temos aqui, esse será nosso roteiro. Se você quiser pausar um vídeo a qualquer momento aqui para ver isso, certifique-se de ter o número dois E isso é menos do que um nó aqui. Ok, vamos compilar isso rapidamente e então podemos testar isso imediatamente. Então, eu vou entrar e jogar. Então, agora vou falar com Sam na minha tecla F aqui, ver quantas. Então você pode ver que eu só tenho duas bolas de fogo vivas por vez, e elas precisam morrer antes que eu possa gerar algumas novas Em seguida, vamos restringir o número de saltos que uma bola de fogo E para isso, vamos entrar na nossa bola de fogo da BP. Dentro daqui, vamos adicionar uma variável clicando ali mesmo. Isso vai ser chamado de nosso. Contador de saltos de bolas de fogo, isso também será um número Se eu compilar isso imediatamente, quero deixar isso com um valor padrão de zero A seguir, vamos ver nossa lista de componentes. Então, vamos clicar com o botão direito do mouse em nosso movimento de projétil. Vamos adicionar um evento e vamos adicionar um evento no projétil bounce Quando fizermos isso, vamos pular para o nosso gráfico de eventos. Toda vez que nosso projétil saltar, ele será disparado daqui. O que vamos fazer aqui é trazer nosso contador de saltos de Fireball Vou manter pressionado o botão esquerdo do mouse e arrastar. E então, se eu sair disso posso trazer um nó de incremento. E o que isso vai fazer é adicionar uma à nossa variável aqui e depois colocá-la de volta aqui. Não precisamos nos preocupar em definir nosso contador de saltos de Fireball do outro lado Esse nó de incremento especial simplesmente descobrirá qual é o valor disso Ele o adicionará e, em seguida, o colocará de volta aqui. Agora, desse pino de saída, vou arrastar para fora e vou trazer um valor maior ou igual a, se for maior ou igual ao número dois. Vou conectar isso a um nó de ramificação mantendo pressionada a tecla B e clicando com o botão esquerdo, aparece uma ramificação distante. O contador de saltos do Fireball é maior ou igual a dois Vou gerar o emissor no local. Emissor Spawn, o emissor que eu usaria, eu gosto de usar a explosão para quase tudo Também está no conteúdo inicial, então é por isso que eu uso a explosão P underscore A. Novamente, você pode criar um sistema de desova no local para uma Eu preciso fornecer um local para isso. Então, o que vou fazer é obter a localização da nossa esfera aqui. Vamos arrastar isso para dentro , então vamos arrastar o tipo para fora daqui e obter localização mundial onde quer que esteja localizada no mundo. É aí que vamos gerar essa explosão. Claro, é bom ter um pouco de som também. O que vou fazer é depois de gerarmos a localização do emissor, vou sair daqui e digitar o som de desova anexado desova anexado Posso simplesmente pegar nosso valor de retorno e anexar ao componente dessa forma. E isso vai aparecer. Preciso inserir um som de explosão aqui. Vou simplesmente usar o sinal de explosão. Então, no final, vou simplesmente arrastar e dizer: destrua o próprio ator, ou seja, essa bola de fogo Tudo bem, então vou tentar enquadrar tudo isso para que você possa conferir isso. Certifique-se de que você tem esses dois. É uma explosão maior ou igual a uma explosão. Para facilitar o teste, vou selecionar nosso movimento de projétil E, temporariamente, vou diminuir nossa velocidade aqui, porque agora não vamos ver esse salto duas vezes Deixe-me mudar isso para algo como 500, 500. vou mudar isso aqui Eventualmente, vou mudar isso aqui, provavelmente entre os vídeos. Então eu vou compilar isso, vamos jogar aqui Quantas vezes ele salta? 12, boom. 12. Ele está sendo destruído automaticamente, vendo esses efeitos e outros enfeites naquele segundo salto Tudo bem, antes que eu esqueça, vou ajustar minha velocidade aqui novamente para ajustar minha velocidade aqui novamente 2.500.2500 Mas, novamente, você pode mexer com Ok, a próxima coisa que quero fazer aqui é verificar se nossa bola de fogo está atingindo uma superfície quase vertical e, se estiver, vamos explodi-la instantaneamente Em vez de esperar que nossa bola de fogo salte duas vezes e depois exploda Agora, para fazer isso, vou arrastar meu projétil um pouco mais e podemos revelar o resultado do impacto E podemos fazer isso arrastando até aqui e digitando break, Hit Então, eu vou expandir isso, faça. O que eu quero fazer é encontrar nosso normal. Vamos sair disso, vou digitar em vetor, obter abs. Então eu vou pegar isso e vou quebrar isso. Vamos quebrar esse vetor. Vamos descobrir o z a partir disso. E vamos arrastar isso para um nó menor que, e vamos descobrir se isso é menor que 0,9. E veremos alguns exemplos de cenários aqui daqui a pouco. Vou manter pressionada a tecla B e clicar com o botão esquerdo para abrir uma ramificação como essa. E eu vou arrastar isso assim. OK. O que vamos fazer então é descobrir qual número está sendo gerado aqui simplesmente trazendo uma nota de string impressa temporária. Então, vou clicar com o botão direito do mouse em algum espaço vazio. Digite a sequência de caracteres de impressão. Isso vai ser apenas uma nota temporária. Vou inserir temporariamente o verdadeiro, o falso, a isso, e vou pegar esse valor Z. E conecte-o diretamente aqui. Só para que você possa ver esse número sendo exibido na tela Agora vou colocar uma superfície aqui embaixo e depois atirar uma bola de fogo nela Na verdade, vou colocá-lo na parte superior aqui para que possamos ver alguns valores que são emitidos quando estamos atirando nossa bola de fogo Então, eu vou trazer um cubo aqui. Eu simplesmente vou fazer um pouco assim. Eu vou girar um pouco desse jeito. Vou movê-lo um pouco para baixo assim. Eu vou atirar de uma superfície como essa. Está bem? Entrando e brincando Tudo bem, então vamos lá. Você pega essa bola de fogo. Você vai querer dar uma olhada no ícone do Mario na parte superior desse número impresso na tela. Então vamos lá, 0,5 0,5 0,5 Ok, então você meio que tem uma ideia dos valores que estão sendo divulgados aqui Deixe-me desligar minhas configurações de encaixe angular. Gire isso um pouco mais, ok, deixe-me inclinar assim 0.7 0.7 0.7 Incline-o agora para ficar um pouco mais vertical assim Aqui vamos nós. É, o primeiro número é 0,178 e, em seguida, ele está obtendo um valor de um ao ricochetear naquela superfície plana O valor absoluto garantirá que não tenhamos um número negativo lá. E o que estamos essencialmente querendo fazer aqui, vou simplesmente destruir esses nós, é isso. Quero incrementar nosso contador de saltos. Na verdade, vou recuar um pouco assim e, na verdade, vou reduzir isso um pouco. Se isso for considerado verdadeiro, quero gerar esses efeitos imediatamente Ok, nem queremos incrementar esse contador de saltos Ok, deixe-me deixar isso aqui. Vou enquadrar isso da melhor maneira possível. Então, vamos continuar e compilar isso. E então o teste é voltar ao meu nível, jogar. Então você vai ver, vai filmar isso principalmente na vertical. Ele vai destruí-lo imediatamente, sem esperar por um segundo salto Vou inclinar isso um pouco mais desse jeito. Vamos tentar isso. Vamos destruir isso imediatamente. Se eu fosse simplesmente, não diria principalmente vertical, diria um pouco vertical. Portanto, agora não vamos nos preocupar com um ambiente levemente inclinado Isso vai permitir que ela salte, mas enquanto tivermos uma superfície levemente inclinada como essa, ela a destruirá imediatamente Não vai esperar por um segundo salto. Tudo bem, mais uma coisa que vamos consertar com nossas bolas de fogo Antes que eu esqueça, esqueci abordar nosso bloco invisível aqui Aqui está o problema atual. Se eu voltar e jogar , vou pegar nossa flor de fogo. E você pode ver que eu tenho blocos invisíveis aqui embaixo. Se eu tocar na tecla F, você pode ver que ela ainda está colidindo contra aquele bloco invisível, então temos que resolver esse problema Então, vamos mergulhar em nosso bloco invisível, a planta Você pode selecionar qualquer um desses blocos invisíveis. Eu posso editar o bloco invisível indo direto para lá. O problema atual é que vou ampliar onde estamos começando a jogar. Aqui mesmo, nosso cubo. Atualmente, se eu selecionar nosso cubo e entrar nas configurações de colisão, você pode ver que adicionamos a bola de fogo e ela está configurada para bloquear a bola de fogo aqui fora do início do evento O que podemos fazer é arrastar para fora do nosso cubo digitar a resposta de colisão definida para canalizar esse nó aqui Vamos conectar isso. Vamos definir o canal para ser Fireball e, em seguida, vamos definir a nova resposta Certifique-se de que isso esteja configurado para ignorar. Vá em frente, compile e salve isso. Então, se eu entrar e jogar e deixar minha barra de fogo sair do caminho até aqui, na verdade eu só tenho um bloco lá nas barras de fogo, parecendo que está descansando dentro dela de forma que não deveria mais me atingir OK. Eu vou entrar e jogar aqui. Faça aquela flor de fogo bater. E você pode ver que não está mais colidindo com aquele bloco invisível Deixe-me pegar isso. Vamos ver se consigo atirar uma bola de fogo com isso. Você pode ver agora que o problema é que ele está passando por aquele bloco depois que eu interajo com ele. Então, tenho que me certificar de reativar a colisão assim que revelarmos aquele bloco invisível Para fazer isso, vou voltar para o meu bloco BP, moeda invisível E diremos que, depois de terminarmos de interagir com isso, vou voltar para onde estamos ativando nossa invisibilidade Vamos colocá-lo nesta área aqui. Eu só vou puxar isso para trazer nosso cubo Vou digitar, na verdade, vou roubar aquele nodo daqui de cima Foi chamado de resposta de colisão definida ao canal. Vou apenas copiar esse nó. Vamos trazê-lo de volta cá e eu vou colar esse nó. Vamos colocar isso aqui mesmo. Certifique-se de conectar seu Cube como alvo. E desta vez diremos que, depois de interagirmos com ela, não vamos mais ignorar a bola de fogo. Em vez disso, vamos bloqueá-la Então vá em frente, compile e diga isso, vamos tentar isso. Mais uma vez, voltando e jogando. Você pode ver que está passando por lá, atingindo aquele outro bloco, não vai interagir com esse bloco Agora, se eu tentar atirar nesse bloco, ele está interagindo com ele e colidindo onde deveria Tudo bem, agora temos uma versão avançada dos caras do Fireball que fará tudo por este Nos vemos na próxima. 46. Componentes e funções de bloco básico: Ao longo dos próximos vídeos. Aqui vamos montar um bloco. E o que um bloco faz para aqueles que não estão familiarizados é transformar blocos regulares em moedas por um período limitado de tempo. Quando o cronômetro expira, os blocos que se transformaram em moedas voltam a ser blocos Para que possamos fazer isso de volta ao motor aqui, faremos algumas modificações nosso bloco base BP Vá em frente e selecione isso, em seguida, pressione a barra de espaço para abri-lo. Dentro daqui, vamos adicionar alguns componentes. Deixe-me voltar para a visualização da minha janela de visualização aqui. Vamos adicionar um componente. O primeiro vai ser uma criança. Se digitarmos criança, será um ator infantil depois ligado ao nosso ator infantil. Portanto, verifique se você selecionou isso. Vamos adicionar colisão esférica. E podemos descobrir isso aqui embaixo da seção de colisão Colisão de esferas, vou chamar isso de meu colisor de moedas. Com nosso colisor de moedas selecionado, vou mudar o raio da esfera Eu só vou torná-lo um pouco maior para 35. Ele está enterrado no interior do nosso bloco agora, o que queremos, não queremos que seja exposto do lado de fora do nosso bloco. E nosso ator infantil, no painel de detalhes, podemos participar de uma aula de ator infantil. Vamos deixar isso em branco por enquanto. Agora, dentro das plantas, queremos expor uma moeda quando o bloco é atingido, vamos definir isso como BP, pegar a moeda, mas não vamos fazer isso aqui dentro dessa Em seguida, vamos criar algumas funções aqui dentro da nossa base de blocos BP E eles servirão para ativar e desativar os vários efeitos quando interagirmos com nosso bloco. Então, aqui no painel do meu plano, em funções, vamos clicar nesse botão de adição Este primeiro chamaremos de bloco. No segundo, ligaremos clicando neste botão de adição. Mais uma vez, vou cancelar o bloqueio. Simples o suficiente. Com cada uma delas criada, adicionamos algumas guias na parte superior aqui para nossas várias funções Vou começar com meu bloco ativado, então certifique-se de que ele esteja selecionado. A funcionalidade que eu quero adicionar aqui é que vou arrastar uma referência aos nossos cubos. Você pode arrastar e soltar isso da seguinte maneira. Em seguida, vou me arrastar para fora e digitar visibilidade definida quando nosso bloco estiver ligado, interagimos com nosso bloco, vou desativar a visibilidade do cubo Então, vamos deixar isso desmarcado. Então eu vou sair do nosso cubo mais uma vez aqui. E vou digitar set collision enabled. Então, vamos configurar nossa colisão para esse cubo não tenha colisão porque os blocos colocados não queremos ser capazes de colidir com Então, o que queremos fazer é trazer a referência ao nosso ator infantil. Em seguida, vamos arrastar esse tipo na visibilidade definida. Estamos ativando a visibilidade de nosso ator infantil para nosso bloco de funções. Vou clicar com o botão esquerdo arrastar para copiar o controle C. Agora vou entrar na minha função de bloqueio apenas para economizar algum tempo aqui. Vou clicar aqui e depois fazer o controle V para colar tudo isso. Isso será basicamente semelhante, exceto que só precisamos inverter todas essas várias configurações aqui, então, quando nosso bloco estiver desativado, queremos ter certeza de que nosso cubo está ligado novamente Também queremos ter certeza de que reativamos a colisão. Então, para isso, vamos fazer uma consulta ativada por colisão em física E então, o ator infantil, queremos torná-lo invisível quando o bloco for desligado. Uma vez que esse cronômetro tenha expirado. Tudo bem, em seguida, vamos adicionar um pouco mais de script aqui com nosso colisor de moedas Vamos clicar com o botão direito sobre isso. Vamos adicionar um evento e vamos fazer Begin Overlap E quando o fizermos, voltaremos ao nosso gráfico de eventos aqui. Vou ampliar para trás e vou encontrar um espaço vazio para colocar isso. Vou colocar isso aqui embaixo. Vamos ampliar isso novamente. E então o que vou fazer é tirar pino do outro ator e digitar o símbolo de igual e descobrir se isso é igual ao nosso personagem de obtenção de jogador Se for igual, vou inserir isso em uma nota de ramificação mantendo pressionada a tecla B e clicando com o botão esquerdo. Se isso for igual, vamos simplesmente ao ator ator, ou seja, esse bloco em si. Isso garantirá que, se você coletar a moeda de bloco interna, basicamente seja a hora do bloqueio. Essa moeda foi exposta, então o bloco em si será destruído e, portanto, não voltará. Depois que o tempo de bloqueio expirar, vou clicar com o botão esquerdo do mouse e arrastar essa torneira A tecla C digita no bloco moeda do bloco dentro é coletada E eu vou deixar isso preto também. E pessoal, isso é tudo o que queríamos realizar neste. Então, vou compilar isso e salvar. E com isso, estabelecemos algumas das bases para o nosso bloco P. Isso bastará para este. Nos vemos na próxima. 47. Tag de bloqueio infantil e ator infantil: Bem-vindos de volta a todos. Neste vídeo, nosso objetivo é adicionar uma tag e definir uma classe de ator infantil em blocos. Gostaríamos de ter nos transformado em moedas. Quando nosso bloco está ativo, você pode escolher em quais blocos deseja configurá-lo. Vou colocar apenas dois de nossos blocos, nosso bloco quebrável e nosso falso quebrável, para ter moedas dentro quando finalmente interagirmos com nosso Mas observe que você também pode definir isso para outros blocos. Se eu abrir esses dois agora, vou apertar a barra de espaço para fazer com que os dois se abram O que podemos ver é que em cada um deles, o bloco quebrável e o falso quebrável, eles agora herdaram o ator secundário e os componentes do colisor de moedas que instalamos em nossa base de blocos que instalamos em Então, configurando-os em nossa base de blocos, os filhos dela, incluindo nosso bloco quebrável e falso quebrável. Ambos os têm. OK. Para ambos, vou entrar e ambientar o ator infantil, então esse é meu falso quebrável Vou colocar primeiro no ator infantil, vou colocar isso na minha moeda, pegar BP, pegar moeda E então eu vou fazer o mesmo dentro do meu quarteirão. Ator infantil quebrável, ator infantil, moeda de classe. E vamos configurá-lo para pegar a moeda. Então, para cada um deles, vou ficar abaixo dos padrões da classe Clique em Padrões de classe na parte superior e adicionaremos uma tag para E você verá onde a tag entra em jogo um pouco mais tarde aqui, mas isso nos permitirá. E então eu vou entrar no painel de detalhes aqui e pesquisar por tag. Permita-nos adicionar uma tag aqui clicando neste botão de adição. E eu vou criar um chamado simply block. Assim, vou pressionar o controle C aqui depois de destacar isso. E então, no meu BP fake Breakable, selecionarei os padrões de classe, procurarei por uma tag e criarei uma tag Vou apenas destacar isso e controlar V para pagar o Sap. E esse é um rótulo essencialmente que estamos associando a cada um desses blocos Novamente, usaremos isso no futuro para qualquer bloco em que quisermos ter uma moeda dentro Certifique-se de adicionar também essa tag. Então, vou fazer esses dois blocos, mas, novamente, se você quiser adicioná-los a outros blocos, certifique-se de que, depois de fazer isso, tenha feito toda a tarefa de compilar e salvar E isso vai fazer tudo por esse pessoal. Nos vemos na próxima. 48. Blueprint de shake de câmera: Bem-vindos de volta a todos. Neste vídeo nosso objetivo é criar um plano de vibração da câmera que possa ser reproduzido quando interagimos com nosso bloco Então, um pouco mais de trabalho de preparação antes de começarmos a criar nosso próprio esquema de blocos Vamos colocar isso dentro da nossa pasta de plantas. Clique com o botão direito, é um espaço vazio. Esta será uma classe principal. Para isso, não vamos escolher nenhuma dessas principais classes principais comuns Vamos ver todas as classes em sua barra de pesquisa aqui. Faça uma busca por trepidação da câmera. O que você está procurando aqui é a vibração da câmera, base. Vá em frente e selecione isso. E então vamos escolher selecionar aqui. Vamos nomear isso imediatamente. Bp sublinha a vibração da câmera. E então vamos pressionar a barra de espaço para abri-la aqui dentro. Vamos definir algumas configurações de vibração no painel de detalhes, onde diz padrão de vibração da câmera, padrão de vibração da raiz Vamos clicar aqui e escolher o oscilador de onda. Agora vamos expandir isso e temos várias maneiras de contornar isso. Vou sacudir isso rotacionalmente. Você também pode sacudi-lo sacudindo a localização real, mas o que vou fazer é analisar a rotação, o tom, a guinada o tom, a guinada e a função de cada uma delas Eu só vou definir a frequência para ser cinco. Então, na categoria de tempo, isso determinará a duração do tempo de entrada e saída da mistura. Vou definir a duração em 0,3. O tempo de mistura 0,1 e o tempo de mistura será 0,2. Essa será a nossa configuração de shake, algo curto e abrangente que chamaremos para jogar quando pisarmos em nosso quarteirão, pessoal, isso é literalmente tudo que queremos fazer neste Vá em frente, compile e diga que se terminamos com este, o próximo 49. Force Feedback: Bem-vindo. Achei que seria bom ter um pequeno feedback forçado. Esse é o ruído do controlador quando paramos em nosso quarteirão. Portanto, para aqueles que têm um controlador conectado ao computador, fiquem por aqui Este vídeo é para você. Se você pretende apenas tocar um mouse com teclado, fique à vontade para pular este Pois nosso objetivo é criar um recurso personalizado de feedback forçado. Como esse é um recurso único, não vou criar uma pasta totalmente separada aqui. Você poderia fazer isso, mas vou colocar esse ativo em nossa pasta de blocos aqui. E para começar, vou escrever clique em algum espaço vazio. Vamos entrar em Entrada e vamos criar um efeito de feedback forçado. Clicando nisso, só precisamos dar um nome. Vou ligar para o meu para obter feedback. E então eu vou pressionar a barra de espaço para abrir isso. Dentro daqui, vamos clicar nos detalhes do nosso canal aqui e expandir nosso índice. E vamos encontrar um editor de curvas. E, assim como você viu anteriormente neste curso com nossos vários cronogramas, adicionaremos alguns quadros-chave aos nossos cronogramas para definir alguns comentários sobre a floresta Vou clicar com o botão direito do mouse em algum espaço vazio aqui para adicionar nossa primeira chave. Com isso selecionado, vou adicionar um valor temporal de zero e um valor de zero. E então eu vou clicar com o botão direito novamente. Vamos adicionar outra chave. Desta vez, vou adicionar um valor de tempo de 0,2 Então nosso shake vai durar apenas 0,2 segundos, e desta vez nosso valor será dez. Podemos ver esses dois aqui clicando nessas setas. Assim, se você quiser que sua sacudida dure mais tempo, obviamente, você pode mexer no valor do tempo obviamente, você pode mexer E se você quiser ter uma sacudida maior, você pode definir seu valor maior ou menor se quiser menos sacudida E aqui em cima você tem seus atuadores que podem ser acionados dentro do seu controlador Atualmente, vou deixar isso para seus padrões, a esquerda grande, a pequena, direita grande e a pequena também Só vamos guardar isso. E com isso feito, agora temos um recurso de feedback forçado que podemos usar em nosso próximo projeto de bloco P, pessoal que resolverá isso neste Nos vemos na próxima. 50. Materiais e sons de P Block: Bem-vindo. Neste vídeo, vamos apenas garantir que todos os ativos de áudio , textura e material estejam prontos antes de prosseguirmos e criarmos nosso esquema de blocos, como você pode ver em nosso vídeo de pausa Essa é a aparência de um bloco . Tem um interruptor de aparência azulada na parte superior e uma base de aparência prateada Só para ter certeza de que temos tudo isso antes de criarmos nosso plano de blocos, vamos analisar o que temos em nosso navegador de conteúdo De volta aqui em nosso navegador de conteúdo, estou em nossa pasta de áudio e tenho esse som de pântano que vamos usar dentro do nosso bloco Certifique-se de que você tem isso. Em seguida, dentro da nossa pasta Texturas, certifique-se de ter acesso ao bloco, ao bloco quebrável e a uma dessas moedas Agora, já deveríamos ter lidado com o bloco quebrável e a moeda, mas não transformamos esse bloco em um material Esse será o nosso próximo passo aqui. Vou clicar com o botão direito sobre isso. Vamos criar um material a partir disso. Vou deixar esse nome padrão. Vou apenas pressionar Enter aqui. E então vou mover isso para dentro da nossa pasta de materiais. Então, vou arrastá-lo e soltá-lo da nossa pasta Texturas aqui, dentro da nossa pasta de Materiais Vamos movê-lo para cá. E então eu vou pular para a nossa pasta de materiais, selecioná-la e, em seguida, vou clicar na barra de espaço para abri-la. Agora, aqui dentro, há algumas coisas que eu quero ajustar em nosso painel de detalhes. No modo de mesclagem, quero mudar isso de opaco para translúcido Eu também quero marcar esta caixa para dois lados. Agora, depois de tornar nosso modo de mesclagem aqui, translúcido, também disponibilizei essa entrada de opacidade em nosso nó de material mestre O que queremos fazer é pegar nosso valor alfa de nossa textura e inseri-lo na opacidade Antes de fazer isso, vou mudar nossa prévia aqui. Atualmente está em nossa esfera. Vou transformá-lo em um cubo para que você possa ver como isso se parece E, obviamente, isso parece terrível, certo? No entanto, quando inserirmos esse valor na opacidade, nosso alfa na opacidade, ele ficará muito mais bonito ao eliminar essas faixas Quando vermos isso no jogo, veremos apenas um lado disso. É como se estivesse em um avião. Algo mais parecido. Então, acabei de selecionar um avião aqui para ver como ele vai ficar. Ótimo, está tudo muito bem. Então vá em frente e clique em Salvar. Podemos sair daqui então. E agora vamos querer criar um material totalmente novo. Porque quando paramos neste quarteirão, queremos que apareça uma espécie de versão simplificada disso Então, basicamente, queremos dar uma olhada nesse bloco que manterá um pouco do azul, mas não veremos nenhuma letra e parecerá uma lasca de azul desde que pisamos no botão Então vá em frente e saia daqui. E de volta à nossa pasta de materiais. Vou clicar com o botão direito em algum espaço vazio. Vamos criar um material totalmente novo vindo até aqui, eu vou. Este bloco de sublinhado. Sublinhado sublinhado azul. Vamos pressionar a barra de espaço para abrir isso. Agora vou apenas adicionar uma cor aqui. Mantendo pressionada a tecla número três e clicando com o botão esquerdo. Isso trará um nó vetorial constante de três. Vou conectar isso à nossa cor emissiva aqui embaixo Eu quero que isso seja um pouco brilhante. Mais uma vez, segurei a tecla três e cliquei com o botão esquerdo para obter esse nó. Isso serve para que você possa simplesmente inserir um valor de cor acessando o painel Detalhes. Você pode clicar nessa barra de cores e escolher uma como essa. No entanto, eu tenho alguns valores rígidos que gostaria de inserir, então vou deixar o R, o valor vermelho, em zero O valor que vou ser 0,5 e o valor que vou definir como um para criar uma cor parecida com isso. E vamos chamar isso de bom por enquanto. Seremos capazes de fazer uso disso em pouco tempo. Então, vou clicar em Salvar e, em seguida, podemos sair daqui. Depois de terminar de salvar, agora estamos em boa forma para começar a criar nosso projeto de blocos, pessoal, que fará tudo por este, vencerá o próximo 51. Blueprint de P Block: Bem-vindo. Neste vídeo, nosso objetivo é criar um modelo de classe de ator para nosso bloco P com o qual possamos interagir e que transformará outros blocos em moedas por um determinado período de tempo Neste vídeo, vamos apenas montar nosso modelo de blocos Na próxima, vamos realmente implementar o script para fazer com que toda essa funcionalidade aconteça Agora, para começar aqui, quero mover a vibração da minha câmera BP que criamos antes deste vídeo Vou mover isso para a nossa pasta Blocos. Basta arrastar e soltar isso na nossa pasta Blocos. Vamos movê-lo para cá. Em seguida, vou entrar na minha pasta de blocos. Na verdade, vou criar uma pasta de blocos separada dentro daqui. Então, vou clicar na minha pasta de bloqueio, nova pasta, vou chamar esse bloco. Em seguida, vou para minha pasta de blocos. Vou selecionar a vibração da minha câmera e meu feedback de força, esses dois. E eu vou arrastar e soltar aqueles dentro de lá. Vamos movê-los aqui para dentro da nossa pasta de blocos. Vou clicar, vamos criar uma nova classe Blueprint Esta será uma aula de ator, e vou chamar isso de sublinhado do bloco de pontuação da BP Então, vamos clicar na barra de espaço aqui para abri-la Dentro daqui, acredito que temos seis componentes que vamos adicionar. Tudo isso será anexado à nossa cena padrão. Raiz. Este ícone aqui garante que tudo isso esteja anexado à rota de cena padrão. Este primeiro, se adicionarmos, ele será automaticamente anexado a ele. Então, isso vai ser um avião aqui. Vou chamar isso de um bloco de sublinhado no painel de detalhes Vou definir algumas configurações para isso imediatamente. O material que vou definir para isso será nosso material de sublinhado em bloco, este com o ícone nele Também vou girá-lo e movê-lo um pouco, então minha rotação aqui será 90 Vai virar tudo desse jeito. Vou definir o local como 50. Isso vai movê-lo um pouco para cá. Em seguida, no painel de detalhes abaixo da colisão, vou definir a predefinição de colisão para não seja uma colisão, não quero poder colidir com isso não quero poder colidir com Em seguida, selecionarei nossa rota de cena padrão para que o próximo componente que eu adicionar seja anexado a ela. Nós vamos adicionar. Isso vai ser uma colisão de bloco, então vou rolar para baixo ou colisão de caixa, não colisão de bloco, colisão Vou simplesmente deixar esse nome como caixa. E com isso selecionado no painel de detalhes, vou definir a extensão da minha caixa aqui. Vou definir isso para 42 por 42 por 100. Mais uma vez, determinei todos esses valores com antecedência. A predefinição de colisão para essa rolagem baixo será Bloquear todas as Defina isso para bloquear tudo. Em seguida, selecionaremos novamente nossa rota de cena padrão. Vamos adicionar um componente. Isso vai ser uma malha estática. Vou chamar isso de bloco sublinhado, sublinhado base, sublinhado esmagado Isso será um cilindro no painel de detalhes. Faça uma busca por um cilindro. E eu vou fazer isso em nosso motor, formas básicas. Tem esse tamanho aproximado de 100 por 100 por 100. Então, vamos definir isso. Eu quero definir a localização para isso, a localização z como 7,85 Eu vou definir a escala disso para ser 0,92 no X. Na verdade, vou ter valores diferentes para tudo isso, desbloqueie sua Dessa forma, podemos definir valores exclusivos em cada campo. Vai ser 0,92 por 0,92 com 0,15 vai ser algo quebrado, parecido com isso ser algo quebrado, E eu vou configurar o material aqui para ser uma bola cromada, algo brilhante aqui. Essa bola cromada deve funcionar perfeitamente na seção de renderização Para isso, vamos desativar essa caixa de seleção visível. O que isso vai significar é não conseguiremos ver esse jogo até que o tornemos visível. Essencialmente, o que vai acontecer é que, quando pisarmos nessa chave de bloqueio, faremos com que ela reapareça Ok, em seguida, vamos selecionar nossa raiz de cena padrão. Mais uma vez, vamos adicionar outro componente aqui. Esta será uma malha estática e esta será chamada de block, underscore, underscore, top, underscore, smashed Com esse componente selecionado, vamos configurar a malha estática para ser também um cilindro. Esse mesmo cilindro do motor forma o caminho básico. E se você não tiver acesso à pasta do motor, clique nesse ícone de engrenagem e mostre conteúdo do motor para garantir que veja que vamos fazer dele nosso cilindro aqui. Eu tenho um tamanho aqui em mente. A escala disso será 0,85 por 0,85 por 0,1, algo menor assim Então, eu também vou definir o valor z para que isso seja 20 para cima um pouco. Também vou definir o material para isso aqui como aquele que acabamos de criar, que será o sublinhado em bloco, esse material azul Basicamente, será assim que faremos com que nosso interruptor pareça depois de pisarmos nele Isso é para representar a parte azul dessa chave aqui. Também vou entrar na seção de renderização, onde diz visível aqui Vou apenas desmarcar que, por enquanto, faltam mais duas aqui Então, vamos selecionar nossa rota de cena padrão. O próximo componente que vamos adicionar será a colisão de caixas Mais uma vez, entre em colisão de caixas. Esta eu chamarei de caixa sublinhada dois nela, caixa sublinhada esmagada com esse Vou definir a localização 13 no Z. Vou definir as extensões da caixa aqui embaixo para 42 por 100 por 13, algo pequeno assim Isso serve para representar a área de colisão depois de derrubarmos o bloco Também desça abaixo da seção de colisão e vamos definir a predefinição de colisão para que ela seja bloqueada Mais um componente para adicionar aqui, clique na rota padrão da cena. Mais uma vez, vamos acrescentar que este será um componente de áudio logo no topo, Áudio. Vou deixar esse nome. Não, na verdade eu vou mudar para Música. Em vez disso, vamos transformá-lo em música. Música Com isso selecionado, no painel de detalhes, vamos mudar nosso som aqui para ser nossa música inicial Nós rolamos para baixo. encontrar nosso plano de fundo inicial que Algo importante que também precisamos lembrar de fazer aqui é desmarcar a ativação automática Caso contrário, vamos ouvir isso imediatamente. Abaixo do painel de detalhes, aqui. Você tem essa ativação. É ativado automaticamente, então não queremos que isso seja reproduzido imediatamente. Então, vamos desmarcar isso. E com tudo isso feito, vamos continuar compilando e salvando Aqui terminamos de montar nossos componentes. No próximo vídeo, adicionaremos o script para que essa funcionalidade aconteça nosso switch de bloco P. Nos vemos lá. 52. Script de P Block (Parte #1): Bem-vindo. Neste vídeo, nosso objetivo é adicionar variáveis e criar o script necessário para transformar blocos marcados em moedas. Quando interagimos com um bloco P. Há muito trabalho a ser feito neste. Vamos direto ao assunto mergulhando em nosso bloco BP. Dentro daqui, vamos adicionar três variáveis no painel do meu plano clicando neste botão de adição Esse primeiro será chamado de tag. O tipo será um nome. O segundo será chamado de blocos. Este será do tipo ator. Nos tipos de objeto, referência ao objeto ator. O terceiro tipo que vamos criar será uma variável flutuante E chamaremos isso de duração do tempo de bloqueio. Vamos mudar isso para um carro alegórico. E então, com eles criados, vamos compilar e alterar alguns dos valores aqui, bem como algumas das outras configurações Começando com a duração do nosso tempo de bloqueio, vou definir nosso valor padrão como 8,08 segundos. Também vou marcar essa caixa para ser editável por instância. Então, no editor, podemos substituir isso se quisermos na variável blocks Vou simplesmente mudar o tipo de variável de uma única para uma matriz. Essencialmente, vamos armazenar uma matriz de blocos. Qual matriz de blocos? Vamos armazenar uma matriz de blocos, um compartilhamento, uma tag similar para a tag. Vamos selecionar isso e no painel de detalhes, sob o valor padrão, vamos colocar a tag do bloco. Agora, se isso parece familiar, é porque esse bloco de tags é exatamente o mesmo que colocamos em vários blocos. Aqui em nosso navegador de conteúdo. Eu adicionei isso ao nosso bloco quebrável, bem como ao nosso bloco falso quebrável Se eu abrir um desses que tenho meu nível aqui, tenho um bloco quebrável Podemos ver que, se eu entrar na classe default em uma busca por tag, adicionamos uma tag chamada blocks. Essencialmente , procuraremos todos os blocos que tenham essa tag e adicionaremos aqueles que tenham essa tag a essa matriz de blocos. Tudo bem, continue com nosso roteiro. O que vamos fazer aqui é selecionar nosso componente de caixa e vamos escrever, clicar nele. Vamos adicionar um evento para quando atingirmos esse componente. Isso nos levará ao nosso gráfico de eventos aqui. E queremos verificar se o outro ator é igual ao personagem do nosso jogador. Vou clicar em obter personagem do jogador. Ok, então se isso for verdade, vamos conectar isso a uma ramificação mantendo pressionada a tecla B e clicando com o botão esquerdo. Se isso for verdade, também detectaremos se atingimos isso de uma certa maneira. Então, na verdade, vamos verificar se duas coisas são verdadeiras aqui. Deixe-me desconectar isso Mantendo pressionada a tecla Alt e clicando com o botão esquerdo, extrairemos algumas informações sobre como clicamos nessa caixa E eu posso fazer isso arrastando para fora do nosso pino de saída de impacto. Eu tenho esse resultado de break hit. Vou expandir isso e avaliar o impacto do arrasto normal para fora daqui e digitar um símbolo igual. Vamos verificar se nosso impacto dessa caixa na direção z tem um valor de menos um. Essencialmente, o que estamos verificando aqui é que, quando atingimos esta caixa, impactamos isso na direção descendente? Definindo esse valor aqui, valor z é menos um. Vamos verificar isso. Queremos descobrir se isso também é verdade. Esse é um valor de tolerância. Vou definir isso com um valor muito pequeno. Vou apenas configurá-lo como 2.01 e vamos verificar se ambos são verdadeiros Vou me arrastar até aqui e digitar e estou procurando por um lingote And e vou conectá-lo ao outro lado E então vamos conectar a saída disso em nosso nó de ramificação. Então, estamos basicamente verificando, ei, alguma coisa atingiu nossa caixa? Vamos ver, foi o personagem do nosso jogador? Foi o outro ator que fez sucesso? E, a propósito, eles o atingiram em uma direção descendente? Eles pararam com isso? Se ambas forem verdadeiras, queremos fazer alguma coisa. A primeira coisa que vamos fazer é lançar o personagem. Essa é uma função específica de um personagem. Então, vou arrastar para fora do nosso personagem get player e digitar launch. Você encontrará essa função se arrastar para fora do personagem get player. A razão pela qual vamos fazer isso é que vamos mostrar o personagem um pouco quando ele pisar nele Isso só vai colocá-los um pouco na direção Z. Vou definir isso como 400 e vou trazer um nó de redirecionamento aqui para que não precisemos desorganizar um gráfico visual OK. Então, logo depois disso, o que vamos fazer é conectar isso a um nó de sequência, mantendo pressionada a tecla S e clicando com o botão esquerdo. A razão pela qual estou trazendo uma nota de sequência é porque queremos que várias coisas aconteçam aqui. A nota de sequência nos ajudará a mantê-la organizada. Então, vou clicar neste pino de anúncio algumas vezes para adicionar mais pinos de saída Ok, a primeira coisa que quero fazer nosso pino zero é clicar com o botão direito do mouse e tocar um som. Toque Sound two D, e o som que eu quero tocar, clicando neste menu suspenso de som , será nosso som de twamp Depois disso, vou arrastar e digitar o emissor de spawn no local Se você quiser fazer uma partícula de Nagra, seria o sistema de desova O sistema de partículas que eu quero usar aqui chama pot bake Isso é daquele pacote de lâminas infinitas que eu adicionei no início do curso Agora eu preciso fornecer um local para isso, bem simples. Podemos escolher aqui um dos nossos componentes onde gostaríamos que isso fosse gerado. Vou escolher meu smash baseado em blocos aqui, arrastá-lo para dentro, vamos sair daqui e dizer obtenha a localização mundial A localização desse componente é onde vamos aparecer neste emissor O que eu também quero fazer é tocar alguma música imediatamente. Vou arrastar nosso componente musical, depois vou sair daqui, basta digitar play. Queremos jogar isso desde o início, então vou deixar esse horário de início sozinho. Essa é a primeira coisa que eu quero fazer. Quando pararmos em nosso bloco clique com o botão esquerdo e arraste, toque na tecla. Eu vou dizer que este é o nosso quarteirão. Opa, bloqueie o script X. Vai ser bom o suficiente colorir esse preto. Ok, está bem organizado. A segunda coisa que quero fazer, vindo um pouco aqui, é reproduzir alguns efeitos de vibração da câmera e feedback forçado. Para isso, vou arrastar e digitar play World Camera shake dentro do meu world camera shake. Vamos clicar aqui e temos nossa câmera BP tremer. A propósito, antes que eu esqueça, esqueci uma coisa quando criei nosso projeto mundial de vibração de câmera Vamos prosseguir e navegar até isso imediatamente. Isso vai te levar para onde isso está. Vou pressionar a barra de espaço abrir a vibração da nossa câmera Vou abrir o editor de plantas completo no lado direito, abaixo dos parâmetros de vibração da câmera Esqueci de adicionar um multiplicador de amplitude de rotação, . Esqueci de adicionar um multiplicador de amplitude de rotação, atualmente é zero. Defina isso como um e, em seguida, vá em frente e salve isso. Vamos precisar disso para realmente ver a câmera tremer abaixo da raiz, tremer , girar, girar, girar, ampliar , multiplicar Defina isso como um. Voltando ao nosso quarteirão, essa será a vibração da nossa câmera. Preciso especificar um epicentro. Vou clicar com o botão direito do mouse em obter o personagem do jogador. Vamos arrastar esse tipo obter a localização do ator. Esse será nosso epicentro, o raio interno e externo Vamos definir isso para 1.000,2 mil. Você pode especificar ou entender exatamente o que eles especificam examinando as dicas de ferramentas. Resumindo, por meio de alguns testes, descobri que esse era um bom alcance, dadas as configurações da minha câmera, para fazer esse world camera shake funcionar. Vou deixar o resto desses parâmetros como estão. Isso fará nossa câmera tremer. Em seguida, vou clicar com o botão direito do mouse para obter o controlador do player. Então, se sairmos do controle do player, isso é só para vocês que controlam. Um controlador físico. Vou jogar para receber feedback. Vamos receber o feedback da força do cliente. Esse é o nodo que estamos procurando. Novamente, se você estiver jogando com mouse e teclado, você pode omitir isso Mas para aqueles que têm um controle conectado, esse é um ótimo slot em nosso recurso de feedback forçado E lá vamos nós com esse pequeno roteiro. Vou seguir em frente , toque novamente na tecla do meu único pino aqui. Isso será chamado de meu script de vibração de câmera e feedback forçado. Pinte esse preto também. Tudo bem, terminei esse pequeno roteiro. Pause o vídeo aqui se precisar. Em seguida, vamos trazer nossa nota de sequência aqui embaixo para construir a partir dos então dois pinos aqui. Vamos selecionar nossas duas malhas de blocos. Vou destacar os dois que usam o controle e clicam neles. Vou arrastá-los até aqui, então tenho uma referência a ambos. Então, podemos sair de qualquer um deles e eu posso digitar a visibilidade definida. E podemos conectar os dois aqui. Conecte isso também aqui, vamos torná-los visíveis. Basicamente, vamos fazer um pouco de truque visual Nós os tornamos invisíveis aqui em nossa janela de exibição. Se você se lembra, na seção de renderização, nós os tornamos invisíveis, essencialmente quando paramos com isso, vamos torná-los visíveis Voltando ao nosso gráfico de eventos, o que também queremos fazer é pegar nosso bloco e nossa caixa, esses dois componentes, arrastá-los para dentro. Se você arrastar qualquer um deles, poderá digitar int, queremos destruir esses dois componentes. Se eu voltar ao nosso ponto de vista aqui, nosso bloco, vamos essencialmente destruir esse Vamos destruir nosso colisor de caixas aqui. Destruindo aqueles dois e fazendo esses dois aparecerem Portanto, é um pouco de prestidigitação visual , se você quiser Ao clicar com o botão esquerdo e arrastar, toque na tecla. Esse vai ser nosso show. Deixe-me colocar isso aqui para que você possa ver o que estou imprimindo aqui. Mostre malhas e destrua componentes. Isso é o que estamos fazendo com esse pequeno roteiro. Em seguida, vamos diminuir o som e construir a partir de nossos três pinos. É aqui que começamos a detectar qual dos nossos blocos tem a etiqueta. Vamos trazer nossa variável aqui. Nós vamos conseguir isso. Vamos conectar isso a uma função para obter todos os atores. O que isso vai fazer é devolver todos os atores que têm essa etiqueta com todos os nossos atores externos. Podemos armazená-los em nossa lista. Vamos armazená-los nessa matriz de blocos. Então, podemos arrastá-lo e soltá-lo aqui. Qualquer bloco em nosso nível que tenha essa etiqueta de bloco, ele encontrará todos eles. Ele os armazenará nesta lista. E então vamos sair daqui trazer quatro cada loop para cada item da nossa lista. Certifique-se de conectar isso também. Para cada item da nossa lista vamos arrastar para fora daqui e lançar para nossa base de blocos B P. Vamos chamar a função dentro do nosso bloco BP, com o bloco base ativado Vamos voltar aqui só um momento. Eu vi como alguns de nossos blocos têm essa etiqueta de bloqueio. Basicamente, estamos encontrando todos eles, restaurando-os nesta lista O que estamos fazendo então é examinar nossa lista aqui, uma de cada vez. E para cada um deles, estamos verificando se ele pertence à base do bloco. Esse é o pai dos nossos blocos aqui? Deixe-me abrir nossa base de blocos aqui. Aqui está nossa base de blocos. Dentro daqui, nossa base de blocos. Criamos essa função de bloqueio que desligará a visibilidade do nosso cubo de blocos Isso vai esconder nosso cubo de blocos. Isso vai desligar a colisão do nosso cubo de blocos. E também vai aumentar a visibilidade do ator infantil. Agora, como temos nosso bloco quebrável que herda de nossa base de blocos de BP, ele propagará esses efeitos até os filhos de nossa base de blocos de Mais uma vez, o bloco quebrável herda da nossa base de blocos BP aqui, dentro do nosso bloco P, dizendo, ei, vamos descobrir se nossos elementos de matriz são desse tipo de base de bloco BP Se estiverem, sim, faça essa função aqui, basicamente esconda o bloco, ative a visibilidade do ator infantil que está dentro. Isso é o que está acontecendo aqui. Clique com o botão esquerdo e arraste ao redor, toque na tecla. Este será meu script de três alfinetes para dizer encontre tudo com etiqueta de bloco e ative função encontrada no bloco pai. O bloco principal é nossa base de blocos da BP. Tudo bem, vamos virar esse quarteirão também. 53. Script de P Block (Parte #2): Mais um pouco do roteiro aqui. Tenho que adicionar mais uma caneta. Essa será uma questão importante que vamos tirar daqui. E vamos digitar o cronômetro definido por evento a partir disso Vamos nos arrastar para trás desse pino de evento. E vamos trazer um evento personalizado. Vamos chamar isso de nosso horário de bloqueio em um evento personalizado. E isso vai disparar quando nosso tempo expirar aqui, nosso tempo será determinado por essa variável, atualmente 8 segundos. Quando pararmos nesse quarteirão, uma das coisas que faremos é definir um cronômetro que durará 8 segundos Depois que o cronômetro terminar, sairemos desse evento personalizado É assim que isso funciona. Vamos sair daqui e digitar quatro em cada loop. O circuito pelo qual vamos percorrer são nossos blocos. Dragão, solte isso aqui. Para cada um dos nossos blocos, vamos mais uma vez lançar na base do bloco. Em seguida, descobriremos se esse bloco na lista é válido, é válido porque poderíamos ter colocado a moeda dentro do bloco, destruindo completamente esse bloco Se o bloco ainda for válido, que significa que não coletamos a moeda que está dentro, ele ainda existe, ainda é válido. Em seguida, vamos sair daqui e dizer “bloqueie”. Vamos chamar qualquer bloco que ainda exista, vamos chamar a função chamada block off, que dentro da nossa base de blocos, o que isso vai fazer é tornar nossa malha de blocos, nosso cubo visível novamente Isso ativará a colisão novamente e fará com que a criança lá dentro fique invisível Retornando ao bloco BP. Também queremos fazer mais uma coisa depois disso, que é trazer nossa música. Em seguida, tire isso e diga, ei, pare de tocar essa música. Nossa música tocará durante esse evento de bloco, se você quiser, mas vamos desligá-la após 8 segundos. Vamos clicar com o botão esquerdo e arrastar, tocar na tecla C. Deixe-me ampliar um pouco aqui. Puxe todo esse quarteirão. Você pode enquadrar isso como pausar um vídeo, se necessário. Este será meu script de cronômetro de bloqueio. Tudo bem. Pinte esse preto também. Muita coisa está acontecendo aqui. Sei que passei por isso muito rápido para tentar encaixar isso no meu limite de tempo de 20 minutos por vídeo. Esta será nossa configuração final aqui. Obviamente, precisamos fazer um teste. Então, compilamos nosso script. Parece bom. Nós o salvamos. O que vou fazer agora é trazer nosso bloco. Vou arrastar e soltar isso no nosso nível. Vou pressionar a tecla para pressioná-la. Agora note que eu tenho três blocos no meu nível 12.3 que têm uma moeda infantil dentro deles. Quando eu parar com isso, esses três blocos, 12,3, se transformarão em moedas Vou coletar apenas esses dois e vou deixar o cronômetro expirar para que esse volte a ser um bloco Antes de fazer tudo isso, quero ressaltar que, com nosso bloco adicionado ao nosso nível aqui, no painel de detalhes, você pode ver que a duração do meu bloqueio está exposta no momento. Então, eu poderia alterar isso se quisesse. Eu poderia substituir essa configuração padrão. E se você tivesse uma segunda instância disso, se eu pressionasse a tecla Alt, clicasse com o botão esquerdo e arrastasse, eu poderia definir isso como um valor diferente Ambos não precisam ter 8 segundos de duração. Você pode alterá-los para o que quiser que sejam. Vamos em frente e nos dar uma jogada rápida aqui. Uma vez que eu pise neste quarteirão. Mudanças na música. Eu vejo esses blocos transformados em moedas. Vou coletar esses dois imediatamente. Vou deixar o cronômetro expirar nesse último. Você pode ver que posso pisar no novo interruptor de bloqueio que parece ter sido quebrado Na verdade, este foi transformado novamente em um bloco. Vamos ter certeza de que eles são de fato invisíveis e estão Eu ainda posso interagir com este novamente e depois coletar a moeda que está dentro, etc Ok, está tudo muito bem. 54. Correções de bugs no P Block (Parte #1): No desenvolvimento de jogos, as coisas nunca saem 100% de acordo com o planejado. E as coisas também deram um pouco errado com nosso bloqueio Temos alguns bugs que precisamos corrigir antes de continuarmos. E você pode realmente ver um dos bugs aqui mesmo em nossa porta de visualização em perspectiva. Ou seja, temos nosso ator infantil, nossa moeda embutida dentro desses blocos se estendem além do nosso bloco. Então isso é um problema. E deixe-me entrar e jogar aqui e expor alguns problemas que estão acontecendo apenas para mostrar aquela primeira daquelas moedas de ator infantil que se estendiam além. Na verdade, subi em cima desses blocos Você pode ver no canto superior esquerdo, eu estou realmente coletando essas moedas. Isso não é o desejado. Outro problema aqui é que, quando eu paro nesse bloco P, essa também não é a música que eu queria tocar. Então, vários problemas estão aqui para resolver antes de continuarmos. Ok, vamos entrar no nosso bloco BP. Algumas coisas que eu quero limpar aqui. Este primeiro é principalmente cosmético porque funciona bem. Nosso componente de caixa aqui, que você pode ver, eu tenho na minha janela de exibição, na verdade também está se estendendo um pouco abaixo do chão Isso realmente não é necessário. Então, tudo o que vou fazer aqui é alterar a extensão z da minha caixa no painel de detalhes. Vou mudar isso para 50, mas também vou aumentar 50 na direção z. Basicamente, isso nos dará o mesmo resultado sem que, estranhamente, permaneça firme. Então esse é o problema número um. Eu queria apenas limpar. O segundo que eu queria limpar é nossa música, nosso componente de áudio chamado Music Over no painel de detalhes. Eu o configurei acidentalmente para iniciar a sugestão de fundo Na verdade, acertei na parte inicial, mas o que eu queria colocar aqui era música inicial Eu tenho essa sugestão musical inicial. Isso é o que deveria ter sido. Portanto, certifique-se de ir em frente e limpar isso. Agora, outro bug que descobri por meio testes de bug está em nosso gráfico de eventos, saindo dos nossos então quatro pinos do nosso nó de sequência. Esse cronômetro de bloqueio, eu o tenho para que, quando a duração do tempo acabar, o tempo de bloqueio acabe Estamos verificando quais atores ainda existem em nossa matriz de blocos. E se eles ainda forem válidos, estamos desativando os efeitos de bloqueio aqui mesmo. E isso está pulando para nossa base de blocos da BP. Eu apenas clico duas vezes nele para pular até lá, e tudo bem. Mas se não houver mais blocos válidos nessa lista, a música na verdade não para. Então, o que eu realmente quero fazer aqui é fazer que, não importa se há algum bloco nesta lista, se há blocos válidos ou não válidos, eu queira parar a música. Isso ocorreria se eu parasse em nosso quarteirão aqui e depois coletasse moedas, 12,3 se eu tivesse coletado todas elas O que aconteceria então é que, quando o tempo de bloqueio expirasse, a música continuaria tocando ao desligá-la ou também não é válida Estamos garantindo que essa música vai parar de qualquer jeito, então certifique-se de implementá-la também. Com isso, vou compilar e proteger. Em seguida, vou abordar a questão de nossa moeda de ator infantil estender além do nosso quarteirão aqui Agora, o problema com isso está dentro da nossa moeda de coleta da BP, temos um raio de esfera aqui de 75, que é muito maior do que o necessário E é por isso que podemos pegar essa moeda quando ela é colocada como atriz infantil em alguns de nossos blocos Deixe-me prosseguir e selecionar nosso bloco quebrável aqui e aqui Dentro de nosso bloco quebrável, que herda de nossa base de blocos, diz-se que nosso ator infantil é nossa moeda de coleta da BP Para evitar todo esse problema, o que precisamos fazer é fazer com que nosso raio de coleta da BP que está inserida como ator infantil, seja muito Então, vamos seguir em frente e fazer isso. Isso vai ser bastante simples. Em vez de 75, vou mudar para 30, o que vai parecer um pouco apertado. Mas, na verdade, não é porque o componente da cápsula que envolve nosso personagem se destaca um pouco. Então, isso vai ser muito bom. Agora, lembre-se de nosso próprio cilindro que viramos de lado, que não tem nenhuma colisão associada a ele, então não precisamos nos preocupar em esbarrar nele Então, uma esfera aqui de 30, esse será um raio decente Agora vá em frente, compile e salve isso. Eu quero que esse raio também corresponda ao raio do nosso colisor de moedas de bloco BP Agora, se você esqueceu, o raio do nosso colisor de moedas dentro do nosso bloco BP será usado para destruir Agora, a única maneira de podermos realmente sobrepor isso é atingindo o bloco P e, assim, ocultando o bloco real em si e sobrepondo a parte central Então, vamos definir o raio da esfera do colisor de moedas aqui como 30 também Se deixássemos em 35, o que aconteceria é que sobreporíamos isso antes de sobrepormos a própria moeda Significa que destruiríamos o bloco antes de podermos pegar a moeda. Definindo que ambos sejam iguais aos 30. Isso significa que pegaremos simultaneamente a moeda que está dentro e destruiremos o próprio bloco inteiro. Tudo bem, vamos compilar e salvar isso. Então, agora, se entrarmos e jogarmos, vou correr até o topo primeiro, apenas para ter certeza de que não podemos nos sobrepor e pegar as moedas enterradas dentro de alguns desses blocos E isso parece muito bom, então vamos parar em nosso quarteirão aqui. Eu vou ter esse direito. Plano musical. Vou coletar algumas moedas aqui depois que o cronômetro expirar Nada com que colidir aqui. Eu ainda deveria ser capaz de colidir com isso e tudo parece estar de volta em ordem A música também tocou. 55. Correções de bugs no P Block (parte #2): Tudo bem, mais algumas coisas que vamos corrigir aqui que estão tangencialmente relacionadas ao nosso bloco Alguns de vocês já notaram, sem dúvida, que ainda podemos quebrar nossos bloqueios mesmo quando somos pequenos assim. E isso não é realmente o planejado. Queremos fazer com que só possamos quebrar nossos bloqueios quando formos grandes. Agora, isso também vai entrar em jogo aqui, porque vamos adicionar um script aos nossos blocos quebráveis para que só possamos quebrá-los quando formos grandes E depois de adicionarmos esse trecho inicial do script, você notará alguns outros problemas relacionados ao nosso sistema de blocos. Com tudo isso dito, vamos entrar em nosso bloco quebrável e adicionar um pouco de script aqui Vamos adicionar um pouco de script entre nosso bloco de ocorrência de eventos e nosso nó de sequência aqui. E, felizmente, poderemos usar um atalho para algumas Mas esta primeira parte precisamos escrever de novo. Então, vou manter pressionado o controle e aumentar o zoom. A primeira coisa que quero fazer é clicar com o botão direito do mouse em algum espaço vazio. Vamos pegar o personagem do jogador, depois vamos sair disso e lançar dois personagens em terceira pessoa. Agora, a razão pela qual vamos fazer isso, vamos conectar isso assim, é porque dentro do nosso personagem em terceira pessoa, temos uma variável chamada pontos de vida. Então, vamos sair daqui e digitar os pontos de vida. Vamos obter esse valor e depois vamos avaliá-lo. Então, vou sair daqui e dizer se nossos pontos de vida são maiores ou iguais a dois. Agora eu não pretendo que superemos dois pontos de vida, zero pontos de vida, você está morto Um ponto de vida, você é pequeno. Dois pontos de vida, você é grande, você tem poder de flor de fogo. Mas vamos dizer que se você estiver acima disso, você sabe que se você quisesse adicionar um terceiro, quarto, quinto ponto de vida, você poderia. Então, vou manter pressionada a tecla B e clicar com o botão esquerdo e vamos conectar isso como nossa condição. Então, se nossos pontos de vida forem maiores ou iguais a dois, diremos que, sim, de fato, se você for grande, vamos quebrar o bloco e fazer todo esse tipo de coisa. Está tudo muito bem. No entanto, e se tivermos apenas um ponto de vida e não formos maiores ou iguais a dois? O que fazemos então? O que queremos construir a partir desse falso galho. Então, a primeira coisa que vamos fazer é criar um pouco de espaço extra aqui. E eu vou acabar com isso. E então vou entrar no meu navegador de conteúdo e roubar um código dentro de nossas moedas de bloco da BP Então vá em frente e mergulhe aqui e vamos roubar esse bloco, um conjunto de scripts, clique com o botão esquerdo e arraste, controle C, volte para o nosso bloco E eu vou controlar V também fora do nosso galho falso. Vamos reproduzir essa linha do tempo de animação em bloco. Mas antes de realmente fazermos isso, eu quero trazer um som aqui também. Vamos eliminar nosso tipo de galho falso no jogo. Sound Two D, eu vou dizer que vamos tocar o Brick Bump Sound Em seguida, vamos jogar nossa linha do tempo desde o início. Essa linha do tempo simplesmente fará com que elevemos um pouco nosso componente do cubo na direção Z. Vamos esbarrar nele em vez de destruí-lo para coincidir com Também vamos tocar esse som aqui. Eu vou dizer que o jogador é pequeno, não destrua o bloco. Ok, então vamos adicionar esse pequeno script aqui que estará fora da ramificação falsa aqui. Certifique-se de ter compilado e salvo algo mais que eu queira fazer enquanto estivermos aqui. Isso também será apenas para fins visuais. Eu vou vir aqui, na verdade, quero mudar os efeitos V associados a essa quebra do nosso bloqueio. Na verdade, encontrei um que eu gosto um pouco mais. E para isso, na verdade não precisaremos desse deslocamento aqui Então, eu vou me livrar disso e vou conectar isso aqui dessa forma. E a partícula de efeito V que eu quero tocar, eu poderia colocá-la aqui também No entanto, vou trabalhar um pouco em nossa base de blocos de BP, para que possamos configurá-la lá E então ele propagará essa mudança para esse bloco infantil Então, na verdade, vou abrir nossa base de blocos da BP aqui imediatamente, porque precisaremos dela daqui a pouco. Vamos abrir isso. E aqui dentro da minha base de blocos BP, vou selecionar minha partícula Interact VFX E aqui vamos mudar nossa partícula no painel de detalhes para ser misturada Que eu tenho esse conjunto misto, alto, eu gosto muito desse . Então, observe que o configuramos aqui em nossa base de blocos. Se eu compilasse e salvasse e agora voltasse para nosso bloco BP breakable, que é filho da nossa base de blocos BP Podemos ver que a mudança agora se propagou. Tudo bem, então com isso, devemos ser capazes de testar se esse bloco é quebrável ou não E então lidaremos com algumas das ramificações em bloco do que acabamos de fazer aqui Então, vou clicar em play. Posso quebrar esse tijolo? Não, eu não posso. Agora você vê as ramificações do bloco Eu posso ver aquela moeda lá dentro. Vamos lidar com isso daqui a pouco. No entanto, vamos tentar agora. Novamente, se eu for um pouco agora, teremos um efeito um pouco mais explosivo quando eu quebrar esse tijolo E isso está parecendo muito bom. Tudo bem, a seguir, vamos lidar com a questão de ver aquela moeda no interior do nosso bloco aqui. Agora, a razão pela qual estávamos vendo essa moeda está dentro da nossa base de blocos da BP Temos nosso ator infantil aqui. Foi aqui que realmente colocamos a moeda dentro de nossos atores infantis Deixe-me falar com o ator infantil BP Block Breakable. Você pode ver que é aí que estamos inserindo nossa moeda de coleta BP. Mas aqui em nossa base, nossa base de blocos de BP e, novamente, nosso bloco quebrável herda de nossa base de blocos de BP Vá em frente e selecione seu ator infantil. E no painel de detalhes, queremos garantir que, por padrão, isso não esteja visível. Esqueci de desmarcar essa caixa aqui. Agora, além disso, eu também quero fazer com que nosso ator infantil fique preso ao nosso próprio cubo Então, quando bloqueamos nosso bloco de BP quebrável, quando somos pequenos, nosso ator infantil no colisor de moedas também ficará bloqueado Eles vão subir quando atingirmos o cubo, então vou clicar com o botão esquerdo e arrastar isso para a direita em cima do nosso cubo E agora você vê nosso relacionamento como tal. Temos nosso cubo, que é nosso bloco aqui, o ator infantil está preso a ele por dentro E então nosso colisor de moedas, que estamos usando para realmente destruir todo esse bloco se nos sobrepormos, está ligado ao nosso ator filho Então, vamos compilar e salvar esse tipo de relacionamento aqui Sendo isso anexado a isso, que está anexado a isso, também devemos ver refletido em nosso bloco BP quebrável, agora que compilamos e salvamos em nossa base, e pronto, vamos salvar nosso bloco quebrável Agora, se eu voltar para o meu nível, vamos jogar aqui. Note que sou pequeno, vou pular direto para cima. Eu latido isso. Não vejo a moeda do lado de dentro. Isso é o pretendido. Ótimo. Vou parar no meu quarteirão aqui. Agora. Eu vejo as moedas. Eu posso colecioná-los. Vou deixar esse sem coleta até que o tempo acabe e eu possa voltar para ele acabe e eu possa voltar para Então, mais alguns bugs foram corrigidos. Mais uma coisa que devo mencionar, depois de fazermos essa alteração de partícula dentro de nossa base de blocos de BP aqui, uma vez que fizemos essa alteração e compilamos e dissemos que a mudança se propagou para todos os blocos filhos, o que eu sei que você pode não querer ter em seus vários Então, se você definiu isso aqui em sua base de blocos, o que você vai querer fazer é voltar vários blocos secundários, como sua moeda invisível, sua moeda BP, Q, etc E se você os abrir e ficar abaixo dos padrões de classe, você pode simplesmente limpar essa partícula de efeitos visuais de interação para não ter esse grande tipo de Além disso, esqueci de mencionar que dentro do nosso bloco BP, falso quebrável, talvez você queira eliminar esse deslocamento que tínhamos ao entrar aqui Eu fiz isso entre as tomadas aqui, então talvez você queira eliminar isso também. Aqui eu estou bem com isso. Interaja com a partícula VFX. Mas pensei em incluí-los antes de terminarmos este vídeo. 56. Script de bloco em P (Parte #3): Tudo bem, temos mais um problema relacionado a blocos para resolver, e isso é com nossos blocos invisíveis aqui. E como você pode ver, eu tenho dois deles colocados ao lado desses tijolos quebráveis E se eu entrar e jogar, obviamente você não conseguirá vê-los desde o início. E, de fato, você pode interagir com eles como eu farei com um desses agora. O problema surge. No entanto, quando me aproximo de um desses blocos invisíveis pela parte superior, eu caio por ele e tento interagir com ele. Eu não posso. O que está acontecendo aqui? Bem, se eu fosse voltar para minha base de blocos BP, esse é o modelo do qual todos os outros blocos são derivados Você deve ter se lembrado de que adicionamos um ator infantil em um colisor de moedas dentro do nosso bloco base E isso tinha a ver com o bloco RP. Agora, o que está acontecendo dentro da nossa base de blocos da BP, da qual todos os nossos outros blocos derivam algum código, é que se sobrepuséssemos aquele colisor de moedas, esse cara aqui, destruiríamos o ator, ou seja, o seja O que está acontecendo é que quando estamos passando pela parte superior do nosso bloco de moedas invisível, aqui, deixe-me abrir esta planta Há nosso bloco de moedas invisível quando estamos passando pelo topo dele, e tudo é invisível. Na verdade, estamos sobrepondo esse colisor de moedas que está dentro dessa caixa, destruindo assim Se cairmos do topo, na verdade destruímos o ator, que significa que não podemos interagir com ele novamente. Como podemos consertar tudo isso? Bem, a solução é realmente muito fácil. Portanto, certifique-se de entrar no seu bloco BP, moeda invisível Encontre isso em seu navegador de conteúdo. Vamos acessar o gráfico de eventos desse evento. Comece a jogar. Estávamos definindo a visibilidade do nosso cubo para ser invisível Vamos apenas fazer backup desses dois nós aqui. Na verdade, vou mencioná-los um pouco mais alto. Vou colocar um nó de sequência logo após esses dois primeiros, então vou manter pressionada a tecla S e clicar com o botão esquerdo. E vamos fazer duas coisas fora do evento beginplay. A primeira coisa que continuaremos fazendo é esconder nosso cubo, o bloco, para que pareça invisível A segunda coisa que vou fazer, no entanto, é trazer uma referência à nossa moeda que é essencialmente nosso ator infantil aqui, nosso colisor de moedas Vamos trazer isso também. Recebemos essas duas referências. Vamos apenas tirar um desses e dizer destruir o componente para isso. Podemos essencialmente destruir esses dois componentes porque não queremos transformar esse tijolo invisível em uma moeda. Quando paramos no bloco, vamos clicar com o botão esquerdo do mouse e arrastar essa tecla ao redor deles. E eu vou dizer que se você tem funcionalidade de bloco implementada, se você tem a funcionalidade de bloco implementada, esse código realmente importa para você? Se você ainda não implementou isso , isso não importaria. Então, vamos compilar isso e salvar. E entre e jogue mais uma vez, só para mostrar que meus blocos invisíveis estão ali . Eu vou aparecer ali mesmo. Então, como você pode ver, eu posso interagir com um desses na parte inferior, assim. No entanto, agora, quando eu desço de cima para baixo, ele não vai realmente destruir aquele bloco. Então, agora, se eu pular, ainda posso interagir com aquele bloco invisível. Então é assim que você resolve esse problema. Tudo bem, pessoal. Isso fará tudo por este. Nos vemos na próxima. 57. Blueprint de Goomba: Agora que temos alguns blocos no lugar, vamos criar nossa primeira nação, uma goomba, para isso, vamos usar um Tanto no Unreal, daremos a ele algumas funcionalidades básicas para se mover para a esquerda e para a direita, em vez de patrulhar o L sem pensar ou procurar o ou procurar Também vamos fazer com que nossas gengivas possam ser destruídas Ou estamos parando para atirar uma bola de fogo no ataque Vamos começar. Agora, de volta aqui no Unreal, você deve ter essas oito imagens diferentes do Goomba que importamos no início do curso E eles devem existir dentro da pasta Texturas. Agora, o que vamos fazer a seguir é clicar com o botão esquerdo na pasta do meu jogo de plataforma, clicar com o botão direito do mouse e criar uma nova pasta chamada simplesmente sprites Em seguida, vou voltar para minha pasta Texturas e selecionar todas essas oito texturas E se eu mantiver pressionada a tecla shift depois de selecionar a primeira aqui, posso selecionar a oitava para selecionar todas elas. No meio, posso clicar com o botão direito em qualquer uma para selecionar todas elas. No meio, delas E, ao fazer isso, posso entrar em Sprite Actions, Create Sprite Agora, ao fazer isso, teremos criado oito ativos de sprites Vou simplesmente pegar tudo isso e você pode ver que estão todos destacados agora. E eu vou clicar com o botão esquerdo e arrastá-los para essa pasta de sprites, a pasta de sprites, em vez de movê-los aqui E então, se entrarmos na nossa pasta de sprites, você pode ver que todos eles existem aqui Em seguida, o que vamos fazer é garantir que todos os oito sejam selecionados. Novamente, selecionarei o primeiro, pressionarei a tecla Shift e selecionarei o último. Depois, posso clicar com o botão direito e quero criar um flip book. Eu simplesmente vou chamar isso de Goomba. Agora, tenho certeza de que a maioria de vocês está familiarizada com o que é um flip book, mas se eu simplesmente clicar duas vezes nesse recurso para abri-lo na parte inferior, você pode ver basicamente que eu tenho todos os oito sprites diferentes nesta linha do tempo e ele está sendo reproduzido rapidamente No lado direito onde temos nosso painel de detalhes, você pode ver que posso expandir nossos quadros-chave aqui. Se eu clicar com o botão direito sobre isso, posso expandir tudo isso. Você pode ver todos esses sprites diferentes. E está mostrando que está jogando todos esses oito sprites em rápida sucessão Agora você pode desacelerar ou acelerar isso ajustando esse valor de quadros por segundo aqui Então, se eu definir, isso é algo como três, e pressionar Enter, os argumentos aparecerão como se estivessem andando muito mais devagar Isso funciona como um flip-book infantil. Se eu acelerar isso configurando algo como 30, vai parecer que Argumba está andando muito mais rápido Vou voltar ao valor padrão de 15, mas isso é essencialmente o que é um flip book É um monte de imagens reproduzidas em rápida sucessão. Vamos usar isso em nosso ativo inimigo aqui, nosso projeto inimigo para fazer parecer que Argumba está Vá em frente, diga isso e feche aqui atrás. Coma nosso editor de níveis. Vou entrar na minha pasta de plantas e vou encontrar um espaço vazio Vou clicar com o botão direito do mouse, vou criar uma nova classe de blueprint Essa será uma classe de personagem porque eu quero que esse inimigo se mova. Então, isso nos dará a habilidade de movê-lo pelo personagem. E eu vou escolher o sublinhado BP, mas como o nome com isso selecionado, vou pressionar a barra de espaço aqui para abri-lo E, no painel de componentes, começaremos a adicionar alguns componentes. Então, o que vou fazer primeiro é adicionar os componentes na relação de vinculação correta E então eu vou voltar e definir os detalhes de cada um. Ok, então o primeiro que vou usar será anexado ao componente da minha cápsula aqui. Vou clicar em Adicionar. Isso vai ser Sphere Collision, e vou chamar isso de alcance de detecção do meu jogador Em seguida, vou selecionar meu componente de cápsula novamente e vou anexar outro a ele. Vou clicar em Adicionar. Vou adicionar um pouco mais de colisão esférica. Esse eu vou chamar de Collider. Vou ter diferentes colisores o jogador detecta o alcance e este chamado Collider por diferentes motivos. Você verá para que servem e daqui a pouco aqui Ok, com nosso componente de colisão aqui selecionado, vou adicionar tipo no flipbook. Vamos adicionar um flipbook de papel em dois D. Vou simplesmente deixar o nome do flip-book de papel. Isso é bom. Em seguida, vou selecionar nosso colisor mais uma vez porque quero outro componente conectado ao nosso colisor. Clique em Adicionar. Isso vai ser Box Collision, Box Collision, aqui mesmo Esta será nossa caixa Stomp. Vamos usar isso para detectar quando nosso personagem jogador parou em Argumba Tudo bem, vamos começar a ajustar alguns detalhes desses vários componentes Vou começar com meu componente de colisão de cápsulas Esse é um tipo de coisa em forma de cápsula. Vou definir a meia altura da cápsula para 55 e o raio para 45 Agora, observe que esse componente especifica que esse será o tipo de peão Vou rolar para baixo até a área de colisão. A colisão predefinida aqui será peão. Portanto, você pode ver que, embora isso esteja configurado como uma predefinição de colisão de peões, seu tipo de objeto é conhecido como E o que resultará aqui é que outros objetos rotulados como peão colidiriam O que significa que, se tivéssemos múltiplos desses gumbas, eles essencialmente colidiriam um com O que eu não quero que eles façam. Eu quero que eles possam passar um pelo outro. O que eu realmente vou fazer aqui é mudar nossa predefinição de colisão de peão para personalizada e, em seguida, ajustar alguns de nossos canais de colisão Vou fazer com que tudo comece como ignorado, mas depois vou definir nosso mundo estático e dinâmico mundial. Vou configurar isso para bloquear para que essa gumba não caia pelo mundo Certifique-se de que esta é a configuração de colisão para o componente da cápsula O tipo de objeto personalizado é peão e, em seguida, essas várias configurações de canal estão aqui Em seguida, vou selecionar nosso player para detectar o alcance do raio da esfera Para isso, vou colocar um conjunto bem grande. Vou definir isso para 2000. E vamos simplesmente usar isso para detectar quando nosso personagem de jogador entrou nesse raio Então, a gumba pode começar a se mover de alguma forma, forma ou forma Você pode definir isso como quiser, mas o meu vai ser bem grande para começar. OK. Em seguida, vou selecionar nosso componente do colisor Aquele é esse pequeno raio aqui. Para isso, vou definir o raio da esfera como um pouco maior Vou configurá-lo para 55, um pouco maior assim. E então, nas predefinições de colisão, vou expandir isso para baixo também Vou mudar isso para ser personalizado em vez de bola de sobreposição, vai ser personalizado Vou configurar isso para bloquear tudo, exceto que vou alterá-lo para que peões, qualquer coisa rotulada como um tipo de objeto de peão, possa ser Detectaremos se um jogador, o jogador que também é tipo peão, se sobrepõe para determinar se você, o jogador, morre ou perde um o jogador, morre ou perde Observe também que esse componente específico bloqueará uma bola de fogo Vamos usar isso para detectar se uma bola de fogo atinge esse componente, porque está configurado para bloquear uma bola de fogo para determinar se a gumba deve ser Em seguida, vamos configurar nosso flip book de papel. Vá em frente e selecione esse componente. No painel de detalhes, temos uma área onde podemos inserir um flipbook de origem Clique nisso. Temos nosso flipbook Goomba Vai começar bem grande, então vamos seguir em frente e reduzi-lo. Clique no botão de bloqueio para dimensionar isso uniformemente. Vou definir isso como 0,25 em toda a linha, então vai caber muito bem lá Eu também vou descer e configurar a colisão para não seja uma predefinição de colisão de colisão Vamos configurar isso para que não haja colisão. Não vamos verificar se há nenhum tipo de colisão. É para isso que nossos vários outros aceleradores estarão aqui a seguir Vamos clicar em nossa caixa de parada E com isso selecionado no painel Detalhes, vou definir a extensão da caixa como 40 por 100 por três, algo meio fino assim. E então eu vou movê-lo para cima na direção Z. Vou mudar isso para 60 para que fique cabeça de Argumba desse jeito E então eu preciso descer sob a colisão. Você sabe o que, na verdade, antes de eu entrar na predefinição de colisão, vou definir a espessura da linha para ser um pouco mais grossa Vou definir que seja algo como três, só para deixar um pouco mais óbvio que essa será nossa área de parada. Ok, então com isso selecionado, desça abaixo da seção de colisão Vamos alterar a predefinição de colisão aqui para ser personalizada E para isso, vamos configurar isso para bloquear tudo , exceto que vamos ignorar as bolas de fogo, então não queremos que as bolas de fogo colidam magicamente contra elas Estamos bem com isso passando por aqui. Vamos verificar esse outro colisor para ver se ele está sendo atingido por uma bola de fogo Nossa caixa de parada será estritamente para ver se um peão vai parar em cima dela E vamos realmente verificar , eventualmente, por meio de algum script, se nosso personagem está caindo sobre isso na direção Z. Ok, mais uma coisa que eu quero ajustar aqui será encontrada no componente de movimento do nosso personagem. Isso surgiu automaticamente ao ter isso como um modelo de classe de personagem Esse é o componente mágico que determinará muitas das características de movimento desse projeto de classe de personagem Se eu descer abaixo no painel de detalhes, acabarei encontrando esta seção de movimento da plaina Quero restringir o movimento de nossos goombas a um determinado plano. Então, vou selecionar aqui e quero garantir que restringimos nosso plano ao eixo y. Observe que, uma vez que eu defina isso como Y, ela definirá nossa restrição de plano como uma no eixo y. O que isso basicamente fará é proibir nosso gumba de se mover no eixo y. No entanto, é permitido mover-se no eixo x e no eixo z. Agora vou ajudar a restringir os meios que não podem se mover nesse determinado eixo Então, deixe-me compilar isso e salvá-lo imediatamente. E coloque um desses em nosso nível. Eu tenho meus dois principais conjuntos de snapping em D na minha janela de visualização aqui. Deixe-me ir em frente e arrastar e soltar em um estilo Goomba. Então. Toque na tecla para encaixá-los no chão. Então você pode ver que o plano Y é indicado pela nossa seta verde aqui Então, estamos essencialmente dizendo que você não pode se mover ao longo desse eixo verde. Você pode se mover ao longo do eixo x vermelho ou do eixo z azul, mas não ao longo do Y. Tudo bem, começamos muito bem Então, com tudo isso feito, certifique-se de ter salvo tudo. Você pode entrar no arquivo e salvar todos os caras. Isso bastará para este, vencerá o próximo. 58. Goomba danifica jogador: Tudo bem, bem-vindo de volta. Neste vídeo, nosso objetivo é fazer com que nosso Goomba possa danificar o jogador Agora, como esse será um vídeo curto, vou mostrar rapidamente como você também pode definir sua própria imagem em miniatura aqui Porque agora nosso BP Goomba só tem esse rosto como uma Se você clicar com o botão direito do mouse nesse ativo e acessar as ações do ativo, poderá capturar uma miniatura Então você pode ver, eu já tenho meu gumba meio que emoldurado na minha janela de exibição aqui Vou apenas tocar na tecla G para esconder todos esses ícones. O Gkey pode mostrar ou ocultar todos esses ícones do editor. Vou clicar com o botão direito sobre isso. Vamos até Act Actions e capturaremos uma miniatura. Então, aí temos uma bela imagem em miniatura. Deixe-me ir em frente e entrar no nosso Goomba agora selecionando-o e pressionando esta E agora vamos trabalhar para que nosso gumba possa danificar nosso jogador dentro do nosso projeto de Goomba Vamos adicionar uma variável na seção My Blueprint Clique no botão de adição da variável aqui. Vou chamar isso de saúde para subtrair e vou fazer disso um número inteiro Se eu compilar isso no painel de detalhes, vou definir o valor para menos um E você verá y menos um em apenas um segundo aqui. Então o que eu vou fazer é clicar com o botão direito no nosso componente do colisor, esse cara aqui Vamos ampliar para que você possa ver de qual deles estou falando. Então, queremos fazer com que nosso personagem seja danificado ao se deparar com nossa gumba Vamos usar esse componente do colisor para isso. Clique com o botão direito do mouse no evento para iniciar a sobreposição. Isso nos levará ao nosso gráfico de eventos. Podemos verificar se nosso outro ator é nosso personagem em terceira pessoa. Então, saia daqui e digite o personagem de terceira pessoa que queremos transmitir para nosso personagem de terceira pessoa. Porque dentro do nosso personagem em terceira pessoa, se você se lembra do início do curso, criamos um evento personalizado chamado adjust hip points. É aqui que podemos chamar esse evento personalizado e, em seguida , inserir quantos pontos do quadril queremos modificar e temos nossa saúde para subtrair aqui Tem um valor de menos um. Então, podemos conectar isso diretamente assim. Agora, só para deixar claro exatamente o que está acontecendo aqui, vou clicar duas vezes em nossa chamada de pontos de vida ajustados aqui. Mais uma vez, esse é um evento personalizado que vive dentro de nosso personagem em terceira pessoa. E se eu clicar duas vezes nisso, ele abrirá meu plano de personagem em terceira pessoa e me levará direto para onde esse evento personalizado existe Agora você pode ver isso no meu projeto do BP Goomba, estamos passando por nossos pontos de vida sendo modificados aqui em nosso sendo modificados aqui em Aqui estamos dizendo que, nosso modificador de ponto de vida, queremos passar pelo valor de menos um O negativo fluirá para este evento personalizado e seguida, descerá até aqui para ser ajustado a partir da quantidade atual de pontos de vida de nossos personagens. Se nosso personagem tiver dois pontos de vida, se passarmos por menos 12 mais um negativo , obviamente será um. É assim que isso funciona. Tudo bem, com isso, vamos compilar nosso Goomba Salve, deixe-me clicar com o botão esquerdo e arrastar. Vou fazer uma caixa de comentários em torno desse jogador do Goomba Damages. E então entraremos nos testes de jogo aqui rapidamente. Agora, antes de fazer isso, quero ir até meu personagem de terceira pessoa da BP e ter certeza que tenho tudo resolvido aqui O que eu quero garantir é que eu olhe para o meu ponto de vista. Atualmente, meu personagem é pequeno e eles têm essa coloração azul e material azul aplicados a eles. Quero ter certeza de que nosso valor atual de pontos de vida também corresponda a isso. Então, vou definir meus pontos de vida aqui. Atualmente, o padrão é dois. Na verdade, quero padronizar isso para um. Quando temos um ponto de vida, eu quero ficar triste. Deixe-me voltar ao meu gráfico de eventos aqui, onde estamos ajustando nossos pontos de vida, que chamaremos de evento para clientes Quero ter certeza de que nossos materiais que estamos trocando, com base na quantidade de pontos de vida que temos, façam sentido Novamente, por padrão, teremos um ponto de vida. Quero ter certeza de que, quando esse índice de pontos de vida for um, nosso material aqui será realmente azul. Eu quero que seja azul. E temos um ponto de vida. E quero ter certeza de que , quando nosso valor de pontos de vida aqui for dois, na verdade seremos verdes. E eu estou compartilhando o verde e acho que esse é o único lugar onde estávamos ajustando o material Parece que sim. OK. Então, vamos compilar e salvar isso. E agora eu vou começar a jogar. Estou triste agora, antes de me deparar com esse idiota. Na verdade, vou coletar essa flor de fogo aqui. Pulando para cima. Sou azul com um ponto de vida e tenho dois pontos de vida. Sou verde, isso é ótimo. Vamos encontrar nosso goomba aqui. Nada muda. Obviamente, isso é um problema. Agora, o motivo desse problema é porque atualmente não estamos enfrentando esse colisor, estamos enfrentando essa plataforma Stomp. E é difícil ver desse ângulo, mas se eu for da perspectiva do nosso jogador, podemos ver que nossas gumbas estão um pouco fora da nossa linha central aqui quando colocamos nossa gumba em nosso nível E deixe-me tentar colocar um novo. Atualmente, ele o está colocando em uma ampla profundidade de 63 negativos, que não é o que queríamos, mesmo com nossas configurações de snap ativadas Não sei por que está fazendo isso. Deixe-me deletar isso. Mas vou definir isso como zero em Y. Dessa forma, nossa gumba deve estar alinhada com nosso personagem Então, agora, quando eu entrar e jogar, começaremos a coletar aquela flor de fogo, Al, certo? E vamos encontrar nosso goomba aqui. Eu perco uma ponta no quadril e, tecnicamente, estamos mortos agora. Então, isso parece estar funcionando bem. Tudo bem, limpei tudo aí, pessoal, isso bastará com este Veja quando será a próxima. 59. Destrua Goomba via Stomp: Bem-vindo. Neste vídeo, nosso objetivo é fazer com que nosso goomba possa ser destruído com um Então, vamos direto ao assunto. Vou selecionar nosso goomba aqui em nosso controle de nível, mais E para abrir nosso A primeira coisa que vou fazer é adicionar uma variável. Agora, essa será uma variável inteira que conterá um valor em pontos Então, vou selecionar nossa saúde existente para subtrair a variável inteira Vou fazer control plus D para duplicar isso. E eu vou simplesmente chamar isso de pontos. Pressione Enter. Então eu vou compilar isso, e vou dizer que pisar ou destruir nosso Guba em geral valerá 200 pontos aqui no painel de Doce. A próxima coisa que quero fazer é encontrar algum espaço vazio aqui em nosso gráfico. Vou fazer algo fora do Event Begin Play. Então, vou clicar com o botão esquerdo e arrastar esses dois. Livre-se disso logo abaixo do Event Begin Play. Vou clicar com o botão direito do mouse. Vamos comprar o controle do player. E vamos sair daqui e lançar para controlar nosso controlador BP Player E a razão pela qual vamos fazer isso é para que possamos criar uma referência ao nosso controle de jogador aqui ao começar a jogar. Então, vou escrever, clique neste alfinete. Vamos promover isso para uma variável. Vou simplesmente encurtar o nome para Player Controller. E isso bastará para esse roteiro. Então, clique com o botão esquerdo e arraste, toque na tecla C e eu chamarei isso de meu script F to Player Controller e pintei esse preto como eu faço. Agora, meu motivo para adicionar essa referência ao controlador do Player é porque vamos querer chamar nossos pontos de anúncio de evento personalizado dentro do nosso controlador do Player daqui a pouco Mas antes de tudo, vamos nos preocupar em criar nossa interação, nosso script de parada de interação. Então, para isso, vamos voltar ao nosso Viewpoort que possamos ver com o que diabos estamos lidando aqui Criamos este colisor de caixas Stomp. era assim que o chamávamos, está bem no topo da cabeça de nossos goombas E nós a chamamos de caixa Stomp. É uma colisão de caixas que acabamos de esmagar. Vamos clicar com o botão direito do mouse nesse componente e, em seguida, adicionar um evento para quando atingirmos esse componente. Ao fazer isso, ele nos levará ao nosso gráfico de eventos. E vou reduzir isso um pouco. E o que queremos fazer é usar nosso outro distintivo de ator, ter certeza de que é nosso personagem jogador que está pisando Então, podemos fazer iguais e, em seguida, podemos sair desse personagem de obtenção de jogador Como alternativa, você também pode fazer um elenco para seu personagem em terceira pessoa aqui. Para fazer uma verificação, vou tirar isso e trazer um nó de ramificação. Vou conectar a condição automaticamente. Mas, na verdade, há duas condições que vamos querer verificar aqui. Verificar se foi o personagem do jogador que pisou é uma delas Mas a outra coisa que queremos fazer é descobrir em que direção estamos atingindo essa caixa de pressão Só queremos continuar avançando se estivermos caindo até o topo de nossa caixa de parada aqui Para isso, podemos quebrar nosso hit aqui, arrastar para fora do resultado do break hit. Vamos expandir isso para baixo dessa forma. Vamos sair do nosso normal de impacto aqui mesmo. E então vamos trazer um nó de igualdade para nossa tolerância Você pode definir isso como algo pequeno, como 0,1. Isso é essencialmente quanto perdão você quer ter em termos de quão direta é nossa queda no Z Para o nosso Z, queremos verificar se estamos caindo em cima dele em vez de bater nele pela parte Para isso, vamos adicionar um valor de menos um. Um valor de menos um vai verificar se estamos caindo baixo no eixo z, descendo para baixo em cima dele E isso é só dar um pouco de perdão. Então, essa é uma segunda condição que queremos verificar porque temos duas condições que queremos verificar. Vou clicar com o botão direito e trazer um e Bullull. Lá vamos nós. E ouro, se nosso jogador for a primeira coisa que queremos verificar e verificar se estamos caindo um top É a segunda coisa que quero verificar, se ambas forem verdadeiras, essa será nossa condição final. Vamos verificar se isso e aquilo são verdadeiros. O que queremos fazer é inserir um nó de sequência, manter pressionada a tecla S e clicar com o botão esquerdo. Isso lhe dará um nó de sequência. E então vou adicionar outro alfinete para que possamos organizar nossos próximos scripts aqui. Bonito e arrumado, mas essa será a parte inicial aqui. Ok, do nosso então pino zero, temos várias coisas que vamos fazer Então, vou dar uma olhada aqui um pouco. A primeira coisa que vou fazer é sair daqui e digitar play. Som Vamos tocar um som em dois D, e o som que eu quero tocar será Swish Ok, a segunda coisa que eu quero fazer é pegar nosso componente do colisor Então, vou arrastar isso para o nosso gráfico. Agora, se você não tem certeza de qual é o componente do colisor aqui em nossa janela de exibição, é aquela coisa que está danificando no momento Jogador. Estamos verificando se nosso jogador se depara com isso. E, na verdade, se estende um pouco além da lateral de nossa caixa de pressão aqui Conforme projetado, o que queremos fazer é sair do nosso colisor Queremos ativar a colisão. Vai trazer outra cópia do nosso colisor aqui Você pode excluir um deles. O que queremos fazer é mudar isso para que não haja colisão, não queremos mais ser capazes de colidir contra A próxima coisa que queremos fazer é trazer nosso componente de caixa de parada. Vamos arrastar isso para dentro. Vamos destruir esse componente. Depois de pararmos em nosso gumbo aqui, vamos em frente e destruamos toda aquela caixa de parada Não precisamos mais disso. A próxima coisa que vamos fazer é trazer nosso flipbook de papel, arrastar aquele cara para dentro e vamos definir a escala mundial desse conjunto em escala mundial três D, essencialmente vamos esmagar isso Então, eu tenho alguns valores rígidos que vou inserir aqui Vou definir isso como 0,25 por 0,25 por 0,1 Agora, podemos ajustar isso em algum momento no futuro, mas vamos tentar isso como nosso Agora, além de apertar nosso flip-book, também queremos movê-lo para baixo na Porque se simplesmente o esmagássemos, ele o esmagaria dos limites superior e inferior E pareceria que estava flutuando no espaço, o que eu não quero. Vamos retirar nosso flip-book de papel aqui e adicionar compensação mundial E vamos movê-lo um pouco para baixo no eixo z, o quanto eu vou fazer com um valor Z de menos 35. Novamente, podemos ajustar isso, mas vamos começar com isso. Então, a última coisa que eu quero fazer é desativar o movimento desse goomba Agora, agora, nossas gumbas não estão se movendo, mas faremos nossas gumbas se movam aqui em pouco tempo E quero garantir que, uma vez que paremos nela, ela não possa mais se mover, mesmo que nossas gumbas não se movam agora Vamos fazer com que garanta que eles parem de se mover assim que pararmos parem de se mover assim que pararmos arrastar o componente de movimento do nosso personagem. Você pode encontrar essa função para desativar o movimento, Você pode encontrar essa função para desativar o movimento Então essa é a primeira parte do script que queremos fazer aqui. Vou arrastar tudo isso. Clique com o botão esquerdo, toque na tecla. Então, eu vou dizer que do nosso pino zero, este será o nosso ME ha ha squish X. Vou colorir esse preto imediatamente A próxima coisa que eu gostaria de fazer é entrar na primeira parte da nossa sequência aqui. Deixe-me aumentar o zoom mantendo pressionado o controle e usando a roda de rolagem. Vou clicar com o botão direito do mouse. Vamos contratar um ator. É aqui que vamos fazer alguns pontos trabalharem aqui. Vamos usar nossa transformação de ator porque vamos botão direito do mouse e gerar o ator da classe Vamos precisar de nossa transformação de ator, nossa transformação de gumbos, para contar nossos pontos, nossos pontos de BP para surgirem Você se lembra disso de antes, nossos pontos BP agora mais uma vez em nosso plano de pontos P. Eu só vou navegar até ele navegando até ele. Aqui está, em nosso navegador de conteúdo, BP points, fizemos com que esses pontos de adição de variáveis que vivem aqui sejam expostos no spawn Isso faz com que aqui em nosso BP, quando estivermos gerando isso, esse valor em pontos seja exposto Para que possamos personalizá-lo onde quisermos aqui. Dentro do nosso Goomba, queremos adicionar 200 pontos. Então, vamos arrastar e soltar nossa variável até nossa soma de pontos. Vamos apenas ajustar isso dessa forma. Então, isso vai gerar essa tela no jogo. Essa é apenas a parte de exibição. Agora precisamos realmente adicionar os pontos ao nosso controlador de jogador. Então, para isso, temos nossa referência de controlador de player. Arraste isso para dentro, nós vamos pegar isso. Em seguida, vamos sair disso e digitar pontos de adição. Mais uma vez, temos esse evento personalizado dentro do nosso controlador de jogador chamado Add Points. E aqui também podemos inserir quantos pontos você deseja adicionar? Bem, temos uma variável para a qual você pode arrastar para fora dela e conectá-la dessa forma para que seja totalmente válida. No entanto, vou adicionar um novo apenas para fins organizacionais. Então, agora, mais uma vez, uma vez que pisamos em nosso Goomba aqui e verificamos que isso é verdade, nosso personagem está pisando nele e nós estamos pisando em Vamos adicionar esses pontos. E se eu clicar duas vezes aqui, essa chamada dos pontos de adição, isso nos levará do nosso BP Goomba para onde esse evento personalizado realmente acontece dentro do nosso controlador de jogador BP Então é aqui que a adição real de pontos vai acontecer. E lembre-se, mais uma vez, em nosso Hud, nosso Hud está vinculado a essa variável de pontos aqui, dentro de nossos controladores de jogador Então, isso também será atualizado aqui em Argumba. Vou clicar com o botão esquerdo e arrastar ao redor deles. Vou tocar na tecla C e vou chamar isso meu script Adicionar pontos do programa e pintá-lo de preto como minha alma. Tudo bem, mais um script aqui para adicionar. Vamos mover nosso nó de sequência um pouco mais para baixo. Mantenha pressionada a tecla de controle e aumente o zoom. Neste último trecho do roteiro, vamos destruir Argumba em uma chama de glória Então, vamos sair daqui, vamos trazer um nó de atraso. E vamos atrasar por meio segundo, 0,5 vai ser bom. Em seguida, clicaremos com o botão direito do mouse e digitaremos Interact. Agora eu tenho essa função que criamos em nossa biblioteca de plantas no início do curso Foi criado para bloquear interações, mas também podemos usá-lo aqui dentro do nosso Goomba. Vamos trazer isso para cá. Ele está pedindo que incluamos um efeito sonoro em alguns efeitos visuais, bem como um local de efeito visual para nosso efeito sonoro. Vamos codificar isso como uma explosão. Vou usar a bomba de explosão. Vamos também codificar um efeito de partícula, vou digitar Flame Explode Esse também existe no pacote de efeitos Infinity Blade Agora, para a localização do nosso efeito V, vou escolher a localização do nosso colisor aqui E então eu vou fazer isso digamos, obter a localização mundial. Vamos usar a localização do nosso colisor aqui como um local onde vamos gerar esses efeitos visuais Então, quando tudo isso estiver pronto, vou sair disso e digitar destroy actor dessa forma. Clique com o botão esquerdo, arraste, toque na tecla que eu deveria fazer para destruir. Então vamos lá, colorindo esse preto também. Agora, isso vai ficar muito bom aqui, então vamos diminuir o zoom um pouco. Seu roteiro final será mais ou menos assim. Vamos compilar e salvar. E agora vamos realmente verificar se, ao jogar nosso jogo, podemos pisar em nossa gumba. Aqui vamos nós. Tudo bem, obviamente o gumba não está móvel no momento, mas pisando nele, algumas centenas parecem que Guba foi esmagado. Guba morreu. Tudo parecia estar funcionando como pretendido lá. Além disso, eu também quero ter certeza de que, se batermos na lateral dela, colidiremos e morreremos com ela primeiro, antes de atingir a caixa de detonação. Se nos aproximarmos pela lateral, sim. Deveria morrer desse jeito. Mas se eu voltar e jogar, eu deveria ser capaz de parar com ele mais uma vez. Veja como ele é esmagado lá embaixo, e ele vive por meio segundo antes de ser totalmente Então, podemos apreciar o efeito de esmagamento. Excelente. Agora, se você quiser ver esses scripts mais uma vez, destacarei cada parte aqui se quiser pausar o vídeo Este é um nó igual que é um nó negativo fora do pino zero, sem colisão para o colisor Estamos usando esse colisor para gerar efeitos de partículas Este é o nosso efeito sonoro suave. 0,25 0,25 0,1 negativo 35. E o Z para o show de compensação mundial adiciona pontos gerados em nossos pontos de Criamos nossa variável de pontos para inserir uma quantidade Z de pontos para adicionar que atualmente está definida como 200. E, finalmente, estamos jogando nossos efeitos de destruição. Depois de meio segundo, temos meio segundo lá. Estamos usando a localização do nosso colisor para gerar um efeito de partícula, um efeito sonoro e, em seguida, destruindo Tudo bem, pessoal, isso vai valer a pena dessa vez. Nos vemos na próxima. 60. Destrua Goomba através do Fireball: Bem-vindo. Agora que podemos destruir nosso goomba pisando nele, vamos fazer com que possamos destruir nosso goomba atirando bolas de fogo nele nosso goomba atirando Então, vou selecionar meu gumba aqui mesmo no meu controle Viewport Além disso, E é uma tecla de atalho para abri-lo imediatamente. E vou pular para minha guia Viewport e selecionar meu componente de colisão. E deixe-me falar sobre isso. Você também pode tocar na tecla para se concentrar nela depois de selecioná-la. Vamos dar uma olhada, mais uma vez, como lembrete, com nosso colisor selecionado no painel de componentes, como configuramos a colisão no painel de detalhes, configuramos para no painel de detalhes, configuramos que esse colisor bloqueie Novamente, nosso projeto de bola de fogo é rotulado como um tipo de objeto de bola de fogo Agora fizemos isso intencionalmente para que pudéssemos detectar impactos quando bolas de fogo atingissem esse Então, o que vamos fazer é botão direito do mouse em nosso componente do colisor Vamos adicionar um evento para quando outro componente atingir isso. Vamos ser saltados da nossa janela de visualização para o gráfico de eventos Vou clicar com o botão direito do mouse e dar uma panorâmica aqui embaixo. Aqui está nosso componente On, bata no colisor. E o que queremos verificar é se o outro ator que acerta isso é nossa bola de fogo da BP, vamos lançar uma bola de fogo da BP, não uma bola de fogo com barra de fogo Então, tenha cuidado com isso. Então, o que queremos fazer é depois essa bola de fogo atingir aquele barulho, queremos destruir a própria Vou tirar minha bola de fogo da BP e dizer destrua o ator que destruirá a bola destrua o ator que destruirá a E então vamos trazer uma nota de sequência. Então, vou manter pressionado o botão esquerdo do SK. E vamos fazer várias coisas fora do nosso nó de sequência. A primeira coisa que quero fazer é somar pontos, como se fôssemos parar com isso. Então, eu vou trapacear e vir aqui e pegar todo o nosso programa, adicionar pontos Vou clicar com o botão esquerdo e arrastar tudo isso. Pressione o controle C, eu vou copiar isso. Em seguida, vou usar o botão direito do mouse para voltar aqui, clicando com o botão esquerdo do mouse aqui. E então controle V para colar tudo isso. Coloque meu nó de sequência lá também. Então, isso vai ser um pequeno atalho. Nada mais a mudar com esse script, embora eu vá apenas alterar o comentário para ter um zero na frente. Então essa é a primeira coisa que queremos fazer, é mostrar e somar pontos. Vou clicar duas vezes nesse fio para inserir o nó de redirecionamento E então a segunda coisa que eu quero fazer, e mais uma vez podemos roubar alguns códigos do topo, são meus efeitos de play destroy Eu quero a maior parte disso, embora eu não queira fazer esse atraso aqui. Então, vou selecionar tudo isso, vou fazer o controle C, depois vou clicar com o botão esquerdo aqui. E então controle V em 3 passos. Também vou me livrar desse atraso, porque quero que a bola de fogo a destrua imediatamente E eu vou mudar essa caixa de comentários também. Em nossa localização de colisores, vamos jogar aquela explosão Essa partícula de explosão da chama. E então vamos destruir o próprio ator, ou seja, Argumba Com tudo isso pronto, vou continuar compilando e salvando E vamos entrar e jogar. Aqui vamos nós. Vou coletar minhas flores de fogo. Tudo bem, e depois atirar uma bola de fogo. E espero que, bem, tenhamos que bater nele primeiro. O boom se incendeia imediatamente. Então, isso está funcionando conforme o esperado. Excelente. Agora fizemos com que possamos atirar em nosso Umba e destruí-lo mais uma vez. Essa é a parte inicial do nosso roteiro. Estamos lançando para a bola de fogo. Destruindo a bola de fogo. E depois fora do nosso nó de sequência. Aqui estamos mostrando e adicionando alguns pontos. Mais uma vez, essa função de adição de pontos. Isso chama esse evento personalizado no próprio controlador do player. E então vamos reproduzir esses efeitos de destruição. Nós nos livramos desse nó de atraso do trecho do script Stomp acima Tudo bem, pessoal, isso vai fazer tudo por esse. Nos vemos na próxima. 61. Goomba Patroller (Parte #1): Tudo bem, agora conseguimos que nosso Goomba possa causar danos a nós, ao jogador, e possamos destruir o Agora vamos fazer nosso Goomba girar em torno de nosso nível. E vamos começar dando a ele um comportamento básico de patrulha. E isso vai nos envolver mais uma vez, mergulhando em nosso projeto de Goomba Então você pode selecioná-lo e outro meio de abri-lo está aqui em nosso esboço com ele selecionado, vá para editar BP Gumba, vamos começar criando algumas variáveis no painel M blueprint Então, na seção de variáveis, clique neste botão de adição. Este primeiro, vou chamar velocidade. Vamos mudar isso para um flutuador, e isso será usado para determinar a velocidade com que queremos que nosso Goomba A segunda variável que eu quero criar aqui será chamada de flip book. Multiplicador da taxa de jogo. Agora, dependendo da velocidade com que nosso Goomba se moverá, talvez queiramos ajustar a velocidade com que nosso flip book Então, vamos configurar um script para que possamos basicamente ler a velocidade do nosso Goomba e ajustar a taxa de reprodução do nosso flip-book para que nosso Goomba aqui possa parar os pés mais rápido ou mais devagar parar os pés mais rápido ou mais devagar E então eu vou adicionar mais uma variável aqui. Isso será chamado de mover para a esquerda. Isso vai ser um lingote. Será usado para determinar se queremos que nosso Guba se mova originalmente para a esquerda quando começarem a patrulhar aqui se queremos que nosso Guba se mova originalmente para a esquerda quando começarem a patrulhar Agora, vou compilar para que eu possa definir algum valor padrão, alguns valores padrão Na verdade, há algumas outras caixas de seleção que eu também vou querer marcar. Vamos começar com nossa velocidade. Vou definir isso para um valor padrão de 200 e também vou marcar essa caixa, e também vou marcar por exemplo, editável Quando eu verificar isso, você também verá esse ícone de bola, vá lá. Eles fazem a mesma coisa, basicamente tornando essa instância variável editável O que isso significa é que depois de compilar, aqui no seu editor de níveis, você selecionou um Goomba Agora você pode ver essa propriedade no editor de níveis. Em nosso padrão, se eu apenas pesquisar por padrão, eu o encontrarei. OK. Há uma velocidade padrão. Deixe-me sair de lá. Tudo bem, voltando ao nosso projeto Gumbo, nosso multiplicador de taxa de jogo em flip book. Na verdade, vamos calcular qual deve ser esse valor. Então, tudo bem que eu deixe isso como um valor zero por enquanto, porque por meio de algum script, vamos , por padrão, ter um valor aqui. E então nosso movimento deixou o booleano aqui. Eu vou dizer que sim, queremos mover para a esquerda por padrão. Então, vamos verificar isso. E vamos tornar essa instância editável também para que essa propriedade também seja exposta no editor Vá em frente, compile e salve. Em seguida, vamos pular para nossa guia de script de construção. Agora, o script de construção é onde você pode configurar algum script que deseja executar durante o tempo de design. Isso é útil para definir alguns parâmetros que você pode querer ter em seu plano antes que o jogo realmente comece a ser executado E vamos usá-lo para esse propósito. A primeira coisa que vou fazer é trazer componente de movimento do nosso personagem. Agora, nosso componente de movimento de personagem determina muitas coisas sobre como nosso personagem se move, incluindo uma propriedade muito importante aqui chamada Max Walk Speed. Esse cara aqui dentro do componente de movimento do personagem chamado Max Walk Speed determina a rapidez sua classe de personagem pode se mover. Agora, eu quero essencialmente ignorar isso. E a maneira de contornar isso é arrastando o componente de movimento do nosso personagem Depois de obtermos nosso componente, podemos conversar e editar qualquer uma dessas propriedades diferentes em nosso painel de detalhes. Então, vou sair daqui e digitar as velocidades máximas de caminhada definidas. Então, vamos lá. Arraste para fora daqui. Defina a velocidade máxima de caminhada. E você notará que nossa velocidade máxima de caminhada é um valor flutuante e, basicamente, substituiremos nossa velocidade máxima de caminhada padrão pela nossa variável de velocidade aqui nossa velocidade máxima de caminhada padrão pela nossa variável de velocidade Então, essencialmente, aqui durante o tempo de design, vamos dizer: Ei, eu sei que você tem essa velocidade de caminhada padrão de 600. Mas, sim, antes mesmo de o jogo rodar, vamos anular isso Vamos alterar sua velocidade para ser o que estiver contido nessa variável flutuante. Tudo bem. Mais uma vez, mencionei antes que usaremos esse multiplicador de taxa de jogo do flip book aqui neste script de construção e calcularemos automaticamente Agora, a maneira de fazer isso é sair da nossa velocidade máxima de caminhada dividir e dividir e dividir por 100. 100? Bem, é porque é um valor que eu determinei com antecedência, funcionou muito bem E vamos pegar o resultado disso e fixá-lo Vamos fixar o flutuador. Vamos garantir que esse valor gerado por meio dessa matemática sempre fique entre 0,1 e no máximo três. E isso, vamos conectar ao nosso multiplicador de taxa de reprodução do flip book Arraste e solte isso em seu gráfico. Queremos definir isso. Então é aqui que vamos configurar nosso multiplicador de taxa de jogo do flip book Eu mencionei que não ficaria no valor zero. Então, o resultado dessa matemática, vamos inseri-lo como nosso multiplicador de taxa de jogo do flip book Então, se pegarmos esse valor, nosso valor de velocidade de 200 e dividi-lo por 100, isso seria igual a isso, estaria dentro dessa faixa. E esse seria nosso multiplicador de taxa de jogo do flip book. 62. Goomba Patroller (Parte #2): Então, agora calculamos nosso multiplicador de taxa de jogo do flip book, mas ainda não o estamos usando e, para isso , precisamos pular para o gráfico Agora, aqui dentro do nosso enxerto de eventos, vamos adicionar um script para detectar quando nosso jogador está dentro do alcance Só faremos com que nosso jogador comece a patrulhar quando estiver ao alcance Agora, deixe-me ir para nossa janela de exibição aqui. Vou voltar aqui um pouco e tenho um raio gigante ao redor do meu Guba Eu chamo isso de nosso alcance de detecção de jogadores. Então é isso que vamos usar para detectar se o personagem do jogador está dentro do alcance. Se eles estiverem ao alcance, então vamos fazer esse cara se mover. Então, vamos clicar com o botão direito do mouse em nosso alcance de detecção do player. Vamos adicionar um evento para quando começarmos a sobrepor isso Isso nos levará ao nosso gráfico de eventos, o que é ótimo. E enquanto estamos aqui, vamos acabar com a sobreposição imediatamente. Clique com o botão direito no alcance de detecção do player. Vamos adicionar um evento para finalizar a sobreposição. Para isso, vamos detectar se é nosso jogador que está fazendo a sobreposição ou encerrando a sobreposição Então eu posso clicar com o botão direito, eu vou pegar o personagem do jogador. Se nosso outro ator for igual ao personagem do jogador, você também pode, alternativamente escalar dois personagens em terceira pessoa aqui. Este é apenas o método que estou usando para verificar se é nosso personagem jogável Vou duplicar esse controle D para duplicar esse outro ato Então, vou trazer duas notas de ramificação mantendo pressionada a tecla B, botão esquerdo, clique com o botão esquerdo, tipo. Então, vamos dizer que, se é verdade que o personagem do nosso jogador está sobreposto, esse jogador detecta Vamos conectar isso essencialmente a um nó de porta. Para abrir o portão, basicamente verificaremos em cada quadro se nosso jogador está ou não dentro desse alcance. Para isso, precisaremos de um carrapato. Se eu escrever Click em algum espaço vazio, vou trazer um evento de tick-node Tick, dispara cada quadro. E então vou escrever, clique em algum espaço vazio e insira um nó de portão. Na verdade, se você segurar a tecla G e clicar com o botão esquerdo, também abrirá um nó de portão. cada moldura que vamos entrar em nosso portão, você pode pensar nesse portão como um verdadeiro portão de ferro. E você vai fazer uma pausa aqui neste portão até que o portão seja instruído a ser aberto Agora vamos abrir esse portão e, assim, avançar além desse ponto somente se nosso jogador estiver sobrepondo o alcance de detecção do jogador No entanto, fecharemos esse portão se nosso jogador acabar sobrepondo esse alcance Você está vendo como isso vai funcionar. Em cada quadro, estamos essencialmente no portão. No entanto, não vamos avançar além daqui, menos que nossos jogadores se sobreponham a esse alcance de detecção E vamos avançar além desse portão. Se tivermos sobreposto esse alcance de detecção, fecharemos esse O que significa que não avançaremos além daqui se acabarmos sobrepondo esse intervalo Então, o que queremos fazer se estivermos indo além do portão aqui? Bem, queremos clicar com o botão direito do mouse e adicionar entradas de movimento Esse nó que tem como alvo nosso peão, que é um personagem, pode mover automaticamente nosso personagem Agora, em que direção queremos movê-los? Bem, vamos escolher uma direção para mover nosso Guba aqui, para a esquerda ou para a direita, dependendo desse lingote Agora, vamos retirar nosso ouro de movimento para a esquerda e inserir um nó de seleção aqui Dependendo do nosso valor de retorno aqui. Vamos recuar na direção do nosso mundo aqui. Este é um vetor x, y e z. Seremos capazes de indicar qual é nosso valor de retorno aqui com base em nosso ouro Se isso for verdade, vamos definir nosso valor x como menos um. Essencialmente, isso vai se mover para esquerda nessa direção no editor de níveis. No entanto, se mover para a esquerda, se esse booleano for falso, exibiremos isso como nossa direção mundial, definindo o valor x como um Você está vendo como isso funciona aqui, dependendo do valor desse booleano Se for verdade, vamos produzir esse conjunto de valores como nossa direção mundial para mover nosso Goomba Se isso for falso, escolheremos esse conjunto de parâmetros como nossa direção mundial. Um pouco mais para ir aqui, só precisamos agora. Traga nosso flipbook, taxa de jogo, multiplicador, arraste e solte Nós vamos conseguir isso. E também nosso próprio componente de flip book em papel Vamos arrastar nosso flipbook de papel. Agora vamos tirar nosso flipbook e dizer definir a taxa de jogo Qual é a taxa em que queremos nosso flip-book de papel? Isso é apenas para o aspecto visual em si. Bem, queremos jogar nesse ritmo aqui. Novamente, tudo isso é calculado automaticamente aqui em nosso script de construção. Se aumentássemos a velocidade do nosso Goomba para 300, seria 300/100, o que seria Nosso multiplicador de taxa de flip play seria aumentado para refletir nosso aumento Esse será o nosso roteiro aqui para mover o Guba em uma determinada direção Vou clicar com o botão esquerdo e arrastar e tocar na tecla C. E vou chamar isso de minha Bomba. Em uma determinada direção somente se o jogador estiver ao alcance, eu vou colorir isso de preto. Está tudo bem. Agora vou compilar aqui apenas para ter certeza de que nosso script está bom E é isso, vou clicar em Salvar. Agora, se você ver minha configuração aqui no nível, eu apenas reviso as coisas um pouco entre os vídeos para encurtar a duração desse Eu coloquei meu jogador como ator inicial bem à esquerda aqui. Acabei de aumentar um pouco meu nível e os coloquei fora do alcance. Aqui é Guba. O alcance de detecção do Goomba está aqui. Agora vamos dar uma olhada no painel de detalhes. Se eu digitar por padrão na área de pesquisa, agora vou rolar para baixo. E aqui na parte inferior, você pode ver que tenho meu valor de velocidade definido como 200 e meu movimento para a esquerda está marcado. Quando meu jogador estiver sobrepondo esse raio, ele deve começar a se mover para a esquerda Agora, ainda haverá um problema com isso, mas vamos começar , jogar e testar. Tudo bem, no meu nível eu vou sobrepor essa faixa, aí vem o Sr. Agora, o problema que você vai notar aqui é que ele não tem como voltar atrás. Ele vai continuar se movendo para a esquerda até cair do penhasco Existe alguma maneira de fazer com que ele se mova corretamente? Bem, na verdade, existe. Vamos voltar ao nosso projeto de goomba. E a maneira como vamos fazer isso é detectar se nosso goomba atinge E se eles atingirem algo enquanto se movem para a esquerda, vamos simplesmente atirar na outra direção, alternando esse movimento para a esquerda Para isso, vamos rolar um pouco até aqui em nosso gráfico de eventos. E vamos pegar nosso componente de cápsula aqui no topo. Deixe-me pular para o meu ponto de vista para que você possa ver onde está nosso componente da cápsula Vou clicar com o botão direito do mouse aqui e tocar na tecla para pular até ela. Então, vamos usar esse componente aqui, vamos detectar um impacto naquele cara. Curiosidade, além de clicar com o botão direito do mouse e adicionar um evento usando o menu do botão direito com um componente selecionado. Você também pode arrastar para baixo no painel de detalhes dessa forma. E você pode encontrar uma lista de eventos aqui. Vou encontrar um componente, clique aqui, clique neste botão de adição e eu vou direto para cá. Então, o que vou fazer é divulgar meu sucesso aqui. Mantendo pressionado o controle, aumentando o zoom, arrastando. Vamos quebrar nosso resultado de sucesso. Expanda isso. Vamos usar nosso normal de impacto aqui. Arraste esse tipo no sinal de igual. Vamos adicionar um pouco de tolerância aqui. Vamos fazer 0,1 E vamos dizer que, se impactarmos algo nessa direção, definirei nosso valor x 1,0. Em seguida, vamos retirá-lo e conectá-lo a um nó de ramificação. Mas também quero ter certeza de que façamos isso uma vez para que isso não registre vários acertos. Vou manter pressionada a tecla e clicar com o botão esquerdo. E vamos dizer que se nosso Goomba aqui bater em alguma coisa, enquanto vamos alternar ou mover para a esquerda uma vez, vamos arrastar isso para dentro, vamos configurá-lo Na verdade, vou trazer uma cópia disso imediatamente , porque nossa configuração ficará assim Eu também vou trazer um nó de flip-flop aqui. Chinelo. E nós vamos fazer isso, vamos fazer isso. E eu vou traduzir isso para todos vocês aqui em pouco tempo. Certifique-se de que, com este movimento inferior, setter esquerdo, marque esta caixa Deixe este na parte superior, desmarcado. Depois disso, vamos trazer um nó de atraso. Então, vou manter pressionada a tecla e clicar com o botão esquerdo, gerando um atraso. Vamos conectar os dois aqui. Vou ter um atraso de, digamos, meio segundo. Vamos dizer que depois de meio segundo vamos reiniciar isso uma vez. E eu odeio esses fios cruzados, então vou clicar duas vezes sobre isso algumas vezes para trazer isso de volta Vamos subir e recomeçar desse jeito. Este será essencialmente nosso roteiro para alternar nosso movimento para a esquerda Esqueci uma coisa aqui fora do nosso impacto normal Vou cortar esse fio segurando a tecla Alt e clicando com o botão esquerdo Eu quero obter o valor absoluto aqui. Arraste para fora do impacto normal, vamos digitar o vetor, obter Abs. Vamos pegar a saída disso e conectá-la na parte superior, assim, não importa em que direção estejamos indo, esquerda ou para a direita, obteremos o valor absoluto desse impacto normal. Vamos dizer, ei, isso é igual ao valor x de um? Se isso for verdade na primeira vez, vamos verificar o movimento para a esquerda na segunda vez e depois vamos atrasar por meio segundo. Vamos reiniciar isso. Em seguida, eles batem novamente. Vamos ligá-lo novamente. Aperte outra coisa novamente. Nós vamos desligá-lo. Bata em algo novamente, ligue-o novamente, etc. Vou clicar com o botão esquerdo e arrastar tudo isso, tocar na tecla C, isso será chamado de detectar que Goomba atinge alguma coisa e muda de direção se isso Tudo bem, vamos colorir isso de preto e depois vamos testar isso. Compile isso e salve Para testar isso, vou simplesmente arrastar um bloco Pode ser qualquer bloco aqui, mas vou fazer um bloco quebrável Vou tocar nessa tecla para colocá-la no chão. E, na verdade, vou movê-lo um pouco para cima para que não fique grudado no chão. Lá vamos nós. Tudo bem. Entrando e brincando No momento, não estou na faixa de detecção. Está se movendo para a esquerda. Ele vai atingir aquele quarteirão, ele vai atirar nele agora mesmo. Vamos ver se isso realmente moverá nosso Guba de volta para o outro lado Vou mover meu Guba um pouco mais dessa maneira. Me afaste um pouco do caminho, e eu vou trazer um segundo ali mesmo. Aqui vamos nós. Na área de dissecação, goma atinge um bloco, vai na outra direção, atinge um bloco, vai na Então essa vai ser uma patrulha muito simples. E, mais uma vez, podemos personalizar nosso Gumba aqui determinando qual será sua direção padrão Eu selecionei meu Gumba, apenas digitei o padrão aqui para ver meus parâmetros expostos Vou mudar a velocidade desta vez para 300. E eu vou dizer que desta vez eu não quero que eles se movam para a esquerda, então uma vez que eu sobreponha essa faixa, ele vai realmente começar a se mover para a direita Então, vamos começar a jogar rapidamente. Começamos a andar para a direita. Como você pode ver, ele está se movendo mais rápido, seu flip book está se movendo mais rápido Portanto, temos gumbas altamente personalizáveis, você pode alterar esses valores para qualquer instância Tudo bem, pessoal, isso vai fazer tudo para o nosso patrulheiro Gumba Nos vemos a todos no próximo vídeo. 63. Goomba Seeker: Bem vindo de volta. Bem, temos um goomba que pode patrulhar em Vamos criar uma versão um pouco mais agressiva, que possa buscar nosso jogador. Para fazer isso, vamos mergulhar de volta no nosso BP Goomba Vá em frente e clique duas vezes nele. Vamos começar criando outra variável na seção de Clicando nesse botão de adição, vou criar uma que seja o Seeker Enemy Vou compilar imediatamente e tornar essa instância editável, que significa que posso ajustá-la quando tivermos nosso Goomba E também vou dizer que, por padrão, não é um inimigo secreto. Nós o teremos como patrulheiro por padrão. Mas se quisermos transformar isso em um inimigo secreto, podemos fazer isso com essa variável booleana agora criada Podemos usar nosso script existente aqui. E vamos adicionar um script aqui para avaliar essa variável. Então, vou manter pressionado o controle e clicar com o botão esquerdo e arrastar isso para aqui. E então eu vou sair daqui e conectar isso a um nó de ramificação. E vamos ajustar nosso fluxo para fora desse portão para que, em vez de mover automaticamente nosso jogador alguma forma de patrulha para a esquerda ou para a direita, avaliemos se esse é um inimigo caçador Agora, se é falso que esse não seja um inimigo caçador, simplesmente faremos o movimento de patrulhamento No entanto, se for verdade, o que vamos fazer é botão direito do mouse em algum espaço vazio. Vamos pegar o controlador, o peão, pegar o controlador Também vamos clicar com o botão direito do mouse e tirar o personagem do jogador do nosso controle aqui. Vou arrastar e digitar um movimento simples para ator. Quem queremos controlar aqui? O controlador do nosso Goomba aqui, esse será o nosso controlador e o objetivo é o personagem do nosso jogador Agora, em vez de mergulhar em algumas árvores de comportamento, que é a maneira certa fazer com que os inimigos se movam pelo seu nível, esse é um meio muito simples de ter IA muito simples, se você quiser. Diremos que, se for um inimigo secreto, simplesmente moveremos nosso goomba até aqui para atingir nosso jogador Esse vai ser o objetivo. Isso é bastante simples. Outra coisa que queremos fazer aqui é ficar sob a classe padrão do nosso gumba O que vamos fazer aqui é expandir isso um pouco. Vamos digitar o controlador e queremos desmarcar isso, usar a rotação do controlador ya Se isso for marcado, o que essencialmente aconteceria é que, se nosso gumba fosse configurado para ser um buscador, ele se viraria e tentaria ir atrás Não queremos que nosso goomba se vire de forma alguma. Queremos que eles fiquem orientados, meio que voltados para a câmera aqui. Então, ao desmarcar isso, basicamente garantiremos que não rotacionaremos nosso personagem de forma alguma Agora, se tentássemos começar e testar isso compilando, salvando e acessando nosso editor de níveis e dizendo que Argumba aqui é uma nota de caçador de inimigos, eu estou pesquisando pela minha A propósito, a razão pela qual todas essas variáveis existem por padrão é porque todas essas variáveis que são configuradas para serem editáveis por instância, deixe-me esclarecer o painel de detalhes aqui A categoria nela é chamada de padrão. Vou configurá-lo para ser um inimigo buscador. Ao fazer isso, todo esse movimento para a esquerda na verdade não faz nada, realmente não importa. Considere isso, avalie bem. O que vamos fazer agora é testar isso. E assim que meu jogador se sobrepuser, o Guba começará a procurar meu jogador Embora você perceba um problema, parece que estou ao alcance, parece que estou ao alcance mas Gumba não está vindo atrás de mim. O que está acontecendo? Bem, para fazer essa simples mudança para o nó do ator funcionar, precisamos adicionar algo conhecido como malha de navegação ao nosso nível. Para fazer isso, precisamos voltar ao nosso editor de níveis aqui e no painel de atores locais. E se você não tiver o painel de atores de lugares ativado, você pode obtê-lo vindo aqui, selecionando colocar painel de atores e digitando nav Queremos adicionar algo conhecido como volume limites de malha de navegação E o que isso basicamente faz é especificar uma área do espaço onde você pode ter inimigos como argumba aqui, onde eles podem navegar Depois de trazer isso , será bem pequeno. Vou fazer com que isso seja maior do que precisa ser. E eu posso fazer isso selecionando-o no painel de detalhes. E eu quero encontrar minhas configurações de pincel aqui. Onde posso definir o tamanho desse determinado volume. Eu vou fazer isso enorme na minha, eu vou fazer isso ser 40.000 algo enorme assim Muito maior do que eu precisava ser algo para cobrir toda essa faixa de terra Vou definir o valor de y aqui para ser algo muito maior do que eu precisava ser. Então, vou configurá-lo para ser algo como 2000. E eu vou definir o z como algo como 5.000 no caso de eu subir esse nível verticalmente, algo enorme assim Está essencialmente envolvido em todo o meu espaço de jogo aqui. Agora, para realmente ver onde essa malha de navegação está cobrindo, você pode tocar na tecla P, como em Paul. E qualquer coisa em verde aqui é essencialmente identificada como espaço que pode ser navegado A tecla pode ativar ou desativar isso. Além disso, se você clicar na opção Mostrar aqui, poderá ver a navegação mostrada ou ocultada por essa tecla. Você também pode clicar nele ou desativá-lo usando esse método. Agora você pode observar algumas áreas que não são cobertas pela nossa malha de navegação verde aqui. Como em torno de nossos quarteirões no chão e até mesmo ao redor do próprio Goomba, esses designam áreas onde nosso inimigo, nosso Guba aqui, Eu quero estreitar um pouco esse espaço, então eu tenho um pequeno truque aqui dentro da minha goomba Vamos mergulhar de volta em nosso goomba aqui. E vou selecionar quatro componentes diferentes. E vou até minha janela de visualização aqui só para que você possa ver quais são esses componentes Vou selecionar meu componente de cápsula e, em seguida, vou manter pressionada a tecla de controle e fazer com que meu player detecte o alcance, meu colisor e minha caixa de parada Todos os quatro, esses são vários volumes de colisão. Em seguida, no painel de detalhes, vou fazer uma pesquisa para sempre. Tenho essa caixa de seleção para N ever effect navigation Eu quero desmarcar isso. Agora, se eu salvar isso e voltar ao meu nível, você pode ver que esse espaço está apertado embaixo da nossa gumba Isso fará com que, quando nossa gumba se mover para frente e para trás, ela não pare na área em que começou. Tudo bem? Então, com tudo isso, certifique-se de ter sua gumba selecionada em seu nível Em seus parâmetros padrão aqui que você expôs ao editor. Você verificou que é um buscador. Observe que, quando se trata de um buscador, esse movimento para a esquerda realmente não importa Eu vou entrar e jogar. Agora, quando meu personagem se sobrepõe no alcance de detecção, Argumba agora procurará O jogador não parece muito diferente no momento, mas observe como ele está sendo muito agressivo na forma como me procura. Mesmo que eu venha até aqui, você também me procurará. Agora você notará que ele está basicamente parando e se movendo em um centavo. E isso porque, em argumbascript, estamos essencialmente avaliando cada carrapato, seja ele um inimigo secreto ou não E se for verdade, vamos mudar para nosso personagem de jogador. Agora, se você não quiser que seja tão agressivo, o que você pode fazer é ficar abaixo dos padrões de sua classe Vamos esclarecer nossa busca pelo Ken para sempre. E você pode ajustar sua taxa de ticks. Atualmente, isso está funcionando. Isso está disparando cada quadro. Mas você pode definir isso para ser algo como digamos, 0,25 a cada quarto de segundo Agora, você tem que ter cuidado com isso. E eu vou te mostrar um problema se você seguir esse caminho. Porque agora estamos definindo nosso intervalo de ticks um quarto de segundo para todos os nossos goombas Agora, se eu entrasse em uma jogada, isso poderia fazer com que nosso inimigo buscador se movesse de forma um pouco mais realista, para que não persiga nosso jogador tão rapidamente , Há uma pequena pausa aí. No entanto. O problema com isso é se você vai e faz seu gumba, não um buscador, e então você entra e Agora é apenas um patrulheiro normal, ele não vai se mover muito bem Ou eu recomendo não ajustar sua taxa de ticks aqui na classe padrão de sua gumba, ou se você quiser ter uma Sekumba que tenha um intervalo de ticks mais modificado, talvez meio segundo, talvez a cada segundo, crie uma duplicata dessa goumba dedicada a ser apenas um buscador e não um apenas Dessa forma, você pode ter uma taxa de ticks mais modificada para isso. Com isso, vá em frente , compile e salve, e pessoal, isso fará de tudo para criar uma versão buscadora do nosso Aqui. Nos vemos a todos no próximo vídeo. 64. Blueprint de tubos de urdidura: Bem-vindo. Ao longo dos próximos vídeos, trabalharemos na montagem de um projeto de tubo de dobra E esse projeto será altamente personalizável, pois poderemos definir a altura em que queremos fazer nosso cachimbo, poderemos definir para onde nos deformamos Seremos capazes de interagir com o cano que desce por ele. Além disso, também poderemos interagir com esse tubo subindo por ele. Agora, para começar aqui em nossa versão de trabalho do projeto, vamos apenas criar o material verde que será colocado em nosso tubo, bem como montar o modelo da classe de ator para o próprio tubo Concluiremos adicionando os componentes necessários para esse tubo e definindo os detalhes dele. E isso é o máximo que vamos chegar neste. Primeiramente, para criar o material verde, vou começar aqui na pasta Materials da minha plataforma de conteúdo. Vou clicar com o botão direito em algum espaço vazio. Vamos criar um material totalmente novo. Vou chamar isso de M, Underscore Green. E então eu vou clicar na barra de espaço para abri-lo. Este será um material realmente básico. O primeiro nó que vou tentar adicionar é chamado de nó de três constantes. Podemos obter um desses pressionando a tecla três e clicando com o botão esquerdo. E isso nos permitirá conectar-nos ao nosso nó de material mestre aqui e dar a ele uma cor base. Com esse nó selecionado no painel de detalhes, você pode definir um valor R, G , B, que é vermelho, verde ou azul. Você pode escolher este seletor de cores aqui para escolher uma cor No entanto, vou apenas definir um valor verde de um. Pressione Enter. Agora, essa é uma cor verde plana, e eu quero que a minha pareça um pouco mais metálica Temos essa entrada metálica no nó do material mestre e, se inserirmos um valor 0-1, podemos especificar o quão metálico queremos que seja Para isso, adicionarei um nó constante mantendo pressionada uma tecla e clicando com o botão esquerdo. Posso adicionar um desses. Vou conectar isso na entrada metálica. Aqui neste nó, vou especificar um valor de um. E você pode ver no pré-visualizador aqui que está um pouco mais metálico Agora, eu também quero alterar a rugosidade disso para aumentar esse Mantendo pressionada uma tecla novamente, vou clicar com o botão esquerdo e inserir esse valor na rugosidade E você pode ver que, ao inserir um valor de zero, nós o tornamos super, super suave e, portanto, super brilhante e Eu não quero que seja tão reflexivo, então vou definir o valor aqui 0,5 em vez disso, um pouco aproximado Essa vai ser a aparência do nosso cachimbo ali mesmo. Verde. Um valor de um em metal, um valor de 0,5 na rugosidade Vamos salvar isso e depois podemos sair daqui. Em seguida, vou selecionar nossa pasta de esquemas no navegador de conteúdo E vamos criar nosso projeto de tubo de guerra simplesmente clicando com o botão direito do mouse em alguma classe de projeto de espaço vazio Este será um plano de aula de ator. Vou chamar isso de BP underscore Warp Pipe. Então, com isso, clicarei duas vezes nele para abri-lo. Dentro daqui, vou adicionar todos os componentes necessários. E então eu vou voltar e definir os detalhes de cada um, para esta parte. Adicionando os componentes, observe a relação de vinculação, pois isso será importante Vou deixar minha raiz de cena padrão aqui. Esse é esse ícone aqui. Todos os componentes que vou adicionar serão anexados a isso. A primeira que vou adicionar será conhecida como malha estática instanciada, não a hierárquica, a malha estática não a hierárquica, a instância E eu vou chamar isso de um corpo. Agora, com isso, vamos definir uma malha estática que terá forma cilíndrica E vamos adicionar seções delas por meio de script. Dependendo de quão alto ou grosso queremos que nosso cachimbo seja. Mais uma vez, adicionarei esses detalhes mais tarde. O segundo componente que eu quero adicionar, eu também quero adicionar à nossa raiz de cena padrão. Vamos anexá-lo a isso. Vamos adicionar um. Essa será uma malha estática simples e vou chamá-la de topo de tubo. Esta será a parte superior do nosso cano que será um pouco mais larga. Agora, com a parte superior do tubo selecionada, vamos anexar dois componentes a isso. Verifique se você selecionou isso. A primeira que vamos adicionar aqui será uma malha estática e eu chamarei essa tubulação interna. Isso será para a aparência interna do nosso cachimbo, essencialmente colorindo-o de preto. É para isso que vai servir. Vamos selecionar a parte superior do tubo novamente, porque próximo componente também será preso à parte superior do tubo e, portanto, recuado Essa mesma profundidade. Isso vai ser uma colisão de cápsula, aqui na categoria de colisão, vamos chamar isso de simplesmente Ok, temos mais dois componentes que eu quero adicionar aqui. Ambos serão adicionados à rota de cena padrão. Verifique se você selecionou essa opção. O primeiro que vamos adicionar será conhecido como outdoor Isso simplesmente será um ícone que representará um ponto no espaço. Então vá em frente e selecione isso. Você verá um ícone de cabeça de dragão aparecer aqui. Isso será chamado de nosso Warp in point. E então eu vou adicionar mais um e ele vai ficar na mesma profundidade. Selecione sua rota de cena padrão. Vou acrescentar, e vou digitar na Billboard, esse será nosso ponto Warp Esses ícones simplesmente representarão um ponto no espaço de onde instruiremos nosso personagem a entrar ou sair. Ok, com nossos componentes prontos, vamos definir os detalhes de cada um. Vou começar com o corpo do meu tubo, certifique-se de selecioná-lo. Vou definir a localização para isso, a localização z como cinco. E vou definir a escala imediatamente, mesmo antes de definir meu ano de bagunça estática Na verdade, deixe-me definir a malha primeiro para que você possa realmente ver algumas dessas mudanças. No ano da bagunça, vamos usar um cilindro e vamos escolher esse cilindro caminho das formas básicas do motor Você pode ver na parte superior dessa dica de ferramenta. Com isso agora implementado, vamos definir a escala. Vou definir a escala para 2,252 0,25 E, em seguida, vamos definir 0,1 para a Vou verificar esse botão de bloqueio ou, em vez disso, desbloqueá-lo. Então, quando eu altero um desses valores, eles não mudarão todos ao mesmo tempo, e isso será 0,1, eu também me expressei mal porque essa é uma malha estática de instância Não veremos nenhum deles adicionado à nossa janela de visualização imediatamente. Esses caras serão adicionados por meio de nossos scripts de construção, então você não verá nada aqui ainda, mas espere por isso em vídeos futuros. Além disso, o que eu quero fazer é mudar nosso material aqui para ser verde. Porque isso vai ser verde, vai ser nosso material aqui. Esse será o comprimento do nosso tubo, o próprio corpo do tubo. Tudo bem. Com tudo isso feito, vamos nos mover até o topo do tubo. Vá em frente e selecione isso para isso. Também vamos adicionar um tipo de cilindro em cilindro. Mais uma vez, será do pacote de formas básicas do motor. Vou configurar isso para ser verde também. Esse mesmo material M, sublinhado em verde porque é uma malha estática Veremos isso em nossa janela de exibição na área de escala. Vou definir a escala para 2,75 no x e no y. Deixe-me ampliar um pouco aqui Na minha janela de visualização, o z será 0,5 para a localização z. Vou definir isso para 35. Estará lá em cima um pouco ao lado de nosso cano interno. Vamos prosseguir e selecionar isso. Isso também será um cilindro para a malha estática. O mesmo do motor. Formas básicas embalam nosso material aqui, vou configurá-lo para algo preto. Se você digitar material iluminado em preto, encontrará um bom tom de preto liso. Vou definir a localização para isso no Z 25,5, então vai aumentar um pouco Agora você está vendo alguns lutando aqui pela balança. Vamos definir nossa escala para 0,8 para x, 0,8 para y, e nosso z será 0,5. Agora, quando eu fizer isso, você terá esse tipo de aparência. Então, vai parecer o interior de um cano. Muito inteligente, não é? Tudo bem, seguir temos nossa colisão, nossa colisão de cápsulas Vá em frente e selecione isso. O que vamos fazer aqui é mudar a localização disso. A localização Z será 80. Estamos começando a vê-lo espiar acima do topo do nosso cano aqui Precisamos tornar isso maior também. A meia altura, eu vou definir isso como 300. O raio da cápsula aqui será ajustado para 40. E vamos usar isso para verificar quando nosso personagem está acima do tubo ou se esse tubo está invertido, se o caractere está ou não sobreposto a Assim, podemos verificar se o personagem está pressionando um botão para interagir com o cano e afastá-lo. Além disso, precisamos entrar na seção de colisão. Fique abaixo da predefinição de colisão. Vamos configurar isso para ser personalizado. Vamos ignorar tudo. Vamos aceitar sobreposições do peão, ou seja, quando nosso personagem estiver sobrepondo isso, nós o reconheceremos Vamos seguir em frente e selecionar nosso ponto de distorção. Mais uma vez, isso especificará um ponto que começaremos a distorcer Para isso, vou definir nossa localização z aqui no Z. Vou defini-la como 70 Ele vai colocá-lo bem ali, logo acima do nosso cano. Podemos mexer nisso, mas vou deixar aos 70 por enquanto Para o nosso ponto O, isso vai ficar um pouco abaixo. Então, vou definir o Z para que seja menos 35. Novamente, podemos mexer nisso, mas esse será um bom ponto de partida. Então, quando você se deformar, usaremos isso como um ponto de distorção Quando sairmos, usaremos isso como um ponto de distorção para iniciantes. Tudo bem, e com isso, isso nos dará um bom começo para nosso cachimbo. Obviamente, muito mais trabalho a ser feito aqui. Em termos de script, com certeza. Vá em frente e salve isso e chamaremos esse vídeo. Nos vemos quando, na próxima. 65. Script de construção de tubo de urdidura: Bem-vindo. Vamos continuar com nosso cachimbo de guerra da BP aqui E nossa próxima etapa será adicionar algum script dentro do nosso script de construção para tornar nosso tubo altamente personalizável Para fazer com que possamos fazer o corpo do tubo tenha o comprimento do tubo, se você quiser. Tão alto ou tão atarracado quanto gostaríamos. Agora, a boa notícia aqui é que poderemos pegar emprestado alguns scripts da nossa plataforma Mushroom que criamos anteriormente no Então, vamos direto ao assunto. O primeiro passo aqui é criar uma variável. Clicando no botão de adição. Vou chamar isso de ponto final do meu tubo. Certifique-se de que essa é uma variável vetorial para que você possa selecioná-la ali mesmo e alterá-la para vetor. Então eu vou prosseguir e compilar imediatamente. Porque eu quero definir um valor padrão para isso no Z. Eu quero definir isso como menos 100 E então vou marcar essas caixas para tornar essa instância editável, bem como para mostrar os três widgets D. Agora, o que isso vai fazer é me deixar compilar e salvar aqui E arraste esse cachimbo de guerra para o meu nível em algum lugar. Por enquanto, vou colocá-lo bem perto do início do meu jogador. Agora, com isso em nosso nível, podemos ver que temos esse ponto final de canal, essa variável, que agora está exposta ao editor, podemos ver aqui E então eu poderia alterar esse valor aqui no editor, para cima ou para baixo. Deixe-me voltar ao padrão. Ou eu posso realmente clicar nesse widget de três D e movê-lo para cima ou para baixo também Deixe-me ir em frente e voltar ao padrão de menos 100. Agora vamos usar esse valor dessa variável dentro do nosso script de construção. Então, vamos voltar ao nosso tubo de guerra, à nossa guia de script de construção. Dentro do nosso script de construção, queremos essencialmente adicionar um script que adicionará algumas seções do corpo do nosso tubo aqui. E isso fará isso adicionando partes do nosso cilindro aqui dentro da malha estática da instância do corpo do tubo. Agora, se isso soa um pouco familiar, porque fizemos algo semelhante a isso, na verdade idêntico a isso na verdade idêntico a isso dentro do nosso lançador de plataforma BP. Agora vamos ser capazes de usar um pequeno atalho aqui, roubando um script aqui dentro Mas deixe-me lembrá-lo do que fizemos no início do curso. Ao arrastar um deles para o nosso nível, dentro do lançador da plataforma BP, adicionamos uma variável chamada Essa era uma variável vetorial e nós a tornamos editável por instância e fizemos que ela tivesse esse widget de três D. E ao modificá-lo aqui no editor de níveis, estamos, na verdade, adicionando seções do nosso lançador de plataforma Vamos ter a mesma configuração aqui dentro do nosso cano. Basicamente, poderemos selecionar esse diamante para nossa variável de ponto final de tubo Vamos arrastá-lo para baixo e, em seguida, nosso script de construção preencherá apenas algumas seções do tubo. O mesmo método aqui, dentro do meu lançador de plataforma. Vou simplesmente abrir esse plano clicando no Outliner Vamos editar isso dentro do script de construção do nosso lançador de plataforma Vou roubar um roteiro aqui dentro. Vou clicar e arrastar até aqui. E então eu vou manter o controle pressionado e obter nossos quatro loops também. Vamos tentar roubar esses nós. 1.234.567,8, Com os selecionados , controle C Vamos ao nosso roteiro de construção de tubos de guerra. Vou clicar com o botão esquerdo e depois controlar V para andar. A razão pela qual isso funcionará quase de forma idêntica. Funcionará forma idêntica é porque em nosso lançador de plataforma BP, temos essa instância de malha estática E eis que, olha a malha que estávamos vendo lá Era o mesmo cilindro que temos para nossa malha estática instantânea aqui em nosso tubo de dobra Nosso corpo de tubo também usará esse cilindro. Agora, uma coisa que eu preciso atualizar aqui para que esse script funcione exatamente da mesma forma é observar que aqui em nosso lançador de plataforma BP, nesta haste de tronco de mingau, eu tenho a escala do Z definida como um Deixe-me voltar e revisar isso em nosso cachimbo de guerra. Também vou mudar a escala Z para um, que esse script funcione de forma idêntica aqui em nosso tubo de guerra da BP Essa será uma revisão do vídeo anterior. Vou mudar a escala Z do meu corpo de tubo. Certifique-se de que esteja desbloqueado para que você possa alterar a escala Z independentemente para uma Tudo bem, com isso agora tudo que eu preciso fazer é pegar a extremidade do meu tubo Vou conectar isso ao meu comprimento vetorial. Vou deixar isso aí. Vou conectar meu script de construção para que ele possa ser executado durante o tempo de design aqui. Sempre que fizermos alguma alteração nesse plano, ele também será atualizado em nosso editor de níveis aqui E então precisamos inserir a instância que queremos adicionar. Este será o nosso corpo de cachimbo. Vamos arrastar isso dessa forma. Essa matemática deve ser toda a mesma. Dividindo por 100 aí, multiplicando por menos 100 aqui Vamos compilar isso, para garantir que tudo esteja bem . Nós vamos salvar isso. E agora, de volta ao nosso editor de níveis, podemos ver que adicionamos algumas seções do nosso canal. Agora, se eu pegar esse ponto final aqui e estendê-lo para baixo, você pode ver que sempre que eu movê-lo em mais 100 unidades irreais, ele adicionará uma seção de tubo Altamente personalizável, de fato. E, novamente, isso funciona durante o tempo de design. Não enquanto o jogo está rodando, mas durante o tempo de design. Tudo bem, então isso é tudo o que queríamos realizar nesta parte do nosso tubo de guerra. Muito mais trabalho a ser feito, mas agora construímos um roteiro de construção que adicionará pedaços do corpo do nosso tubo para que possamos torná-lo comprido e grosso Por maior que queiramos que seja, pessoal, isso vai bastar para este. Nos vemos na próxima. 66. Entradas de tubos de urdidura: Tudo bem, agora que nosso pipe está muito bem visualmente por meio dos componentes que adicionamos e do script de construção que criamos, é hora de voltarmos nossa atenção para o próprio script Warp pipe Ou seja, nosso jogador realmente interagindo com esse cano de guerra para fazer com que ele deforme para alguma outra área do nível Agora, para que isso aconteça, precisamos de uma entrada adequada. E antes de começarmos essa discussão, é hora de fazer uma pequena revisão sobre como nossas contribuições são estruturadas em nosso projeto Agora, como você sabe, estamos controlando nosso personagem em terceira pessoa em nosso projeto e dentro de nosso personagem em terceira pessoa. Esse script já existia. Isso está adicionando um contexto de mapeamento de entrada. Isso é o que determina todas as entradas que são relativas a esse caractere em particular, as entradas que esse personagem pode usar Agora eu tenho esse ativo IMC padrão aberto na parte superior aqui Dentro desse ativo, podemos ver os vários mapeamentos de entrada que foram adicionados a esse padrão do IMC Uma delas é atirar na bola de fogo, que adicionamos anteriormente Além disso, adicionamos um para um jogador derrotado, e usamos esse dentro da nossa plataforma BP, jump through Fizemos com que, quando essa ação fosse acionada, pudéssemos cair em nossa plataforma. E fizemos com que essa ação fosse acionada pela tecla S, além de pressionar para baixo eixo y do nosso manípulo esquerdo Agora, para fazer nossa interação com o tubo de guerra funcionar, vamos realmente usar essa entrada de player down que criamos. No entanto, vamos modificar um pouco as coisas, então é aí que vamos começar Agora, se você esqueceu onde esse athot existe, você pode encontrá-lo aqui em nossa pasta de ações de entrada em terceira pessoa E foi aqui que criamos nossa ação de entrada A player down. Agora, se você não tem esse recurso do início do curso, a forma como o criamos foi clicar com o botão direito do mouse em algum espaço vazio abaixo da entrada. Essa foi uma ação de entrada. Nós o chamamos de IA player down. Vamos abrir isso de volta porque vamos fazer algumas modificações nisso. Então, atualmente, dentro de nossa ação de entrada do AI player down, definimos o tipo de valor como um boule digital Isso aconteceu ou não? Vamos mudar isso um pouco entrando na seção de gatilho. Atualmente, está configurado para apenas abaixo. Estamos realmente pressionando? No nosso caso, o padrão do IMC, por exemplo, estamos pressionando para baixo, digamos, o Isso aconteceu ou não? Agora vamos mudar isso um pouco para que esse tipo de valor permaneça o mesmo bool digital Isso aconteceu, não foi? No entanto, vamos alterar o índice de baixo para retido. Vamos verificar se estamos pressionando um determinado botão. Agora, se expandirmos isso um pouco mais, alteraremos nosso limite de tempo de espera para 0,2 segundos. E nosso limite de atuação será um, basicamente definindo isso para um valor de 1,0 Basicamente, queremos descobrir se nosso manípulo esquerdo está totalmente abaixado por pelo menos 0,2 segundos Isso é essencialmente o que estamos dizendo aqui. Também vamos marcar esta caixa para ver se há uma foto que fará com que, para que ela se registre novamente, tenhamos que basicamente soltar o manípulo esquerdo para acioná-la novamente Então, com tudo isso em vigor, bool digital mantém o limite de atuação de 0,21 disparos de Salve isso e volte ao nosso padrão de IMC. Atualmente, temos nosso mapeamento de ação de entrada do player down configurado com a tecla S. No entanto, vou mudar esse teclado de jogo, manípulo esquerdo e o eixo y. Vou clicar nesse menu suspenso. E na seção de gamepad, novamente, isso é só para vocês jogadores de gamepad Vou mudar para o Gamepad à esquerda, com o polegar para baixo. Então, esses dois vão acionar o evento A player down. Tanto em nossa plataforma de salto, como está acontecendo agora, mas também em nosso tubo de guerra, que é onde vamos usá-lo no próximo vídeo. Agora, queremos criar, na verdade, mais um mapeamento de jogadores aqui no mapeamento de ações. Temos esse player de volta em nosso navegador de conteúdo. Vamos continuar e duplicar isso. E podemos duplicar isso clicando com o botão direito do mouse e escolhendo duplicar, ou Control plus D duplicará isso ou Control plus D duplicará E eu vou configurar isso para ser um jogador. Agora, a razão pela qual estou adicionando um jogador aqui é simplesmente porque eu quero poder descer por um cano e também subir por um cano. Agora, se eu abrir isso, quero garantir que tenha exatamente as mesmas configurações do nosso player. Então, está configurado para touro digital e os gatilhos estão configurados para segurar 0,2 segundos Eu quero que isso seja configurado para um tiro no limite de atuação, que também será um Deixe-me dar uma olhada aqui no meu player down, temos Bull hold 0.21 Digital bool hold 0.21 shot in 1.0 Está tudo bem, então vá em frente e salve isso Agora eu também preciso adicionar essa ação de entrada específica dentro do nosso contexto de mapeamento de entrada, aquele padrão IMC E se você esqueceu onde estava o padrão do IMC, mais uma vez aqui em nosso navegador de conteúdo Eles existiam na série de pastas em terceira pessoa, e você pode encontrá-los na pasta de entrada, padrão IMC Então, eu vou abrir isso de volta. Eu tenho que abri-lo na parte superior aqui. Agora, para adicionar esse AI player à nossa lista de possíveis ações de entrada, precisamos clicar nesse pequeno botão de adição. Ele vai adicioná-lo aqui embaixo. Agora eu tenho que realmente inserir essa ação de entrada vazia. Então, vou fazer uma busca por up assim. Agora eu preciso descobrir quais botões ou entradas eu quero sejam capazes de acionar esse player de eventos de ação de entrada Bem, eu vou fazer um evento de teclado para W. Se eu clicar aqui neste ícone de teclado. Com isso em laranja, agora posso simplesmente pressionar a tecla Wy e ela será automaticamente mapeada para ela Vou clicar nesse botão de adição mais uma vez e ele me permitirá adicionar outra entrada. Em vez de clicar no teclado desta vez, vou clicar ao lado do teclado e usar o gamepad Estou procurando um gamepad, com o polegar esquerdo levantado. Esses serão meus dois mapeamentos para esse evento de ação de entrada Com isso, vamos continuar e salvar nosso mapeamento de entrada. O contexto padrão aqui e agora estaremos em uma posição em que possamos adicionar esses eventos específicos. Nosso jogador está abaixo e nosso jogador está acima em nosso gráfico de eventos Warp Pipe Então, isso é tudo que está por vir. No próximo vídeo, nos vemos lá. 67. Script de tubo de urdidura #1: Tudo bem, então, em nosso último vídeo, modificamos nosso ativo de entrada do player de ação. E também duplicamos isso e criamos uma ação de entrada IA player up Em seguida, garantimos que ambos estivessem encaixados dentro do nosso padrão IMC Este é o nosso contexto de mapeamento de entrada para que tenhamos nosso player IA aqui embaixo mapeado para algumas entradas, bem como nosso mapa de player up para algumas Um teclado e um controle. Agora vamos usá-los dentro do nosso tubo de guerra da BP Então, encontre o caminho até aqui, vou clicar com o botão esquerdo, arrastar uma seleção marcante e excluir esses eventos existentes em nosso gráfico de eventos do nosso tubo de guerra E vamos adicionar nossos dois novos eventos aqui. Nosso jogador entrou, nosso jogador está pronto para começar nossa interação inicial com o canal. Então, vou clicar com o botão direito do mouse em algum espaço vazio. Vamos fazer uma busca por jogadores e por eventos de ação aprimorados. Procure aquele com esse ícone do tipo seta. E então vamos clicar com o botão direito do mouse e eu vou fazer uma busca por player down. Novamente, os eventos de ação aprimorados são o ícone de seta um. Vamos colocar isso assim. Ok, então vamos usar algumas variáveis , um nó de portão e algumas sobreposições para detectar se nosso jogador está realmente em posição de interagir com nosso tubo de guerra Agora, antes de prosseguir aqui usando esses eventos, vamos criar algumas dessas variáveis que precisaremos no meu painel de diagramas Então, na seção variáveis mais, vamos adicionar uma variável para poder interagir com a pergunta. Isso será um lingote. Essencialmente, usaremos essa variável para perguntar a cada tubo individual que colocamos no nível podemos realmente interagir com ele? Pode haver alguns canos que estamos apenas colocando para fins decorativos. Não há intenção de o jogador realmente interagir com isso, então essa é uma forma de sinalizarmos que, sim, esse é um tubo de guerra que realmente queremos distorcer Os outros serão apenas decorativos com essa variável selecionada aqui. Vou apenas fazer o controle mais D para duplicá-lo. E este também vai ser um lingote. No entanto, este será chamado de pipe. Vai ser um ponto de interrogação. E isso é essencialmente fazer a pergunta: esse é um cano que queremos descer versus é um cano que queremos subir? Então, isso será usado para determinar a animação de nossos jogadores quando eles estiverem interagindo com o tubo Eles vão passar por isso ou vão subir por isso? Agora vamos continuar e compilá-los. Portanto, podemos definir alguns padrões para eles. Isso pode interagir, queremos deixar isso como falso. Digamos que, por padrão, todos os nossos canais digamos que não podemos interagir com eles. No entanto, podemos verificá-lo, se o verificarmos no editor. Portanto, certifique-se de marcar essa caixa, por exemplo, editável, para que, quando tivermos nosso canal selecionado em nosso nível, possamos marcar essa caixa para qualquer instância específica dele Four é down pipe bullion, vamos verificar isso por padrão e também diremos que é editável por instância Então, de volta ao editor, mais uma vez, também podemos modificar essas variáveis. Agora, se eu fosse compilar, salvar isso e selecionar meu tubo de guerra de volta no meu nível, agora você pode ver que essas duas variáveis estão disponíveis para mim no editor de níveis, eu posso marcar ou desmarcar a caixa de seleção de Ken interage ou está no cano inferior, ok, voltando para o nosso tubo de guerra quando nosso jogador pressiona para Queremos verificar algumas coisas para ver se elas são verdadeiras antes mesmo de prosseguirmos. E o que queremos verificar para ver se é verdade ou não é se podemos interagir com o tubo? Então, vamos arrastar isso para o nosso gráfico. Podemos interagir com o tubo? Também queremos verificar se não é um cano de descida. Vou trazer meu cano de descarga. Nós vamos conseguir isso. Vou sair disso e dizer que estou procurando um booleano Aquele nó ali mesmo. Agora eu quero verificar se ambas são verdadeiras. Para isso, posso clicar com o botão direito do mouse em algum espaço vazio e inserir um nó. Estou procurando um booleano. Vou conectar essa lata Interact na parte superior e, em seguida, o tubo descendente na segunda entrada aqui. E vamos conectar a saída disso em um nó de ramificação mantendo pressionada a tecla B e clicando com o botão esquerdo Vamos conectar isso, tipo, então vamos sair daqui. Ou só nos importamos quando ele sai daqui quando iniciamos esta entrada. Uma longa história de ação resumida aqui com nosso jogador pronto. Ação de entrada. Isso vai disparar daquele pino aceso aqui em nosso cano de guerra. Vai disparar daqui, desse pino de partida. Assim que essas condições forem atendidas, manteremos pressionado o WK em nosso teclado ou o manípulo esquerdo na posição ascendente por pelo menos 0,2 Se atendermos a essas condições, faremos a pergunta: Ei, podemos até mesmo interagir com esse tubo. E, a propósito, isso não é um cano de descida? Se isso for verdade, queremos entrar por um portão. Vou sair daqui e digitar uma busca no portão. Estou procurando um nodo de portão. Vamos entrar por um portão. Essencialmente, estamos nos aproximando de um portão rígido e queremos descobrir se o portão está aberto ou fechado Agora, se o portão estiver aberto e pense em um portão físico, se estiver aberto, faremos qualquer script que venha além daqui. No entanto, se o portão estiver fechado, não avançaremos além daqui. Agora, antes de abrirmos ou fecharmos o portão, vamos controlar a entrada do jogador. Agora, para economizar um pouco de tempo, vou copiar esses nós aqui. Então, vou clicar com o botão esquerdo e arrastar para pegar esses quatro. Também vou manter pressionado o controle, clicar com o botão esquerdo e pegar esse quinto nó aqui. Então, com aqueles selecionados, farei o controle mais D para duplicá-los e trazê-los até aqui Agora, isso vai ser basicamente o mesmo, no entanto, para a entrada do player eu não preciso desse nó São muitos nós. Então, vou deletar isso por isso. Vamos dizer que, quando pressionamos, essa é a tecla S do teclado ou o polegar esquerdo está abaixado Depois de começar, verificaremos se podemos interagir com ele e se é de fato um tubo de descida? Este que queremos descobrir, é realmente um cano de descarga? E se isso for verdade, podemos interagir com ele, e é um cano de descida, um cano que podemos descer. Também queremos entrar em um portão. Então, estamos essencialmente tentando subir ou descer por um cano. Essa é a nossa maneira de nos aproximarmos do portão para ver se uma interação é mesmo possível Agora, para descobrir se uma interação é mesmo possível, queremos descobrir se estamos realmente em posição de descer aquele cano. E para isso, usaremos nossa sobreposição de colisão aqui Agora, deixe-me pular rapidamente para a nossa janela de visualização e voltar a ampliar Temos essa colisão, esse componente de colisão de cápsulas que basicamente queremos verificar se nosso player está mesmo acima do cano, assim Se estiverem, se estiverem nessa área, diremos que sim, o portão está aberto. Vá em frente. No entanto, se nosso jogador não estiver sobrepondo essa colisão, basicamente diremos: não, desculpe Você não pode avançar de forma alguma além desse nodo do portão. Então, não dá para fazer. Não é possível descer pelo tubo de guerra com esse nó de colisão selecionado aqui em nossos componentes Vamos clicar com o botão direito em algum espaço vazio. Vamos adicionar um evento para quando começarmos a sobrepor isso Agora, quando eu clicar nisso, ele colocará esse nó aqui embaixo. E deixe-me mover minha marcha até aqui e enquadrá-la assim Então, o que eu quero descobrir sobre um componente começa a se sobrepor Queremos descobrir, ei, é nosso jogador que está sobrepondo Então, mais uma vez, posso clicar com o botão direito do mouse em algum espaço vazio. Eu poderia fazer um personagem para escolher um jogador e poderíamos fazer toda essa coisa igual fora daqui. No entanto, quero descobrir especificamente se é nosso personagem em terceira pessoa que está fazendo a sobreposição Porque se for, eu quero realmente salvar uma referência ao nosso personagem em terceira pessoa para mais tarde no script. Então, em vez disso, desta vez eu vou usar meu outro distintivo de ator e vou fazer um elenco para um personagem em terceira pessoa. Então, se for o personagem em terceira pessoa que está fazendo a sobreposição dessa colisão, vamos inserir isso em nossas notas de abertura do portão, então vamos dizer, sim, o portão está aberto. Prossiga. Você pode ir além daqui, desde que tenha pressionado cima ou para baixo, dependendo do tipo de tubo com o qual estamos tentando interagir. Ok, então vamos também clicar com o botão direito do mouse em nosso componente de colisão aqui novamente no evento, para acabar com uma sobreposição Aqui também podemos trazer nosso elenco de personagens em terceira pessoa. Observe que vou fazer o controle D com isso selecionado. Mova isso para uma posição assim. Diremos que se você encerrou essa sobreposição, ou seja, não está dentro da área de colisão, fecharemos os portões e, por padrão, começaremos com o portão Essencialmente, esse será o início do nosso script de interação de tubos porque é um pouco alto. Vou tentar enquadrá-lo como se fosse uma célula. Tente colocar essa parte superior no lugar. Se você quiser pausar o vídeo aqui, você pode ver que temos nossas variáveis aqui, player up, player down Ambos vão entrar na parte de entrada do portão. E a abertura e o fechamento serão determinados pelo fato de estarmos realmente sobrepondo esse componente de colisão Agora, nada disso funcionará se não entrarmos nos padrões de nossa classe aqui dentro do nosso tubo de guerra e alterarmos esse parâmetro aqui na No momento, esse cachimbo de guerra não reconhecerá nenhum desses eventos. Mesmo que fizéssemos isso, a tecla W ou S do nosso teclado não os reconheceria de forma alguma. E isso porque, dentro dos padrões de nossa classe, um esquema de classe de ator não reconhecerá nenhuma entrada, a menos que, na categoria de entrada , você altere a entrada de recebimento automático de desativada para jogador zero No nosso caso, como este é um jogo para um jogador, tudo o que precisamos fazer é verificar se o jogador zero, ou seja, nosso jogador emprestado, está inserindo algum tipo de entrada, o WK, a tecla S ou talvez para cima ou para baixo no manípulo esquerdo Ok, com tudo isso feito, certifique-se de compilar para garantir que nosso script existente aqui esteja com boa aparência Vamos dizer isso, e isso nos dará nosso ponto de partida para nossa interação com o tubo de guerra. Ainda há muito trabalho a ser feito, mas continuaremos no próximo vídeo. Nos vemos lá. 68. Script de tubo de urdidura #2: Bem-vindo de volta aqui em nosso tubo de guerra da BP quando nosso personagem está sobrepondo o volume de colisão adequado E quando inserimos a entrada adequada, avançando assim além do portão Precisamos mover nosso personagem para cima pelo cano ou para baixo pelo cano, dependendo da direção em que queremos interagir com o cano. E para fazer isso, precisaremos de uma referência ao nosso personagem. Então, a primeira coisa que vou fazer é ampliar aqui. E quando avançamos além do portão, precisamos criar uma referência ao nosso personagem. Vou escrever, clique neste alfinete aqui. Vamos promover isso para variável. Isso vai criar uma variável aqui. Vou chamá-lo de meu jogador. E precisaremos dessa referência para dizer ao nosso jogador se mova por um cano em qualquer direção, para cima ou para baixo. Ok, depois de fazermos isso, a próxima coisa que queremos fazer é garantir que nosso player não insira nenhuma outra entrada Porque uma vez que nosso personagem está se movendo por aquele cano, não queremos tentar pular ou atirar uma bola de fogo ou qualquer coisa desse tipo Para fazer isso, vamos clicar em Digitar , obter o controle do player. E então vamos sair disso e digitar a entrada de desativação. Agora, observe que, quando fizermos isso, isso conectará o valor de saída do nosso nó controlador get player aqui ao destino. Na verdade, isso está incorreto. O que queremos fazer é mover isso para o controle do player. Então, se eu segurar a tecla de controle aqui, posso movê-la para o pino do controlador do player. E o alvo aqui, eu quero ser meu jogador. Então, basicamente, estamos dizendo, olá, jogador, você não pode inserir nenhuma ação enquanto estamos nos movendo pelo nosso cano. Com isso, a próxima coisa que quero fazer é fazer uma pergunta. Quero inserir um nó de ramificação mantendo pressionada a tecla B e clicando com o botão esquerdo. E a pergunta que eu quero fazer é: esse é um cano pelo qual vamos viajar ? Porque dependendo se vamos descer por um cano ou subir por um cano, queremos jogar diferentes tipos de animações de personagens para mostrá-los descendo ou subindo por ele Então arraste e solte isso em nossa condição. Então, o que vamos fazer é a partir da ramificação verdadeira, vamos construir a partir dela. Primeiro, vamos trazer uma sequência de notas. Então, vou manter pressionada a tecla S e clicar com o botão esquerdo. Porque haverá algumas coisas que eu quero que aconteçam. Se for um cano que estamos descendo. A primeira coisa que quero fazer é adicionar uma linha do tempo aqui. Porque eu quero manipular uma variável ao longo do tempo, uma variável flutuante, para mover meu jogador uma certa quantidade na direção z para descer pelo cano Vamos adicionar uma linha do tempo. Ao clicar com o botão direito do mouse, vou pesquisar a linha do tempo. Vai ficar bem na parte inferior. Se eu colocar a palavra hora lá, vou ligar para essa linha do tempo. Vamos ver, vamos chamá-lo de, não vamos enfiar isso em um tubo descendente. E então eu vou clicar duas vezes sobre isso para abri-lo. E dentro daqui eu vou adicionar uma pista flutuante. Então clique no botão Rastrear. Vamos adicionar uma pista flutuante. Vou simplesmente chamar isso de movimentos. E eu vou mudar a duração da nossa linha do tempo aqui para 1 segundo Porque eu quero mover nosso personagem na direção Z ao longo de 1 segundo. Preciso adicionar alguns quadros-chave aqui. Então, vou manter pressionada a tecla shift e clicar com o botão esquerdo uma e duas vezes. A primeira chave, vou selecionar e definir o tempo como zero e o valor como zero. E então, no segundo quadro-chave, eu vou selecionar isso, vou definir o tempo para ser um e o valor para menos 200. Agora, depois de pressionar Enter, posso pressionar essas teclas de seta para enquadrar isso. É uma espécie de representação visual do que vai acontecer aqui. Vamos mover nosso personagem para baixo 200 unidades irreais ao longo de 1 segundo Com essa faixa adicionada, podemos voltar ao nosso gráfico de eventos. E agora podemos ver essa saída de movimento aqui. Novamente, se for um tubo descendente, se for verdade que estamos interagindo com um tubo rotulado, sim, é um tubo descendente Vamos jogar desde o início, aqui mesmo. Em seguida, vamos trazer uma referência ao nosso jogador. Vamos arrastar e soltar isso. Vamos pegar isso, vamos sair do meu player. E vamos dizer definir a localização relativa e a rotação para o componente da cápsula. Este aqui, trará dois nós nossa referência de componentes da cápsula, bem como esse conjunto de localização e rotação relativas. Como essa linha do tempo está sendo atualizada, queremos enviar nosso jogador para um novo local. Qual localização? Bem, vamos arrastar para trás esse novo tipo de localização no vetor make para que possamos dividi-lo nos componentes x, y, z disso Então, o que vou fazer é trazer uma referência ao nosso ponto, esse componente aqui. Vamos arrastar isso para o nosso gráfico. E só para ir ao nosso ponto de vista, esse é o nosso ponto de distorção. Essa cabeça de dragão está aqui. Esse será essencialmente o ponto de partida a partir do qual nosso personagem se deformará Ok, vamos arrastar para fora daqui, digitar, obter a localização mundial, depois vamos arrastar para fora daqui e digitar o vetor de quebra. Isso está gerando a localização X, y e Z, a localização do nosso ponto de distorção Estamos dividindo isso em seus componentes x, y e z. Quando estamos distorcendo nosso player, queremos manter o x igual e o y igual No entanto, o valor z é o que queremos mudar. Queremos tirar nosso valor z do nosso ponto de distorção e arrastar para fora daí, colocar a tecla mais trazer um nó de adição O que queremos acrescentar a isso? O que queremos acrescentar a esse pequeno movimento? Novamente, isso mudará o valor disso em menos 200 ao longo de 1 segundo. Esse será nosso novo valor z. Vamos enquadrar isso um pouco melhor. Assim, vai ser assim. E então eu vou clicar com o botão esquerdo e arrastar e tocar na tecla. E esse será o nosso script de entrada para baixo. Vou colorir isso de preto imediatamente. Então, vou passar um pouco para cá. Se for um cano de descida, se for um cano rotulado como tubo de descida em nosso editor, se isso for verdade, é assim que vamos mover nosso personagem por esse cano Agora, novamente, temos que nos preocupar com eles, você sabe, saindo do cano, mas vamos nos preocupar com isso daqui a pouco Agora, a segunda coisa que eu quero que aconteça, se eles estiverem descendo pelo cano, isso basicamente moverá nosso player, é que eu também queira reproduzir um efeito sonoro. É por isso que temos esse nó de sequência aqui. Vou arrastar isso, trazer um nó de atraso, um nó de atraso. E vou deixar esse valor de 0,2. E então vou sair disso e trazer um nó D do Sound two. Para isso, vou fazer uma busca por cachimbo. Não, não é cachimbo. Acho que o chamei de Warp. Urdidura. Esse é o que eu quero inserir, essencialmente. Também vamos tocar esse efeito sonoro. Na verdade, vou clicar com o botão esquerdo ao redor dessa tecla de toque e vou chamá-la nosso warp X assim Ok, eu vou colorir isso de preto também, só para deixar isso bonito e claro. Agora, ainda não terminamos aqui quando terminamos com isso, quando essa linha do tempo terminou aqui Depois de um segundo, quero que algo mais tenha acontecido. Para isso, vou pegar emprestados esses dois nós aqui. Vou selecionar meu nó atrasado, meu Play Sound Two D, e vou fazer um Control D com os dois selecionados. Vou movê-los para cá do nosso pino acabado aqui. Vou me conectar a esse nó de atraso e vou alterar nossa duração aqui para 0,4 segundos. Isso vai ser muito bom, 0.4 Então eu quero tocar esse som de distorção novamente. Essencialmente, quando terminarmos de passar por esse tubo, tocaremos esse efeito sonoro novamente. Então, basicamente, é necessário inserir um efeito sonoro. E então, quando terminamos, antes de nos deformarmos, mostramos nosso personagem meio que saindo do cano Vamos tocar esse efeito sonoro novamente. Agora, haverá mais um nó, na verdade, mais dois nós que vamos adicionar. Aqui mesmo. Vou adicionar um nó de ramificação, então mantenha pressionada a tecla B e clique com o botão esquerdo do mouse. Eu vou me conectar a isso também. E vamos verificar outra condição. E a condição que vamos verificar aqui é se nosso jogador vai sair saindo de um cano. Ou se eles vão cair de um cano, isso vai determinar como manipulamos nosso personagem saindo de um cano ou caindo de um cano Então, para isso, precisaremos de uma variável booleana. Deixe-me prosseguir e selecionar este existente no controle D do meu painel de plantas para copiá-lo E vou chamar essa de saídas saindo do cano. Eu quero isso exposto também. E eu vou compilar isso e vou dizer que sim por padrão, vamos deixar isso como verdade Essa será a nossa condição que vamos verificar. E, novamente, usaremos esse galho para determinar se nosso personagem vai se levantar de um cano ou cair por ele. Então, isso virá aqui daqui a pouco, mas o que vou fazer é arrastar esse trecho de script, tocar na tecla C e isso será chamado de nosso peso um pouco antes de sair do pipe script Tudo bem, então implementamos isso , excelência. Então, vou enquadrar isso aqui para que você possa ver o que está saindo do nosso nó de ramificação e, em seguida, do nosso nó de sequência. Então, se é verdade que nosso jogador está descendo pelo cano, esse será o cronograma para fazer nosso jogador passar por ele Agora, a má notícia é que basicamente temos mais três seções como essa para adicionar ao script. Mas a boa notícia é que criamos essa seção do script e poderemos reutilizar a maior parte dela na última parte desse projeto Então, vamos chamá-lo de vídeo aqui. Então, vá em frente, compile e salve. E na próxima, vamos subir por um cano e depois também sair pelo cano. Nos vemos lá. 69. Script de tubo de urdidura #3: Bem-vindo agora, antes de continuarmos com nosso roteiro, eu só quero testar isso dentro do nosso nível. E eu só quero que você preste atenção às nossas várias variáveis que expusemos ao editor. Nós temos este para, é um cano de descarga? Quer dizer que devemos ir até lá? E se sim, em que direção devemos descer o cano? Vamos verificar isso. Além disso, também verificaremos o booleano do Can Interact em nosso editor Agora, se você se lembra do nosso Interact, estamos verificando se isso é verdade ou não. Para ver se alguma dessas entradas é mesmo válida. Se conseguirmos ir além desse ponto. Tubo selecionado em seu nível. Aqui está o tubo de descida já verificado. Mas não temos como interagir e verificar. Então, vou prosseguir e verificar isso. E isso deve fazer com que, quando pressionarmos nosso teclado, eu pressione a tecla S. Essa vai ser a nossa chave para baixo. Vamos avançar além da parte inicial do script aqui, porque isso acionará a possibilidade de interagir e será verdade. E então, como esse é um cano de descida, vamos descer esse cano. Na verdade, vamos acionar esse pequeno script aqui e aqui. Isso ainda não vai entrar em jogo, mas com tudo isso feito, devemos realmente ver nosso personagem se mover para dentro do cano. Então, vamos tentar isso. Entrando e brincando. Tudo bem, pulando em cima do nosso cano E se eu pressionar a tecla S no teclado, você pode ver meu personagem cair. Mas eles ainda não têm para onde ir. Então é isso que vamos corrigir na próxima parte. Ok, primeiro, vamos abordar essa parte aqui. Quando terminarmos de entrar no cano de descida, vamos esperar um pouco antes de sairmos de um cano. E vamos fazer a pergunta: vamos sair saindo de um cano ou vamos cair de um cano? Então, vamos adicionar um pouco de script aqui. Vamos fazer com que saiamos saindo primeiro de um cano. Mais uma vez, posso roubar muito do código que fizemos aqui, economizando muito tempo Então, vou clicar com o botão esquerdo e pressionar o controle C ali mesmo. Em seguida, vou passar para cá e fazer o controle V para colar controle D simplesmente duplicaria isso imediatamente em vez de copiar e colar E o que eu vou fazer é sair dessa filial aqui. Vamos sair, saindo do cano Se isso for verdade, vou colocar isso em prática desde o início. Ainda não terminamos. Aqui temos algumas coisas para mudar. Para começar, quero me livrar dessa distorção. Esse não é o local de onde eu quero começar. Para isso, quero começar com um determinado conjunto de coordenadas em que especificamos uma distorção para a localidade E precisaremos de uma nova variável para isso. Vai ser uma variável vetorial, então vou selecionar minha variável vetorial existente aqui no meu painel de projeto Vou fazer o controle D para duplicar isso. E vou chamar isso de distorção para locale. E se eu compilar isso imediatamente, isso será definido como um valor padrão Deixe-me ir em frente e colocá-lo em zero em todos os aspectos. Eu quero ter certeza de que isso é editável por instância , porque vamos definir isso em nosso nível Não preciso mostrar os três widgets D aqui, então vou me livrar deles Então essa será nossa variável aqui. Vamos começar a partir de uma determinada localidade que eventualmente especificaremos que ainda não temos Vamos conectar isso a esse vetor de quebra dessa forma. Agora, nosso cronograma aqui também precisa ser corrigido. Porque em vez de entrar em um tubo descendente, deixe-me mudar esse título da nossa caixa de comentários aqui. Vamos sair saindo de um cano. E como vamos sair saindo de um cano com esse trecho de script, precisamos alterar nossa linha do tempo para que nosso quadro-chave aqui, nosso segundo quadro-chave , não diminua 200 Em vez disso, vai subir 200. Então, tudo o que precisamos fazer aqui é com o último quadro-chave selecionado, livrarmos desse sinal negativo Serão mais 200 assim. Essa é a direção que queremos seguir. Agora, quando terminarmos de subir e sair desse tubo, precisamos ativar os controles de nossos personagens novamente. Porque, se você se lembra , logo no início deste script, desativamos nossa entrada. Vamos selecionar nosso controlador get player aqui. E vamos pressionar o controle D para duplicar isso porque precisaremos dele novamente. Vou movê-lo até aqui tentando encontrar seu caminho por essa paisagem. E vou arrastar para fora daqui o controlador get player e digitar a entrada de ativação. Agora, mais uma vez, isso não está conectado à entrada correta. Preciso que o controle do player esteja conectado à entrada do controlador do player Então, vou manter pressionado o botão esquerdo do mouse e garantir que isso esteja na entrada do controlador do player. Estou aqui para o alvo. Quero clicar com o botão direito do mouse e digitar o personagem do jogador, que será nosso alvo quando terminarmos de sair do cano. Quando terminarmos de sair do cano. Vamos habilitar nossa entrada. Mais uma vez, vamos clicar com o botão esquerdo do mouse e arrastar essa tecla C e isso será chamado ativar o controle do usuário novamente. Tudo bem Agora pinte esse preto imediatamente também. Ok, agora abordamos os cenários em que vamos verificar se é um cano de descida, é um cano que vamos descer e vamos sair saindo de um cano? Então, agora precisamos lidar com as outras situações. Somos nós subindo por um cano e descendo por um cano. Então, para isso, poderemos roubar um pouco mais desse código Nesta seção, queremos lidar com o que acontecerá se for falso, se não for um tubo descendente Em vez disso, vamos subir por um cano. Mais uma vez, precisaremos de outra nota de sequência aqui. Então, vou manter pressionada a tecla S e clicar com o botão esquerdo se isso for falso aqui. A primeira coisa que ainda vamos querer fazer é reproduzir alguns efeitos de distorção Podemos conectar isso aqui assim. Mas agora queremos subir pelo cano. Agora, se você se lembrar aqui do que acabamos de fazer, alteramos essa linha para que, em vez de descermos, subamos 200 unidades irreais Na verdade, podemos clicar com o botão esquerdo e arrastar. Vamos copiar esse trecho do roteiro. Com isso copiado, eu vou vir até aqui. Controle C, controle V para colar, eu tenho que fazer o controle C, controle V para colar isso aqui embaixo. Lá vamos nós. Vamos colocar isso em prática desde o início. questão de tempo, não vou renomear essas linhas do tempo, embora eu deva, mais uma vez, nesta linha do tempo aqui em cima, vamos criar 200 unidades irreais, que é o que Porém, voltando ao nosso gráfico de eventos, não queremos que nossa variável se deforme à localidade, aquela que lemos Nós vamos subir imediatamente. Isso vai ser semelhante a isso e nosso ponto é o que queremos usar. Vou roubar esses dois nós ali mesmo. Vou apertar o controle C. Vou seguir em frente aqui, fazer o controle V, e esse será o ponto de partida do qual partiremos, e depois subiremos adicionando 200 ao movimento de nossos jogadores. Ok, está tudo muito bem. Também precisamos ter certeza de que aqui temos nosso equipamento conectado à espera de um minuto antes de sairmos do cano Aqui também, precisamos pegar nosso acabamento e conectá-lo aqui. Vamos mudar essa caixa de comentários aqui mesmo. Isso será um tubo de entrada apenas para deixar as coisas um pouco mais claras. Só para ampliar um pouco aqui. Você pode ver como está nosso script atualmente. Como você pode imaginar, precisamos de outra seção do script aqui. Agora isso vai sair, cair de um cano Agora, porque vamos cair de um cano, você já deve ter adivinhado Podemos usar esse trecho de roteiro porque essa linha do tempo aqui nos enviará 200 unidades irreais. Esquerda, clique, arraste. Vou pressionar o controle C aqui para copiar isso. Eu vou seguir em frente, só então vou descer para esta seção aqui. Vou fazer o controle V para colar. Deixe-me renomear esta seção imediatamente. Esta será nossa saída tubulação aqui Estamos fazendo a pergunta, vamos sair saindo do cano aqui? Estamos dizendo não, isso é falso. Vamos sair caindo de um cano. Insira o falso na peça desde o início de nossa linha do tempo. Mais uma vez, aqui vamos nos mostrar movendo 200 unidades irreais Ótimo. Voltando ao nosso gráfico de eventos. Mais uma vez aqui, porém, não vamos cair do nosso ponto de distorção. Vamos deletar isso. Em vez disso, vamos usar essa variável aqui em cima. Distorça dois vetores. Ok, então conecte nosso locale warp two. Esse é o que queremos. Então, não se esqueça de que, a partir do nosso pino final, também precisamos ativar nosso controle de usuário. Mais uma vez, há muito código aqui, muitos fios. Então, deixe-me voltar para mostrar a aparência geral desse script. Basicamente, você tem quatro blocos para mover nosso personagem, entrar pelo cano de descida, entrar em um cano ascendente, sair, sair de um cano e sair, cair de Estamos desativando o controle aqui mesmo. E então, no final, estamos ativando o controle aqui mesmo. Tudo bem, com tudo isso feito, vamos compilar e salvar Agora, se eu fosse acessar meu editor de níveis aqui, aqui está meu cachimbo. Eu o selecionei no painel de detalhes. Eu o configurei para poder interagir com ele. Agora, observe que minha localidade warp two está atualmente definida como 2000. No próximo vídeo, mostrarei como trabalhar com a configuração de uma localidade adequada do warp two Mas podemos testar isso agora mesmo. Então, vou seguir em frente e clicar em Play. Eu pressiono a tecla S para descer e isso vai me levar para a posição 000 no meu nível Então, isso simplesmente me levou para onde quer que estivesse no meu nível. E você pode ver que agora estou de volta pronto para jogar, o que obviamente não parece bom, chegando ao nada Mas no próximo vídeo, mostrarei como trabalhar com esses tubos e como configurar uma distorção para localidade, como tudo isso deve funcionar Tudo bem, pessoal, isso vai acabar com essa. Nos vemos na próxima. 70. Conexões de tubos de urdidura: Bem-vindos de volta a todos. Bem, agora que temos nosso enorme script BP war pipe pronto, achei que seria uma forma boa e adequada de mostrar exatamente como trabalhar com isso quando você estiver de volta ao editor de níveis Agora, entre os vídeos aqui, eu adicionei uma segunda versão do nosso canal para que eu possa mostrar várias interações. Agora observe que eu tenho um tubo selecionado aqui no meu nível. Esse é o de antes. No painel de detalhes, defino o lingote Ken Interact como verdadeiro Este é um cano de descida, o que significa que é um que pretendo descer. E também tenho esse cheque de onde pretendo sair saindo de um cano. Estou pretendendo sair desse segundo cano aqui mesmo Agora, minha localidade warp two, preciso especificar algo para Agora, para colocar a coordenada correta. O que posso fazer aqui é selecionar esse tubo. E no painel de detalhes, você pode ver todos os meus vários componentes que compõem meu segundo tubo de guerra. Se você não os vê, é porque isso pode estar em colapso aqui. Você pode ver como estou meio que retirando isso para revelar todos os componentes O que eu quero fazer é selecionar os pontos de distorção Nesse ponto, está meio que enterrado dentro do próprio cano. Agora, o que eu quero fazer é obter a localização mundial desse ponto de distorção Com isso selecionado, você pode ver que a localização relativa disso é menos 35. No entanto, eu quero a localização mundial para isso. Posso selecionar essa lista suspensa e quero que ela mude para ser a localização mundial. Então, agora, essas são as coordenadas mundiais desse componente em particular. Para este tubo, quero copiar essas coordenadas. E para fazer isso, basta clicar com o botão direito do mouse aqui, digamos copiar. Agora eu tenho essas coordenadas copiadas. Agora vou voltar ao nosso primeiro tubo, selecioná-lo e posso posicionar essas coordenadas aqui mesmo em nossa variável de localidade warp two Então, vou clicar com o botão direito aqui e vamos controlá-los. Então, agora estamos dizendo a esse tubo que, ei, queremos poder interagir com você. Você é um cachimbo que queremos derrubar. Vamos sair do nosso cano alvo e, a propósito, esse é o local do alvo. Eu quero que você fale com tudo isso pronto, vamos testar isso. Entrando e brincando. E vamos pular até aqui. Vou tocar no meu manípulo esquerdo do meu controle para baixo, e nós vamos direto para cima Agora, se eu tentar interagir com esse tubo aqui, eu vou, você sabe, tocar na tecla S, na tecla W. Meu polegar esquerdo se inclina para cima, veja, eu não consigo interagir com ele No entanto, eu poderia continuar dando voltas. Desta vez, vou pressionar S no teclado para baixo e subir e pronto. Tudo bem, agora abordamos aquele cenário clássico de ter um jogador descendo por um cano e depois saindo de um cano. Vamos mudar um pouco as coisas aqui. Desta vez, mostraremos como descer por um cano e depois cair de um cano. Então, para isso, vamos selecionar nosso tubo inicial aqui. Vamos dizer que sim, podemos interagir com ele. É um cano que vamos descer. É isso que essa pergunta está perguntando. É um cano de descida? Sim, vamos descer por aquele cano. Vamos sair, saindo de um cano Não, nós não somos. Em vez disso, vamos cair de um cano. Então, só para mostrar onde isso seria acionado em nosso gráfico, a saída saindo do tubo é falsa. Então isso significa aqui em nosso script, quando chegamos a esse ponto, quando saímos subindo do cano. Se isso for falso, vamos descer por aqui e sair caindo pelo cano. Ok, para que isso aconteça, eu tenho que definir esse local do Warp Two Aqui está meu tubo inicial, aquele com o qual vou interagir Preciso definir esse local do warp two. Então, vou escolher meu cano alvo. Esse cara aqui no painel de detalhes. Vou encontrar meu componente de ponto de distorção. Aí está. Mais uma vez, preciso encontrar a localização mundial. Vou selecionar minha localização aqui, alterá-la para a localização mundial. Vou clicar com o botão direito do mouse. Vamos copiar isso. E vou voltar ao meu canal interativo, selecioná-lo. Vou colá-los para minha localidade warp two aqui Colar. Ok, vamos testar esse cenário. Entrando e brincando. pular em cima do meu cachimbo aqui mesmo. Vou pressionar a tecla S no meu teclado, descendo e saindo. Agora, se eu tentar interagir com esse tubo, pressiono as teclas, chego perto disso. Não vou falar sobre isso porque esse tubo aqui não é interativo, como você pode ver aqui. Então, vamos tentar fazer disso uma via de mão dupla agora. Vamos tentar fazer isso para que eu possa realmente interagir com esse cara também. E quando eu tentar subir por esse cano, na verdade vou sair disso. Vamos inverter as direções, se você quiser. Vou tornar esse cachimbo aqui interativo. Então, vou seguir em frente e marcar essa caixa. Isso é um cano de descarga? Não, não é. Estou dizendo que não é um cano que descemos, vamos subir por ele. Quando isso entra em jogo, o tubo é inferior é o tubo inferior no início deste script. Se isso for falso, vamos descer por aqui. Vamos entrar pelo cano. Ok, então estamos dizendo que isso não é um cano de descida, vamos subir por ele. Vamos sair, saindo do cano Sim. É nossa intenção sair saindo desse cano aqui mesmo. Então, vou deixar esse cheque lá. No entanto, preciso definir uma localidade warp two para isso. Vou selecionar esse tubo, vou selecionar aquele ponto de deformação novamente, ele está enterrado lá no meu cano em algum lugar Vou encontrar a localização mundial para isso. Vou clicar com o botão direito do mouse. Eu vou copiar. Em seguida, vou selecionar meu canal interativo aqui, selecionando isso. Vou colá-los como minha localidade warp two. Agora, eu basicamente montei uma rua de mão dupla aqui, onde posso descer por esse cano e sair. E da mesma forma, eu posso subir por esse cano e sair por ali. Vamos fazer um teste. Ok, vou fazer minha interação original aqui. Descendo, eu estou usando o teclado aqui, então eu apenas coloquei a tecla S lá Agora vou pular e quando estiver no pico do meu salto, pressionarei o WK Estou subindo por aquele cano e saindo, descendo, subindo e subindo. E aí está, pessoal. Concluímos nosso tubo de guerra interativo. Apenas certifique-se de que, sempre que você definir esses tubos de guerra em seu nível, configure essa distorção para o local Isso vai acabar com esse pessoal. Nos vemos na próxima. 71. Blueprint de modo de jogo: Bem-vindos de volta a todos. Ao longo dos próximos vídeos aqui, vamos montar um plano de checkpoint E esse modelo de posto de controle será tal que, quando sobrepormos um posto de controle, veremos uma bandeira ser erguida Alguns efeitos de partículas desaparecem. Isso salvará nossa localização para que, se morrermos, reapareçamos naquele posto de controle Então é isso que está reservado ao longo dos próximos vídeos aqui. Tudo bem, aqui na nossa versão de trabalho do projeto, vamos começar falando sobre nosso modo de jogo em terceira pessoa, Blueprint Sem que você saiba agora. Essa planta de jogo em terceira pessoa é especificada em nossa configuração de projeto como a planta do modo de jogo que nosso projeto está usando Agora, tenho nossas configurações de projeto abertas na parte superior aqui, mas só para mostrar como chegar a isso, se você entrar nas configurações no canto superior direito, configurações do projeto, é assim que você pode abri-las. Quero chamar sua atenção para esta opção de mapas em modos. Então, aqui, nosso modo de jogo padrão, o modelo do modo de jogo que nosso projeto está usando é nosso modo de jogo em terceira pessoa Agora, essa planta do modo de jogo determina essas outras plantas que nosso projeto está usando E está especificando coisas como qual peão estamos usando, ou seja, nosso personagem em terceira pessoa, bem como nosso controlador de jogador Esses são dois grandes. Agora estamos falando sobre o projeto do Gamo porque é aqui que vamos hospedar nosso script de respawn Porque esse é um modelo usado pelo nosso projeto. Faz sentido abrigá-lo aqui. Agora vou passar para o nosso projeto BP, em terceira pessoa, do Gamo Eu posso encontrá-lo aqui clicando nesta pasta. Também está aqui em sua pasta de diagramas de conteúdo em terceira pessoa Clique duas vezes nele para abri-lo. A primeira coisa que vou fazer é criar uma nova variável dentro do painel My blueprint, clicando nesse botão de adição de variável para gerar a transformação Como você deve ter adivinhado, essa será a variedade de transformação Agora é muito importante compilar e salvar aqui. Ainda não precisamos definir uma transformação de spawn padrão, porque ela vai chegar Nossa próxima etapa aqui, tudo o que precisamos fazer é criar essa variável, compilá-la e salvá-la Agora, o motivo pelo qual queremos compilá-lo e salvá-lo é para que possamos definir essa variável dentro do nosso esquema de caracteres Vá até a planta do seu personagem em terceira pessoa. E se você esqueceu onde está, aqui está onde ele está localizado no seu navegador de conteúdo Bp, personagem em terceira pessoa. Agora, dentro daqui, vamos pular para o nosso gráfico de eventos. E vamos clicar com o botão direito do mouse em algum espaço vazio. Digite em play. Você pode ver que ele já está sendo usado aqui para definir nosso contexto de mapeamento de entrada. Você só pode ter um desses dentro deste modelo. Poderíamos estender nosso script aqui se quiséssemos. No entanto, só para deixar isso um pouco mais limpo, o que vou fazer é inserir um nó de sequência, manter pressionada a tecla S e clicar com o botão esquerdo. E eu vou conectar isso por aqui. E eu vou passar isso por aqui. Vou usar essa área aqui para reutilizar o evento e começar a jogar. Faça com que pareça um pouco mais limpo. Agora, o que vou fazer é clicar com o botão direito do mouse em algum espaço vazio e digitar modo get game. E qual modo de jogo eu quero obter? Vou sair daqui e digitar elenco em terceira pessoa em nosso modo de jogo em terceira pessoa. Agora, a razão pela qual estou fazendo isso é porque em nosso modo de jogo em terceira pessoa, acabamos de criar uma variável chamada spawn transform E agora eu quero ser capaz de definir isso. Então, se eu arrastar para fora desse pino aqui, posso digitar set spawn transform Então, basicamente, estamos entrando nesse modo de jogo em terceira pessoa e dizendo, ei, você tem uma variável chamada spawn transform dentro de você Eu quero ser capaz de definir isso. O que eu quero definir isso também? Quero fazer com que nossos atores transformem nossos personagens em terceira pessoa. Então, se eu clicar com o botão direito do mouse em algum espaço vazio, vou digitar get actor transform assim. Essencialmente, isso definirá nossa variável de transformação de desova, localizada em nosso modo de jogo, como o local em que nosso personagem aparece inicialmente Para deixar isso claro, vou clicar com o botão esquerdo do mouse e arrastar essa torneira. A tecla C na minha caixa de comentários definirá transformação de geração padrão de nossos personagens ao começar a jogar dessa forma Tudo bem, tem mais uma coisa que eu quero fazer aqui antes de encerrarmos o vídeo. E isso é, queremos criar uma nova variável aqui dentro do nosso personagem em terceira pessoa. Então, vou clicar nesse botão de adição aqui. E vou chamar isso de nosso tamanho de Respawn. E vou definir nosso tamanho de renascimento aqui, o tipo a ser um vetor Se eu compilar, definirei os valores para isso no painel de detalhes como 0,75 em todos os aspectos 0.7 5.0 0.75 Agora você deve estar se perguntando, espere, por que eu quero reaparecer nesse tamanho Novamente, vou usar essa variável para determinar o tamanho do reaparecimento de nossos personagens. O motivo pelo qual estou definindo esses valores é porque nossos componentes da cápsula estão alguns vídeos atrás. Definimos nossa escala padrão aqui para ser 0,75 em todos os aspectos Então, basicamente, estamos combinando isso com essa variável. Tudo bem, agora concluímos nosso trabalho inicial no posto de Vamos compilar e dizer isso. Agora também estamos em condições de criar o esquema do ponto de verificação após a aula Isso virá no próximo vídeo. Nos vemos lá. 72. Blueprint de checkpoint: Tudo bem, bem-vindo de volta. Uma pequena prévia aqui do que pretendemos reunir neste vídeo Esse é o nosso plano de checkpoint. Vamos chegar ao ponto de reunir nossos componentes e definir os detalhes para isso. E então chamaremos isso de vídeo. Mas só queria mostrar o que estamos buscando neste Agora, também é importante observar que, à medida que analisamos isso, você não precisa fazer com que o seu pareça exatamente como o meu parece aqui. Você pode brincar um pouco com o visual aqui em nossa versão funcional do curso Vou criar nosso novo plano de classe de ator aqui dentro da pasta de diagramas de nossa plataforma Vou clicar com o botão direito do mouse aqui em alguma classe de projeto de espaço vazio Esta será uma aula de atores e eu chamarei esse ponto de verificação de sublinhados da BP Vamos clicar na barra de espaço aqui para abri-la com a selecionada. Dentro do nosso plano de checkpoint, podemos ver nossa rota de cena padrão, este ícone aqui Vamos continuar adicionando os componentes necessários e depois vamos voltar e definir os detalhes de cada componente. O primeiro componente que vamos tentar adicionar aqui será um colisor de caixas Basta procurar um colisor de caixas, vou dar um nome a essa caixa Esse nome vai ficar bem. Vamos usar isso para detectar quando nosso jogador sobrepõe essa caixa a fim de definir e salvar um ponto de desova em um lugar no mundo em que queremos Tudo bem, anexado à nossa caixa. Portanto, certifique-se de selecionar esse cara. Vamos adicionar outro componente. Essa será uma malha estática e esse será o ponto de articulação da nossa bandeira, assim Agora vou adicionar várias outras malhas estáticas aqui. Então, com isso selecionado, vou clicar com o botão direito do mouse sobre isso. Vamos duplicar isso imediatamente. Você pode ver o comando de tecla de atalho para duplicar este. Vou chamar minha bandeira de bas, pressione enter com isso destacado em azul. Mais uma vez eu posso fazer o controle D. Este vai se chamar Arm. Então, com isso destacado, farei o controle D novamente. E esta será chamada simplesmente de bandeira. Agora eu quero que minha bandeira seja presa ao braço da minha bandeira. Então, vou clicar com o botão esquerdo e arrastar isso para cima do braço da minha bandeira, para que você possa ver essa relação de vinculação por meio desse recuo ali Ok, em seguida, vou voltar e selecionar minha caixa, porque quero adicionar mais um componente aqui. Ao clicar em Adicionar, esse será um componente de seta. E essa eu vou renomear minha transformação Respawn. Essencialmente, isso apenas definirá um ponto no espaço em que regeraremos o jogador Tudo bem, com todos os nossos componentes prontos, vamos definir os detalhes de cada um. E eu vou direto para a lista aqui. Começando com nossa caixa, vou definir a extensão da caixa, seja, qual será o tamanho dessa caixa? O valor X vai ser 200, o valor y vai ser 200, o z vai ser 500. E vou ampliar aqui para mostrar que esse tamanho é um pouco maior. Vou definir a espessura da linha aqui como cinco, apenas para que essa caixa seja mais fácil de ver quando a colocarmos em nosso nível. E agora vou mover isso para cima também na direção z, no local. Vou definir isso para 500. Configure-o. E isso não vai parecer uma grande diferença agora. Mas também vou mudar nossa rotação aqui no z para 90. Agora, novamente, não vai parecer muito, mas ao girar isso, ele também girará todos os componentes conectados E precisaremos disso para os próximos componentes. Agora, também é importante observar aqui que você pode estender sua caixa para ficar mais alta E talvez você queira fazer isso logo no final, porque só precisamos garantir que o jogador passe por essa área de checkpoint Para garantir que eles passem por isso, você pode querer que isso se estenda até o céu. Ok, então com isso feito, vamos seguir para o ponto de articulação da nossa bandeira. Selecione isso. Vou configurar a malha estática imediatamente. Clicar nesta esfera de material suspensa é o que estou procurando. Essa malha estática deve existir em seu conteúdo inicial Você pode ver isso na dica de ferramenta ali mesmo. Material em si, escolha do revendedor. Você pode decidir o que quiser que seja. Mas vou definir o meu como piso básico. Esse também é o material que existe no conteúdo inicial E com tudo isso feito, vou reduzir isso. Eu quero reduzi-lo uniformemente em x, y e z. Então, certificando-se de ter essa verificação de bloqueio, vou fazer 0,5 no X e pressionar Enter E como isso está bloqueado, ele propagará essa alteração para Y e Z. Isso tornará isso um pouco menor Então eu vou mover a localização disso para baixo na direção Z, vou definir isso para menos 400. Então, na direção x, vou definir isso para menos 200. Isso só vai exagerar um pouco lá atrás. Ok, em seguida, vou selecionar nossa base de bandeira para isso. Eu vou ter a mesma partida estática. Vai ser material, esfera, esfera. O material que vou aplicar a esta também é uma parede básica, embora eu queira que seja. Sim, essa parede branca, do tamanho. Vamos definir a escala para isso. Vou desbloquear minha escala porque não vou fazer isso uniformemente no X, vou usar 0,5, no y vou usar dois E no z eu vou usar dois também. Então, para a localização, vou definir a localização z como menos 500. Colocando isso no x, vou empurrá-lo de volta para menos 200. Então você pode ver que eu tenho essa base que basicamente vai cortar um pouco o chão. A parte inferior você não vai ver, e esse será essencialmente o nosso ponto de articulação. A bandeira vai girar para cima a partir desse ponto, ali mesmo Ok, então com isso feito, vamos prosseguir e selecionar nosso componente de braço de bandeira Próximo. A malha estática que vamos adicionar para esta será chamada S M underscore pillar frame Novamente, estou usando essa malha estática porque ela é encontrada no conteúdo inicial Você não precisa usar este de forma exatamente simples. Estou usando porque parece uma espécie de braço. Agora, vou mexer na escala e na localização disso também Você poderia mudar o material, vou deixar o material assim agora. Mas você pode mudar isso para ser o que quiser. Escala. Vou colocar 0,5 no x, afinar um pouco, vou deixar y e z 1,1 para o local. Vou definir a localização z para menos 390, como no x. Preciso recuar um pouco, então vou usar menos dois oh cinco para a rotação x. Vou definir a rotação x para menos 90. E, em seguida, pressione Enter para que isso seja virado para baixo. Em seguida, vamos pegar nosso componente de bandeira aqui e definir os detalhes para isso. Para a bagunça estática aqui, vou clicar aqui e escolher uma forma de pirâmide quádrupla com sublinhado Estou escolhendo este novamente porque está no conteúdo de Stargard Vamos ter a forma de um triângulo. O material aqui, novamente, a escolha do revendedor. No entanto, vou escolher a cor do vértice. Eu vou escolher esse verde. Isso é encontrado no conteúdo do motor. Se você não ver isso mais uma vez , você pode clicar aqui. Clique nesse ícone de engrenagem verifique se o conteúdo do mecanismo está ativado. É onde esse material vive ou a localização disso. Vou definir a localização Z para 350 na ponta do nosso braço. Defina a localização X como dez, a localização Y como menos dez. Mais uma vez, determinei todos esses parâmetros com antecedência. A balança que vou garantir está desbloqueada. Vou definir isso para ser 0,2 1,2 a mais. Assim, vou definir a rotação aqui para menos 90 no x. Assim, você pode ver que a bandeira está virada para baixo. Quando isso finalmente se levantar, o braço da bandeira se levantará e, como a bandeira está presa ao braço da bandeira, ela aparecerá para o passeio Tudo bem, por último, mas não menos importante, temos nossa transformação Respawn Novamente, isso definirá um ponto no espaço em que queremos que nosso personagem reapareça Para isso, vou definir a localização para menos 400 no Z, para a rotação, vou definir isso para menos 90 no Z também. Então, é um pouco difícil de ver porque eu o selecionei, então deixe-me realmente clicar nele. Mas aí está nosso componente de seta. A base desse componente de flecha é essencialmente onde vamos dizer ao nosso jogador que reapareça nele. Ali mesmo. Ok, então com tudo isso feito, vou continuar e salvar isso. E vamos seguir em frente e colocar um desses em nosso nível. Só para termos uma ideia de como isso vai ficar aqui no meu navegador de conteúdo. Estamos adiando isso. Vou levantá-la no ar, tocar na tecla N e colocá-la no chão Então, isso é essencialmente o que vai parecer. E você pode ver que nosso jogador estará no caminho certo para se sobrepor ao navegar em nosso nível Tudo bem, começamos bem. Aqui estamos em posição de começar nosso script de checkpoint 73. Script de checkpoint: Tudo bem, bem-vindo de volta. Neste vídeo, vamos criar o script para fazer nossa bandeira virar para cima quando nosso personagem se sobrepõe a essa caixa de gatilho aqui Além de definir o ponto de renascimento de nossos personagens em nosso plano de modo de jogo Para fazer isso, precisamos selecionar nosso componente de caixa e criar um evento para isso. Poderíamos fazer isso clicando com o botão direito do mouse, adicionando um evento. Mas eu gostaria de mostrar diferentes métodos de fazer coisas com esse componente selecionado. Entre no painel de detalhes. Role até o fim, temos uma lista de eventos que podemos adicionar. Vamos começar um componente, Overlap. Clique nesse botão de adição. Isso nos levará ao nosso gráfico de eventos. Está bem? Queremos verificar quem é o outro ator aqui. Poderíamos sair daqui e fazer um igual para pegar o personagem do jogador No entanto, vou simplesmente sair disso e fazer um elenco para um personagem em terceira pessoa, que é o personagem que estamos controlando. Essa é uma verificação simples para garantir que nosso personagem em terceira pessoa esteja sobrepondo a Se for, o que vamos fazer é então obter um modo de jogo. Clique com o botão direito para obter o modo de jogo. Precisamos descobrir qual modo de jogo. Então, vamos sair disso e lançar para o modo de jogo, especificamente nosso modo de jogo em terceira pessoa, desta forma. E se for verdade que nosso personagem em terceira pessoa está sobrepondo a caixa, entraremos em nosso jogo ou planta E vamos definir spawn transform. Lembre-se de que temos essa variável aqui chamada spawn transform Vamos colocá-lo aqui. E para o que vamos configurá-lo? Bem, vamos definir isso para nossa transformação Respawn. Eu coloquei transformar, não transformar. Vamos falar duas vezes sobre isso, criar ou corrigir esse nome. Para transformar, vamos arrastar isso para dentro. Vamos obter uma referência à nossa transformação de respawn. Esse é o componente de seta aqui embaixo em nossa janela de exibição Estamos recebendo uma referência a isso. Em seguida, vamos sair daqui e digitar get world transform, get world transform. Então, estamos essencialmente dizendo, ei, a transformação mundial do nosso ponto de renascimento ali mesmo para o nosso Vamos definir isso à medida que nosso spawn se transforma assim que sobrepormos essa caixa nosso personagem em terceira pessoa Tudo bem, está tudo bem. Depois de termos feito isso, vamos fazer uma vez. Vou manter pressionada a tecla e clicar com o botão esquerdo para inserir um único nó. O que queremos fazer uma vez? Bem, queremos reproduzir animação com nossa bandeira aqui levantada. Para fazer isso, vou usar uma linha do tempo. Então, volte ao nosso gráfico de eventos. Vou clicar com o botão direito do mouse e pesquisar um nó da linha do tempo. Vou simplesmente nomear essa bandeira rotativa. Vamos nos livrar da nossa atualização do comando del aqui. Depois de fazer isso, vamos jogar desde o início. Agora, nossa linha do tempo aqui. Vamos pular para dentro daqui. Vamos definir isso para ser muito curto. Vai ser um décimo de segundo, 0,1 será a duração da nossa linha do Aqui vamos adicionar uma pista flutuante. Então clique em faixa, em Adicionar faixa flutuante. Vou simplesmente chamar essa bandeira de alfa com o tempo. Você verá por que estou chamando isso um pouquinho assim. Vai fazer um pouco mais de sentido quando eu mostrar em qual nó conectar isso. Agora, aqui na nossa linha do tempo, vou clicar com o botão direito do mouse e adicionar uma chave E então vou clicar com o botão direito do mouse novamente e adicionar uma segunda chave. Agora vou selecionar minha primeira chave aqui. Com a primeira chave selecionada, vou definir o tempo como zero o valor como zero também. Para minha segunda chave aqui, vou definir o tempo 0,1 e o valor como um. Ele vai pular do topo aqui. Então, vou clicar nessas duas setas para enquadrá-las. Meu primeiro está definido como 0,0 Meu segundo quadro-chave está definido para um tempo de 0,1, que corresponde ao comprimento da minha linha do tempo e ao valor de um Agora, a razão pela qual definimos isso dessa forma é porque aqui em nosso gráfico de eventos, nosso sinalizador alfa ao longo do tempo agora está sendo gerado por nossa linha do tempo Vamos usar essa saída para conectar um nó rotador Lp com o botão direito nó rotador Lp com o botão Agora, a forma como esse nó funciona é quando A é zero, estaremos 100% em uma rotação. Quando B for um, estaremos em outra rotação, alfa é zero. Estaremos totalmente em A. Quando alfa for um, estaremos em B. E em algum lugar intermediário, estaremos em um ângulo de 45 graus. Então, vamos usar isso para determinar a rotação do nosso braço de bandeira. Aqui, deixe-me mostrar basicamente o que pretendemos fazer em nossa janela de visualização Temos esse braço de bandeira e é isso que vamos girar Deixe-me trazer nossa rotação aqui. Pressionando a rotação. Nossa rotação para este braço de bandeira, nossa rotação A, será a rotação que vemos aqui em nossa janela de exibição Agora, nossa rotação será totalmente ascendente assim. Quando nosso valor alfa for um, estaremos nessa posição aqui. Agora, quando nosso valor alfa estiver em 0,5, basicamente dividiremos a diferença Então, será em um ângulo de 45 graus . Quando alfa é zero, estamos aqui quando alfa é um. Estamos aqui quando o alfa é 0,5. Estamos no meio do caminho É assim que isso vai funcionar, certo? Vamos voltar ao nosso gráfico de eventos agora. É que precisamos de algumas variáveis para manter nossas várias rotações desejadas Para isso que vou escrever, clique em nosso valor aqui. Vamos promover isso para uma variável. Isso criará um tipo de variável rotadora. Agora preciso nos dar um nome melhor do que a. Vou chamar essa bandeira de girar Comece com isso selecionado. Vou seguir em frente e fazer o controle D. Para duplicar isso, vou fazer minha bandeira girar a E eu vou inserir isso no valor. Agora eu preciso compilar isso para definir um valor padrão aqui Agora, obviamente, agora ambos estão definidos 00.0. Agora, se eu for até minha janela de visualização e pegar meu braço de bandeira e girá-lo para cima dessa forma, você pode ver que meus valores de rotação são zeros Quando estiver assim, meus valores de rotação são negativos 900,0. Vou copiar esses valores aqui, clique com o botão direito Quero que esse seja meu valor inicial. Eu vou vir aqui embaixo braço da bandeira. Gire, comece Vou clicar com o botão direito do mouse e pagar os valores das habilidades aqui porque minha rotação final desejada será 00,0. Vou deixar isso Voltando ao meu gráfico de eventos aqui, preciso dizer ao meu braço de bandeira vamos arrastar e soltar uma referência a isso em nosso gráfico de que é o item que eu quero girar Então, vou sair disso e digitar rotação relativa definida. À medida que nossa linha do tempo está sendo atualizada, atualizaremos a rotação do nosso braço de bandeira. Para qual rotação queremos configurá-lo? Bem, queremos começar aqui quando nosso alfa estiver em zero. No início da nossa linha do tempo, o alfa está em zero E então, ao longo de 0,1 segundos, esse valor de saída mudará de 0 a 1 quando estivermos em zero Vai ser essa rotação. Quando estivermos em um, ou seja, no final dessa linha do tempo, estaremos nessa rotação. E isso vai acontecer ao longo de 0,1 segundos. Esse será o nosso roteiro para fazer nossa bandeira girar para cima. Então, o que precisamos fazer é adicionar um pouco de flash, alguns efeitos para quando terminarmos essa rotação da bandeira. Vamos construir a partir desse pino acabado aqui. Para isso, vou me arrastar para uma peça de teatro. Sound Two D. Vou tirar isso desse acabamento para que você possa ver para onde esse fio vai para a peça. Soe novamente, escolha do Dealer. Aqui, eu vou fazer Enter Simulate. Esse é um som que deveria existir no conteúdo do seu motor. Então, você pode clicar nessa engrenagem, verificar se tem o conteúdo do motor, mas é isso que eu vou escolher. E então eu vou sair daqui e vou criar um sistema de desova no local O sistema é um sistema de partículas do Niágara. Agora, para o meu modelo aqui, vou escolher essa explosão radial que existe naquele caminho específico Você também pode criar um emissor de spawn no local. Agora, para essa partícula em particular, ela é bem genérica. Não é muito chamativo. Então, vou aumentá-lo muito para 101010 na escala 101010 na Agora eu preciso alimentar esse local. Eu tenho uma localização na minha que vou arrastar na transformação Respawn Eu vou sair daqui. Eu vou dizer, obtenha a localização mundial. Na verdade, eu quero compensar isso um pouco. Vou fazer isso, tocar no botão de adição para que eu possa adicionar algo a isso. E eu vou compensar isso em 200 na direção z. Esse será o local onde esse sistema será gerado. Vou clicar com o botão esquerdo e arrastar esse toque na tecla C. Vou dizer que esta é minha peça FX e VX. E então, aqui em cima, é aqui que estamos fazendo a rotação da nossa própria bandeira. Vou deixar isso sem comentários, mas vou mudar essa caixa de comentários aqui para preta Tudo bem, então vou tentar enquadrar isso aqui em algumas vistas. Então, vou até a primeira vez aqui, caso você queira pausar o vídeo aqui para ver o que criamos Mais uma vez, esta é a nossa caixa ali mesmo. Essa transformação de desova. Conseguimos isso chegando aqui e procurando por spawn Essa é uma variável que vive dentro do nosso modo de jogo em terceira pessoa. Então aqui está a segunda parte do nosso roteiro. Caso você queira pausar o vídeo aqui, focaremos apenas nesta parte superior, a rotação da bandeira aqui, indo de 00 a 0,11 . Além disso, quando terminarmos, esses são os efeitos que vamos reproduzir ali mesmo Ok, obviamente isso ainda não vai funcionar totalmente. Ainda temos que trabalhar na recriação, na geração do personagem em si e em fazer com que o script Mas, no mínimo, devemos ser capazes de compilar isso, sobrepor essa caixa específica ao nosso personagem e ver se a bandeira vira para cima e ver se vemos alguns efeitos E veja alguns efeitos, e aqui estão alguns efeitos. Então, vamos lá. Eu vou entrar e jogar. Tenho meu posto de controle lá, tente sobrepor E aqui vamos, a bandeira se ergue, vemos um pouco ali, aqui, um pouco de jazz E isso parece estar funcionando conforme o esperado. Vou tentar sobrepor isso mais uma vez. Você pode ver que estamos fazendo esse efeito apenas uma vez. E está tudo muito bem. Tudo bem, pessoal, estamos em uma boa posição agora para trabalhar em nosso script de Respawn, que virá em seguida em nosso modo de jogo, uma boa posição agora para trabalhar em nosso script de Respawn, que virá em seguida em nosso modo de jogo, Blueprint. Nos vemos lá. 74. Roteiro de repawn no modo de jogo: Bem-vindo de volta. Agora que temos um plano de ponto de verificação no qual estamos definindo uma variável de transformação de geração dentro do nosso esquema de modo de jogo Vamos mergulhar em nosso próprio modo de jogo em terceira pessoa para configurar nosso script de Respawn Para isso, vamos mergulhar em nosso navegador de conteúdo. E vou começar no meu modo de jogo em terceira pessoa. Mas eu também vou abrir meu personagem em terceira pessoa imediatamente. Porque vou apontar algo dentro nosso plano de personagem em terceira pessoa ao longo do caminho Então vá em frente e abra os dois aqui em nosso modo de jogo em terceira pessoa BP Começaremos no gráfico de eventos clicando com o botão direito do mouse e procurando um nodo Begin play. Mais uma vez, isso vai disparar quando começarmos a jogar. E o que eu quero fazer fora do Begin Play? Bem, eu vou clicar, vou pegar o personagem do jogador. E eu vou me arrastar para fora desse nó. E vamos escalar um personagem em terceira pessoa. E você vai ver o porquê aqui em apenas um momento. Agora vou fazer a transição daqui no meu plano de modo de jogo para meu personagem em terceira pessoa Agora, dentro do nosso personagem em terceira pessoa, se você clicar nesse ícone de engrenagem no painel do meu projeto, mostrarei variáveis herdadas Estou mostrando todas essas várias coisas aqui. Se eu desligar isso, você não verá nenhum despachante de eventos aqui embaixo mostrando variáveis herdadas Estou chamando sua atenção para esta seção de despachantes de eventos A razão pela qual estou chamando sua atenção aqui é se estivermos no jogo de despacho de eventos, temos esse despachante de eventos para quando nosso personagem for destruído temos esse despachante de eventos para quando nosso personagem Quando nosso personagem é destruído, podemos pedir que algo mais aconteça em outro plano usando um despachante de eventos Eu não criei esse despachante de eventos em particular. Isso vem junto com nossos pais da classe de personagens. A razão pela qual estou apontando isso é porque isso existe dentro do nosso personagem em terceira pessoa. Podemos fazer algo acontecer dentro de outras plantas. Quando nosso personagem em terceira pessoa é destruído, eles morrem. Agora vou voltar ao nosso modo de jogo em terceira pessoa. Vou sair do nosso personagem de terceira pessoa do SBP e vou procurar destruídos E eu vou trazer uma placa de destruído. Isso trará dois nós. O que isso traz é um evento personalizado. E vou deixar esse evento personalizado com o nome atual evento destruído, bem como esse nó de ligação Essencialmente, o que estamos fazendo aqui é, ao começar a jogar, entrar em nosso personagem em terceira pessoa e dizer: ei, quando você for destruído, vamos ouvir quando isso acontecer. Quando isso acontecer , vamos disparar com esse pino. Este evento, comece a jogar e vincular esse evento a esse evento não destruído para nosso personagem em terceira pessoa é basicamente dizer: ouça isso quando isso acontecer em nosso personagem em terceira pessoa E quando isso acontece, então esse bebê vai embora aqui. Podemos usar isso para o respawn desejado. Se continuarmos com isso, podemos simplesmente pesquisar o ator de spawn da classe O ator que gostaríamos de responder é essencialmente nós mesmos, outro personagem em terceira pessoa. Aqui na aula, vou digitar em terceira pessoa, estou procurando um personagem em terceira pessoa , é claro, preciso especificar onde gostaria de responder? Bem, adivinhe. Além desse modo de jogo em terceira pessoa, criamos essa transformação de desova para conectá-la à nossa transformação de geração aqui Observe que estamos preenchendo os valores dessa variável de dentro do nosso ponto de verificação de BP. Quando sobrepomos essa caixa, é aqui que, na verdade, definimos as coordenadas para nossa transformação de spawn Estamos configurando para a transformação Respawn, nosso ponto de verificação aqui Ótimo. Vamos voltar ao nosso modo de jogo em terceira pessoa. Está tudo bem, mas isso só funcionaria na primeira vez. E queremos fazer isso para que esse sistema Respawn possa funcionar se morrermos de novo e de novo e de novo E também há algumas outras coisas que precisamos cuidar, sendo a primeira nosso personagem em terceira pessoa. Quando eles desovam, queremos garantir que seu tamanho seja pequeno Queremos que eles estejam nessa escala de 0,75 para nosso componente de cápsula Para garantir que isso volte aqui em nosso modo de jogo, vou retirar desse valor de retorno depois de renascermos, um personagem em terceira pessoa E vou digitar o componente da cápsula. Vamos pegar o componente da cápsula e depois vou sair daqui. E também vou encontrar o tamanho do respawn, nossa variável de tamanho de respawn que existe dentro do nosso personagem em terceira pessoa Estamos falando dessa variável aqui, que é definida como 0,75 em todos os aspectos Agora, o que vamos fazer é retirar nosso componente de cápsula e eu vou dizer definir a escala mundial três D. E então vou inserir nosso tamanho de resposta, que é definido como 0,75 em toda a linha, para garantir que nosso componente Caple seja de 0,75 em toda a Essencialmente, nosso personagem será desse tamanho pequeno. OK. Então essa é a primeira coisa que precisamos fazer. A próxima coisa que precisamos fazer é garantir que realmente ganhemos a posse, algum controle sobre esse personagem. Para fazer isso, vou escrever clique em algum espaço vazio. Obter o controle do player é a primeira nota que vou procurar. Então eu vou sair disso e digitar possessão. Com essa função de posse, precisamos especificar não apenas o controlador, mas também qual peão queremos possuir Bem, podemos simplesmente sair do nosso personagem de terceira pessoa aqui que estamos gerando Conecte-o ao nosso peão aqui. E então vou clicar duas vezes nesse fio algumas vezes apenas para inserir alguns nós de redirecionamento para deixar tudo bonito Ok, está tudo bem, mas dê uma olhada em nossa configuração atual. Isso só funcionará na primeira vez. Então, ao começar a jogar, estamos basicamente dizendo, ei, escute quando nosso personagem em terceira pessoa for destruído. E quando eles forem destruídos, na verdade geraremos um personagem em terceira pessoa e os possuiremos No entanto, se morrermos, não teremos como ouvir esse evento acontecer novamente. Então, como podemos remediar essa situação? Bem, o que podemos fazer aqui é clicar com o botão direito em algum espaço vazio aqui em cima. Vou digitar eventos personalizados. Vou chamar isso de Respawn e vou conectá-lo exatamente no mesmo local em que nosso evento começa a Play Basicamente, dizendo olá, vamos ouvir mais uma vez aquele despachante de eventos destruído em nosso personagem em terceira pessoa No final, depois de criarmos o evento personalizado de respawn, podemos arrastar para fora daqui e digitar Essencialmente, o que estamos fazendo aqui é começar a jogar na primeira vez ouvimos esse evento destruído. E, de fato , isso surgirá em um novo personagem em terceira pessoa que poderemos controlar Então, estamos essencialmente dizendo, sim, a última coisa. Vamos ouvir esse evento não destruído acontecer mais uma vez. Para que possamos sempre ouvir quando nosso personagem é destruído para que possamos reaparecê-lo Ok, vamos compilar isso e salvar. E deixe-me enquadrar isso aqui caso você queira fazer uma captura Veja exatamente o que fizemos. Vamos entrar e jogar aqui em apenas um momento. Mas para realmente testar isso, preciso ter certeza de que temos algum meio de nos matar aqui em nosso editor de níveis. Deixe-me ter certeza de que temos alguns braços flamejantes aqui. Então isso deve nos matar em breve , entrando e brincando Tudo bem, eu vou atravessar esse posto de controle aqui mesmo Definimos nosso ponto de respawn. Deixe-me ir em frente e me deparar com um braço flamejante. Aqui eu morri e, como você pode ver, respondo exatamente onde deveria, parece estar funcionando como desejado. Muito bem, pessoal. Agora temos um ponto de verificação e um sistema de resposta em funcionamento Vejo todos vocês no próximo vídeo. 75. Sequência de morte do jogador #1: Tudo bem, bem-vindos de volta a todos. No decorrer dos próximos vídeos, trabalharemos na criação uma sequência de morte de jogadores. Será aí que nosso jogador será jogado no ar, cairá pelo mundo e responderá no posto Também trabalharemos na criação um risco de morte instantânea neste segmento do curso Para que possamos cair em um buraco como esse, morrer e depois voltar para aquele posto de controle Mas vamos começar criando a sequência de morte do jogador. Tudo bem, aqui na nossa versão de trabalho do projeto, vamos começar colocando um script dentro do nosso personagem de terceira pessoa da BP Então, encontre o caminho para a pasta de plantas em terceira pessoa. Aí está nosso personagem de terceira pessoa da BP. Clique duas vezes nesse cara para abri-lo e encontrar o caminho até o gráfico do evento. Já temos muitos roteiros aqui. Vou apenas aumentar o zoom com a roda de rolagem e encontrar algum espaço vazio talvez nesta região. Vou aumentar o zoom e começar criando um evento personalizado. Clique com o botão direito. Vamos digitar evento personalizado e vamos chamar esse evento personalizado. Deixe-me ampliar ainda mais. Mantendo pressionado o controle e aumentando o zoom. Vou dizer que esse jogador morre. Quando esse evento personalizado for convocado, jogaremos uma sequência de morte. Agora, não quero ter que esperar até encontrar um inimigo ou cair em um buraco para iniciar esse evento Eu quero ser capaz de acionar isso no editor. Então, com esse evento personalizado selecionado no painel de detalhes aqui, eu tenho essa caixa de seleção chamada Call in Editor, qual, se eu marcar isso, farei com que eu possa convocar manualmente esse evento personalizado para iniciar enquanto eu estiver jogando Chegaremos a isso daqui a pouco. Essa é uma maneira muito fácil que nos permitirá testar essa funcionalidade sem precisar encontrar aquele inimigo ou cair em um pip. Ok, a próxima coisa que vamos fazer aqui é criar uma função. Podemos criar uma função no painel my blueprint. Funções: clique nesse botão de adição para criar uma função. E vamos criar uma função chamada destroy a x. Quando criamos essa função, abrimos uma nova guia na parte superior aqui, na qual podemos adicionar a funcionalidade desejada dentro daqui. A primeira coisa que vou fazer quando essa função for chamada é sair daqui e digitar play. Sound Two D, o som que vamos tocar é o que Mario fez. Parece que vou fazer Mario morrer. Depois disso, clicaremos com o botão direito do mouse em obter o personagem do jogador. Se morremos, não queremos mais que as entradas sejam registradas. Então, eu também vou clicar com o botão direito do mouse e obter o controle do jogador, obter o personagem do jogador, obter o controle do jogador. E se eu sair do meu controle get player, vou digitar a entrada de desativação. Agora, observe que, se você fez o que acabei de fazer aqui, ele o conectará automaticamente ao alvo. Na verdade, queremos mover esse controle do player para baixo até a entrada do controlador do player para manter pressionado o controle e clicar com o botão esquerdo. E certifique-se de conectá-lo ao controle do jogador e colocar o personagem do jogador como alvo. Ok, então jogue. Som Vamos desativar a entrada. A próxima coisa que vamos fazer é sair daqui e gerar o emissor no local Novamente, você pode criar um sistema de desova no local se for um sistema de partículas do Niágara que você gostaria Para isso, vou usar a explosão antiga encontrada no conteúdo inicial Mas, novamente, na escolha do revendedor, você pode adicionar o que quiser. Vou aumentar isso para me fazer sair em uma chama de glória, aumentando para 3,3 em todos os aspectos Preciso fornecer um local para isso. Onde eu gostaria de gerar essa explosão? Bem, eu posso arrastar para fora do meu personagem para obter a localização do ator. Esse será o local onde eu quero aparecer nesse efeito de partícula Ok, ainda não terminamos, então vou segurar o botão direito do mouse e dar uma olhada um pouco. A próxima coisa que eu quero fazer é trazer uma referência ao componente de movimento do meu personagem. Clique com o botão esquerdo e arraste. E então eu vou sair disso e digitar desativar Essencialmente, se eu morrer, quero parar imediatamente. E isso garantirá que todo movimento seja interrompido. Além disso, quero trazer uma referência ao componente da minha cápsula aqui. Arraste e solte isso. Então vamos sair disso e definir a colisão. O nó é chamado de Definir colisão ativada. Quero ter certeza de que não há colisão, para que meu personagem simplesmente passe por tudo Então eu vou trazer minha bagunça Re , que é o próprio manequim . Arraste isso para dentro. Então eu vou arrastar isso e vou digitar uma animação. Então, para isso, posso inserir uma nova animação para jogar. Se eu clicar nesse menu suspenso, haverá um loop de queda. Você pode ver o diretório ali mesmo. Está no jogo, personagens, manequins, animações, muitos. Isso é. Viu o que isso parece? Se eu clicar nisso, é mais ou menos esse tipo de coisa, você sabe, ei, eu estou caindo. Achei que esse seria muito bom. Mas, novamente, a escolha do dealer aqui que você pode escolher a animação que quiser jogar Você pode configurar isso para ser repetido, se quiser. E essa será a nossa função que vamos chamar aqui daqui a pouco. Então, toda essa funcionalidade agora está armazenada em uma função que, se chamarmos essa função, basicamente chamará muitas outras funções para que aconteçam. Meio útil, eu acho Ok, em seguida, em nosso painel de plantas aqui, vamos criar nosso próprio despachante de eventos, aqui Então clique neste botão de adição e vamos nomear esse R inicia a sequência de morte. Tudo bem, então isso é criado em nossa área de expedição de eventos, aqui embaixo. Agora, com um despachante de eventos, você convoca o evento e, em seguida, qualquer outro plano que esteja atento a esse evento pode Dessa forma, os planos de recebimento que estão ouvindo quando esse evento acontece parecidos com os assinantes que esperam ser notificados quando sua celebridade ou atleta favorito envia um tweet. Os notificados quando sua celebridade ou atleta favorito planos de inscrição, que estão ouvindo que esse evento ocorra, podem então reagir de acordo Ou seja, eles podem executar seu próprio script em resposta a esse evento que acabou de ocorrer. Agora, isso entrará em ação em breve, quando notificarmos nosso bloco para ficar atento quando esse evento ocorrer. Ok, com isso, o jogador inicia Death Sequence Event Dispatcher no local Agora podemos voltar ao nosso gráfico de eventos. Essencialmente, saia dessa guia de funções e podemos começar a criar, a partir da morte de nosso jogador, um evento personalizado. Então, a primeira coisa que vou fazer é quando nosso jogador morrer, quando isso for chamado, vamos dizer ao nosso ator de destruição FX, essa função aqui deve ser chamada. A próxima coisa que vamos fazer é arrastar nosso despachante de eventos aqui, clicar com o botão esquerdo e arrastá-lo para dentro clicar com o botão esquerdo e arrastá-lo E então você vai ter esse pequeno submenu. Queremos chamar isso de Event Dispatcher. terá esse pequeno ícone de envelope Novamente, terá esse pequeno ícone de envelope, que basicamente enviará um Tweet para qualquer outra planta que esteja ouvindo esse determinado evento Tudo bem, e então o que queremos fazer aqui, apenas segurar o botão direito do mouse e continuar ofegando um pouco, é clicar com o botão direito do mouse em algum espaço vazio aqui E eu vou fazer com que o ator se transforme. Qual ator será, essencialmente nosso personagem em terceira pessoa. Queremos saber onde esse ator está localizado e rotacionado no mundo. E a razão pela qual quero obter isso é porque quero clicar com o botão direito nesse valor de retorno e vou promovê-lo a uma variável. Essa variável será chamada de start death transform. Agora vamos usar isso um pouco mais tarde neste script, depois de criarmos uma linha do tempo a partir da qual começaremos nossa sequência de morte Esse efeito de queda. Ok, a próxima coisa que vamos fazer é trazer uma referência à nossa malha. Novamente, esse será nosso manequim aqui. Arraste e solte isso no painel de componentes. E então vamos nos afastar disso e nos separar dos componentes Basicamente, isso separará essa malha dos componentes maiores da cápsula do personagem em terceira pessoa, para que ela possa seguir essas várias regras Vamos mudar tudo isso para manter o mundo. E essa será a parte inicial do nosso script de sequência de morte. Aqui estamos longe de terminar aqui. Em seguida, precisamos adicionar um cronograma. Mas vamos ligar para esse vídeo e depois continuar na segunda parte. Você pode prosseguir, compilar e salvar para ter certeza de que salvou seu progresso aqui E então veremos todos vocês no próximo vídeo, onde terminaremos isso. 76. Sequência de morte do jogador #2: Bem-vindo de volta para a segunda parte da nossa sequência de morte de jogadores. Vamos voltar ao nosso plano de personagem em terceira pessoa Foi aqui que paramos no último vídeo com nossa função separada do componente Agora vamos adicionar uma linha do tempo, clique com o botão direito em algum espaço vazio. Vamos adicionar uma linha do tempo, adicionar uma linha do tempo. Vou nomear essa linha do tempo como minha animação de morte. E eu vou conectar isso imediatamente. Vou jogar isso desde o início. Realmente não importa como vamos ter tudo isso conectado. Se for jogado pelo jogador desde o início, jogaremos do início. Em seguida, vamos clicar duas vezes nele para abri-lo. Então, acabamos de abrir uma nova guia na parte superior aqui para que possamos personalizar nossa animação aqui, nossa linha do tempo. Isso vai ser uma pista flutuante. Então, vamos adicionar uma pista flutuante. Vou nomear esse movimento. Vou definir minha duração total aqui para ser de 1,5 segundos. Em seguida, vou adicionar três quadros-chave. Então, vou manter pressionada a tecla shift e clicar com o botão esquerdo uma vez duas e três vezes nesse padrão ali mesmo. E então vou definir os valores para cada um deles. Vou selecionar este primeiro, o tempo será zero e o valor será zero. O segundo aqui eu vou selecionar, o tempo vai ser 0,5 segundos e o valor vai ser 500. E então vou selecionar meu último quadro-chave, aqui mesmo, o tempo será de 1,5 segundos e o valor será negativo 1.000. Novamente, ele sairá do gráfico. Então, se você clicar nessas teclas de seta, você deve enquadrá-las assim. Estou apenas usando a roda de rolagem para voltar a ampliar. Agora, esse é um gráfico um pouco áspero. É ****, ****. Eu quero que isso seja curvo, para que eu possa curvar isso clicando com o botão esquerdo e arrastando todos esses vários pontos E então eu posso clicar com o botão direito em qualquer ponto e fazer a interpolação automática Isso criará esse tipo de curva suave como essa. Agora, essa deveria ser nossa animação de malhas. Então, essencialmente, sendo jogado no ar e depois caindo. Depois de adicionarmos essa faixa, podemos sair de nossa animação de morte, nossa linha do tempo aqui Volte para o nosso gráfico de eventos. Agora vemos essa saída de movimento. E, essencialmente, vamos usar essa saída de movimento para adicionar. Vamos fazer a adição de um operador a um determinado local z. Agora vamos trazer uma referência à nossa transformação inicial de morte. Trazendo isso, nós vamos pegar isso. Lembre-se de que, no início do script, quando morrermos, basicamente obteremos nossa localização atual quando morrermos e salvá-la em uma variável. E a razão pela qual estamos salvando esse conjunto de coordenadas, se você quiser, dentro dessa variável é para que possamos usá-lo aqui como uma posição inicial a partir da qual começar essa animação de morte dessa transformação de início de morte. Vou me arrastar e dizer pausa. A razão pela qual estamos abrindo isso é porque, na verdade, só nos preocupamos com as informações de localização. Então, vou clicar com o botão esquerdo e arrastar para fora daqui, vamos dividir esse vetor em seus componentes x, y e z. Essencialmente, adicionaremos o Z de nossa transformação de profundidade inicial à saída de valor de nossa linha do Mais uma vez, nosso cronograma mudará. Esse valor é emitido de zero a 500, meio segundo e depois reduzido para menos 1.000 em 1,5 segundos. Ele alterará esse valor 1,5 segundo, conforme acabamos de mencionar aqui Ok, tudo isso será necessário porque, em última análise, usaremos isso para nos conectarmos a localização relativa definida e a um nó de rotação. Queremos definir a localização relativa e a rotação da nossa malha aqui. Vamos arrastar isso para o nosso gráfico. Aí está nossa malha. Arraste para fora daqui. Defina a localização e a rotação relativas à medida que atualizamos nossa linha do tempo. Aqui mesmo. Nós vamos fluir para lá. E a nova localização que vamos arrastar para fora daqui, vamos criar um vetor. Faça vetor. manter os valores x e y da nossa posição inicial. Está tudo bem. Só queremos mudar a posição z. O resultado dessa matemática, aqui, basicamente enviará nossa malha para o ar e depois cairá de volta para baixo desse jeito. Agora, depois desse pequeno script aqui, vou trazer um nó de atraso. Vou atrasar por 2,5 segundos. 2.5 então o que eu vou fazer é sair daqui e dizer ator. Ou seja, nosso personagem em terceira pessoa. Agora, por que 2,5 segundos? Bem, por meio de alguns testes, eu basicamente descobri que era tempo suficiente para garantir que nosso player caísse da tela. Então, esse será essencialmente o nosso roteiro. E vou tentar retroceder aqui para que você possa pausar o vídeo quando necessário para ver tudo o que reunimos Em pouco tempo, podemos tentar chamar esse evento personalizado manualmente. Vamos compilar e salvar aqui apenas para garantir que tudo esteja bem Para testar isso, vou voltar ao meu editor de níveis aqui. Vou clicar nesses três pontos aqui no editor de níveis E vou mudar de uma nova janela de reprodução do editor para a janela de visualização selecionada Agora, a razão pela qual vou fazer isso é porque agora posso jogar na minha janela de visualização, mas também vejo meu esboço Qualquer ator nessa cor laranja amarelada. Eles foram gerados automaticamente aqui no início do jogo. Eles não existiam até jogarmos o jogo. Isso vai me permitir selecionar meu personagem em terceira pessoa. E você pode ver que eu poderia clicar aqui e me mover para recuperar o cursor do mouse. É apenas uma tecla shift e uma que trará o cursor do mouse de volta com o selecionado. Se você pesquisar um jogador no painel de detalhes aqui como acabou de ver que eu tinha feito antes, posso descobrir que meu jogador morre. O evento personalizado agora está aqui exposto no editor para eu ligar. Isso é ótimo para fins de teste, então tudo que eu preciso fazer é clicar nele e você verá meu jogador jogar aquela sequência de morte. Ótimo para testes. Aqui vamos nós. Então, fique de olho nesse personagem enquanto eu clico nele. Lá vamos nós. personagem voa para cima, desce e está funcionando conforme o esperado. Isso é ótimo. Mas agora vamos fazer com que isso realmente funcione dentro de um script relevante porque isso foi apenas para fins de teste. Agora, se voltarmos ao nosso personagem em terceira pessoa e encontrarmos nosso roteiro para ajustar os pontos de vida E vou entrar meu painel de resultados de busca aqui. Eu poderia encontrá-lo aqui dando uma olhada no meu gráfico. Mas só para mostrar coisas diferentes que você pode fazer aqui, na parte superior eu tenho a janela, eu tenho os resultados de busca ativados. Então, se eu simplesmente digitar ajuste, pressionar Pontos e pressionar Enter, você poderá ver os resultados que obtenho. E se eu clicar duas vezes nele, posso encontrar meu script de ajuste de pontos de vida. Isso vai me levar para aquele evento personalizado. Agora, o que eu quero fazer é aparecer nesta parte do meu gráfico. Agora, o que estávamos fazendo aqui é destruir nosso personagem em terceira pessoa, essencialmente imediatamente quando eles ficaram sem pontos de vida O que eu quero fazer é me livrar disso aqui no topo desse verdadeiro galho. Exclua isso. Em vez disso, posso chamar essa função de destruição do ator FX. Desculpe, não é isso que queremos fazer. Queremos chamar nosso player dies de evento personalizado. Deixe-me sair daqui, digite o jogador morre. Isso chamará esse evento personalizado essencialmente quando ficarmos sem pontos de vida. Quando isso for verdade, se eu clicar duas vezes nisso, vou direto para onde iniciaremos esse evento personalizado. E dentro da nossa função de ator de destruição, vamos fazer todos esses efeitos. Eu apenas clico duas vezes nesse nó e depois pulo de volta. Vamos analisar esse pequeno roteiro. Eventualmente, usaremos esse Event Dispatcher, jogador inicia a sequência de morte Vamos separar nossa malha. Vamos reproduzir aquela animação de morte. Vamos voar para o ar e voltar para baixo. E depois de decorridos esses 2,5 segundos, destruiremos nosso ator conhecendo nosso personagem em terceira pessoa Vamos compilar isso, salvar e testar. E isso novamente deve acontecer quando nos deparamos com, digamos, um inimigo gumba, ou o risco de nossa arma de fogo bastará Deixe-me dar uma olhada no meu gumba aqui em cima. Boom, eu estou morto. Estou ficando sem pontos de vida. Na verdade, eu respondi no meu posto de controle. Ótimo, tudo está funcionando como pretendido. Bem feito. Agora temos a sequência de morte de um jogador intacta. Nos vemos a todos no próximo vídeo. 77. Sequência de morte e o P Block: Tudo bem, ao longo dos dois últimos vídeos, montamos esse script de morte do jogador para que nosso jogador pudesse reproduzir uma sequência de morte. E tudo isso foi feito dentro do nosso personagem em terceira pessoa. Como parte do script, também incluímos uma chamada de despachante de eventos chamada player death start sequence Para que pudéssemos enviar uma mensagem qualquer outra planta que precisasse saber que nosso jogador morreu Agora, dentro de qualquer outro plano, podemos responder adequadamente Faça acontecer algo que gostaríamos que acontecesse. Isso é apenas enviar a mensagem. Agora, precisamos configurar em outro plano a recepção dessa mensagem e uma resposta adequada E, na verdade, queremos configurar isso dentro do nosso bloco. Eu tenho um bloco configurado no meu nível e, como você sabe, quando você parar com isso, ele transformará alguns dos meus blocos aqui em moedas. E o que precisamos fazer é enviar uma mensagem para o nosso bloco dizendo que, sim, o jogador morreu. Para que possamos trocar esses blocos que foram transformados em moedas novamente em blocos Depois que nosso jogador morrer, mais uma vez você pode abrir seu bloco selecionando-o em seu nível e depois no Outliner, basta clicar ali mesmo Ou você pode encontrá-lo em seu navegador de conteúdo. Nós o temos neste local. Com isso aberto, vamos modificar um pouco nosso script. No começo, estamos basicamente lançando todo esse script aqui mesmo, quando detectamos que nosso jogador atingiu o componente da caixa Agora precisamos mudar isso um pouco porque precisamos identificar se é o personagem em terceira pessoa e não qualquer personagem que está batendo nessa caixa E a razão pela qual vamos fazer isso é porque, a partir disso , precisamos encontrar esse evento em que o jogador do Dispatcher inicia a sequência de morte Ok, então vamos modificar um pouco nosso script de bloco P aqui. Eu só vou mover isso de volta. Vou me livrar do personagem do jogador, desse sinal igual e desse nó. Eu também vou me livrar desse nó de rota. Nesse meio tempo, vou tirar meu distintivo de outro ator e escalar um personagem em terceira pessoa. E eu vou reprogramar isso como tal. Vou manter pressionado o controle, clicar com o botão esquerdo e transferir isso através do meu casting para o personagem em terceira pessoa. Vamos conectar isso na filial para nossa condição de nossa filial. Vou tirar isso diretamente do nosso resultado de sucesso aqui, descobrindo se nosso personagem está chegando acima disso. E isso será conectado à nossa filial. Agora precisamos de um alvo para nosso personagem de lançamento. Então, vamos nos certificar de que pegamos nosso personagem em terceira pessoa e o conectamos a ele. Então, agora, saindo do nosso personagem em terceira pessoa, vamos sair daqui e eu vou fazer uma busca por aquele despachante de eventos, chamado de morte do jogador, o jogador inicia a sequência de morte Agora vou escolher essa opção aqui. O jogador designado inicia a sequência de morte. E vai trazer dois nós, que é o que eu quero. Isso trará esse nó de vinculação , bem como esse evento personalizado E vou deixar esse evento personalizado como é onde vou conectá-los ao nosso nó de sequência. Vamos adicionar outro pino aqui. Clique para adicionar outro pino dos cinco pinos anteriores. Vou conectar isso aqui. Então, basicamente, o que estamos dizendo aqui é que quando nosso personagem de terceira pessoa pára nesta caixa e nosso bloco está no modo de bloqueio, ele transforma esses blocos em moedas. Vamos ouvir se nosso jogador morreu e se nosso jogador morreu morreu e se nosso jogador morreu aqui em nosso personagem em terceira pessoa. Se esse trecho do script for iniciado, ele enviará uma mensagem para qualquer outro projeto que esteja ouvindo por meio desta ligação aqui Basicamente, estamos ouvindo isso aqui com essa configuração configurada aqui, vinculando-a à sequência de morte do jogador que inicia. Estamos ouvindo e, assim que nosso jogador morrer, sairemos daqui. Tudo bem, agora é aqui que vou pegar esses dois nós e trazê-los para o nosso script de temporizador de blocos aqui Vou tentar ampliar e enquadrar isso um pouco melhor. Agora, basicamente, quando nosso tempo de bloqueio termina, o que estamos fazendo é pegar todos os blocos que foram transformados em moedas e simplesmente os devolvendo. Agora queremos fazer a mesma coisa quando nosso personagem morrer. Essencialmente, queremos fazer com que todos os nossos blocos voltem a ser como eram antes. Para fazer isso, tudo o que precisamos fazer é tirar um fio da sequência de morte de inicia nosso player e vamos conectá-lo a isso. O mesmo para cada loop aqui em cima. Novamente, tudo isso está dentro do nosso script de bloco na parte inferior, assim. Ok, com tudo isso feito, vamos compilar e salvar E vamos testar isso indo para o nosso nível aqui. Vou clicar em Jogar. Então, o que vou fazer aqui sobrepor nosso posto e vou pular nesse quarteirão Você deve ver alguns desses blocos se transformarem em moedas. Vou tentar evitar meus braços flamejantes aqui. Como você viu eles se transformarem em moedas, eu vou morrer. Agora você pode ver que eles se transformaram instantaneamente em blocos, o que é exatamente o que eu queria que acontecesse. Aí está dentro do nosso personagem em terceira pessoa . Este jogador inicia a sequência de morte que estamos chamando. Quando nosso jogador morre, evento personalizado é acionado. Basicamente, estamos enviando mensagens para qualquer assinante, se você quiser. Qualquer outro projeto que esteja ouvindo nosso jogador inicia o Death Sequence Event Dispatcher E para aqueles que estão ouvindo , como nosso quarteirão aqui, ele sairá desse evento personalizado e fará com que tudo o que estiver conectado a ele também seja acionado. Tudo bem, pessoal, isso vai bastar para esse vídeo. Nos vemos na próxima. 78. Atualize vidas de jogadores: Tudo bem, agora que temos a sequência de morte de um jogador em mãos, vamos consertar nosso Hud. Porque, como você pode ver no canto superior esquerdo, eu tenho supostamente três Marios No entanto, quando eu morro atualmente, esse número não muda. Então, vamos corrigir isso neste. Para fazer isso, trabalharemos dentro do modelo do nosso controlador de player Portanto, descubra que na pasta da estrutura do plano de sua plataforma , está nosso controlador B P player Fizemos alguns trabalhos lá dentro. Vamos fazer um pouco mais mergulhando lá dentro. Vamos adicionar um novo script aqui dentro. Vou manter pressionado o controle e diminuir o zoom. Esse será nosso roteiro de adaptação ao vivo. Vou descer abaixo meus pontos de adição e vou aumentar o zoom. Vou escrever clique em algum espaço vazio. Vou adicionar um evento personalizado. Vou chamá-lo de Adjust Lives com este evento para clientes selecionado. Vou adicionar uma entrada no painel Detalhes. Clique nesse botão de adição e a entrada que vou adicionar será chamada de Vidas para adicionar ou subtrair E vou mudar o tipo de Boolean para Integer. O que vou fazer é sair daqui e trazer um nó adicional. E a outra entrada que vou inserir aqui serão as vidas com as quais começaremos, no meu caso, três vidas. Quando chamarmos esse evento personalizado, poderemos determinar quantas vidas gostaríamos de adicionar ou subtrair e, em seguida, adicioná-lo ao nosso número de vidas Então, o que eu quero fazer é arrastar para fora daqui, e eu vou fixar esse número, vamos fixar esse número inteiro E vou manter isso entre um valor de 0,100. Isso vai me limitar a 100 vidas Você não precisa fazer isso se não quiser, mas eu gostaria de limitar a 100 vidas e depois vou prolongar minhas vidas. Vou colocá-lo nesse valor de retorno para trazer uma versão setter da variável de nossas vidas Vou pegar nossas vidas de adaptação, evento personalizado, e levá-lo até lá. Então, a seguir, o que vou fazer é diminuir um pouco o zoom. Vou adiar isso, isso produzirá o número de vidas. Vou digitar o símbolo igual para inserir um nó igual. E eu vou dizer que se nosso número de vidas for igual a zero, eu vou então conectar isso a um nó de ramificação Então, pressionarei e botão esquerdo para inserir um nó de ramificação. Se é verdade que nossas vidas caíram a zero, então o que vou fazer é sair daqui e digitar nível aberto pelo nome Agora eu tenho atualmente um nível, LV 01. Eu poderia simplesmente, quando eu ficar sem vidas, abrir esse nível novamente. Vou trabalhar um pouco mais adiante aqui. Saiba disso, eu sei que o editor vai cometer alguns erros quando conseguirmos que isso seja acionado, quando ficarmos sem vidas. Eventualmente, criaremos um menu principal neste curso. E eu vou chamar esse menu principal LV, sublinhado Menu principal Agora, não quero atrapalhar este vídeo criando todo o menu principal que virá mais tarde Mas saiba que estou trabalhando aqui e , eventualmente, criaremos um menu principal. E isso nos fará ir ao nível do menu principal que configuramos. Tudo bem, então vamos resolver isso. Vou clicar com o botão esquerdo e arrastar e tocar na tecla C. E esse será nosso roteiro de adaptação de vidas. Vou me livrar desse espaço entre eles e colorir esse preto. Gosto das caixas de comentários pretas porque fazem os fios se soltarem. Então, esse será o nosso roteiro ao vivo de ajuste ali mesmo. Mais uma vez, faremos isso funcionar mais tarde. Ok, com esse evento para clientes agora em andamento, ele se chama ajustar vidas. Vou acessar meu script de moeda publicitária dentro desse mesmo modelo, meu controlador de jogador E aqui está nosso script de moedas publicitárias. E o que eu estava fazendo no final aqui é trazer uma referência às nossas vidas e adicionar algo a isso para que, quando tivermos 100 moedas, ganhemos uma vida extra. Bem, agora com nosso evento personalizado de ajuste de vidas em vigor, tudo o que preciso fazer é ligar para esse evento para clientes e simplesmente inserir o número um para ajustar nosso número de vidas. Então, eu posso simplesmente excluir esses dois nós ali mesmo em nosso script de moeda publicitária. Eu vou destruí-los. E agora vou tirar minha caixa de moedas aqui e digitar adjust lives. Então, novamente, isso chamará esse evento personalizado aqui. Eu posso simplesmente colocar esse número fixo de vidas para adicionar ou subtrair. Vou adicionar vidas positivas e depois vou tocar esse som. Portanto, observe que, ao colocar o número um aqui, esse número fluirá pelo evento personalizado. Na verdade, se eu clicar duas vezes nesse nó aqui, ele mostrará o evento personalizado que isso chama. Então, esse número um vai fluir por aqui, ser adicionado ao nosso número de vidas, vai limitá-lo E vai tocar todo esse jazz aqui mesmo. Tudo bem, com tudo isso feito, certifique-se de compilar e diga muito importante que você compile Porque precisamos compilar para encontrar nosso chamado de vida adequado dentro de nosso plano de personagem em terceira pessoa É para lá que vamos a seguir. Portanto, encontre seu plano de personagem em terceira pessoa. Encontre este script de morte do jogador. No final, temos esse atraso e esse ator destruidor. Bem, vamos separar nosso ator de destruição. Mova isso para a direita porque vamos injetar um pouco de script aqui Vamos clicar com o botão direito do mouse em algum espaço vazio pegar o controle do player. E depois disso, vamos transmitir para o nosso controle de jogador, nosso controle de jogador personalizado. Nós vamos fluir por aqui. E a razão pela qual estamos fazendo isso é para que possamos acessar nosso plano de controle de jogador e chamar nosso evento personalizado de ajuste de vidas Porque isso faz parte da vida do script do jogador. Para adicionar ou subtrair, bem, eu quero subtrair uma vida, então coloque menos uma aí mesmo E então podemos destruir o ator mais uma vez. Se eu clicasse duas vezes nessa chamada de ajuste de vidas, ela me levaria até o controle do meu player BP e mostraria para onde esse número negativo fluirá por meio desse evento personalizado Faça essa matemática e faça todo esse roteiro. Tudo bem, mais uma consideração para abordarmos, e isso envolverá entrar nosso modo de jogo, Blueprints Vou usar plantas em terceira pessoa, modo de jogo em terceira pessoa A propósito, cabe a você decidir se deseja arrastar esses dois esquemas dentro da sua plataforma ou pasta de estruturas, a decisão é Eles também são considerados projetos de estrutura. Eu optei por não criar um personagem separado no modo de jogo para este projeto, mas você poderia Vou mergulhar no meu BP, modo de jogo em terceira pessoa E agora estamos respondendo, o jogador, não importa o que aconteça, não importa se ele tem três vidas, duas vidas, uma vida ou zero vidas Precisamos verificar se nosso jogador não está fora de vida. Antes de respondermos a elas, não queremos responder se elas estiverem fora de vida. Então, para ajustar esse pequeno script de resposta, o que vou fazer é clicar com o botão direito do mouse em algum espaço vazio. Obtenha o controle do player, como você deve ter adivinhado. Nós vamos sair daqui. Vamos transmitir para o nosso controlador BP player. Agora eu posso mudar, posso converter esse nó clicando com o botão direito do mouse nele e convertendo-o em um molde puro para me livrar desses pinos de entrada e saída de execução Você realmente só quer fazer isso se souber que seu elenco aqui não vai falhar. E eu sei que não vai acontecer nesse caso, porque eu não vou usar nenhum outro controlador de jogador convertido em puro elenco, ele vai me livrar desses pinos de execução dessa forma Então, o que posso fazer é sair do meu controlador de player SBP, posso transformar nossas vidas em variáveis com isso Eu posso me arrastar, ver se zero vidas, se temos mais do que zero vidas, então eu quero responder. Vou manter pressionada a tecla B e clicar com o botão esquerdo quando estiver ativada. Preciso mover todo esse roteiro para cá. E eu basicamente vou colocar isso em jogo quando nosso personagem for destruído. Quando nosso personagem é destruído, eu quero passar por aqui e fazer a pergunta: Ei, temos mais do que zero vidas? E se tivermos mais de zero vidas, ótimo, vá em frente e reapareça o personagem Caso contrário, não faça isso. Então, tudo isso está dentro do nosso modo de jogo em terceira pessoa. Vá em frente, compile e salve isso. Agora, antes de jogarmos o jogo aqui, quero destacar isso em nosso projeto do Hud Blueprint do widget Hud, que se encontra na pasta UI, nosso No início do curso, em nossa guia de gráfico, não na guia de designer, mas na guia de gráfico, adicionamos esse trecho de script para criar uma referência ao nosso controlador de player. Eu simplesmente cliquei com o botão direito do mouse e a transformei em uma variável para criar uma referência ao nosso controlador de player Ao fazer isso, isso nos permitiu vincular esse widget aqui, esse widget de texto, à nossa variável ativa do player Controller Isso foi feito aqui, controlador do jogador, e acabamos mapeá-lo para a variável de nossas vidas Agora que estamos atualizando nossa variável de vidas por meio de algum script que adicionamos neste vídeo, devemos ver esse número mudar. Mas só queria destacar tudo isso , uma pequena análise, mostrando que, na verdade, mapeamos nossa variável de vida, desde nosso controlador de jogador até esse widget em particular Tudo bem, vamos entrar no nosso nível, entrar e jogar. Atualmente está começando com três vidas lá. Então, deixe-me dar uma olhada em nossa gumba. Aqui, lá estamos, com menos de duas vidas. Vamos tentar entrar na barra do braço flamejante aqui. Mais uma vez, reduziu para uma ao vivo. E vamos mergulhar, via Goomba, mais uma vez, em zero vidas. Agora você o viu, simplesmente reinicializou lá atrás e , se eu escapar, ele fará isso por enquanto. Apesar do fato de termos em nosso controlador Player, estamos tentando voltar ao menu principal. Então saiba que, eventualmente, com o tempo, criaremos outro nível chamado LV, Underscore Main E isso nos levará de volta ao menu principal quando ficarmos sem mentiras. Tudo bem, pessoal, mas isso vai bastar para este vídeo. Agora temos nosso número de vidas aumentando corretamente em nosso Hud Jobbledne Nos vemos na próxima. 79. Risco de morte instantânea: Tudo bem, bem-vindos de volta a todos. Agora que temos uma sequência de morte jogador e nosso sistema de reprodução ao vivo está funcionando em nosso Hud, todo esse jazz, vamos criar um risco de morte interno E isso será útil em vários casos de uso. Você pode colocar esse ator que estamos prestes a criar sobre alguns picos, digamos, sobre um poço de lava ou até mesmo um vazio E o objetivo disso é fazer com que, ao nosso jogador tocá-lo dessa forma, morra instantaneamente e responda Tudo bem, de volta aqui em nossa versão de trabalho do projeto, eu vou entrar na minha pasta de plantas da plataforma Vou clicar com o botão direito aqui em algum espaço vazio. Classe Blueprint. Este será um plano de aula de ator Vai ser uma que vamos colocar em nosso mundo. E vou seguir em frente e nomear esse novo projeto de sublinhado da BP Tudo bem, e com isso selecionado, poderíamos ignorar esse servidor indisponível Esta mensagem de controle de origem está aqui. Vou clicar duas vezes no meu BP até morrer. E com isso aberto, adicionaremos um único componente abaixo do painel de componentes. Vamos adicionar colisão de caixas. E vou chamar isso de meu volume de profundidade. E com isso selecionado, vou dar a isso um valor padrão. Então, vou definir as extensões da caixa para 400 por, digamos, 400 por 50, 50 E eu vou definir a espessura da minha linha aqui três, algo assim. Poderemos alterar esse tamanho quando chegarmos ao nosso nível, mas isso nos dará um valor padrão muito bom. Ok, com isso pronto, vou clicar com o botão direito do mouse no meu componente de volume de morte aqui. o botão direito. Vamos adicionar um evento para quando começarmos a sobrepô-lo Isso vai nos tirar da nossa janela de visualização e ir para o gráfico de eventos Agora, quando algo se sobrepõe a esse volume de morte, vamos descobrir quem é o outro ator Vamos usar nosso personagem em terceira pessoa dentro do nosso personagem em terceira pessoa. Vamos sair daqui e digitar player dies. Vamos chamar isso de eventos personalizados. Então, um script bem simples e eu vou arrastar e tocar na tecla C, isso vai ser chamado. Aqui morrem eventos personalizados dentro do nosso personagem BP. Portanto, sempre que você escrever algum script, certifique-se compilá-lo para garantir que ele não encontre erros e não encontre erros Vou seguir em frente e salvar isso agora. Vamos colocar um desses em nosso nível e mostrar como trabalhar com isso em geral. Então, vou voltar ao meu editor de níveis aqui. Aqui está meu BP na morte. Eu realmente não tenho nenhum buraco aqui ou algo parecido, então vou meio que arrastar isso da borda aqui Então, vamos lá. Estou apenas arrastando isso para dentro Eu tenho minhas duas configurações de D snap definidas para o meu nível principal aqui E vou colocar minhas configurações de snap aqui, incrementos de, digamos Vou seguir em frente assim. Agora, novamente, se você está fazendo o Pit of Doom, provavelmente não quer colocar esse tipo de nível nos seus principais níveis jogáveis Então, vou definir isso um pouco para que você possa ver esse tamanho padrão. Mas observe que, com esse ator selecionado, no painel de detalhes, você pode selecionar o componente de volume de morte. Agora, se você não vê isso, pode ser porque precisa descascar um pouco. Você pode selecionar seu componente de volume de morte e redimensioná-lo aqui Então, se você quiser aumentar um pouco o valor de x, você sabe que queremos defini-lo como 1.000. Você pode seguir em frente e fazer isso assim. Ok, então eu vou entrar e jogar aqui, e depois pular da borda e ver se tudo isso funciona. Aqui vamos nós. Tudo bem, pulando do parapeito aqui e pronto, nós morremos exatamente como Então, mais uma vez, dentro de nosso BP to death, estamos apenas verificando se é nosso personagem em terceira pessoa que se sobrepõe E se for, viemos aqui para chamar esse evento personalizado de “Player Dies”. E você pode clicar duas vezes sobre isso. E o que isso fará é realmente abrir nosso personagem em terceira pessoa e mostrar qual evento personalizado ele pretende convocar Então, mais uma vez, alguns casos de uso desse risco de morte instantânea Você pode colocá-lo em uma cova como essa. Você pode colocar isso sobre algo que pareça pontiagudo, um poço de lava Muitos casos de uso possíveis para ele em todo o seu nível. Tudo bem, pessoal, isso vai fazer tudo por esse. Nos vemos na próxima. 80. Blueprint de polo de bandeira: Bem-vindos de volta a todos. Neste vídeo, trabalharemos na criação e implementação de um mastro de fim de nível no estilo Mario E isso vai funcionar de tal forma que quando nosso personagem pular no mastro, ele vai anotá-lo Eles vão sair, vamos ver alguns fogos de artifício e vai ser um momento muito bom Agora, esse será um dos projetos mais complicados que reunimos ao longo deste curso Estou apenas dando uma prévia de como isso acabará por se parecer Aqui está o projeto finalizado. Visualmente, o que vamos montar. Portanto, alguns componentes, muitas variáveis e uma boa quantidade de scripts para inicializar aqui. Muito roteiro. Mas vamos falar sobre isso ao longo de vários vídeos aqui. E vamos fazer isso, prometo que não vai ser tão ruim. Tudo bem, de volta aqui em nossa versão de trabalho do projeto, entre na pasta Texturas da sua plataforma e certifique-se ter esse bloco usado na textura da bandeira do Mario Esses são alguns ativos que foram importados muito antes no curso. Portanto, se você ainda não o fez, certifique-se de importá-los, pois os usaremos em nosso modelo de mastro de bandeira Agora, com essas texturas, precisamos transformá-las em ativos materiais usados em nosso projeto de mastro Agora eu já fiz isso antes do vídeo. Mas só para mostrar como converter essas texturas em materiais, você pode simplesmente clicar com o botão direito do mouse sobre elas e criar material a partir delas. Ao fazer isso, você verá esses ativos materiais gerados dentro da pasta Texturas E então tudo que fiz foi movê-los. Eu literalmente clicava com o botão esquerdo do mouse e os arrastava para minha pasta de materiais, desta forma, a fim de movê-los para lá. Agora, na verdade, não quero mover o arquivo de textura aqui, mas é assim que você pode mover ativos diferentes entre pastas. Então, só para mostrar a vocês, dentro da minha pasta de Materiais, aqui está onde eu tenho o material da minha bandeira do Mario no meu material usado no bloco T. Só para abrir um deles rapidamente, basta uma amostra de textura sendo conectada à cor base do nosso material principal. Anote aqui. Agora, além desses dois materiais, verifique também se você tem o áudio de quatro Mario Flagpole, aquele cara ali mesmo, além de Mario Jump Agora você já deve ter isso de novo, todos esses arquivos de áudio foram importados muito antes no curso. Portanto, se você ainda não os importou, certifique-se de importá-los. OK. Agora, antes de prosseguirmos e criarmos nosso modelo de mastro, na verdade vou entrar nossa pasta de terceira pessoa Entre em nossas plantas, encontre nosso personagem em terceira pessoa Quero ter certeza de que não esqueçamos essa profundidade. Vou clicar duas vezes em nosso personagem em terceira pessoa. Abra-o e eu quero adicionar outro componente ao nosso personagem em terceira pessoa. Vou selecionar nosso componente de cápsula porque quero conectá-lo ao nosso componente de cápsula. Deixe-me ir até a janela de exibição aqui. Componente da cápsula. Vou adicionar um componente de seta. Flecha. E eu vou nomear esse ponto de fixação da bandeira. Isso será usado para determinar onde devemos prender nosso personagem ao mastro da bandeira para que nosso personagem desça por ele. Então, com esse componente selecionado no painel de detalhes, vou definir a localização X 40 e a localização Z como menos 55. E acabei de chegar a esses números por meio de muitas tentativas e erros. Então, 40 e menos 55 é que vamos ter nossa bandeira anexada ao ponto. Ok, certifique-se de ter compilado e salvo isso. Então, podemos encerrar nosso personagem em terceira pessoa. Agora vamos voltar para nossa pasta de esquemas da plataforma. E aqui vamos clicar com o botão direito do mouse em algum espaço vazio. Vamos criar uma nova classe de blueprint. Este será um plano de aula de ator. E vamos chamar esse ativo de BP. Sublinhado, bandeira de fim de nível. Tudo bem. Depois, com a opção selecionada, você pode clicar duas vezes nela ou pressionar a barra de espaço para abri-la. E o que vou fazer aqui é adicionar todos os meus componentes e depois voltar e definir os detalhes de cada um. Então, deixe-me ir em frente e adicionar o primeiro. Isso vai ser um volume de gatilho. Bem, na verdade, será chamado de volume do gatilho. O que eu realmente quero é uma colisão de caixa, colisão de caixa. Componente de colisão da caixa, e vou chamá-lo de volume do gatilho Você vai usar isso para determinar quando acionar toda a sequência de sinalizadores. Agora vou adicionar todos esses componentes serão anexados à minha raiz de cena padrão. Entre cada componente adicional, certifique-se selecionar sua raiz de cena padrão, porque todos esses componentes precisam estar em uma linha reta e não conectados a mais nada. próximo que vou anunciar aqui será um componente de malha estática. Este simplesmente será chamado de bandeira. E vou selecionar meu componente raiz de cena padrão novamente. Este vai ser chamado de mastro de bandeira. Opa, estou tentando adicionar um mastro de bandeira. Preciso adicionar um componente de malha estática e depois chamá-lo de mastro de bandeira. Ok, selecione a raiz de cena padrão. Novamente, acrescente que esse será um componente de malha estática. Esta será chamada de base da bandeira. Agora, com um desses selecionados, novamente mostrando maneiras diferentes de fazer as coisas, Control D o duplicará, então ele será automaticamente anexado à minha raiz de cena padrão Este vai ser o topo da bandeira. No próximo componente, vou selecionar minha raiz de cena padrão e clicar em Adicionar. Este será um componente de outdoor. Billboard, vai ter esse ícone da Cabeça de Dragão. Vou chamar isso de ponto final da minha bandeira. É aqui que eu quero que a bandeira acabe quando cair no mastro Tudo bem, selecione a cena padrão. Mais uma vez, vamos acrescentar que isso será outro colisor de caixas, colisão de caixas, e vou chamar isso de minha área de fogos de artifício Esta é essencialmente a área da qual vou gerar alguns fogos de artifício Se terminarmos nosso tempo de nível dentro de um determinado dígito terminando em sete, 87 segundos gerarão sete fogos de artifício, esse tipo Vamos adicionar mais três componentes aqui. Rota de cena padrão. Vou acrescentar que todos eles serão componentes de seta, então vou escolher o primeiro. Vou ligar para o jogador End Point. É aqui que nosso jogador terminará com essa seleção. Eu vou fazer o controle D. Este vai se chamar Player Explode Point Opa, acidentalmente controla esses dois. Este será o ponto de explosão do meu jogador porque depois que ele pular do mastro, faremos com que ele pule para o meio da área de fogos de artifício e exploda da área de fogos de artifício e exploda Só porque é divertido com isso, selecione isso. Vou fazer o Controle D novamente para duplicar isso. E este será chamado de ponto de partida dos meus jogadores. Eu tenho um ponto inicial de um jogador, um ponto final de um jogador, um ponto de explosão de um jogador Realmente não importa como eles são ordenados, não importa em absoluto. Portanto, se seu pedido for um pouco diferente do meu, não importa Tudo o que importa é que tudo isso esteja alinhado, que esteja conectado à rota de cena padrão. Agora, se você tiver algo acidentalmente definido como isso, deixe-me arrastar e soltar esse pequeno recuo Atualmente, isso está anexado a isso. Para desfazer isso, você pode simplesmente arrastá-lo e soltá-lo de volta em cima dele, e isso o desconectará que estava anexado anteriormente Configurando os detalhes de cada um desses componentes em nossa lista de componentes. Vou começar com a bandeira aqui. Não vou entrar em ordem, mas abordarei tudo isso em tempo hábil com nosso componente de bandeira selecionado no painel de detalhes. Nossa malha estática será uma plana e eu vou procurá-la no caminho das formas básicas do motor no painel de detalhes. Vou configurar o material imediatamente para ser nossa bandeira de Mario. Basta digitar Mario, aí está nossa bandeira do Mario. Muito fofo. Agora eu preciso ajustar a localização, rotação e escalar isso um pouco. Então, vamos primeiro com a localização. Vou definir a localização x como 85, o z como 845 Está pulando aqui em cima. Deixe-me ampliar aqui na minha janela de exibição, mantendo pressionado o botão direito do mouse, S e D, vou definir a rotação, a rotação x para 90 Então eu vou definir a escala aqui. Vai ficar de frente para cá desse jeito. A escala deve ser 1,5, assim. Tudo bem, ótimo. Em seguida , o componente do mastro da bandeira. Com isso selecionado, vou deslizar uma malha estática de um cilindro cilíndrico e vou escolher o motor, com formas básicas de cilindro Aquele cara ali mesmo. O material, vou fazer apenas uma parede básica de sublinhados, está no conteúdo inicial, novamente, é um mastro de bandeira, então você pode decidir como quer que seja. A localização, eu vou definir isso como 500 no Z. A escala eu vou definir como 0,2 por 0,2 por oito Agora, novamente, consegui tudo isso desbloqueando as configurações de escala Se você tiver isso bloqueado, o que quer que você defina um desses dois e pressione o centro, ele configurará todos para desbloqueá-lo. Para configurá-los individualmente. Isso está indo muito bem até agora. Em seguida, vamos fazer a base da bandeira com a malha estática selecionada, no painel de detalhes. Vou escolher A, esse será meu motor, cubos de formas básicas como esse Para o material, vou colocar nesse bloco. Acho que parece muito bom. Novamente, a escolha do revendedor aqui que você pode fazer o que quiser. Vou mudar a localização z para que seja 50, então basicamente parecerá que o mastro da bandeira está embutido nele. Está parecendo muito bom. Tudo bem, então vamos fazer a bandeira no topo do mastro. Vamos escolher uma mensagem estática. Essa será uma forma sublinhada Sphere, que estará no conteúdo inicial Vamos definir o material para que isso seja uma instância de material do cubo de sublinhado três , está no Engine VR Editor, Basic shapes Novamente, você não precisa ter exatamente o que eu tenho. Eu acho que isso parece muito bom. Então, vou definir o local para isso como 8905895. Aqui no topo da escala, vou definir 0,5 em toda a placa, então vou bloquear a escala e, em seguida, vou definir 0,5, pressione Enter, e isso fica muito bom na parte superior. OK. Em seguida, vou fazer o terminal da bandeira, esse componente de outdoor Vou definir isso como um local, 150 no Z, e então vou definir o local no X como 85. E então eu vou definir a rotação disso para ser 90 no X também. Pressione para dentro ou para lá. Visualmente, não fará muita diferença aqui, mas será importante porque usaremos isso como nosso ponto final de sinalização Isso deve ser girado da mesma maneira que nossa bandeira. Isso vai ser importante. 90 lá para nossa bandeira. Precisamos ter certeza de que nossa rotação do ponto final será a mesma lá, só para verificar isso. OK. Em seguida, teremos nossa área de fogos de artifício Portanto, certifique-se de selecionar isso. E vou ampliar um pouco minha janela de visualização aqui , porque vou deixá-la um pouco aqui Estou pressionando o botão esquerdo e direito do mouse para fazer uma panorâmica assim. Então, vou definir esse ponto em uma posição de 850 no x 700 no Z. A extensão da caixa eu vou definir como 500 por 200 por 300 Basicamente, vou usar essa forma para definir uma área na qual fogos de artifício podem aparecer Também vou definir a espessura da linha aqui como cinco, só para torná-la um pouco mais proeminente. Em seguida, também vou definir a predefinição de colisão aqui para que não haja Eu não quero que nada possível colida com isso. Sabe, eu não quero que, se nosso personagem estiver aqui ou algo parecido, ele esteja tentando atirar bolas de fogo, então qualquer coisa possa colidir com isso esteja tentando atirar bolas de fogo, então qualquer coisa possa colidir com Então, estamos apenas desligando isso para tudo. Ok, em seguida, vamos selecionar nosso jogador Endpoint, aquele cara ali mesmo E para isso, vamos simplesmente definir um local. Então, vou ampliar em direção à base da nossa bandeira aqui. ponto final do jogador, vai ser menos 25 no X, vai ser 30 no Y. Para o Z, vai ser 190 na frente da bandeira, mas na parte inferior direita Ok, nosso jogador explode point. Vamos selecionar esse componente de seta. Em seguida, ele estará em algum lugar nesta região, então vou selecionar minha localização. X vai ser 850 e o Z vai ser 500. Basicamente, isso vai estar em algum lugar bem ali. Eu determinei. Tudo bem, os jogadores começam no topo. Vamos selecionar esse componente de seta. A localização x será menos 25, o y será 30 e esse z será 845 Então, não importa onde eles interajam com essa bandeira, vamos garantir que eles cheguem a esse ponto ali mesmo . É aí que eles vão começar. Eles vão acabar aqui para descer pelo mastro da bandeira Agora, a única coisa que eu ainda não configurei aqui é o volume do nosso gatilho. Vamos prosseguir e selecionar isso. Agora, no painel de detalhes com o volume do gatilho selecionado, vou ver uma predefinição de colisão aqui E vou simplesmente configurar isso para ser personalizado. E vou ignorar as colisões com tudo, exceto que eu quero nosso peão seja capaz de se sobrepor a Precisamos detectar quando nosso peão está se sobrepondo a isso. E eu quero que esse volume do gatilho seja muito alto, que se estenda até o céu. Então, se nosso jogador pular por cima do mastro, ele realmente cairá até esse E depois anote. Ok, para isso, vou definir a localização Z 1.000, vou definir a localização x como 30. Isso vai ficar mais ou menos alinhado com nosso mastro aqui, então OK E então eu vou definir a extensão da caixa. Vou definir essa extensão em 1.000. Ela se estenderá para baixo dessa forma, bem no meio do nosso mastro, você pode ver que ela se estende até o céu E eu também vou tornar isso um pouco mais amplo, mesmo que nosso personagem nunca deva ficar offline. Só por uma questão de sanidade, vou definir que a extensão y seja algo como 200 Isso deve ser muito bom. Agora, se eu saísse dessa visão em perspectiva e visse isso, digamos , de uma visão correta, vou clicar nela. Você pode ver se eu voltar para trás, essencialmente onde está o volume do gatilho em relação ao nosso mastro Agora, provavelmente vou me esforçar um pouco mais para garantir que nosso personagem não atinja esse mastro Novamente, eu poderia movê-lo aqui no painel de detalhes. Deixe-me desligar minhas configurações de snap aqui. Vou movê-lo para dizer logo ali. Vou definir essa localização x. Em vez disso, vamos tentar dez. Mas quem sabe, talvez nós vamos mexer nisso no final Na verdade, eles também não querem que nosso personagem colida no topo do mastro Então, vou definir isso para algo como cinco, só para aumentar um pouco mais Tudo bem, com isso, vou voltar à minha visão em perspectiva. Isso é tudo o que queríamos realizar neste. Vamos compilar e salvar e, em seguida, arrastar isso para nossa janela de exibição E sim, entre os cortes da câmera aqui, eu realmente trapaceei e ela se posicionou no meu nível, para que você possa ver como ficará quando você colocar no seu nível Algo assim é o que vai parecer. O jogador vai interagir com ele. Eles vão descer por esse mastro e depois vão acabar nesse ponto de explosão Então, tudo isso será feito por meio de scripts. Muito mais trabalho a ser feito, mas estamos começando bem. Vejo todos vocês no próximo vídeo. 81. Script de bandeira com pole #1: Bem vindo de volta. Neste vídeo adicionaremos as variáveis e começaremos a programar nossa sequência de mastros de nível final Vamos mergulhar de volta em nossa bandeira de fim de nível da BP. A primeira coisa que vou fazer no painel Meus projetos é criar as variáveis que vamos usar para esse script massivo Isso está por vir clicando neste botão de mais variável. O primeiro que vou criar será chamado de ponto inicial. Será uma variável vetorial e será usada para determinar o ponto de partida da nossa bandeira aqui. O ideal é começar do topo se nosso jogador chegar ao topo. No entanto, se nosso jogador cair mais ou menos no ponto médio, nossa bandeira começará automaticamente nesse ponto Essencialmente, vai se deformar até esse ponto e depois descer. Ok, com esse selecionado, vou fazer o controle D para duplicá-lo E este será chamado de local de fogos de artifício. Isso será usado para determinar a área em que vamos gerar nossos fogos de artifício Alerta de spoiler, vai estar nessa faixa. Na próxima que vou criar, vou clicar no botão de adição de variáveis. Esse vai se chamar meu personagem. O tipo aqui será meu BP, personagem de terceira pessoa, a referência do objeto Deixe-me expandir isso para que você possa ler isso com um pouco mais de clareza. próxima variável que vamos criar será chamada de meu controlador. Este será mapeado para o nosso controlador Player. Vai ser o controlador do Player. Nosso controlador BP, Player, é o que criamos Referência de objeto, essa é a nossa escolha. próximo que vamos criar será chamado de Firework Points Vai ser um número inteiro. E isso vai conter quantos pontos cada fogo de artifício vale Se obtivermos um show de fogos de artifício com isso selecionado, vou fazer o controle D para duplicá-lo. Este será chamado de número especial de fogos de artifício. Agora, a forma como isso deve funcionar é se nosso cronômetro terminar com um determinado número, digamos que termine com 87 segundos. Se terminar com o número sete, vamos disparar uma exibição de fogos de artifício Basicamente, isso serve para manter o dígito final do tempo restante em seu cronômetro Ok, com tudo isso criado, vá em frente e compile para que possamos começar a adicionar alguns valores padrão Ok, nosso ponto de partida de bandeira terá zeros em toda a linha, tudo bem O Firework Local terá zeros em toda a linha, tudo bem Meu personagem será definido como nulo agora. Isso também vai ficar bem. Meu controlador também será definido como nulo. Isso vai ficar bem. Preencheremos essas variáveis em nosso script, nossos pontos de fogo de artifício Vamos definir que seja 500. Você sabe o que? Vamos definir isso como editável por instância para que se quisermos mudar isso enquanto estivermos no próprio editor, possamos prosseguir e fazer isso Então, o número especial do nosso show de fogos de artifício, vou definir que seja sete Mais uma vez, também marcarei essa caixa de seleção editável de instância para que, se quisermos alterar isso quando estivermos no editor, também poderemos fazer isso Ok, com tudo isso pronto, vamos pular para o nosso gráfico de eventos. Vamos desenvolver a partir desse evento Begin Play. Vamos nos livrar desses outros dois nós que estão aqui. Clique com o botão esquerdo e arraste. Exclua o Event Begin Play. O que vou fazer é clicar com o botão direito, vamos pegar o controle do jogador e depois vamos lançar o controle para dois jogadores, nosso controlador do jogador BP Queremos fazer isso ao começar a jogar. E então o que queremos fazer é dizer isso em nossa variável de controle de jogador aqui. Então, podemos simplesmente arrastar e soltar isso diretamente em cima desse pino. E isso trará um conjunto de versões. Então, ele preencherá essa variável com nosso controlador B P player Não basta simplesmente criar essa variável e configurá-la para esse tipo. Na verdade, isso será especificado na seção de valores quando o definirmos aqui como o controlador de jogador real que estamos usando no jogo. Então, vou clicar com o botão esquerdo do mouse no arrastador e tocar na tecla C. Isso será Ref para o controlador de jogador Ref, como referência. Vou continuar e colocar isso de preto. Agora, a próxima coisa que vou fazer é entrar seção Despachantes de Eventos no painel Meu plano. Vou clicar aqui. Para adicionar um expedidor de eventos. E eu vou chamar esse nível de completo. Agora, isso será usado para enviar uma mensagem para outras plantas que precisam saber que nosso personagem de jogador terminou o nível Tudo bem, com tudo isso feito, vamos começar a criar nosso roteiro massivo. A primeira coisa que vamos fazer é verificar uma sobreposição volume do gatilho e, mais uma vez , do volume do gatilho em nossa janela de exibição, que será esse volume gigante aqui Vamos verificar se nosso player está sobrepondo Agora podemos adicionar um evento de sobreposição para isso. Ao selecioná-lo, podemos clicar com o botão direito do mouse e adicionar um evento dessa forma. No entanto, só porque gosto de mostrar coisas diferentes, vou selecioná-las e ir até a parte inferior do meu painel de detalhes. Aqui estão vários eventos associados a esse componente. Temos uma sobreposição inicial de componentes. Vou clicar nesse botão de adição. Isso nos levará à nossa guia de gráfico de eventos. Vamos reduzir isso um pouco. Me dê um pouco mais de espaço aqui. Com isso, vamos descobrir quem é o outro ator. Vamos escalar dois personagens em terceira pessoa. Tudo bem, se for um personagem de terceira pessoa que está fazendo a sobreposição aqui, vamos preencher nossa variável, meu personagem, meu personagem Atualmente, isso é nulo, o que significa que está vazio. Vamos conectar isso, então solte-o neste pino. E isso vai conectá-lo dessa forma ao se sobrepor Vamos preencher essa variável com nosso personagem em terceira pessoa Mais uma vez, não basta definir esse tipo. Isso definirá a instância real do nosso personagem em terceira pessoa que estamos controlando no jogo. Ok, logo depois disso, vou passar para a direita aqui. Vou clicar com o botão direito do mouse em obter o controlador do player. E o que queremos fazer imediatamente após interagir com volume do gatilho é desativar a entrada Agora, novamente, isso vai conectá-lo ao pino errado. Na verdade, queremos conectar nosso controlador de player à entrada do controlador de player. Então, vou manter pressionado o botão esquerdo do mouse. Vamos desligar isso na parte inferior. Muito importante. Não perca isso para o alvo, vamos conectar nosso personagem. Ok, o próximo que vou fazer é trazer um nodo único. Posso fazer isso pressionando a tecla e clicando com o botão esquerdo. E quero garantir que tudo o que está por vir seja feito apenas uma vez para evitar problemas. A primeira coisa que vou fazer uma vez é chamar nosso nível de Complete Event Dispatcher Podemos arrastar isso para dentro , então temos um submenu aqui para o qual queremos chamar isso Então, tem o pequeno ícone de envelope. Então, enviaremos uma mensagem para qualquer pessoa que esteja ouvindo este evento de que, ei, nosso nível foi concluído. Tudo bem, então com esse roteiro, vou colocar uma caixa de comentários em torno disso. Quero fazer um bom trabalho comentando cada seção que temos aqui Tecla C, vou dizer que este é o do meu detector volume do gatilho do poste de bandeira Também estou desativando a entrada e as mensagens de outros BPs. Esse nível está completo, certo? E eu sinto que é muito importante que eu faça um bom trabalho comentando todas essas coisas aqui Assim, quando finalmente diminuirmos o zoom e vermos o que fizemos, você possa identificar as várias seções. Então essa será a seção número um aqui. Você pode pausar o vídeo, se necessário para ver basicamente o que fizemos aqui Vamos encerrar com aquela ligação para nosso despachante de eventos de nível completo enviando uma mensagem Ok, a próxima parte do script que eu gostaria de adicionar além disso é definir a da nossa localização inicial de nossa bandeira quando nosso jogador cruza o volume do gatilho Agora, só para ir ao nosso ponto de vista aqui, essencialmente, o que queremos fazer é se nosso personagem ultrapassar esse volume de gatilho, seja no topo da nossa bandeira ou acima, queremos que nossa bandeira comece a descer pelo mastro a partir No entanto, se nosso personagem cruzar esse mastro, digamos aqui ou abaixo, queremos que essa bandeira comece a ser descida naquele local, seja no meio ou na parte inferior, ou onde quer que nosso jogador cruze o volume do gatilho, colocaremos instantaneamente a bandeira lá e depois a escreveremos no mastro Tudo bem, para fazer isso, vamos pular para o gráfico de eventos. E, mais uma vez, vamos construir isso partir do final do nosso nível de chamada completo. A primeira coisa que precisamos fazer é trazer uma referência ao nosso personagem. Então, clique com o botão esquerdo e arraste. Vamos pegar isso, vamos sair daqui, vamos encontrar o ponto de fixação da bandeira. Agora, entre os cortes de câmera aqui, abri meu personagem em terceira pessoa. Agora, a razão pela qual fiz isso é para lembrá-lo de que dentro do nosso projeto de personagem em terceira pessoa, eu tenho uma bandeira apontada Acabamos de adicionar isso no vídeo anterior. É um componente de seta e está localizado ali mesmo em nosso personagem. Isso é essencialmente o que estou referenciando aqui no meu BP, bandeira de fim de nível Estamos pegando esse componente em nosso personagem. Agora, o que eu quero é descobrir sua localização mundial. Obtenha a localização mundial, ok. Então, vamos descobrir a localização mundial de onde está. Então vamos resolver isso. Divida isso em seus componentes x, y, z. Tudo bem, também vamos querer pegar nossa bandeira aqui. Opa, basta clicar duas vezes nele para ir até a janela de exibição Vamos clicar com o botão esquerdo e arrastar isso para dentro. Então, também queremos obter a localização mundial quebrando esse vetor para isso. Então, vou apenas duplicar esses dois nós. Controle D, só para usar um pequeno atalho aqui. Vamos conectar isso dessa forma. Agora, a razão pela qual os dividimos em seus componentes x, y e z aqui é porque queremos comparar a altura z do ponto de fixação da nossa bandeira aqui. Vamos comparar isso descobrindo se é maior do que a localização da nossa bandeira. Nossa bandeira está apontada para nosso personagem? Isso é maior do que, neste caso, é maior do que a localização de nossas bandeiras no mundo Vamos pegar a saída disso e conectá-la a uma ramificação. Então, vou manter pressionada a tecla B e clicar com o botão esquerdo. Essa será a condição que estamos avaliando. Mais uma vez, estamos construindo a partir do nível de chamada completo. Vamos conectar isso assim. Ok, se isso for verdade, o que eu quero fazer é definir o ponto de partida da minha bandeira. Veja suas variáveis aqui. Vou manter pressionada a tecla Alt, clicar com o botão esquerdo e arrastar para trazer uma versão setter do ponto inicial da nossa bandeira Vamos definir as coordenadas iniciais da nossa bandeira aqui. Para fazer isso, vamos nos arrastar para trás e digitar make vector E vamos criar nosso vetor mantendo essencialmente a localização x, y e z da nossa bandeira. Basicamente, se nosso jogador aqui se prender à bandeira, ele basicamente voou para o topo ou para cima Basicamente, estamos dizendo aqui, sim, vamos começar nossa bandeira neste ponto em que ela desce até o topo onde está. Por padrão, isso é essencialmente o que estamos dizendo aqui. Agora, se isso for avaliado como falso, o que vamos fazer é copiar esse nó aqui Vou apenas fazer o controle D para copiar essa variável. Vamos fluir até aqui e eu vou limpar meu roteiro aqui. Um pouco mais ou , para isso, também vou criar um vetor. Então, vou pressionar o controle D para copiar esse nó. Para isso, o que eu quero fazer é manter o x e y da nossa posição de bandeira atual. No entanto, a localização Z que eu quero que venha do ponto de conexão da bandeira de nossos personagens. Essencialmente, novamente, o que estou dizendo aqui é que se o ponto anexado à nossa bandeira for maior do que a nossa bandeira quando cruzarmos o volume do gatilho, definiremos o ponto de partida de nossa bandeira em qualquer ponto de partida de nossa bandeira. Agora, se isso for falso, definiremos o ponto de partida de nossa bandeira como a altura z do ponto anexado à bandeira de nossos personagens. Então é isso que está acontecendo lá. Agora estamos apenas preenchendo essa variável, essa variável de ponto inicial do sinalizador O que precisamos fazer é realmente usá-lo. Então, o que vou fazer é trazer uma referência à nossa bandeira aqui. Arraste e solte isso, arraste aqui. E digite a localização mundial definida. Defina a localização mundial ali mesmo. E vou duplicar esse nó com o controle selecionado D o duplicará. traremos uma cópia para cá. Conecte isso. Podemos usar essa referência de bandeira em ambos os nós aqui e ali. Aqui vamos definir a localização. Isso definirá imediatamente a localização de nossas bandeiras para onde quer que essas coordenadas estejam Tudo bem, com isso, vou clicar e arrastar esse trecho do script, clicar com o botão esquerdo e arrastar, tocar nessa tecla e vou voltar um pouco para ver os comentários. Este será o nosso local do Move Two em que o jogador cruzou o volume do gatilho E vamos pintá-lo de preto para adicionar um pouco de contraste agradável. Ok, com tudo isso feito, vou reformular isso mais uma vez. Está saindo do nosso nível de chamada completo. Vamos compilar isso para garantir que nosso script esteja muito bem. E salve-o. E pessoal, vamos chamar isso de vídeo aqui. Mais trabalho a ser feito, com certeza, mas estamos começando muito bem. Nos vemos no próximo vídeo. 82. Script de bandeira com pole #2: Tudo bem, antes de continuarmos com nosso roteiro de bandeira, eu só queria entrar e jogar e mostrar o que temos até agora. Fizemos com que, quando nosso personagem interaja com o mastro de bandeira do final do nível, estejamos basicamente configurando essa bandeira para começar sua eventual descida pelo mastro sempre que nosso personagem se sobreponha ao volume do gatilho Mais trabalho a ser feito aqui dentro do nosso BP, sinalizador de fim de nível e apenas para definir onde vamos construir a partir desse script Em seguida, vamos construir primeiro a partir desse nó de localização mundial definido. Então, vamos clicar com o botão direito do mouse e dar uma olhada nessa região. Ampliando várias coisas que eu quero fazer. A primeira é garantir que meu personagem fique de frente para o mastro E vamos adicionar um pequeno deslocamento para garantir que nosso personagem esteja na frente do mastro antes de começar a descer Então, também vamos definir a animação de nossos personagens uma determinada pose quando eles descerem o mastro da bandeira Vamos começar trazendo uma referência ao nosso personagem clicando com o botão esquerdo do mouse e arrastando. Vamos pegar isso e depois vamos tirar isso e pegar nosso componente de cápsula. O componente da cápsula é o componente principal dentro de nosso personagem, qual outros componentes estão conectados. E vamos retirar os componentes desta cápsula e dizer definir rotação mundial mais uma vez. Eu disse que vamos construir a partir dessa localização mundial definida partir desse trecho do roteiro aqui. Por que isso está aqui? Assim. Agora queremos alimentar isso com uma rotação. Queremos definir a rotação de nossos personagens para quê? Já que vamos pegar nosso componente de endpoint do player, basta ir até o ponto de vista Esse componente está aqui embaixo. É um componente de seta. Aquele cara ali mesmo. pegar nosso componente de endpoint de jogador aqui. Vamos parar com isso e dizer: faça a rotação mundial. Essa será a rotação que garantiremos que nosso personagem esteja voltado nessa direção, basicamente voltado para o mastro da bandeira. Tudo bem. A próxima coisa que quero fazer é garantir que nosso personagem esteja na frente do mastro. Um pouquinho. Para fazer isso, vou retirar o componente da cápsula do meu personagem e digitar fio offset local do anúncio, da mesma forma que a localização delta A diferença na localização é que vou definir o Y como 30 Y 30. Embora eu tenha chegado a isso fazendo algumas tentativas e erros. Em seguida, quero fazer com que, quando nosso personagem sobreponha o volume do gatilho, não caia imediatamente, como você acabou de ver no início deste vídeo Em vez disso, eles congelam. Eles flutuam no ar. Para fazer isso, vou tirar meu personagem até aqui. Traga para o meu personagem o componente de movimento, mas retire o componente de movimento do personagem. Vou me arrastar e dizer definir a escala de gravidade. Vamos definir nossa escala de gravidade zero e eu vou conectar isso da seguinte forma. Agora, só para mostrar o que diabos estou fazendo aqui, vou voltar ao meu personagem em terceira pessoa mais uma vez. Estamos usando nosso personagem de terceira pessoa neste projeto aqui. Se eu pegar o componente de movimento do meu personagem, esse é o componente com o qual estou falando aqui na minha sequência de bandeira de final de nível. Componente de movimento do meu personagem. Dentro desse componente, o componente de movimento do personagem, você tem um valor de escala atualmente definido como 2,5. Agora, aqui na minha bandeira de final de nível, estou basicamente dizendo, ei, vamos definir a escala de gravidade do nosso personagem como zero, para que ele basicamente flutue no ar, congele no ar quando cruzar o volume do gatilho ar, congele no ar quando cruzar o volume do gatilho Tudo bem, então eu vou reduzir isso, então talvez traga um nó de redirecionamento aqui também, só para mostrar esse fluxo um pouco melhor. Ok, a próxima coisa que eu quero fazer é continuar interrompendo o movimento do meu personagem aqui. E eu vou digitar desabilitar. E isso vai fazer o que diz, vai impedir que nosso personagem se mova A propósito, uma dica rápida aqui. Se você quiser endireitar seus fios, como se eles estivessem um pouco desajustados, posso simplesmente destacar esses dois e tocar O e está em silêncio para endireitar esses fios. Seguindo em frente, indo um pouco para a direita aqui, vou trazer outra referência ao meu personagem para que eu não precise continuar me livrando disso e ter fios sobrepostos E, na verdade, eu não pretendia trazer esse componente de rota. Deixe-me controlar Z. Tudo bem, isso é o que temos até agora Vou trazer outra referência ao meu personagem, arrastar e soltar. E eu apenas segurei a tecla de controle enquanto a arrasto e solto. Para entender isso, vou arrastar isso e digitar a malha Eu vou pegar a malha. E mais uma vez, voltando para meu personagem em terceira pessoa, estou dizendo que quero esse componente aqui, minha malha de manequim Quero obter essa malha porque quero arrastar para fora daqui e, na animação, quero que minha malha reproduza uma determinada animação. Eu tenho um em mente que eu gostaria que ele jogasse. Se eu selecionar aqui, nova animação para jogar. Vou digitar M, M, sublinhado correr, sublinhado não N M, sublinhado, E como você pode ver no caminho, isso está na pasta Mannequins Animation many do personagem do jogo Mannequins Animation Se você clicar aqui, ele navegará por esse ativo no navegador de conteúdo. Na verdade, vou fazer isso agora, clicando nesta lupa, aqui está, aqui embaixo Essa animação. Agora ele está reproduzindo essa animação. Eu só vou fazer uma pausa aqui embaixo. Agora eu quero que isso seja essencialmente congelado no tempo em um determinado ponto da animação. Eu basicamente quero que isso o congele por volta da marca de 1,9 segundo, em algum lugar mais ou menos no final. O motivo é que, por volta desse ponto mão do nosso personagem está estendida nesse ponto da animação. Então, eu queria parecer que nosso personagem está pegando o mastro e anotando para que nosso personagem interpretasse Neste ponto, posso realmente voltar para minha bandeira de fim de nível aqui e arrastar para fora da nossa malha dessa forma e digitar definir minha posição de animação aqui. Estou reproduzindo a animação. E com essa função eu estou definindo a posição, a posição no tempo. Então, vou definir isso para 1,9 como você acabou de me ver aqui. Na corrida para frente, fui para a marca de 1,9 segundos. Basicamente, quero que essa pose seja reproduzida e vou gravar isso, tudo bem, então ampliar, estou um pouco de volta aqui , é esse pequeno roteiro Vou clicar e arrastar isso. Vou chamar esse personagem de set e interpretar um roteiro assim Enquadre isso para todos aqui um pouco melhor. E agora, antes de encerrarmos esse vídeo, vou abordar o início desse trecho do roteiro. Estamos removendo o mastro da bandeira para o local em que o jogador está do outro lado do volume do gatilho Vou construir a partir dessa localização mundial definida. Observe um pouco porque o que queremos fazer é definir a localização do jogador se ele pular o mastro da bandeira Então, para fazer isso, vou trazer uma referência ao meu personagem. Mais uma vez, meu personagem o arrasta. Vou pegar o personagem que vou tirar daqui. Mais uma vez, pegue aquele componente da cápsula. Vamos pegar o componente da cápsula que vamos tirar daqui. Vamos dizer definir localização mundial. E eu vou transmitir isso assim. Qual é o local que eu quero definir para isso? Bem, vou fazer com que nosso jogador comece com o melhor ponto de partida. O que vou dizer foi o ponto de partida do meu jogador aqui. Só para mostrar onde isso está dentro do nosso ponto de vista, o ponto de partida do jogador estará ali Então, se eles pularem sobre o mastro da bandeira, vamos dizer jogador, você vai começar nesse ponto, ali mesmo Nós vamos pegar isso. Ponto de partida dos jogadores, arraste-o para dentro. Vamos adiar isso e dizer localização mundial. Vamos obter a localização mundial disso, a localização mundial disso é onde vamos definir a localização de nossos personagens. O que precisamos fazer então é simplesmente conectar o final disso aqui, definindo nossa rotação mundial. Apenas recuando um pouco, para que você possa ver onde tudo isso está posicionado dentro do esquema maior do nosso script de projeto Aqui, vou ampliar isso um pouco. Aqui, posso fazer um comentário sobre isso, tocar nessa tecla e vou chamar isso minha localidade definida de jogador Se eles pularem o mastro da bandeira, só para deixar isso claro à distância, o que diabos está acontecendo aqui Tudo bem, com tudo isso pronto, é claro que devemos compilar nosso script e salvar E vamos voltar ao nosso nível só para jogar pela primeira vez aqui. Vou garantir que eu não pule por cima do meu mastro de bandeira. Então, vamos lá. Começando e planejando, basta sobrepor esse volume de gatilho Como você pode ver, agora estamos congelados e provavelmente precisaremos dar um empurrão em e provavelmente precisaremos dar nosso personagem para fazer parecer que ele está agarrando Então, para fazer isso, podemos ajustar um pouco a localização do nosso personagem. Eles estão um pouco compensados, mas por uma questão de tempo, vou viver com isso por enquanto Agora precisamos testar o cenário de nosso personagem tentando pular por cima do mastro Para ajudar com isso, vou colocar uma das minhas plataformas de lançador bem na frente aqui Deixe-me prosseguir e selecionar meu lançador. Vou apenas aumentar um pouco a parte superior do lançador aqui Não vou ser preciso, só preciso fazer isso pular o suficiente para que voemos no ar e acabemos em nosso Então, vamos tentar entrar e jogar. Você pode ver que isso distorceu nosso personagem até o topo do nosso mastro E é exatamente isso que queremos que aconteça lá. Tudo bem, então, obviamente, mais trabalho a ser feito para que nosso personagem desça pelo mastro, pule dele e exploda em uma chama de glória Mas agora temos nosso personagem congelando no ponto certo ao longo do mastro, reproduzindo a animação certa, parecendo que está meio que se agarrando um pouco do mastro Além de desativar o movimento de nossos personagens. Gente, isso vai bastar para esse vídeo. Nos vemos na próxima. 83. Script de bandeira com pole #3: Bem vindo de volta. Nosso próximo passo aqui é fazer com que nossa bandeira e nosso personagem animem no mastro quando nosso personagem sobrepõe Então, vamos mergulhar de volta na planta da nossa bandeira agora a partir de uma vista de 10.000 pés Esse é todo o script que temos atualmente em vigor. Dentro da nossa bandeira BP, de fim de nível, você percebe que temos certos segmentos do nosso script comentados, seções do nosso script para nos ajudar a identificar o que diabos está acontecendo e onde Agora, pensei em mencionar isso enquanto estamos aqui, que se você entrar no menu da janela e ativar os favoritos, poderá clicar duas vezes em qualquer dos seus nós de comentário aqui embaixo para ir para a seção do script F do personagem do jogador Basta clicar duas vezes sobre isso. E ampliará essa seção do roteiro, definirá a posição do personagem e interpretará anum. Essa seção do script será destacada, então essa é uma ótima maneira navegar pelo seu projeto Agora vamos começar construindo a partir dessa posição definida, nodeando a partir desse conjunto de personagens e reproduzindo uma seção do roteiro. Então, vou aumentar o zoom aqui embaixo. E antes de animarmos nosso e nosso personagem no mastro da bandeira, vamos introduzir um atraso Então, vou clicar com o botão direito do mouse e inserir um nó de atraso. Vamos atrasar por 1 segundo. Aqui, deixe-me ampliar a linha um pouco mais. Mais uma vez, estamos construindo a partir dessa função de posição definida. Vamos atrasar por 1 segundo. E então o que vamos fazer é tocar um som. Toque Sound Two D, este será nosso mastro Som. Então, vamos atrasar por 1 segundo antes de iniciarmos esse som E depois disso, vamos fazer algumas coisas. Como eu quero fazer algumas coisas essencialmente ao mesmo tempo, vou trazer um nó de sequência. E vou fazer isso mantendo pressionada tecla e clicando com o botão esquerdo Isso trará um nó de sequência. E vou colocar uma caixa de comentários em torno dessa tecla muito rápida de clicar com o botão esquerdo e arrastar. Vou chamar isso de minha pausa antes jogar e descer a seção principal do roteiro Apenas uma pequena pausa antes de tocarmos esse som. E então faça algumas coisas aqui. Eu também vou colorir preto. Só para criar um pouco mais de contraste entre meus fios, vamos fazer nosso personagem animar o mastro da bandeira Para fazer isso, vou trazer uma referência ao meu personagem aqui. Então, vou manter pressionado o botão esquerdo do mouse. Isso vai pegar meu personagem. Em seguida, vou retirar meu personagem e digitar o componente da cápsula. Vou pegar o componente da cápsula porque, mais uma vez, o componente da cápsula, se eu entrar no meu BP, personagem de terceira pessoa, esse é o componente principal do qual todos os outros componentes adicionados a ele são anexados ao nosso componente da cápsula anexados ao nosso componente da cápsula Esse é essencialmente nosso componente raiz aqui. Eu quero entender isso e a razão pela qual quero colocar nosso componente de cápsula de volta aqui em nossa bandeira de final de nível é para que eu possa me arrastar e digitar o componente de movimento dois. Vamos mover esse componente. E ao mover esse componente, todos os outros componentes do nosso personagem virão junto com ele. Vamos conectar isso diretamente ao Move. Vou trazer um nó de rota vermelha só para arrumar isso um pouco Agora, para onde queremos mover isso? Bem, queremos mover isso para o endpoint do nosso player. Então, vamos arrastar isso e pegar isso apenas para mostrar onde está em nosso endpoint do player Viewport Acabei de clicar nele aqui. Você pode ver que está logo ali embaixo. Esse é essencialmente o ponto em que queremos mover nosso personagem para trás em nosso gráfico de eventos aqui. Vamos mover isso para o lado aqui, nosso ponto final de jogador Vamos sair daqui e obter a localização mundial. Esse será o local para o qual queremos ir. E então vamos retirá-lo novamente e digitar get world rotation desta forma. Agora podemos especificar em quanto tempo tudo isso vai acontecer. Aqui, você pode especificar um horário. Vou fazer com que seja de 1 segundo. Isso fará com que nosso personagem desça pelo mastro da bandeira. Então, deixe-me clicar com o botão esquerdo e arrastar esse toque, aquela tecla C, vou dizer personagem animado para baixo do poste Pinte esse preto também. Você pode imaginar que vamos fazer algo semelhante com nossa bandeira. Vou mudar isso um pouco para cá. Essa será a primeira coisa que faremos com nosso nó de sequência aqui. A próxima coisa que faremos com nosso nó de sequência é pegar uma referência à nossa, nossa bandeira, obviamente estando aqui Esse é o nosso componente de bandeira. Vamos arrastar e soltar isso. Nós vamos sair daqui. Também vamos trazer o componente dois. Vamos conectar isso assim, no pino de entrada. Agora, onde queremos animar isso? Bem, queremos mover isso para o nosso ponto final. Temos um componente específico para esse endpoint de sinalização. Se você esqueceu onde está, volte para a guia Viewport Essa cabeça de dragão está aqui. Este é o nosso ponto final de bandeira Então, vai ser assim daqui para lá. Arraste para fora do ponto final da nossa bandeira e obteremos a localização relativa Essa é a localização em relação ao nosso alvo. E então vamos arrastar isso e digitar a rotação relativa. Então, novamente, vamos especificar 1 segundo aqui. Ok, então isso vai animar nossa bandeira. Clique com o botão esquerdo e arraste essa toca, aquela tecla e esta será bandeira animada no mastro Olá, esse preto. E então vamos compilar e salvar. E vamos entrar, jogar e dar uma olhada no que temos. Tudo bem, pule aqui, a bandeira é animada. Nosso personagem se anima. Agora, eventualmente, nosso personagem vai pular e explodir Mas isso é essencialmente o que queríamos que acontecesse até agora. Agora, uma coisa com a qual não estou exatamente entusiasmado aqui é que nosso personagem, se você observar e observar com atenção No momento, parece que eles estão meio que agarrando o mastro da bandeira, mas quando começaram, parecia que estavam um Então, deixe-me fazer isso de novo agora. Veja a mão de nossos personagens. no início, eles estão meio que na frente daquele mastro E então eles meio que se animam até isso. Nossa bandeira está funcionando muito bem, mas nosso personagem nem tanto. Então, a maneira de corrigir isso é basicamente voltar ao nosso ponto de vista aqui e garantir que nosso gatilho aqui esteja essencialmente alinhado com o ponto final do jogador Então, se eu fosse entrar em uma vista lateral aqui, vamos para a esquerda. Agora vamos para a visão certa. A visão correta é a que queremos e eu tenho que selecionar o volume do gatilho ali mesmo. Parece que está na fila ali mesmo. Mas, aparentemente, isso não vai ser ótimo visualmente. Então, vou aumentar um pouco mais o volume do meu gatilho No entanto, quero desativar minhas configurações de snap aqui. Eu vou direto para o meio como pensei que queria. Agora eu poderia prever um problema definir o volume do meu gatilho aqui: meu personagem poderia esbarrar no mastro real e, possivelmente, até mesmo no próprio topo do mastro próprio topo do Mas deixe-me compilar isso, salvar e jogar agora, vamos ver como meu personagem reage ao mastro Você pode ver agora que eles não estão realmente sobrepondo volume do gatilho porque nosso personagem está esbarrando no próprio mastro Então, como podemos remediar isso? Bem, o que podemos fazer é realmente desligar a colisão do nosso mastro, bem como do topo do nosso mastro aqui Queremos garantir que nosso personagem não esbarre neles Em vez disso, eles podem passar por ele para atingir o volume do gatilho. Com os dois selecionados, tudo que vou fazer é acessar predefinições de colisão e ativar a ausência de colisão, a ausência de colisão para nosso mastro, bem como para o topo da bandeira Eu vou compilar. Salve isso novamente. Volte ao jogo. Agora, se eu fosse pular, eu basicamente atingiria aquele ponto. Isso é muito bom. Parece que nosso personagem foi animado no mastro da bandeira conforme planejado, sem que nosso personagem colidisse com o próprio mastro Portanto, ajuste o volume do gatilho conforme desejar. Novamente, eu o tenho meio que bem no meio do meu mastro, ali mesmo Se você quiser ver a localização real, é aí que eu tenho a localização definida N. Então, se você fizer isso, certifique-se de desligar topo da bandeira e os mastros da bandeira. Colisão. E fizemos isso usando uma predefinição de colisão. Sem colisão. Tudo bem, vamos encerrar esse vídeo. Ainda há mais trabalho a ser feito. Nos vemos a todos na próxima. 84. Script de bandeira com pole #4: Tudo bem, continuando com nossa bandeira de fim de nível, vamos voltar para que possamos explodir o jogador, nossos jogadores atualmente empunhando a bandeira Vamos fazer com que eles pulem e explodam ali mesmo Para voltar à nossa bandeira de fim de nível, mostrarei como você pode simplesmente clicar com o botão direito do mouse no ativo do seu nível. Aqui podemos editar BP, bandeira de fim de nível. Clicar nisso funcionará perfeitamente. Controle também a combinação fácil de teclas de atalho para voltar. Agora, este é atualmente nosso roteiro a partir de uma visão de 10.000 pés. Vou clicar com o botão direito do mouse e ampliar até onde estávamos animando nosso personagem no poste Então, vamos voltar para aquela região novamente. Está fora da nossa sequência aqui. A primeira coisa que vamos fazer é incluir outra referência ao nosso personagem diretamente no painel My Blueprint Vamos trazer outra referência ao nosso personagem mantendo pressionado o controle e clicando com o botão esquerdo. Vamos pegar meu personagem. E então eu vou tirar isso e digitar get mesh. Eu quero obter essa malha de manequim de dentro do nosso personagem Esse componente de malha. Em seguida, vou arrastar isso e digitar a animação de reprodução. Há uma animação específica que eu gostaria de jogar e será M, M, Underscore J. Ump E vamos conectar isso ao final do componente dois do movimento, depois de animarmos o personagem no poste. Então, apenas mostrando onde isso vai entrar. Agora, basta navegar até esta animação aqui, clicando neste ícone de lupa, ela ficará assim Como se nosso personagem estivesse agachado. Então, basicamente, o que vamos fazer é que nosso jogador esteja no final. O mastro na parte inferior, se você quiser. E eles vão fazer uma pausa por apenas um breve momento E é aí que vou voltar ao meu roteiro aqui. E eu vou dizer, vamos atrasar aqui por 0,3 segundos. Então, vou manter pressionada a tecla para atrasar, clique com o botão esquerdo. Isso trará um nó de atraso. Então, eu tenho meu personagem interpretando essa animação, que se agacha enquanto está pulando E então vamos atrasar 0,3 segundos por 0,3 porque, bem, isso é o que meu teste de jogo determinou que foi muito bom. Vou clicar com o botão esquerdo e arrastar ao redor deles, tocar na tecla e este será meu player na parte inferior da representação do script do mastro Eu vou dizer entre parênteses, pule. Eles não vão realmente pular, nós vamos movê-los, mas vai parecer que eles estão pulando Mais uma vez, vou colorir isso de preto também. OK. Em seguida, vamos fazer nosso jogador realmente pular do mastro da bandeira. Então, vamos apertar o botão direito da boca e dar uma olhada. Vamos construir a partir desse nó de atraso. Mais uma vez, vamos trazer uma referência ao nosso personagem. Vou manter pressionado o controle, clicar com o botão esquerdo e arrastar. Aí está meu personagem. Vou fazer isso mais uma vez e vou pegar a mistura, Get ish Também vamos reproduzir outra animação, a animação drag play. E o que isso vai ser, vamos conectar isso imediatamente, o fio de execução, para que essa função, essa função de animação de reprodução aconteça. Agora, a animação que eu quero reproduzir aqui se chamará fall loop. Estará na mesma série de pastas lá. Você pode ver o caminho aqui, Fall Loop, só para mostrar como isso vai parecer, vai parecer que nosso personagem está meio que perpetuamente preso nesse loop. Algo parecido. Enquanto eles estão animando da parte inferior do mastro até nosso ponto de explosão, eles basicamente reproduzirão essa animação Você pode definir isso como loop, se quiser. Quero dizer, tudo isso vai ser relativamente rápido. Essa é a escolha do revendedor. E então o que eu vou fazer é arrastar meu personagem para cá novamente. E vamos pegar os componentes da cápsula mais uma vez. O componente da cápsula é principal componente raiz de nosso personagem, qual estão anexados todos os outros componentes. Então, se movermos o componente da cápsula, vamos mover todo o resto. Agora, a razão pela qual estamos fazendo isso é porque vamos nos afastar disso e dizer mover componente para. Vamos mover esse componente, certifique-se de conectá-lo da mesma forma que antes. Bem, queremos movê-lo para o nosso ponto de explosão. Agora, deixe-me pular para o nosso ponto de vista aqui. Temos esse ponto de explosão do jogador. E eu o selecionei no meu painel de componentes. Isso é essencialmente esse componente de seta aqui, dentro desta caixa, ali mesmo, para onde vamos mover o componente da cápsula de nossos jogadores. Vamos fazer nosso jogador explodir. Aponte esse componente para lá. Vamos prolongar isso, vamos obter a localização mundial. E esse será o local alvo do nosso componente de cápsula. Depois, também vamos adiar isso e dizer que, ao girar o mundo, mais uma vez, você decide por quanto tempo essa transição vai acontecer, desde o momento em que nosso personagem está agachado na parte inferior do poste até a escolha do dealer Vou definir isso para meio segundo, então 0,5 segundos. Vamos colocar uma caixa de quadrinhos ao redor desse clique esquerdo, arrastar, tocar nessa tecla, e eu direi um jogador pulando do mastro da bandeira Vamos colorir isso de preto também. Basta diminuir o zoom em um. Atualmente, temos dois blocos de script aqui que escrevemos neste vídeo em particular. Tudo bem, agora vamos explodir os jogadores, certo? Então, para fazer isso, vamos passar para a direita. Mais uma vez, queremos colocar o personagem no componente da cápsula. Mais uma vez, vou usar um atalho. Aqui. Vou destacar esses dois nós controlando e clicando com o botão esquerdo. Vou fazer o controle D para duplicar os dois e trazê-los até aqui O que eu quero fazer é arrastar o componente da minha cápsula aqui. Quero obter a localização mundial do nosso componente de cápsula. E a razão pela qual eu quero obter a localização mundial do componente da minha cápsula é porque é aí que vou sair daqui, gerar o emissor Mais uma vez, gerar um emissor gerará o estilo antigo de partículas Agora, a razão pela qual estou gerando um estilo antigo de partículas é porque, se eu clicar aqui, nossa partícula de explosão atualmente em nosso conteúdo inicial é o legado, o antigo sistema de partículas em cascata Nós o temos disponível para nós no conteúdo iniciado. Se você tiver um novo estilo de explosão disponível por meio do sistema de partículas do Niágara, você pode escolher gerar o sistema no local, é assim que você pode gerar uma partícula do Temos que inserir isso como o local onde vamos gerar esse efeito de partícula Também vou aumentar essa explosão para torná-la um pouco maior. Então, vou configurá-lo para dois em toda a linha. Eu também vou usar essa localização mundial como o lugar onde eu quero tocar um som. Sim, você pode tocar um som em um determinado local. Então, vou sair daqui e digitar o som de reprodução no local. Então, é claro, se temos um visual para uma explosão, provavelmente também queremos um efeito sonoro para uma explosão. Temos essa explosão. O que isso fará é randomizar quais dessas duas ondas sonoras são reproduzidas de forma muito semelhante, mas você pode escolher qualquer uma dessas ondas sonoras em si Isso reproduzirá a própria onda sonora bruta. Uma sugestão sonora oferece um pouco mais de flexibilidade, pode oferecer coisas de randomização dessa natureza Então, vou escolher a sugestão sonora. Agora, mais uma coisa que vou fazer aqui é que não vou realmente destruir o jogador, vou apenas esconder o jogador. Então, vou retirar o componente da minha cápsula mais uma vez. E eu vou digitar a visibilidade do set. Não quero destruir o jogador e perder uma vida ou algo parecido. Então, vou definir a visibilidade, garantir que você conecte esse fio de execução. E vamos deixar essa nova visibilidade aqui desmarcada O que significa que não vamos ver nosso personagem explodindo nosso jogador Na verdade, não estamos nos livrando, não estamos destruindo nosso jogador É tudo um pouco de prestidigitação, uma mão apenas os escondendo, tornando-os invisíveis. Tudo bem, tocando na tecla C. Vou chamar isso de meu script Explode the Players. Vamos colorir isso de preto também. Tudo bem, vamos compilar isso e salvar. Vamos entrar e jogar e ver como isso fica. Tudo bem, vou pular isso. Basta pular na piscina, anotar, fazer uma pausa, pular e nosso personagem não explodirá Então isso é obviamente um problema. Vamos ver o que está errado. Bem, e aí estaríamos. Nosso componente da cápsula está funcionando, mas também preciso propagá-lo para as crianças Esses são todos os outros componentes que serão anexados a ele. Então, se eu marcar essa caixa, vamos voltar, jogar e entrar. Escrevemos isso, bum, se foi nosso personagem em uma chama de glória Que satisfatório, de fato. Então, sim, lembre-se de marcar essa caixa para propagar também para crianças Tudo bem, então, neste vídeo, adicionamos essas três seções do script ao nosso mastro de bandeira no final do nível E construímos isso com nosso personagem animado no mastro da bandeira Então, só para ampliar um pouco cada pedaço do script, caso você queira pausar o vídeo aqui Era nosso jogador na parte inferior do mastro, se preparando para pular, jogador pulando E por último, mas não menos importante, estamos explodindo nosso jogador Tudo bem, falta um pouco mais, mas isso encerrará este vídeo. Nos vemos na próxima. 85. Script de bandeira com pole #5: Tudo bem, vamos finalizar nossa bandeira de fim de nível clicando com o botão direito nela. Eu vou editá-lo. Control plus E vai voltar para lá. Mais uma vez, é assim que nosso script se parece uma visão ampliada de 10.000 pés. Vamos continuar no canto inferior direito aqui, então vou clicar com o botão direito do mouse. Aumente o zoom. Vamos construir a partir desse nó de visibilidade definido. Agora, nosso objetivo aqui será jogar um show de fogos de artifício somente se nosso tempo de final de nível terminar com um determinado dígito Agora eu tive essa ideia ao jogar o primeiro Super Mario Brothers na Nintendo. E acredito que, se eu me lembro corretamente, se você terminasse com um tempo nivelado com um dígito de seis, ou seja, 86 segundos, seja, 86 segundos, você teria uma exibição de fogos de artifício consistindo em seis fogos de artifício consistindo em seis fogos de Então, isso é essencialmente o que estamos procurando aqui. Só um pouco mais de jazz. Agora, o que eu quero fazer aqui é descobrir se o número do nosso show especial de fogos de artifício, no meu caso, eu tenho uma variável inteira definida com o valor de sete, vamos arrastá-la para fora, então, se nosso tempo basicamente terminar com o nível sete, vamos pegar essa variável que queremos exibir fogos de vamos pegar essa variável artifício Então, aqui estou trazendo uma referência essencialmente ao nosso número sete aqui. Então, agora eu quero descobrir se nosso tempo de nível terminará com o número sete. Então, como eu faço isso? Bem, eu tenho que trazer uma referência ao meu controle, meu controlador BP player Então, vou manter pressionado o controle, clicar com o botão esquerdo e arrastar. Em seguida, vou sair do meu controle aqui e digitar o tempo do nível. Vamos conseguir nosso tempo nivelado. Agora, essa é uma variável inteira que vive dentro do nosso controlador de player BP. Então, deixe-me passar rapidamente para esse plano. Há minha variável de número inteiro de tempo de nível dentro dela atualmente definida como 500 Vamos voltar para nossa bandeira de fim de nível. Ok, e o que queremos fazer é descobrir o dígito mais correto disso Agora, para fazer isso, vamos clicar com o botão direito em algum espaço vazio e digitar logo abaixo da string. Clique com o botão direito para inserir um nó de função aqui. E o que vamos fazer é inserir nosso número inteiro aqui nessa entrada de string Isso converterá nosso tempo de nível de um inteiro em uma string Ao converter isso em uma string, temos acesso a mais funções como essa função aqui para extrair algumas informações muito específicas sobre ela Nesse caso, queremos apenas descobrir qual é o último dígito do nosso tempo de nível Agora, para fazer isso, se eu passar o mouse sobre isso, ele dirá que retornará a string à direita do local especificado. Contando para trás a partir da direita. Se eu definir minha contagem aqui como um, basicamente me dará o último dígito contando a partir da direita do nosso tempo Se terminarmos com um tempo nivelado de, digamos , 87, ele exibirá o número sete aqui E vamos comparar isso com nosso show especial de fogos de artifício Para comparar esses dois, vou clicar com o botão direito do mouse em algum espaço vazio e inserir um operador igual. Nosso show especial de fogos de artifício será, bem, estamos conectando-o ao topo Nosso valor de retorno aqui da nossa função será inserido na parte inferior Isso vai transformar isso em uma entrada de string imediatamente. E então o que vamos fazer é uma nota de ramificação para manter pressionada a tecla B s, ramificar e clicar com o botão esquerdo. Essa será a nossa condição que estamos verificando aqui para ver se elas são essencialmente iguais. Mais uma vez, continuaremos com nosso explode the player Para manter o fluxo de execução em andamento, você deve pegar o pino de saída de visibilidade definido aqui e conectá-lo à ramificação. E então, com isso, vou clicar com o botão esquerdo ao redor desses nós. Arraste para fora, toque na tecla C para abrir a caixa de quadrinhos. E este será meu cheque se o último dígito do tempo restante for igual ao número do show de fogos de artifício E vou colorir isso de preto para facilitar a visualização se você quer pausar o vídeo aqui Então, somos apenas nós verificando se o último dígito do tempo restante é igual ao especial do show de fogos de artifício desejado Se isso for verdade, vamos continuar com isso. A ramificação verdadeira, vou trazer um nó de atraso. Mantenha pressionada a tecla D e clique com o botão esquerdo, vamos atrasar por apenas meio segundo, 0,5 segundos. Então, vamos fazer algo um certo número de vezes. Vamos clicar com o botão direito do mouse e inserir um nó. Queremos fazer algo várias vezes. Sendo esse valor qualquer que esteja associado a isso, o que queremos fazer? Um número de vezes? Bem, quantas vezes queremos fazer isso? Bem, vamos fazer isso, nosso show especial de fogos de artifício no nosso caso, sete vezes O que queremos que aconteça sete vezes? Bem, vamos gerar alguns fogos de artifício agora. Vou me mudar para cá, clicar com o botão direito do mouse e gerar o emissor no local não vou conectar isso, mas vou conectar ou especificar meu modelo de emissor aqui E isso vai ser underscore spark burst. Esse cara aqui, está no pacote de efeitos Infinity Blade Sublinhe a explosão da faísca. Agora, onde eu quero que a localização desses fogos de artifício seja reproduzida Bem, se eu entrar na minha janela de exibição aqui, configuro toda a área da caixa aqui Na verdade, eu a chamei de área de fogos de artifício. Eu só queria aparecer aleatoriamente em algum lugar nesta área. Com esse componente selecionado no meu gráfico de eventos. Vou trazer minha área de fogos de artifício. Vou arrastá-lo até lá. Vamos ampliar um pouco aqui. Essa é minha área de fogos de artifício. Vou sair disso e vou dizer: obtenha a localização mundial. Obtenha a localização mundial, como. Então, eu também vou sair daqui em extensão digitada, pegar a extensão da caixa, pegar a extensão da caixa, basicamente me dar essa área onde está nossa área de exibição de fogos de artifício Em seguida, vou clicar com o botão direito do mouse em algum espaço vazio para digitar ponto aleatório na caixa delimitadora Então, vou ver o centro da nossa área de fogos de artifício aqui E então, para a extensão da caixa, ela será conectada à nossa metade do tamanho e, essencialmente, isso escolherá um ponto dentro da nossa área de fogos de artifício Esse será o local em que eu quero gerar nossos fogos de artifício Agora, eu não vou simplesmente conectar isso diretamente aqui. O que eu quero fazer em vez disso é que isso seja definido como nosso local de fogos de artifício Porque eu quero fazer isso várias vezes, para que toda vez que nosso local de fogos de artifício, sempre que disparar várias vezes, no nosso caso, sete vezes, ele escolha um local diferente Toda vez que vou pegar nosso local de fogos de artifício aqui e colocá-lo diretamente no topo do valor de retorno para trazer um E agora minha configuração será assim toda vez que sairmos daqui, criaremos um novo local aleatório para fogos de artifício E esse será o local em que geraremos uma explosão de faíscas, essencialmente alguns fogos de artifício Agora, mais uma vez, se você quiser usar o sistema Niagara Particle, essa seria a localização do sistema de spawn Essa partícula em particular é um pouco pequena, então vou aumentar seu tamanho aumentando minha escala aqui para dez em todos os aspectos Agora é muito ridículo ter um efeito de partícula sem algum som Então, vamos tocar um pouco de som depois disso também. Então, saindo daqui, vamos tocar o som no local O que queremos para um som aqui? Bem, eu realmente pensei que o som de Mario Swamp realmente soa muito bem para essa explosão Não soou bem. Na verdade, achei que soou muito bem A localização do som. Bem, eu posso mais uma vez usar meu local de fogos de artifício. Onde quer que nossa localidade de fogos de artifício seja determinada, usaremos isso como local onde nosso som será reproduzido Então, o que eu também vou fazer é gerar alguns pontos Vamos sair daqui e eu vou digitar saw Act da aula, porque seria legal ganhar alguns pontos de bônus por ganhar alguns fogos de artifício Se você quiser, em nossa aula aqui, vou colocar nossos pontos de sublinhado da BP que criamos no início E, claro, temos que especificar onde isso vai aparecer Eu posso simplesmente arrastar para trás a transformação de spawn e digitar make transform da mesma forma para o local de fogos de artifício Eu poderia simplesmente conectar isso como o local para gerar esse widget de pontos, o que vai ser muito legal Agora, quantos pontos queremos adicionar para cada fogo de artifício? Bem, quero dizer, podemos escolher aqui. Temos nossos pontos de fogos de artifício variáveis. Atualmente, configurei isso para 500, então vamos continuar e conectar isso, é por isso que criamos esse cara. Então, o que também vamos fazer é trazer meu controle, que se refere ao fato de nosso controlador de jogador arrastá-lo para dentro Vamos pegar isso, depois vamos sair disso e digitar pontos de adição. Vamos somar pontos, e eu vou passar para isso em apenas um segundo. Quantos pontos gostaríamos de adicionar? Bem, podemos somar o número de nossos pontos de fogos de artifício. Essencialmente, o que estamos fazendo aqui é mostrar pontos toda vez que um fogo de artifício explodir Além disso, chamamos isso de pontos de adição dentro do nosso controlador de player BP. O que isso está fazendo mais uma vez? Bem, se eu clicar duas vezes nisso, vou direto para o controle do meu player BP E isso mostra que vamos chamar esse evento personalizado. E vamos passar pelo número de pontos que conectamos, aqui mesmo, neste caso 500 Vai passar por isso. 500 mais nosso total de pontos atual. E isso fará com que nosso novo total de pontos. Mais uma vez, nosso valor de pontos está associado à exibição de pontos dentro de nosso Ud, então isso deve estar bem no Dandy Tudo bem, vamos ampliar e mostrar mais uma vez o que temos aqui. Vou clicar com o botão esquerdo e arrastar tudo isso, aquela tecla, e vou chamar isso de minha jogada. Fire Works, concedendo pontos extras ao jogador pela conclusão do tempo Agora, se você é realmente experiente aqui, você deve ter notado que eu ainda preciso fazer alguma coisa . Deixe-me mudar minha cor aqui para preto No momento, estamos permitindo que isso passe várias vezes para gerar um novo fogo de artifício No entanto, atualmente estaríamos passando por aqui uma vez, mas não temos disparar isso sete vezes, como gostaríamos O que precisamos fazer aqui é criar um evento personalizado. Aqui em cima. Evento personalizado, e vou simplesmente chamar isso de mais fogos de artifício E vou conectar isso ao nosso atraso. E a razão pela qual vamos fazer isso é porque se isso mais uma vez for considerado verdadeiro, vamos dizer, ei, vamos atrasar por meio segundo Em seguida, vamos aparecer em um fogo de artifício. Agora diz que é hora de término devido. Então, na primeira vez que passarmos, ele fará todo esse código, mas, no final, precisamos mais fogos de artifício, eventos personalizados que acabamos de criar Então, basicamente, o que isso vai fazer, eu apenas cliquei duas vezes nele Isso nos levará de volta a esse evento personalizado para que possamos atrasar meio segundo. Novamente, passe pelo nosso D N, neste caso pela segunda vez, permitindo que apareçamos em um novo conjunto de fogos de artifício E isso vai se repetir até atingirmos nosso limite, neste caso de sete, caso em que não passará mais desse ponto. Tudo bem, vamos compilar nosso script aqui, salvá-lo e ter certeza de que está tudo bem Isso é o que construímos nisso. Um pouco, difícil de ver, então talvez eu tenha que enquadrá-lo em duas fotos aqui. Ok, aí, e bem aqui. E agora vamos começar a jogar e nos fazer um teste. Tudo bem, vamos lá. Tente chegar ao alto para pegar esta. Ah, e é claro, eu não defini meu tempo de nível, não joquei o sistema aqui. Atualmente, meu tempo está definido para 500. Mais uma vez, vamos aumentar nosso tempo em breve nos próximos vídeos, mas vou ter que programar nosso tempo apenas para ter certeza de que está funcionando conforme o esperado Então, vou levar meu controlador de player BP aqui. Eu vou definir meu tempo de nível aqui para ser. Vamos 47, então está terminando com o número sete. Ok, vamos em frente e salve isso. Vamos voltar e jogar meu jogo. E aqui vamos nós. Mais uma vez, está terminando com o último dígito de sete. Recebemos sete fogos de artifício cada, somando 500 pontos. Você viu esses pontos aumentarem e serem adicionados ao meu total no canto superior direito e isso está funcionando conforme o esperado Muito bem, pessoal. Agora temos um mastro de fim de nível em algumas configurações de nível em que faremos com que coisas como nosso cronômetro de nível realmente funcionem. Nos vemos lá. 86. Blueprint de configurações de nível: Bem-vindo ao longo dos próximos vídeos aqui As coisas realmente se encaixarão à medida que implementarmos um plano de configurações de nível Agora, esse será um modelo altamente personalizável que poderemos colocar em nosso E isso determinará coisas para nós , como o nível de música que queremos tocar, que tipo de limite de tempo queremos implementar nesse nível específico. Além de modificar quando tocar música, indicando que nosso tempo de nível está prestes a acabar, bloqueie o tempo Música Todo esse tipo de jazz. Então, coisas boas serão implementadas neste. E este também se relacionará com alguns outros projetos que criamos ao longo do curso Portanto, antes de fazer toda essa seção de vídeos, certifique-se de ter concluído a planta do ponto de verificação, o widget do hud, a planta Porque todos eles se conectarão a esse sistema que estamos prestes a criar aqui. Tudo bem, para começar, mais uma vez, vamos criar um plano de aula de atores E faremos isso dentro da nossa pasta de blueprint. Então, o primeiro passo é entrar aqui. Vamos clicar com o botão direito do mouse. Vamos criar uma nova classe de modelo da variedade de classes pais de atores E vou dar um nome a isso. E onde o colocou? Dentro daqui. Aí está, bem ali embaixo. Pressionando F dois para renomear isso, vou chamar isso Configurações do nível de sublinhado. Tudo bem, com isso selecionado, vou apertar a barra de espaço para abri-lo O objetivo deste é apenas colocar o componente e as variáveis no lugar e , em seguida, escreveremos o roteiro do próximo vídeo ou vídeo. Vamos trazer os componentes que vamos querer para isso. O primeiro componente que vamos adicionar, vamos adicionar vários componentes de áudio aqui. O componente de áudio está na parte superior dos seus anúncios. Este primeiro eu vou chamar de componente musical de nível. O próximo que vou adicionar é um componente de áudio. E realmente não importa que eles estejam conectados aqui. Mas se você ficar louco fato de eles estarem conectados um ao outro, basta arrastá-los e soltá-los sobre o componente de áudio existente O próximo será chamado Time Running Out Warning. Vou selecionar meu sênior padrão. Mais uma vez, adicione outro áudio. Este será chamado de tempo expirado. O sensor padrão mais uma vez clicará em Adicionar. Todos esses serão componentes invisíveis em nosso próprio jogo. A propósito, este será chamado de Nível Completo. Opa. E eu digitei Nível Completo Eu só quero adicionar um componente de áudio e chamá-lo de Nível completo. Ok, vamos definir as configurações para cada um deles imediatamente, começando pelo nosso nível. Música Vamos seguir em frente e selecionar isso. No painel de detalhes , onde diz Som, vamos inserir. Música que estou procurando no nível Mario. Música Queremos rolar para baixo. Isso é muito importante quando diz ativação automática. Vamos escolher não ativar isso automaticamente. Ok, em seguida, vamos selecionar nosso Tempo se esgotando. Mais uma vez, desmarcaremos imediatamente a ativação automática. Mas para o som em si, vamos inserir o aviso de esgotamento do tempo de Mario e, se o tempo expirar, vamos selecionar esse componente Certifique-se de desmarcar a ativação automática imediatamente. Para o som, vamos escolher Mario expirado. O tempo expirou. Então, para completar o nível, você selecionará isso. Certifique-se também de que a ativação automática não esteja marcada. Caso contrário, ele tocará logo no início. O som aqui, vamos escolher se no início. O som aqui, vamos escolher o nível está limpo, Mario, o nível está limpo Tudo bem, então temos quatro músicas diferentes, se você quiser, associadas às nossas configurações de nível. E eles estão prontos para não serem ativados no início. Vamos descer e criar algumas variáveis. Em seguida, no meu painel de diagramas, variáveis, clicando no botão de adição Este primeiro será chamado de limite de tempo atual. Isso será um número inteiro. Vamos fazer uso de tudo isso com algum script. Vou selecionar isso e com esse controle D selecionado, porque eu quero outro número inteiro, esse será chamado de Limite de Tempo Máximo. Com isso selecionado, farei o controle D porque quero outro número inteiro E este vai se chamar Time Running Out Warning, isso vai durar. É exatamente o mesmo que meu componente aqui em cima. Vou chamar isso de meu aviso Running Out, o V, a versão variável. Em seguida, vou adicionar outra variável. Isso será chamado de taxa de jogo temporal. Isso vai ser um carro alegórico. Então, por último, mas não menos importante, vou adicionar outra variável e ela será chamada de meu nível. Música Para isso, vou definir o tipo para ser onda sonora. Vamos escolher o tipo de objeto, onda sonora, referência do objeto. Agora, mais uma vez, vamos fazer uso de tudo isso em algum roteiro futuro. Vamos compilar aqui para que possamos definir alguns valores padrão para cada um deles Então vá em frente e compile. Isso nos permitirá definir alguns valores padrão para um limite de tempo atual. Vou definir isso como zero para nosso limite de tempo máximo. Também vou definir isso como zero. Observe que esses valores não precisam ser definidos aqui. Esse valor máximo será definido no editor de níveis e será passado para a variável de valor atual usando o script. Eventualmente, criaremos algo que eu quero fazer, mas com o limite máximo de tempo, quero ter certeza de definir isso como editável por instância para que possamos editá-lo no editor de níveis Em seguida, para um aviso de tempo esgotado, esse é o limite de tempo com o qual você quer jogar aquela cantiga avisando o jogador de que, ei, seu tempo está prestes a acabar Então, com isso, também queremos expor isso para tornar essa instância editável Então, podemos editar isso do editor, se quisermos. E vamos definir isso como 50. Mas, mais uma vez, a escolha do revendedor. Vou avisar o jogador com cerca de 50 segundos restantes que, ei, você está prestes a ficar sem tempo Minha taxa de jogo, vou definir isso como 1,0 o que significa 100% da taxa normal. Então, isso vai ser usado para determinar o quão rápido vamos realmente marcar segundos fora do nosso relógio Na verdade, nem todos os jogos de Mario realmente diminuem o tempo no mundo real. Em segundo lugar, às vezes eles aumentam mais rápido do que isso. Suponho que também poderíamos tornar essa instância editável. Eu poderia marcar esta caixa aqui, mas também clicar neste pequeno ícone do globo ocular fará exatamente o mesmo Apenas mostrar isso marcando isso ou clicando no globo ocular faz a mesma coisa Música Aqui, também tornaremos essa instância editável, que significa que, se colocarmos nosso ator de configurações de nível aqui em um nível dois, nível três, nível quatro, etc., poderíamos realmente alterar o nível padrão de Música. Por enquanto, vou definir isso para o nível Música E agora, se compilarmos e salvarmos, poderíamos colocar um desses caras Você só precisa de um desses. A forma como isso será projetado dentro do nosso nível, então vou simplesmente arrastar e soltar isso nos meus dois D, minha camada principal aqui. Claro, deixe-me ativar minhas configurações de snap também. Vou deixá-lo aqui mesmo. E então deixe-me colocá-lo no ar, mais ou menos acima de tudo. Portanto, observe que isso é apenas uma coleção de ícones. É um monte de, você sabe, ícones de áudio que se sobrepõem ícone raiz da cena padrão aqui E o que eu realmente queria mostrar é isso no painel de detalhes aqui. Agora, poderemos personalizar várias coisas sobre esse nível específico, o nível um. Portanto, observe que, se você criar um nível dois, nível três, etc., poderá arrastar um deles para o nível dois, nível três, etc., e personalizá-lo para esse nível específico Aqui mesmo, no editor de níveis, o jogador não verá esses ícones. A razão pela qual estamos criando isso como um plano de classe de ator a ser colocado no nível é porque será uma maneira muito conveniente de se comunicar com outros projetos em nosso nível Ok, então começamos bem aqui. Mais trabalho a ser feito, especialmente no que diz respeito à criação de scripts Mas temos nossas configurações de nível de BP reunidas junto com os componentes e as variáveis que serão necessárias daqui para frente Tudo bem, pessoal, isso bastará para este. Nos vemos na próxima. 87. Script de configurações de nível #1: Tudo bem, bem-vindo de volta. Neste vídeo, nossas metas são criar um roteiro dentro de nossas configurações de nível, modelo de classe de ator aqui Isso executará nosso cronômetro de jogo e reproduzirá componentes de áudio relevantes, dependendo da situação do jogo Vamos voltar aqui clicando duas vezes nele ou selecionando-o e pressionando a barra de espaço. Vamos acessar nosso gráfico de eventos aqui. E você deve ver três nós aqui graduados. Vamos eliminar esses dois. A marcação do evento e o início do evento se sobrepõem. No entanto, usaremos o início do evento. Se você ainda não vê isso aqui, você pode clicar com o botão direito do mouse em algum espaço vazio e procurá-lo. E o que vamos fazer após o início do evento é trazer um nó de sequência. Vou manter pressionada a tecla S e clicar com o botão esquerdo para inserir um nó de sequência. E a razão pela qual estou trazendo isso é porque, quando gosto de fazer várias coisas, neste caso, sem começar a jogar, gostaria de segmentá-las em seus próprios scripts separados apenas para fins organizacionais. Agora vou fazer cinco coisas aqui. Então, vou adicionar mais alguns pinos. E provavelmente vamos falar sobre isso ao longo de alguns vídeos, apenas para manter as coisas mais breves. Agora, antes de construirmos a partir desse pino zero, na verdade vou criar um evento personalizado aqui, clicando com o botão direito do mouse em Evento personalizado. E vamos chamar esse jogador de responder. Porque, embora queiramos que várias coisas aconteçam no início do jogo, também queremos redefinir essas coisas que acontecem quando nosso jogador responde Então, vamos convocar esse evento personalizado aqui em pouco tempo. Mas vamos continuar e conectar isso também ao nó da sequência Ok, a seguir, o que queremos fazer base em nosso pino zero, é trazer uma referência ao nosso modo de jogo. Então, vamos clicar com o botão direito do mouse no modo de jogo. Vamos prolongar isso e lançar dois, nosso modo de jogo. Qual modo de jogo estamos usando? Estamos usando nosso modo de jogo em terceira pessoa. E mais uma vez, esse é o que está dentro da nossa pasta de plantas em terceira pessoa Estamos usando esse modo de jogo em terceira pessoa. E deixe-me abrir isso imediatamente porque aqui temos um script de Respawn E isso será essencialmente uma espécie de plano de conexão às nossas configurações de nível aqui, como veremos em apenas um pouco do nosso pino zero Vamos conectar isso aqui imediatamente. E só estou trazendo isso à tona um pouco mais alto. Agora, antes de continuarmos com isso, precisamos realmente entrar em nosso modo BP, homossexual em terceira pessoa Vamos adicionar um despachante de eventos aqui. Descendo o painel do meu projeto. Clique nesse botão de adição para adicionar um despachante de eventos. E vamos chamar esse jogador de Respawn. Com isso criado, vamos realmente criar uma chamada para isso no final do nosso script de Respawn Dentro do nosso jogo em terceira pessoa. Os modos vêm logo no final. E vamos arrastar isso dentro e vamos chamar isso. Agora, isso enviará uma mensagem para qualquer outra planta que esteja ouvindo isso E então, esses planos de escuta podem responder adequadamente Então, com isso adicionado, esse jogador do Dispatcher de eventos responde e, em seguida, incluiu aqui esta chamada no final do nosso script Vamos compilar e salvar. É muito importante que você compile e salve aqui. Para que agora, dentro de nossas configurações de nível, possamos sair desse modo de jogo em terceira pessoa do BP e procurar jogador, aquele despachante de eventos Agora, queremos atribuir o renascimento do jogador. Isso trará dois nós. Veja como isso funciona. Vamos vincular esse evento personalizado a esse expedidor de eventos para que , quando ele for chamado aqui em nossas configurações de nível, estejamos atentos É para isso que serve toda essa configuração, ou seja, ouvir quando o evento personalizado dos jogadores é convocado. E quando isso for chamado, sairemos desse evento personalizado. Basicamente, isso é esperar que o despachante de eventos de resposta do jogador seja chamado E no momento em que isso for chamado, e somente então, esse evento personalizado será acionado. Tudo o que vamos fazer com isso é incluir nosso componente musical de nível diretamente em nossa lista de componentes. Arraste isso para dentro. E então vamos tirar isso e digitar o multiplicador de tom definido E vamos definir isso como 1,0, essencialmente o tom desejado que queremos que seja. Agora, é importante fazer isso ao responder, para garantir que nossa música nivelada esteja tocando nesse tom Como vamos modificar essa proposta, você sabe que o tempo está acabando Em seguida, também finalizaremos esse trecho do script fazendo uma chamada de volta para esse evento personalizado, também chamado de resposta do jogador. Portanto, não se confunda. evento personalizado desse jogador é diferente do expedidor de eventos desse jogador que vive dentro do nosso modo de jogo em terceira pessoa Então, vamos tirar isso e digitar a resposta do jogador, chamar essa função, a resposta do jogador, e se eu clicar duas vezes nisso, isso verificará se ele apenas chamará aquele evento personalizado. Logo no início desse roteiro. Vamos clicar com o botão esquerdo e arrastar esses nós e tocar na tecla C ao redor deles para que possamos comentar isso Chamarei isso de despachante de eventos Listens out for player response em nosso modo de jogo e redefinirei nossas configurações de nível Mais uma vez, vou colorir esse preto apenas para criar um contraste mais nítido Então é isso que temos até agora. Talvez eu adie isso um pouco só para enquadrar isso um pouco melhor. Ok, a segunda coisa que vamos fazer com nossa nota de sequência aqui, vamos colocar nossa nota de sequência para baixo, é clicar com o botão direito do mouse em algum espaço vazio e dizer pegue o controle do player. Em seguida, sairei daqui e lançaremos para o controlador do jogador, nosso controlador do player BP A razão pela qual estamos fazendo isso é porque queremos extrair algumas informações dele. Em vez disso, queremos definir uma variável dentro dela. Mas antes de fazermos isso, vou clicar com o botão direito neste alfinete aqui. E vamos promover isso para uma variável. Vou simplesmente chamar isso de meu controlador Player Ref. Vamos usar esse controle de player novamente. Vamos promover isso para uma variável imediatamente. Existem controladores de jogadores armazenados nessa variável. E agora o que eu quero fazer é arrastar nosso controle do player e definir o tempo de nível novamente dentro do nosso controlador do player. Vamos pular para o nosso controlador de player, que está na minha estrutura de projetos de plataforma, controlador de player Eu tenho essa variável de tempo de nível aqui, atualmente ajustada para 500. Eu o ajustei de volta para 500 e quero ser capaz de definir isso. Agora, mais uma vez, essa variável está vinculada à nossa exibição de tempo de nível em nosso capô. E aqui, dentro de nossas configurações de nível, estamos dizendo que queremos poder personalizar qual é esse valor. Essencialmente, nossas configurações de nível passarão um novo número para essa variável aqui. Agora, o que eu quero definir isso também? Eu tenho meu limite de tempo máximo. Vou simplesmente conectar isso aqui agora com minha configuração de nível de BP selecionada aqui no meu nível Tudo o que eu defini como meu limite máximo de tempo aqui no painel de detalhes. Então, deixe-me ir em frente e definir isso para 300. Isso passaria isso de nossas configurações de nível aqui para o tempo de nível em nosso controlador de jogador. E para provar isso, se eu clicar em jogar agora, você pode ver no topo que agora vemos o valor de 300 em vez de 500, porque aqui em nossas configurações de nível, estou passando um novo limite de tempo para aquela variável que vive dentro do nosso controle de jogador Agora, mais uma coisa que eu quero fazer aqui é pegar nosso limite de tempo atual e arrastar e soltar isso. E coloque isso bem no final. Vou apenas arrastá-lo e soltá-lo neste pino aqui para definir nosso limite de tempo atual. Agora você pode estar se perguntando por que estamos fazendo isso agora. Bem, isso é porque essa será uma variável que vamos será uma variável que vamos incrementar, ou melhor, diminuir por meio de um cronômetro mais adiante aqui Então, tudo o que estamos fazendo aqui é pegar nosso limite máximo de tempo e, em seguida, configurá-lo para essa variável mapeada para nosso Hud real E então também estamos configurando isso aqui, porque essa é a variável que vamos diminuir por meio de um cronômetro Um pouco mais abaixo aqui. Tudo bem, feito isso, vamos clicar com o botão esquerdo e arrastar esse trecho do script. Vou apenas ampliar um pouco aqui. Toque nessa tecla e eu chamarei isso meu controlador F para dois jogadores e definirei o script de variável de tempo de nível. Devo também dizer que, que está vinculado ao nosso Hud, é um bom lembrete E então vá em frente e mude para preto também. Ok, então essa será nossa configuração inicial aqui. Temos mais trabalho a fazer, mas vou chamar isso de vídeo aqui para não sobrecarregar e manter isso em pedaços menores Mas se você quiser pausar o vídeo aqui, você pode ver o que criamos até agora Vá em frente e compile e certifique-se de que seu script esteja bom até o momento e salve Nos vemos na próxima. 88. Script de configurações de nível #2: Bem-vindos de volta a todos. Continuando com nosso script de configuração de nível de BP Vou clicar aqui mesmo no esboço. Edite as configurações do nível de BP para voltar e continuar Tudo bem, eu vou seguir em frente. Vamos construir a partir do nosso nó de sequência mais uma vez, desta vez com base nos então dois pinos. Então, o que eu quero fazer com esta seção é que o script defina o áudio que será reproduzido em nosso nível. Para isso, vamos trazer uma referência ao nosso componente musical de nível. Vamos continuar e arrastar isso para dentro. Se deixarmos isso de lado, podemos digitar set Sound. Vamos em frente e conecte isso imediatamente. Agora, atualmente, tenho como padrão a música que será reproduzida nesta variável aqui, nosso nível Música. Vamos em frente e inclua isso Mais uma vez, tornamos essa instância da variável Music de nível editável, o que significa que aqui em nosso editor de níveis, com nossa configuração de nível de BP selecionada, podemos realmente modificar o Música Aqui, atualmente padrão é o nível Mario Música Mas se você quiser alterá-la por nível, tudo o que você precisa fazer é arrastar e soltar as configurações em seu nível. E então você pode modificá-lo para ser o que quiser aqui. E então, por meio de script, é aqui que, na verdade, será necessário o que definimos nesse editor de níveis com essa instância editável E isso vai definir que é o componente musical de novo nível que queremos tocar. Tudo bem, com isso, o que vamos fazer então é introduzir um pequeno nó de atraso. Mantenha pressionada a tecla D e clique com o botão esquerdo. Eu não quero que essa música seja reproduzida imediatamente, então vou atrasá-la em 34 de segundo, 0,75. E então vou trazer outra referência ao nosso componente musical de nível Para arrastar e soltar isso, simplesmente diremos que, ei, agora que você foi preenchido com qualquer música que definimos dentro dessa variável, agora vamos tocar essa música E, obviamente, você pode especificar que a hora de início é zero, só vai jogar desde o início. Clique com o botão esquerdo e arraste e toque nessa tecla. Vou chamar isso de meus conjuntos de áudio para preencher nossos componentes musicais de nível Agora, alguns de vocês podem estar se perguntando: ei, esse componente musical de nível, na verdade, definimos um som padrão aqui. Precisamos fazer isso? Não, nós não fizemos isso. Poderíamos ter deixado isso em branco porque estamos essencialmente substituindo esse componente de música de nível pela música de nível real que está conectada aqui Tudo bem, vamos deixar toda essa caixa de comentários aqui preta. E então vamos trabalhar na seção mais complicada do nosso roteiro aqui Apenas movendo nosso nó de sequência para baixo, vou introduzir um atraso reativável. E vou explicar o porquê aqui em pouco tempo, mas isso não vai fazer sentido logo de cara. Então, vou conectar isso da seguinte forma: vou definir isso como 1.0 e, em vou definir isso seguida, clicar com o botão direito do mouse para esvaziar o espaço e digitar definir o cronômetro por evento E então o que vamos fazer é nos afastar desse evento Vamos trazer um evento personalizado, e vou chamá-lo de meu cronômetro de nível de corrida Vai ser mais fácil para mim incluir tudo isso e depois explicar como tudo isso deve funcionar. Depois de inserir os nós relevantes e configurar algumas coisas aqui por um tempo aqui, vou inserir a taxa de reprodução temporal da seguinte forma. E então eu vou configurar isso para ser repetido , então marque essa caixa Certifique-se de marcar essa caixa. Ok, então, basicamente, quando começarmos o jogo, todos esses trechos do script acima serão acionados, e então vamos descer para O. Em seguida, três, vamos esperar por 1 segundo e depois iniciaremos nosso cronômetro Agora, isso vai disparar, neste caso, a cada incremento de tempo que atualmente eu defini como um Então, é isso que acontece desta vez, determinando quanto tempo esperar antes de executar o delegado Esse é esse evento personalizado aqui. Agora, como isso está em loop, ele continuará disparando, neste caso, neste caso Agora, a razão pela qual eu configurei isso para um atraso reativável, em oposição a um atraso normal, é no caso de nosso personagem morrer e isso precisar começar tudo A forma como um atraso reacionável funciona, em oposição a um atraso normal, é que, quando isso acontece, ele começa a contagem regressiva, no meu caso, no meu caso, E durante o processo de contagem regressiva de 1 segundo, se disséssemos morrer e tudo isso começar de novo, isso reduziria esse atraso para um segundo novamente. Portanto, se, durante o processo de contagem regressiva, isso for executado novamente, ele voltará para um segundo antes de fazer tudo isso. Ok, o que também vamos querer fazer com nosso cronômetro definido por nó de eventos é promover isso aqui Vamos clicar com o botão direito do mouse em promover, e vamos chamar isso de nosso nível. Cronômetro que agora é salvo de forma variável. E, essencialmente, estamos fazendo isso para que possamos limpar esse cronômetro quando o tempo acabar Veremos isso em jogo aqui em breve. Ok, o que eu quero fazer depois do nosso Run Level Timer, evento personalizado aqui Bem, vou trazer um galho, então mantenha pressionada a tecla B e clique com o botão esquerdo. E queremos avaliar uma condição. Agora, nossa condição que vamos querer avaliar é nosso limite de tempo atual. Vamos arrastar isso para dentro. Vamos conseguir isso mais uma vez. Acima, estávamos definindo nosso limite de tempo atual para começar sendo qualquer que seja nosso limite máximo de tempo. E, novamente, isso é definido por meio do editor de níveis. Atualmente, o nível máximo de tempo é 300. Basicamente, estamos dizendo, ei, qualquer que seja nosso valor padrão aqui nas configurações de nível, estamos definindo que seja 300. Isso está passando para o nosso nível, o tempo está mapeado para o nosso bairro E então também estamos preenchendo nosso limite de tempo atual com o mesmo valor de 300 Nesse caso, estamos pegando esse valor e vamos descobrir se isso é igual a zero. Se isso for igual a zero, o que essencialmente queremos fazer é limpar nosso cronômetro de nível aqui Tudo o que preciso fazer é arrastar até aqui e digitar o cronômetro claro e invalidado Agora, automaticamente, sempre que eu fizer isso, ele realmente será conectado aqui. O que podemos realmente fazer é cortar esse fio aqui. Vou apenas manter pressionada a tecla Alt e clicar com o botão esquerdo. Podemos deixar esse plugue ligado. No entanto, fora da ramificação verdadeira aqui, posso simplesmente conectá-la dessa forma. Agora, se é falso que nossa corrente limite de tempo ainda não é zero, o que vamos fazer é simplesmente decorar essa corrente de limite de tempo A maneira de fazer isso é arrastar até aqui e digitar um decorativo decrescente no que isso vai fazer Vai usar esse valor que atualmente definimos 300 por meio desse limite de tempo, no máximo 300. Em seguida, ele subtrairá esse valor, 299300 Em seguida, ele redefinirá esse valor aqui nessa variável. Então esse ato, esse decréscimo age como uma forma de subtrairmos imediatamente um desse valor especificado e, em seguida, ele o coloca de volta aqui Então, isso é meio útil agora, porque eu também quero que isso seja refletido em nosso Hud porque, novamente, essa variável é apenas local aqui dentro de nossas configurações de nível Não temos isso exposto em nenhum outro lugar. Vou trazer nossa referência de controlador, vamos pegar isso, vamos pegar isso, vamos pegar aquilo. Em seguida, vou sair daqui e digitar tempo de nível definido. Essencialmente, vamos passar isso para nossa variável de tempo de nível dentro do nosso controlador de jogador, porque essa é a variável mapeada para nosso Hud Ok, outra coisa que eu quero fazer. Se nosso limite de tempo atual ainda não for igual a zero, eu realmente quero fazer outra comparação. Além daqui. Vou manter pressionada a tecla B e clicar com o botão esquerdo. Então tecle e clique com o botão esquerdo. E desta vez eu quero comparar se nosso limite de tempo atual é igual a, é igual a quê? Bem, nosso tempo está acabando com a variável de aviso. Agora, atualmente, tenho esse conjunto para ser 50. Mas, mais uma vez, você pode substituir essa variável padrão aqui nas configurações de nível Eu também tenho configurado para 50 lá. Independentemente disso, é 50, mas vamos descobrir se nosso limite de tempo atual está basicamente abaixo da marca 52 Se for, vamos conectá-lo à nossa filial aqui mesmo. Vamos trazer nosso componente musical de nível assim. Em seguida, vamos sair disso e digitar set pause Então, vamos essencialmente pausar essa música. Certifique-se de marcar essa caixa para configurá-la para ser pausada. Então, o que vamos fazer é esgotar nosso tempo, Warning. Música Essa vai ser essa música aqui, Mario, o tempo está acabando. Vamos pegar esse componente, arrastá-lo até aqui e digitar play para trazer a função play. Basicamente, estamos pausando nosso nível de música para que possamos tocar o tempo que está acabando. Warning Agora, vou subir um pouco até aqui porque se nosso limite de tempo acabar, se isso for avaliado como verdadeiro, vamos limpar esse cronômetro de nível Mas ainda há mais algumas coisas que eu quero fazer com isso. Então, vou construir a partir desse cronômetro claro e invalidado pelo node handle E o que eu quero fazer com isso é trazer nosso componente musical de nível e, mais uma vez, arrastá-lo para dentro. Também vamos prolongar nosso aviso de esgotamento do tempo, caso algum deles esteja jogando. E o que eu quero fazer é sair daqui digitando e parar, basicamente queremos parar toda e qualquer música aqui se, de fato, nosso limite de tempo tiver acabado. E além de parar a música, eu também quero que nosso personagem morra se o tempo acabar. Então, para fazer isso, vou clicar com o botão direito do mouse em algum tipo de espaço vazio e obter o personagem do jogador. E vamos escalar nosso personagem em terceira pessoa. Dentro daqui, vou arrastar e digitar player dies mais uma vez. Se eu clicar duas vezes nisso, o que isso vai fazer é mostrar que vamos chamar mostrar que vamos chamar esse evento personalizado dentro de nosso personagem de terceira pessoa de BP para fazer todos os nossos efeitos de morte Esse é o nosso caráter de ser jogado no ar e depois cair pelo mundo. Tudo bem, então esse roteiro foi um pouco complicado. Aí está tudo. Tente encaixá-lo na tela. Saindo do nosso nó de sequência aqui, ok? E então eu vou clicar com o botão esquerdo e arrastar tudo isso. Toque na tecla C, prometo que foi o pior. E digitaremos run the timer e jogaremos adequadamente. Música Dependendo da situação, vamos mudar a cor do cometa É preto imediatamente. Ok, e olhando minhas anotações aqui, eu realmente vejo que estou perdendo um pouco do roteiro aqui embaixo, mas esse vídeo está ficando um pouco longo. Então, deixe-me ir em frente, compilar e dizer isso. Vamos chamar isso de vídeo , pegá-lo e terminar no próximo, veja lá. 89. Script de configurações de nível #3: Bem vindo de volta. Vamos prosseguir e finalizar nosso script de configuração de nível de BP E eu mencionei no final do último vídeo que perdi minhas anotações, eu tinha mais um roteiro que precisava ser retirado do nosso roteiro de então três. Então, vamos continuar e abordar isso. O que íamos fazer é pausar nosso nível atual Música Vamos tocar nosso Time Running Out Warning. Música Mas o que precisamos fazer é ter certeza de que realmente definimos nosso nível de música para ser retomado após essa reprodução. Então, o que vamos fazer é causar um atraso. Mantenha pressionada a tecla D e clique com o botão esquerdo. Vou definir esse atraso para 2,8 segundos. Agora, por que 2,8 segundos? Bem, porque isso é mais ou menos quanto leva para nosso tempo acabar. Advertindo a cantiga para jogar depois de esperarmos 2,8 segundos. O que eu vou fazer então é trazer nosso componente musical mais uma vez. Então, simplesmente precisamos sair daqui mais uma vez, digitar set, só que desta vez vamos deixar isso desmarcado dizendo que sim, não queremos essencialmente fazer uma pausa Em seguida, vamos definir nosso argumento de venda. Multiplicador, arrastando para fora do nosso componente musical de nível. Defina o multiplicador, vamos definir isso para 1,05. Isso fará com que pareça que nossa música está sendo acelerada, tipo, o tempo está acabando e, a propósito , quando voltarmos a tocar o nível Música, quando voltarmos a tocar o nível Música, vamos tocá-la em um tom mais alto Agora, essa também é a razão pela qual isso está configurado aqui, que quando morremos logo no início, é por isso que fizemos esse pequeno roteiro logo no início. Definindo nosso componente musical de nível para aquele multiplicador de tom de um, essencialmente ajustando-o de volta para um independentemente de como estava a música quando eles morreram Tudo bem, último trecho do roteiro que precisamos colocar aqui. Chegando bem abaixo de nossos então quatro pinos de sequência. O que vamos fazer é escrever Clique no espaço. Vamos pegar o personagem do jogador e, como você deve ter adivinhado, vamos sair daqui e vamos escalar nosso personagem em terceira pessoa Vamos conectar isso dessa forma. E a razão pela qual estamos fazendo isso é porque vamos abandonar nosso personagem em terceira pessoa. Vamos chamar nossa sequência de morte. Nosso jogador designado inicia a sequência de morte. Isso trará dois nós, então, mais uma vez, esse jogador inicia a sequência de morte. Se eu fosse acessar meu personagem em terceira pessoa, para o qual tenho uma guia, logo na parte superior, criamos um despachante de eventos chamado Player Starts Death Se eu clicar com o botão direito do mouse e encontrar referências, posso descobrir onde isso está sendo chamado aqui dentro do nosso personagem em terceira pessoa. E aí está no script do nosso player dies. Está sendo chamado ali mesmo quando é chamado, qualquer outro projeto que esteja ouvindo isso E é isso que toda essa configuração aqui dentro de nossas configurações de nível P está fazendo. Basicamente, isso é ouvir a sequência a ser chamada. Quando isso ligar , vamos sair daqui. Essa é a nossa maneira de basicamente assinar a personagem em terceira pessoa. O jogador inicia a sequência de morte, chame assim Quando isso acontece, sabemos que dentro de nossas configurações de nível de BP, como ei , isso aconteceu, vamos sair daqui e sair daqui Bem, o que nós queremos fazer? Bem, vamos trazer nosso componente musical de nível. Vamos pegar isso. Também vamos receber aviso de que nosso tempo está acabando, vamos entender isso. Queremos ter certeza de que isso impeça o arrastamento de qualquer um deles. E digite pare, pare todas as músicas aqui, conecte isso, assim. Então também nosso cronômetro de nível aqui. Vamos arrastar isso para dentro. Vamos entender que queremos imediatamente limpar e invalidar o cronômetro em que o jogador morre. Sempre queremos ter certeza de que limpamos esse cronômetro. Tudo bem, com todo esse script aqui, vamos clicar com o botão esquerdo e arrastar essa torneira, aquela tecla C. Isso será Stop. Qualquer música musical Se o jogador morreu, observe também que esse despachante de eventos é chamado em nosso personagem de terceira pessoa É sempre bom deixar notas para si mesmo. Com uma visão de 10.000 pés, você pode ver o que é. Vamos continuar e compilar isso em save. Vamos dar uma visão de 10.000 pés do que estamos acontecendo aqui. Esse era o nosso roteiro de quatro anos, se você quiser pausar o vídeo ali mesmo, mas de uma visão de 10.000 pés, isso é o que todos nós montamos E é por isso que, mais uma vez, eu gostaria de ter um nó de sequência. Porque podemos ver de relance aqui, quando eu recuo assim, como estamos fazendo diferentes segmentos do script Essencialmente, tudo está acontecendo em sucessão muito rápida, um após o outro Mas eu gostaria de segmentá-lo assim para facilitar a leitura. Ok, vamos testar isso Agora, para ajudar a facilitar o jogo. Nosso tempo está acabando, o que vou fazer é voltar ao nosso nível aqui com meu plano de configurações de nível selecionado No painel de detalhes. Vou definir meu limite de tempo máximo para , digamos, 55 segundos. Então, vamos atingir esse tempo esgotando o aviso rapidamente. E então o que vou fazer é testar isso morrendo, respondendo e vendo como tudo funciona. Dedos cruzados. Aqui vamos nós. O cronômetro está em 55 segundos. Está decorando conforme o esperado. O tempo está acabando. Nossa música está tocando um pouco mais. Rush's Vá em frente e morra. Aqui nos deparamos com meus braços flamejantes. Lá vamos nós. Oh, ei, o tempo parou em 36 segundos. E quando respondemos, voltamos em 55 segundos e o cronômetro recomeça novamente Ei, caras nada ruins. Temos um sistema de definição de nível em vigor. E mais uma vez, o que torna isso tão mágico é que você pode se posicionar em qualquer nível que você criar. E então você pode personalizar as configurações aqui no painel de detalhes. Tudo bem, pessoal, isso vai fazer tudo por esse. Nos vemos na próxima. 90. Configurações de nível e o P Block: Bem-vindo. Neste, vamos lidar com nossas configurações de nível conflitantes com nosso bloco Agora, deixe-me entrar, jogar e mostrar exatamente o que está acontecendo agora. Atualmente, nossas configurações de nível estão determinando coisas como nosso nível. Música No entanto, quando eu paro no quarteirão, você vê que agora temos um conjunto inteiro de Do acontecendo. E nós não queremos isso. Precisamos lidar com a situação de, ei, quando nosso jogador para no quarteirão, estamos jogando apenas o quarteirão. Música Vamos pausar temporariamente o nível Música. E então, quando o tempo do bloqueio terminar, vamos acabar com o bloqueio. Música E apenas suba nosso nível. Música Mais uma vez, como lidamos com esse problema? Bem, como você pode esperar, vamos mergulhar em nosso bloco BPP Aí está, existe o local onde o temos atualmente em nosso projeto. Dentro daqui. A primeira coisa que vamos fazer é criar uma variável totalmente nova na seção meu plano Clique neste botão de adição e eu vou chamar isso de Configurações de nível. E então, para o tipo, vamos clicar onde atualmente diz ouro Clique nesse pequeno menu suspenso. Vamos pesquisar nossas configurações de nível de BP. Lembre-se de que criamos um modelo de classe de ator chamado configuração de nível de BP. Então, vamos definir isso para ser esse tipo de objeto. O nível de Bp define a referência do objeto. Agora, quando eu prosseguir e compilar aqui, você notará que nosso valor padrão aqui é nulo Não há nada aqui dentro, mesmo que seja um tipo. Então é assim que vamos lidar com preenchimento dessa variável específica esta caixa, por exemplo, editável, depois vá em frente, compile e salve novamente Agora, de volta ao nosso editor de níveis com o bloco selecionado, verifique aqui no painel de detalhes, podemos inserir um ator de configurações de nível. Agora, temos apenas um esquema de configurações de nível em nosso nível porque precisamos apenas de um Mas se eu selecionar essa lista suspensa, você pode ver que ela me permitirá escolher o ator de configurações do nível de empréstimo em nosso nível que queremos fazer. Portanto, certifique-se de ter ido em frente e feito isso. Agora, algo que é muito importante mencionar aqui é se você tem outras instâncias de um bloco em seu nível, então deixe-me arrastar outra delas para dentro. Realmente não importa onde eu o coloco , porque vou excluí-lo. Mas para cada bloco P em seu nível, você terá que fazer isso, ok, para que possamos fazer todo o alternador de música O de forma adequada Portanto, certifique-se de que, para cada instância do bloco em seu nível, você defina essa variável de configurações de nível. Deixe-me ir em frente e deletar este. Tudo bem Agora deixe-me voltar para o meu quarteirão aqui. Se reduzirmos o zoom, o que vamos fazer é construir a partir disso, então zero bits de script atualmente. Esses são nossos efeitos de bloqueio. Vamos começar com base no final disso. Esse será um bom local conveniente para isso. Atualmente, estávamos tocando alguma música quando pisamos no quarteirão, que é o nosso quarteirão Música Quando estamos tocando nosso quarteirão. Música Aqui, o que queremos fazer é inserir nossas configurações de nível. Entendemos isso, então podemos sair daqui e obter o componente musical de nível. Então, vamos obter o componente de música de nível, que é esse componente que vive dentro de nossas configurações de nível de BP Vamos pegar isso e depois vamos sair daqui e digitar set paused Certifique-se de conectar isso assim. E quando você marca essa caixa, estamos basicamente dizendo, ei, nível de música que está tocando em nossas configurações de nível. Vamos fazer uma pausa quando pararmos no quarteirão. Agora, obviamente, se estivermos pausando essa música ao parar no quarteirão, precisamos retomá-la Vou destacar esses três nós aqui. Eu só vou fazer o controle C para copiá-los. Em seguida, vou descer em direção ao meu script de cronômetro de bloqueio aqui dentro No final, quando o tempo de bloqueio termina, estamos fazendo com que todos os bloqueios voltem ao normal e paramos nosso bloqueio. Música Vamos construir a partir do final desse controle V para colar os nós que acabamos de copiar dessa forma E, claro, a única coisa que precisamos fazer aqui é desmarcar isso, basicamente, ei, continue no nível Música Tudo bem, então, com isso feito, vamos compilar e salvar, e depois entrar e jogar Ok, ouvimos nosso nível de música. Agora, assim que eu parar neste quarteirão, nossa música nivelada deve fazer uma pausa E isso acontece. E então, quando nosso tempo de bloqueio termina aqui, acho que tenho esse bloco definido para 8 segundos, música termina e nosso nível de música volta a subir E, portanto, agora fizemos nossas configurações de nível de BP funcionassem bem com nosso bloco de BP. Essa também é parte da razão pela qual criamos um plano de classe de ator que poderíamos colocar para nossas configurações de nível em nosso nível , para que ele pudesse se comunicar bem com nosso bloco BPP Aqui, usamos um método aqui chamado comunicação direta de blueprint Em que, dentro do meu bloco BP P, criei uma variável do tipo de configurações de nível e, em seguida, tornei uma instância editável E então, dentro do meu editor de níveis, estou associando minhas configurações de nível de BP diretamente a esse trabalho de bloco específico Bem feito, tudo bem. Isso vai acabar com este C quando for para o próximo. 91. Configurações de nível e o poste de bandeira: Bem-vindos de volta a todos. Agora que temos nossas configurações de nível e nossas plantas de blocos funcionando bem nesta, precisamos garantir que nossas configurações de nível e nossas plantas de bandeira de final de nível funcionem Porque o que acontece atualmente é quando eu termino o nível pulando em nosso equipamento de bandeira, a música continua Nosso cronômetro continua funcionando, é só uma bagunça Então, vamos lidar com isso neste. Para isso, vamos começar em nossa configuração de nível de BP Vamos garantir que você abra isso. Vamos começar criando uma variável dentro daqui. Clique nesse botão de adição e chamaremos isso de nossa variável de perna de fim de nível. Para o tipo. Vamos definir isso como nossa etapa de final de nível, nosso BP, bandeira de fim de nível, a referência do objeto, aquela planta Ok, assim como você me viu fazer no último vídeo em que tornei essa instância variável comestível, vou tornar essa instância comestível também Então, poderíamos fazer isso clicando nessa caixa de seleção no painel Detalhes No entanto, clicando também nesse globo ocular, também tornaremos essa instância editável Deixe-me ir em frente e compilar isso. Portanto, você pode ver atualmente que o valor padrão desse sinalizador de fim de nível está vazio. No entanto, se eu entrar no meu editor de níveis e selecionar minhas configurações de nível, deixe-me ir até ele pesquisando as configurações de nível aqui no meu esboço E se eu clicar duas vezes nisso, isso me levará para onde estou no meu nível com essa configuração de nível de BP selecionada no meu nível Olhe para baixo no painel de detalhes. Agora expusemos essa variável de sinalização de fim de nível. Atualmente, está definido como nenhum. Agora eu poderia selecionar isso e, em seguida, escolher minha bandeira de fim de nível, porque eu só tenho uma aqui. Mas só para mostrar um método diferente de fazer isso, vou voar até minha bandeira de fim de nível. E eu também poderia, com minha configuração de nível de pressão arterial selecionada, clicar neste pequeno ícone de conta-gotas Então eu vou fazer isso. Em seguida, mova o cursor do mouse para a janela de exibição E agora também posso selecionar manualmente minha bandeira de fim de nível. De qualquer forma, você pode preencher essa variável. Agora, basicamente, o que queremos que aconteça aqui é que nossas configurações de nível de BP respondam à nossa bandeira de nível, informando que ela foi concluída Então, para isso, vamos abrir nosso plano de bandeira de nível final Deixe-me ir em frente e selecionar isso. Vou limpar minha pesquisa de nível no esboço. Eu vou abrir esse plano. E agora, se você se lembra, dentro de nossa bandeira de fim de nível, temos esse despachante de eventos de nível completo O que vamos fazer em nossas configurações de nível é ouvir sempre que isso for chamado. Agora, se você esqueceu de onde isso está sendo chamado em nossa bandeira de fim de nível, vou escrever, clique aqui Vamos encontrar uma referência para quando isso for chamado. E se eu clicar duas vezes sobre isso nos resultados da busca, você pode ver que estamos chamando esse nível de completo no início deste script. Então, sim, adicionamos esse Dispatcher de eventos com um propósito e esse é o propósito para que nossas configurações de nível possam ouvir isso e, em seguida, responder adequadamente Tudo bem, para configurar tudo isso dentro de nossas configurações de nível de BP, vamos até dentro de nossas configurações de nível de BP, lá Vamos adicionar outro pino na parte inferior aqui. Deixe-me prosseguir e arrastar essa nota de sequência até a parte inferior aqui. Está bem? E o que vamos fazer é trazer nossa bandeira de fim de nível e manter pressionado o controle com botão esquerdo do mouse para levar o usuário até lá E então eu vou sair desse tipo no nível completo. Aqui está nosso despachante de eventos, vamos concluir o nível de atribuição Isso trará dois nós. Vamos colocar isso nos cinco pinos. Essencialmente, toda essa configuração faz com que estejamos atentos para que esse evento completo seja convocado a partir de nossa bandeira de fim de nível. Quando isso é chamado de configurações de nível de BP, que agora é ouvir, é para isso que serve toda essa configuração Quando isso acontecer, ele iniciará esse evento personalizado. Ok, então o que queremos fazer quando somos informados aqui em nossas configurações de nível de que, ei, interagimos com aquele mastro de bandeira do final do nível estamos considerando o Bem, queremos incluir nosso componente musical de nível, então, vamos também avisar nosso tempo de esgoto, caso esteja tocando tão bem, porque poderia estar. Então vamos arrastar qualquer um desses e dizer pare. Vamos parar com essas duas músicas caso alguma delas esteja tocando A próxima coisa que vamos fazer é trazer nosso cronômetro de nível aqui Nós vamos conseguir isso. E então vamos arrastar isso e digitar Pause Timer Vamos pausá-lo imediatamente. pausa no cronômetro e, em seguida , vá um pouco para a direita aqui Vou inserir um nó de atraso mantendo pressionada a tecla D e clicando com o botão esquerdo. Vamos atrasar por, digamos, 3 segundos. Isso parece quase certo. Em seguida, vou trazer meu componente de nível completo. Esse será o nosso tipo de nível limpo. Música Vamos incluir isso. Vamos dizer isso para ativar o like. Então. Em seguida, vamos decorar, o tempo restante quando nosso nível estiver concluído Agora, para fazer isso, vou trazer outra nota de atraso. Então, vou manter pressionada a tecla D e clicar com o botão esquerdo. E eu vou construir um pequeno loop aqui, um loop circular de código. Vou definir essa duração de tempo para nosso atraso. Algo muito pequeno, como 0,05. Então, o que vou fazer é trazer nossa referência ao controlador do player Vamos fazer isso mantendo pressionado o controle e clicando com o botão esquerdo. Vamos tirar isso disso. Eu quero obter nosso tempo nivelado. Obtenha nosso tempo nivelado. Em seguida, vamos sair disso e digitar o decréscimo. Vamos conectar isso da seguinte forma: vamos atrasar um pouco depois descobrir quanto tempo temos. Vamos diminuí-lo em um e, em seguida, ele voltará para cá É isso que esse decréscimo no nó faz. Ele subtrai um e, em seguida, basicamente o coloca de volta aqui Agora, também vamos comparar esse valor com um nó maior. Traga um galho mantendo pressionada a tecla B e clicando com o botão esquerdo se for zero ou devo dizer se for maior que zero. O que queremos fazer é sair da referência do nosso controlador de player aqui. Vamos ligar para adicionar pontos. Temos essa função de chamada para adicionar pontos, e vou clicar duas vezes nela daqui a pouco. Se nosso tempo de nível for maior que zero, adicionaremos alguns pontos. Quantos pontos você quer adicionar? Bem, vamos adicionar 50 pontos a cada segundo, basicamente permanecendo em nosso cronômetro quando concluirmos o nível Além disso, vamos tocar um pouco de som também. Então, tirando isso, tocaremos dois D para o som, aqui vou fazer a câmera, isso está nos sons de realidade virtual do motor Eu caminho apenas para ter um pequeno som para acompanhar cada incremento de pontos. Então, o que eu vou fazer é dar a volta por cima. Só ampliando um pouco aqui. Clique com o botão esquerdo e arraste. Repita isso até meu atraso. E se eu clicar duas vezes nesse fio algumas vezes, posso colocar alguns nós redondos só para fazer com que pareça um pouco mais limpo, assim, todo esse script aqui, eu vou clicar com o botão esquerdo, arrastar e tocar nessa tecla. Este será meu tempo decramental restante quando o nível for concluído e Vamos preencher esse preto imediatamente também. Se você quiser pausar o vídeo aqui, você pode ver basicamente o que tudo isso está configurado para fazer Em seguida, movendo-se um pouco para a esquerda, você pode ver aquele trecho do script, tudo isso saindo dos cinco pinos aqui, dentro de nossas configurações de nível de BP Tudo bem, com isso, vamos continuar e compilar para garantir que nosso script pareça bom E salve agora no teste de reprodução. Aqui queremos garantir que nossa música de nível pare quando concluirmos o nível. E também queremos garantir que nosso cronômetro de nível faça uma contagem regressiva e ganhemos pontos pelo tempo restante Entrando e jogando aqui, ei, temos nosso nível. Música tocando. Vamos seguir em frente e completar o nível. O nível A música deve parar e devemos começar a ouvir o nível ser concluído. A música entra em ação. E também devemos ver nosso cronômetro parar e , eventualmente, começar a contagem regressiva. Aqui vamos nós. Parada do cronômetro, nível completo Música Estamos em contagem regressiva, estamos ganhando 50 pontos por cada período de tempo ou por cada segundo que nos resta no relógio. E esse é um pequeno bônus, de fato. Agora, fizemos com que nosso sinalizador de fim de nível funcione bem com nossas configurações de nível de BP. Trabalho bem feito, pessoal. Certifique-se de arquivar e salvar tudo. Ocasionalmente, apenas para garantir que você economizou todo o seu trabalho árduo, isso bastará. Para este C, ganhe o próximo. 92. Poste de bandeira e o P Block: Tudo bem, antes de prosseguirmos, vamos resolver mais um problema relacionado ao fato nosso bloqueio e nossa bandeira de nível final não funcionarem bem juntos. Isso não está necessariamente relacionado às configurações de nível, mas está relacionado aos outros projetos com os quais estamos lidando aqui recentemente Vou mostrar o problema e depois vamos corrigi-lo. O problema é que, se eu parar em um quarteirão e estivermos perto do final do nível, você notará que as moedas mudam. No entanto, uma vez que eu interajo com o mastro do final do nível, as moedas continuam Precisamos ter nosso mastro de bandeira no final do nível com nosso bloco para parar esse bloqueio Música E reverta o efeito de bloqueio no momento em que interagimos com o mastro Vamos continuar com isso. Vamos começar dentro do nosso bloco de blocos em vez criar uma nova variável. Este será chamado de nível. Desta vez, vou definir o tipo de variável sinalizador de fim de nível, o tipo de objeto BP, sinalizador de fim de nível, referência de objeto E, assim como fizemos antes, vamos tornar essa instância comestível clicando nessa caixa de seleção aqui ou clicando no ícone do globo ocular aberto Vamos compilar e salvar isso. E agora, se eu voltar ao meu nível e selecionar meu bloco, posso associar nossa bandeira de fim de nível a esse bloco. Ótimo. Agora, mais uma vez, você vai querer fazer isso para qualquer instância do seu bloco que você possa ter em seu nível. OK. Agora, o que podemos fazer aqui é entrar em nosso bloco BP e fazer com que esse plano ouça nosso despachante de eventos de nível completo que configuramos em nossa bandeira de final Agora, mais uma vez, nossa bandeira de fim de nível concluiu o nível de despachante de eventos que está sendo chamado Então, tudo o que precisamos fazer é garantir que nosso bloco esteja ouvindo o que está dentro do bloco, diminuindo o zoom Vou trazer nosso nó de sequência até aqui. Não importa esses fios cruzados. Vamos adicionar mais um alfinete aqui embaixo. Para isso, vamos trazer nossa referência de bandeira de fim de nível aqui embaixo. Vamos manter pressionada a tecla control e clicar com o botão esquerdo. Isso trará nossa bandeira de fim de nível. Vamos arrastar esse tipo nível completo. Para atribuir nosso nível completo, ele trará os dois nós. Vamos conectar isso imediatamente. Então, mais uma vez com essa configuração, estamos tendo nosso bloco BP P aqui. Ouça este despachante de eventos de nível completo acontecendo em nossa bandeira de final de nível Assim que isso acontecer, sairemos desse evento personalizado associado a ele. Agora, a boa notícia é que, na verdade, queremos apenas conectar isso ao código que sai de nossos então quatro pinos. Então, deixe-me observar que tudo isso está saindo dos então seis pinos aqui. Vou mover nosso nó de sequência de volta lugar para não ter muitos fios cruzados Ok, e estamos essencialmente querendo conectar isso e não estragar tudo. Muitas pessoas estragam isso conectando esse fio. Queremos que esse evento de nível completo se conecte diretamente a esse circuito de quatro voltas, nosso cronômetro de blocos Então, observe que temos três coisas neste ponto do curso fluindo para esses quatro, cada loop Esse cronômetro de bloqueio, isso vai fazer com que os blocos voltem ao normal e desliguem esse Música Sempre que o tempo de bloqueio terminar. Então, basicamente, o que estamos fazendo aqui é ouvir aquele despachante de eventos de nível completo dentro da bandeira de final de nível E assim que isso acontece, estamos apenas nos conectando a esse tempo de bloqueio por meio de um script para fazer com que todos os blocos voltem ao normal. Parando a música. Mais uma vez, aqui, esse fio é o que está preso em cada laço Vá em frente e compile isso. Vamos em frente e economizemos. E então, é claro, sendo bons designers, vamos testar isso. Ok, vamos parar neste bloco, vamos ver esses tijolos se transformando nas moedas, e vamos ouvir esse bloco Música Ok, e assim que tocamos esse mastro na extremidade do nível, todos eles voltam Esses blocos se transformaram novamente em blocos daquele bloco. A música termina imediatamente. Trabalho bem feito, pessoal. Isso vai fazer tudo por este. Nos vemos na próxima. 93. Transição de nível: Bem vindo de volta. Neste vídeo, mostraremos como fazer a transição de um nível para outro depois de concluirmos o nível. Para que não fiquemos apenas olhando para a tela. Depois que todos os pontos forem tabulados, poderemos transferir os pontos que acumulamos, o número de vidas que temos atualmente e o número de moedas para o segundo, terceiro, quarto, seja qual for o nível para terceiro, quarto, seja qual for o nível Agora, só para revisar onde estamos atualmente com as coisas, no início do curso, criamos um plano de controle de jogador E dentro do nosso plano de controle de jogador, que você pode encontrar aqui neste caminho, fizemos algumas somas de moedas, algumas somas de pontos, algumas somas ou subtraídas Isso está aqui embaixo, restaurando isso nessas variáveis Agora, o que precisamos fazer é, quando fazemos a transição de um nível para outro, precisamos passar essas informações para outro tipo de plano que criaremos aqui daqui a pouco E então vamos passar essas informações de volta ao nosso controlador de jogador para que realmente tenhamos mantido e transferido nossos valores do nível anterior para o novo nível. Agora, para fazer isso, vamos entrar nas configurações do nosso projeto. Você pode acessá-lo aqui nas do canto superior direito, Configurações do projeto. Dentro daqui, vamos para Mapas e modos. E temos nossos vários projetos de estrutura aqui Mas também temos esse especial, um modelo de instância de jogo aqui embaixo Agora, esse é um tipo especial de blueprint que não obtém seus valores, seus valores variáveis são redefinidos enquanto o jogo continua rodando Assim, você pode ir do nível um, nível dois, do nível três, etc., e qualquer dado variável contido nele pode ser transferido de um nível para outro Vou criar uma nova classe de instância de jogo aqui simplesmente clicando neste botão de adição aqui. E ele vai me perguntar, onde eu quero salvá-lo? Vamos ver nossos planos de plataforma. Vou colocar isso na minha estrutura da pasta blueprint e vou para a instância do jogo BP underscore como nome E eu vou guardar isso. E agora, nas configurações do meu projeto, ele foi inserido. Esse será o modelo da instância do jogo que usaremos aqui Eu o tenho aberto e o que você pode ver aqui é que eu tenho meu painel de plantas no qual posso criar algumas variáveis para armazenar informações do nosso controlador BP player Essencialmente, vamos passar aqui os dados variáveis dentro do nosso controlador de player. Quando terminarmos o nível, passaremos esses dados, moedas, vidas e pontos para nossa instância de jogo. Em seguida, vamos devolvê-lo aqui dentro da nossa instância de jogo BP Vamos criar essas três variáveis. O primeiro será moedas. Vou definir isso como um inteiro Com isso selecionado, farei o controle D para duplicar Vou chamar esse próximo ponto também de controle inteiro D. Novamente, esse será o número de vidas E se eu compilar isso, podemos ver que temos 00,0 como valores padrão Na verdade, vou mudar nossas vidas para três, por padrão, para corresponder ao que temos atualmente por padrão em nosso controlador de jogador. E você vai ver y aqui em pouco tempo. Ok, a próxima coisa que vou fazer é voltar ao nosso nível aqui. E eu quero entrar nas nossas configurações de nível de BP. E eu posso encontrar isso na minha pasta de plantas. Minhas configurações de nível de BP, onde está isso? Aqui está. Configurações de nível de Bp. Vou entrar nesse esquema e criar uma variável totalmente nova Então, vou clicar nesse botão de adição. E eu vou chamar esse nível de dois. E eu vou mudar isso para ser um nome, e você vai ver y aqui daqui a pouco. Também vou tornar essa instância editável. Se você clicar naquele pequeno ícone do globo ocular, ele marca a caixa ali mesmo. Vou compilar isso Atualmente, isso está definido como nenhum, mas preencheremos isso daqui a pouco Tudo bem, vamos dizer isso e voltar ao nosso nível. Agora eu tenho minha configuração de nível em algum lugar aqui do meu nível. Na verdade, eu posso ver, eu o tenho aqui na minha janela de visualização Mas se eu apenas digitasse o nível no meu Outliner, isso me ajudaria a reduzi-lo Aí estão minhas configurações de nível de BP e agora podemos ver que temos esse nível pela frente, com exposições variáveis atualmente definidas como nenhuma Agora, na verdade, queremos entrar em outro nível para ir. Então, para isso, vou para minha pasta de níveis e quero criar um nível dois, outro nível para ir. Então, eu simplesmente vou clicar com o botão direito sobre isso. Vou duplicar isso e deixe-me salvar isso imediatamente. Eventualmente, provavelmente vou querer entrar no nível dois e fazer algumas modificações nele, mas vou colocar isso como LV nos meus painéis de detalhes Meu nível para ir é LV underscore 02. Sim, vou precisar fazer com que pareça um pouco diferente visualmente. Caso contrário, vai parecer que realmente não mudamos os níveis. Ok, a próxima coisa que precisamos fazer aqui é entrar nas nossas configurações de nível de BP E vamos construir um roteiro a partir do final desse roteiro. Então, saia das cinco partes do seu nó de sequência, temos esse script de tipo completo de nível. Temos essa diminuição do tempo em que o nível é concluído Vamos construir a partir desse galho falso aqui. Agora, é aqui que vamos fazer a transferência dados variáveis de um blueprint, nosso controlador de jogador, para nosso blueprint de instância de jogo Então, vou começar clicando com o botão direito do mouse em algum espaço vazio. Vamos tirar o controle do player disso. Vou me arrastar e lançar para o nosso controlador de player BP Esse é o controlador do player que estamos usando neste projeto, configurado nas configurações do nosso projeto. Controlador de player Bp ali mesmo. Agora, eu não quero, eu não quero realmente conectar um pino de execução a isso. Eu sei que esse é o controle do player. Meu projeto está usando o que posso fazer aqui para evitar que eu tenha que passar por aqui. Vou clicar com o botão direito do mouse sobre isso e convertê-lo um molde puro que elimina a entrada e saída do pino de execução. Com isso, posso sair daqui e pegar minhas moedas. Pegue moedas. Vamos extrair esses dados variáveis do nosso controlador de player. Pegando as moedas, ganharemos pontos. Nós vamos ganhar vidas. Vamos passar esses dados para o Blueprint da nossa instância de jogo Como fazemos isso? Clique com o botão direito em algum espaço vazio aqui. Eu vou dizer para obter uma instância do jogo. Vamos nos afastar disso. E criamos uma chamada instância de jogo BP. Aqui também. Eu posso clicar com o botão direito neste nó. Deixe-me ampliar um pouco aqui. o botão direito. Vamos converter isso em um elenco puro. Agora, em vez de obter esses dados, vamos definir esses dados. Arraste as moedas definidas. Deixe-me adiar isso um pouco. Todos esses três. Lá vamos nós. E vamos definir pontos e vamos definir vidas. Então, para o que queremos definir esses valores? Para o que queremos configurá-los? Tudo o que existe atualmente dentro do nosso controlador de player. Então, vamos inserir nossas moedas aqui, nossos pontos aqui e nossas vidas aqui. Estamos passando esses dados de um modelo para outro. Agora temos que conectar um fio de execução por meio desses vários nós de configuração Então, podemos fazer isso com esse galho falso. Então, vamos fazer isso, aqui , aqui e aqui. E ainda não terminamos. Vamos construir a partir daqui. Na verdade, vamos dizer ao nosso jogo para qual nível queremos ir a seguir. Faça isso, vamos adicionar um pouco de atraso aqui. Então, vou manter pressionada a tecla D e clicar com o botão esquerdo, adicionaremos um atraso e codificarei um atraso de, digamos, 2 segundos. Então, logo à direita aqui, há um nó chamado Open level by name. E aqui é onde podemos inserir nome do nível conforme especificado por essa variável. Então, vou arrastar e soltar isso bem em cima. E você pode ver que o valor padrão aqui no painel de detalhes é nenhum. Vou prosseguir e compilar isso imediatamente. Mas lembre-se de que definimos isso para ser editável por instância. Então, aqui nas configurações de nível do nosso editor de níveis, selecionamos isso aqui. Estamos especificando que essa variável deve ser preenchida com o sublinhado LV dois, nesse Ok, mas ainda não terminamos. Na verdade, temos que trabalhar dentro do nosso plano de modo de jogo para finalizar nossa configuração aqui Então, vou para nossa pasta de plantas em terceira pessoa. Estamos usando nosso BP, modo de jogo em terceira pessoa Então, vou seguir em frente e abrir isso. É aqui que temos um script de resposta em andamento. Vou encontrar algum espaço vazio, talvez um pouco abaixo. Deixe-me ampliar e vou criar um novo evento personalizado. Clique com o botão direito do mouse em uma pesquisa de eventos personalizada. E vamos chamar esse evento personalizado de estatísticas do jogo. Ok, agora o que vamos fazer aqui é, neste projeto específico, passaremos nossos dados da instância do jogo de volta para o controle do jogador Essencialmente, sempre que abrirmos um novo nível dois, nosso plano de modo de jogo começará do zero Nosso jogo Begin vai acontecer. E o que vamos fazer no E Begin Play aqui em cima é que, eventualmente , convocaremos esse evento personalizado para começar. E, ao fazer isso, informaremos todas as variáveis dentro de nossa instância de jogo para depois transferi-las de volta para o controle do jogador. Vamos continuar e configurar isso. botão direito do mouse em algum espaço vazio aqui, obter a instância do jogo. Vamos nos arrastar até aqui e lançar para nossa instância de jogo B P. Mais uma vez, vou clicar com o botão direito do mouse sobre isso e convertê-lo em um elenco puro. Na verdade, não, não vou converter isso em um elenco puro. Vou deixar como um molde impuro conectar esses fios de execução apenas para mostrar que você pode fazer isso de qualquer maneira aqui E então eu vou me arrastar e vamos pegar moedas, vamos ganhar vidas, vamos ganhar pontos. Precisamos transferir tudo isso para o nosso controlador de jogador. Clique com o botão direito para obter o controlador do player. Vamos parar com isso, vamos lançar dois controles de jogador BP Vou converter este em um elenco puro clicando com o botão direito do mouse. Converta para fundição pura dessa forma. Então vamos sair disso e colocar moedas, mover isso para cima, estabelecer vidas, você adivinhou Vamos definir pontos assim, certifique-se de que todos esses fios vão de lá para lá e para lá. E não se esqueça de transferir esses dados da instância do jogo de volta para o controle do jogador. Mais uma vez, seu plano de modo de jogo. Se eu clicar em Class Defaults, seu plano de jogo determina qual controlador de jogador você usará nosso controlador de jogador BP Então, estamos passando todos esses dados de volta para o nosso controlador BP player Ok, vou clicar com o botão esquerdo e arrastar tudo isso, tocar na tecla C e meu comentário será: Tendências, estatísticas do jogo da instância de jogo BP volta ao controlador do jogador BP Ótimo, excelente. Vou mudar minha cor de quadrinhos aqui para preto também Agora, precisamos realmente solicitar esse evento personalizado porque ele não será chamado e nenhuma transferência de dados ocorrerá, a menos que chamemos o evento do cliente Tudo bem, então, para fazer isso, só precisamos começar a jogar no momento em que nosso evento está sendo jogado Temos nossos vários scripts de resposta. Eu só vou apoiar isso um pouco. Assim, vou adicionar uma nota de sequência mantendo pressionada tecla S e clicando com o botão esquerdo. Vou telegrafar assim. E eu vou telegrafar assim. E tudo o que vou fazer com isso, então zero pin, é chamar esse evento personalizado de carry over game stats. Então, isso vai fazer essa ligação. Se eu clicar duas vezes sobre isso, ele vai chamar isso aqui. Eu poderia ter, se eu quisesse ter um telegrama muito feio, em vez de ter toda essa configuração, nosso evento personalizado sendo chamado assim, eu poderia simplesmente ter drogado um fio até aqui, e isso funcionaria da mesma forma e isso funcionaria da mesma Mas eu gosto que meu código pareça um pouco mais limpo. Outra coisa que eu quero mencionar aqui antes de testarmos isso, vamos compilar e salvar Mais uma vez, saiba que nosso plano de modo de jogo será acionado sempre que começarmos nosso nível Agora, algo que eu voltei e fiz, ou descobri quando criamos nossa instância de jogo, é definir minhas vidas como três por padrão. E a razão pela qual fiz isso é porque, dentro do nosso modo de jogo, esse evento começa. O jogo será encerrado até mesmo para o nível número um. E então isso vai ser chamado de transferência do status do jogo. Então, quero garantir que nossas vidas sendo três, provenientes de nossa instância de jogo, também sejam passadas para o controle do jogador. Tudo bem, mais uma coisa que eu quero fazer antes de testar isso. Eu preciso pular do nível um aqui e realmente ir para o nível dois para fazer com que pareça um pouco diferente visualmente, para que você possa ver que as coisas estão realmente acontecendo. Então, vou clicar duas vezes no nível dois aqui. Vai dizer, ei, você quer salvar tudo o que você mudou até agora? Vamos salvar Selecionado. E isso é apenas uma economia extra , pois está chegando por algum motivo. Lá vamos nós. E eu vou salvar meu nível dois aqui também. Guarde isso. Ok, vamos para o nível dois. Vou clicar duas vezes nele para abri-lo. Vou desmarcar essas configurações automáticas aqui. Vamos em frente e guarde isso. E aqui estamos no nível dois. Haverá a largada dos meus jogadores, que eu coloquei logo no final. Então, deixe-me excluir alguns ativos aqui. Vamos deletar. Excluir. Excluir. Excluir, excluir. Então, teremos um local muito árido onde apareceremos no nível dois Essa será a nossa diferença visual entre o nível um e o nível dois. Vamos salvar o nível dois e depois vou voltar para o nível um indo para o arquivo, os níveis recentes, o nível um Não vou salvar esses ativos temporários. Aqui vamos nós. Aqui estamos, volta ao nível um. Vamos dar uma chance a isso. Ok, e antes de eu realmente completar o nível, eu deveria marcar alguns pontos. Eu tenho algumas moedas aqui. Ok, aí eu tenho três vidas, quatro moedas. E vamos ver quantos pontos acabamos com. Três vidas, quatro moedas e alguns milhares de pontos aqui, 4.500 pontos Então, vamos ver se esses dados são transferidos para o nível dois. Aqui estamos no nível dois e você pode ver que temos três vidas, quatro moedas e 4.500 pontos Esse sistema está funcionando de fato. Tudo bem, pessoal. Isso vai fazer tudo por este. Nos vemos na próxima. 94. Nuvens: Bem-vindo de volta. Bem, até este ponto do curso, nos concentramos praticamente exclusivamente na jogabilidade principal do nosso nível de Mario aqui, que é importante definir primeiro. Mas em algum momento, quando tiver elementos de jogabilidade suficientes, você pode voltar sua atenção para enfeitar seu nível. Então é nisso que vamos nos concentrar nesta seção. E vamos começar adicionando algumas nuvens aleatórias ao nosso plano de fundo aqui. E eu não estou falando sobre essas lindas nuvens irreais no céu Estou falando sobre essas nuvens mais centradas em Mario. Agora, se eu tocar na tecla G, mostrarei essencialmente o que vamos construir aqui. O que eu tenho é uma caixa, um volume, se você quiser, na qual estamos gerando aleatoriamente essas E todos esses são tamanhos aleatórios e podemos escolher quantos gostaríamos de ter no espaço Será um modelo muito flexível que nos permitirá adicionar nuvens em qualquer região do céu que quisermos Então é isso que está reservado para este. Ok, de volta aqui em nossa versão de trabalho do projeto, vou importar algumas texturas que não estavam no pacote de textura original, embora eu vá voltar e disponibilizá-las no pacote de textura original Aqueles que visualizarem este curso em uma data posterior já devem encontrá-lo aqui. Mas originalmente eu não os tinha aqui, então vou trazê-los para o meu navegador de conteúdo. Além disso, dependendo de onde você está vendo este curso, posso anexar essas texturas específicas que estou prestes a mencionar aqui neste vídeo Resumindo, você precisa ter certeza de importar essas duas texturas Eu tenho uma nuvem um e uma nuvem dois. Eu só vou usar um desses, mas vou te dar dois apenas para que você possa escolher qual deles você deseja adicionar. Arrastando-os para minha pasta de texturas, lá vamos nós. Eu tenho uma espécie de versão NES da nuvem. Vou usar essa versão da nuvem. Em primeiro lugar, preciso transformar qualquer textura que eu queira usar aqui em um material Na verdade, vou transformar os dois em material, então, selecionando os dois, mantendo pressionado o controle, posso escrever, clicar nele e criar materiais a partir dessas texturas Então, vamos seguir em frente e fazer isso. Aqui estão meus dois materiais que acabei de criar. Vou arrastar e soltar esses ativos materiais, que você pode ver lá, materiais porque estão rotulados na parte inferior, na minha pasta de materiais Vou movê-los para cá e depois vou encontrar meu único material de nuvem, meu material de nuvem T. É com ele que eu quero trabalhar no meu projeto. Mas, novamente, se você quiser aquela nuvem NES da velha escola, você também pode usá-la. Só precisamos clicar duas vezes nele para abri-lo e fazer algumas alterações aqui. Para começar, aqui na minha prévia, vou colocar essa nuvem e não em uma esfera Você tem esses pequenos ícones nesta prévia aqui. Então, se você optar por colocá-lo em um avião, você pode ver essencialmente como isso vai parecer. Agora você vê aquela faixa estranha acontecendo ao fundo. Não se preocupe com isso. Vamos corrigir isso daqui a pouco , porque vamos selecionar nosso nó de material principal na seção do modo de mesclagem. Vamos mudar isso de opaco para máscaras. Agora, o que isso nos permitirá fazer é inserir nosso valor aqui, o valor alfa dessa seção, na entrada da máscara de opacidade. E isso vai eliminar esses efeitos estranhos de estrias nas costas Agora, pretendo ter essas nuvens visíveis apenas desse tipo de ângulo Mas se eu voar até a parte de trás, perceba que você não consegue ver. Então, isso vai ser totalmente opcional. Se você quiser criar um material de dois lados aqui com os nós do material mestre selecionados, você pode marcar nesta caixa os dois lados E isso fará com que você possa vê-los dos dois lados. Só para sua informação, tudo bem, com isso, vou salvar isso e depois fechá-lo aqui no meu editor de níveis Vou até a pasta de blueprints e vou criar uma nova classe de ator, blueprint, clicando com o botão direito do mouse na classe blueprint Será uma aula de atores porque essa será uma que colocaremos em nosso nível, e vou simplesmente chamá-la de nuvens de sublinhado da BP Com isso selecionado, vou tocar na barra de espaço para abri-la. E eu vou apenas adicionar dois componentes aqui. O primeiro componente que vou adicionar será um colisor de caixas, rolando para baixo E vou chamar isso de minha área de desova. Isso basicamente definirá a área na qual eu quero gerar algumas nuvens Agora, com isso selecionado, ainda não vou determinar as extensões da caixa Vou determiná-los em nosso roteiro de construção. Mas vou definir a espessura da linha como um pouco mais grossa para que essa área seja mais fácil de ver quando tivermos esse lugar em nosso nível Então, a espessura da linha aqui, eu vou mudar isso para 20, que vai parecer muito volumosa por enquanto Mas quando expandirmos nossa área de desova aqui, será muito mais fácil ver quando ela for enorme Em seguida, selecionarei nosso componente raiz de cena padrão. Esse é esse componente aqui. Aquele pequeno ícone mais uma vez, porque eu quero adicionar outro componente, anexar outro componente a ele. E isso será digitar, por exemplo, malha estática Com isso selecionado, vou chamar isso de Nuvens. E então, no painel Detalhes, vou me encaixar como nossa malha estática. Um avião. Eu vou escolher esse avião. Isso será da pasta de formas básicas do motor. E então, para o material que será o material em que eu estava trabalhando aqui, nuvem 1. Agora, não vemos nada aqui ainda porque vamos gerar instâncias disso por meio de nosso script de construção, que virá daqui a pouco Mas eu preciso fazer isso de frente para a configuração da nossa câmera. E para fazer isso, e eu determino isso por meio de algumas tentativas e erros aqui, nossa rotação aqui no x, precisamos mudar isso para 90 para que esses planos com a imagem da nuvem fiquem voltados para nossa câmera. Outra coisa que vou fazer imediatamente aqui está no painel de detalhes. Vou apenas digitar sombra e desligar isso de projetar sombras Isso economizará um pouco nosso desempenho, além de evitar que sombras estranhas sejam projetadas de nossa nuvem Então isso é opcional, mas eu gostaria de fazer isso. Ok, a seguir vamos adicionar algumas variáveis que serão usadas novamente em nosso script de construção. Tudo isso será feito no script de construção, que é um script que será executado durante o tempo de design, não durante o tempo de execução. Clicando em nossas variáveis. A primeira que vamos adicionar aqui será chamada de instâncias para gerar Essa é a quantidade de instâncias de nuvem que queremos. Isso será um número inteiro. A próxima que eu vou adicionar, clicando neste botão de adição de variável, será chamada de extensão de geração X. Isso será um float Isso determinará, junto com as duas outras variáveis que se seguirão aqui, o tamanho da nossa área de desova Você verá isso aqui em pouco tempo. Com isso selecionado, vou apenas fazer o controle D para duplicá-lo algumas vezes Voltando e renomeando isso. Essa será chamada desova Y e esta será chamada de extensão de desova Z. Tudo bem, a próxima que adicionaremos aqui, apertar o controle D para duplicar isso será chamada escala mínima e, em seguida Essa será chamada de escala máxima e só determinará o tamanho mínimo e máximo. E vamos randomizar entre isso para gerar em nossas instâncias de nuvem aquilo Tudo bem, com isso, vamos continuar e compilar para que possamos definir alguns valores padrão aqui para gerar instâncias Vou definir isso como 25, esse será um valor inicial muito bom. Marque esta caixa, por exemplo, comestível. Isso fará com que possamos editar essa propriedade, essa variável da extensão de geração do editor de níveis x. Vou definir isso como, digamos, 5.000 desde o Também tornarei essa instância editável, gerarei a extensão Y e também a instância Vamos definir isso para, sei lá, 1.000 e depois gerar a extensão z. Até onde queremos que isso alcance o ar Digamos que 2000 também tornando essa instância editável em escala mínima. Também tornarei essa instância editável. E diremos que a escala em será três vezes o tamanho da escala plana. X definirá isso para ser dez vezes o tamanho do nosso plano normal aqui. E também definiremos isso como comestível por instância. Observe que todos esses olhos estão marcados, significa que são comestíveis por instância, o que significa que podemos editá-los no editor de níveis, que faremos daqui a pouco Vamos seguir em frente e repassar nosso roteiro de construção. É aqui que vamos colocar todo o script para determinar em quantas nuvens queremos gerar, o tamanho da nossa área de desova e também o tamanho das nossas nuvens Então, primeiro vamos determinar o tamanho da nossa área de desova. Então, temos essa área de desova, vamos arrastá-la para o nosso gráfico Deixe-me ampliar um pouco aqui. Vamos nos afastar disso e depois digitar int. Vamos definir a extensão da caixa agora apenas para esclarecer essencialmente o que estamos fazendo aqui, adicionamos esse componente de área de desova Este é um gatilho de caixa Basicamente, queremos definir as extensões X, Y e Z que têm como padrão 32 Agora, a maneira de fazer isso é arrastar para trás daqui e digitar vetor make que o dividirá em seus componentes x, y e z. E temos variáveis que determinarão o X, Y e Z. Então, vamos arrastá-las e soltá-las adequadamente nos pinos corretos Agora, nossas áreas de desova, as extensões das caixas aqui não são 302-30-2302, mas são mas são Mas, mais uma vez, poderemos editá-los a partir do editor de níveis, para que possamos alterá-los no editor de níveis. Em seguida, queremos trabalhar para gerar instâncias de nossas nuvens aqui, então vamos arrastar nossas E vamos querer tirar isso e adicionar uma instância. Agora a questão quantas dessas instâncias queremos aparecer E então, onde queremos gerá-los? Para isso, usaremos quatro loops, aqui, clique com o botão direito do mouse e insira quatro loops. Um simples circuito de quatro voltas resolverá o problema. Então, vamos fluir assim e assim. É assim que isso vai funcionar. Vamos definir nosso primeiro índice aqui como um, para que comecemos a contar com o número um. E nosso último índice será determinado pelo número de instâncias a serem geradas Então, vamos colocar isso no último índice. Então, a forma como isso funciona é durante o tempo de design, aqui, sempre que colocamos isso em nosso nível, ele define a extensão da caixa e, em seguida, atingimos esses quatro loops. Então, basicamente, vamos fazer isso, o corpo do loop aqui 25 vezes, começando do número um, depois indo para 234, até nosso último índice, 25 Vamos adicionar, adicionar uma instância, adicionar uma instância começando no número um, passando pelo número 25. Executando isso de novo e de novo, e de novo e de novo. Então, agora precisamos dizer isso onde queremos desovar? Então, para isso, vamos arrastar para trás nossa transformação de instância Vamos digitar make transform para a localização de nossas nuvens aqui. O que vamos fazer é trazer nossa área de desova dessa forma Em seguida, vamos sair disso e obter a extensão da caixa. Em seguida, vou me arrastar para fora e digitar um ponto aleatório na caixa delimitadora Por padrão, ele se conecta ao nosso, que não é realmente o ponto central que queremos aqui Queremos que a extensão da nossa caixa seja conectada ao pino inferior aqui, a metade do tamanho do centro da nossa caixa delimitadora Podemos simplesmente sair da nossa área de desova aqui e digitar a localização relativa desta forma Essencialmente, dizendo aqui, queremos algum ponto dentro de nossa caixa delimitadora de nossa área de desova aqui, algum ponto ali, onde devemos gerar localmente, dentro de nossa caixa delimitadora de nossa área de desova aqui, algum ponto ali, onde devemos gerar localmente, uma instância de nossa nuvem. Agora, para a balança, temos uma escala em. Vou manter pressionado o controle e arrastá-lo em uma escala máxima. Mantendo pressionado o controle, percebendo que queremos algum valor aleatório entre nosso mínimo e nosso máximo. E para isso, vou clicar com o botão direito em float in range é o que procuramos toda vez aparecemos em uma instância de nossa nuvem Também vamos gerá-lo em uma escala aleatória. Aqui, vou simplesmente conectar isso aqui. Ele converterá nosso valor flutuante em um vetor se escolher, digamos, o valor de quatro, porque isso está entre o mínimo e o máximo. Ele definirá que a escala de quatro seja uniforme nos x, y e z que compõem o vetor de escala. Esse será nosso roteiro final aqui. Vamos continuar compilando esse salvamento, depois vamos ao nosso editor de níveis e trazemos um desses para o nosso nível Tudo bem, arrastando nossas nuvens até aqui. Antes de fazer isso, na verdade, eu quero definir isso. Eu tenho minhas duas configurações de D snap ativadas atualmente. Isso é o que aquele azul ali significa. Vou colocar isso na minha camada traseira extrema e, na verdade, talvez eu até queira colocá-lo além dela. Mas vou começar por aí. Então, na minha camada traseira extrema, mais uma vez, ao clicar nela, posso ir para Editar camadas. Eu posso ver que a camada de fundo extrema será definida como menos 1.000 no eixo y. Então, vamos prosseguir e arrastar isso para dentro. E você pode ver que, enquanto eu o movo, sempre que você fizer alguma alteração nesse projeto, ele executará esse script de construção É por isso que continuo vendo esse padrão aleatório diferente. Porque cada vez que eu o movo um pouco, ele executa novamente esse script de construção. OK. E aí eu a coloquei no meu nível, obviamente não é uma boa colocação da lagartixa Você pode ver onde isso está gerando instâncias de nuvem dentro dessa área da caixa delimitadora Então, deixe-me adiar um pouco, porque eu não estava muito feliz com isso. Ok, agora você pode ver como, com isso selecionado no painel de detalhes, posso especificar várias instâncias. Eu posso alterar qualquer uma dessas propriedades diferentes. Então, vou definir o número de instâncias como 100, o que provavelmente vai ser uma loucura. Eu posso alterar a extensão X do spawn, torná-la mais larga, para que eu possa alterar a extensão Y, torná-la um pouco mais alta, então a extensão Z, eu também posso mudá-la e torná-la um pouco mais Desculpe, Y o torna, você sabe, mais largo, no nosso caso, Z o torna mais alto. E então aí está. Você pode simplesmente posicioná-lo adequadamente para ter algumas nuvens no céu. Mexa com isso ao seu gosto. Mas agora temos um gerador de nuvem aleatório. Muito fofo, de fato. Tudo bem, pessoal, isso vai fazer tudo por esse. Aqui está esse roteiro. Mais uma vez, se você quiser pausar o vídeo aqui, vemos no próximo 95. Peças de nível: Bem-vindo. Neste vídeo, aprenderemos como criar esses pedaços maiores de tijolos aqui, pois eles compõem a maior parte do nosso nível e provavelmente muitos níveis Agora, a razão pela qual vou mostrar isso é porque eles precisam ser construídos tal forma que, quando você coloca um desses materiais assim, sujeira, não pareça esticado E só para enfatizar esse ponto, se eu fosse criá-lo da maneira que as pessoas provavelmente pensam que foi criado, deixe-me ampliar um pouco. Vou colocar um cubo de malha estática simples aqui. E eu vou escalá-lo para ter um tamanho gigante, como. Então é assim que muitas pessoas pensam que isso poderia ser criado. Um desses tijolos gigantes. Eu só vou colocar um material sujo sobre isso. Temos nosso material sujo de nossas pastas aqui. Agora você pode ver que parece muito esticado aqui. Enquanto aqui não parece esticado, parece ladrilhado Então é isso que vamos aprender a criar neste. Como fazer uma peça de bloco maior como essa que não tenha um material esticado sobre ela Basicamente, isso resultará na criação de nossas próprias malhas estáticas Então, mostraremos como fazer isso em nossa versão funcional do curso. Então, com meu nível de trabalho em andamento, você pode ver que eu tenho essa plataforma gigante selecionada aqui na minha janela de visualização. No delineador Esta peça de piso é um ator de malha estática. Então, se eu fosse aplicar nossa sujeira nesse material sujo, ele pareceria muito esticado E mais uma vez, não é isso que queremos. Vou deletar isso, tchau. E vamos substituir isso por um pincel de geometria aqui no painel do ator local E se você não vê o painel do ator local , clique aqui. Coloque o painel do ator. Vamos usar pincéis de geometria. Vamos adicionar um pincel de caixa. Vou simplesmente arrastar isso para dentro. Deixe-me fazer isso no meu nível principal aqui, e eu não vou ser muito específico sobre onde isso é colocado por enquanto. Então, no painel de detalhes, em vez de dimensionar isso usando minha ferramenta de dimensionamento dessa forma, vou definir o tamanho do pincel no painel de detalhes Por quanto tempo eu quero fazer isso? Bem, acho que vou definir o valor de x como algo como 20.000, algo muito longo assim, y. Vou definir isso como algo como 2000 O z, vou definir que seja algo como, não sei, 5.000 ou 500. Vamos embora. Algo parecido. Mais uma vez, vou resumir isso um pouco aqui, tentar tornar nossa base de jogo como a tínhamos antes Vou ajustar isso daqui a pouco. Ok, agora o que eu preciso fazer é converter esse pincel de caixa, conhecido como ator de pincel, em uma malha estática. Agora, a forma como isso pode ser feito é nas configurações avançadas de pincel, temos a capacidade de transformar isso em uma malha estática. Mais uma vez, isso foi o avanço das configurações do pincel, crie uma malha estática. Então eu vou fazer isso. Ao fazer isso, ele vai me perguntar qual pasta eu gostaria de dizer isso. Então, deixe-me entrar na minha pasta de jogos de plataforma. Vou clicar com o botão direito do mouse sobre isso, criar uma nova pasta. E vou chamar esse nível de sublinhado de nível de peças. Vou chamar isso de malhas de sublinhado de nível. E vou simplesmente chamar isso de minha peça, sublinhado um. Isso vai ser bom o suficiente para eu criar a malha estática. Agora, isso vai transformar isso em um ator de malha estática. Agora, se eu fosse aplicar meu material nisso, vamos procurar sujeira. Ele o aplicará lá de forma azulejada e bonita Agora, haverá outro problema com isso atualmente, como é para demonstrar isso. Vou diminuir um pouco isso para garantir que meu ator inicial de jogador esteja no lugar certo. OK. Meus jogadores começam como ator, ok? E o problema é que entrar e jogar é que meu personagem vai cair em jogar é que meu personagem todo o mundo E a razão para isso é porque, uma vez que criamos uma malha estática a partir de um pincel de caixa, ela não colide Então, para corrigir isso, vou até onde essa malha estática agora reside no meu navegador de conteúdo E eu posso fazer isso com ele selecionado. Clicando nessa pasta aqui, ela vai me mostrar onde isso existe no meu navegador de conteúdo. Vou clicar duas vezes nele para abri-lo. Mas antes de fazer isso, observe nesta dica de ferramenta, em laranja, que diz colisão Primsero que mostra que não há colisão Vamos aplicar manualmente alguma colisão. Vou clicar duas vezes nele para abri-lo. E apenas dando um zoom aqui embaixo da seção de colisão, podemos adicionar diferentes tipos de Agora, como esse é um formato de caixa simples, tudo que preciso fazer em caso de colisão é adicionar uma simples colisão de caixa Ao fazer isso, vou adicioná-lo. Agora você verá esse contorno verde ao redor dessa malha A colisão agora está sendo aplicada a isso. Isso é o que esse contorno verde é. Agora, outra coisa a ser observada aqui é que eu poderia, com essa malha estática agora adicionada ao meu navegador de conteúdo, adicionar uma segunda versão disso. Deixe-me ir em frente e colocar um aqui. Agora, observe que esta versão não tem meu material aplicado automaticamente a ela. E talvez eu queira reutilizar isso em outros lugares do meu nível Então, o que eu posso fazer aqui é voltar ao meu editor de malha estática, que eu abri. Aqui está um slot em um material padrão no painel de detalhes. E isso pode ser feito clicando aqui , apenas clicando em Dirt. Agora, se eu salvar esse ativo, ele o salvará como o material padrão para essa malha estática. E também tem uma colisão aplicada a ela, mostrando que se eu trouxesse uma segunda versão disso, ela teria esse material aplicado automaticamente a ela E agora, se eu entrar e jogar, meu personagem realmente colidirá com o chão, como de costume Então é assim que você pode criar algumas peças de piso de malha estática personalizadas piso de malha estática Isso fará tudo por este. Nos vemos na próxima. 96. Adereços de nível e ajuste de câmera: Tudo bem Portanto, embora tenhamos algumas malhas gigantes um material bonito, elas ainda parecem muito insossas aqui Então, vamos preencher o nível aqui com alguma folhagem, e vou mostrar um método realmente rápido e fácil de fazer isso E então você pode pegar esse conceito e segui-lo a partir daí. Mas, para começar aqui, vou até o lançador da Epic Games e vou mostrar um bom pacote para adicionar ao seu projeto aqui, que pode ajudar a aprimorar a aparência de forma rápida e fácil Então, aqui no lançador da Epic Games, eu tenho o Unreal Engine selecionado no lado esquerdo do mercado Se você pesquisar o pacote Advanced Village, este é o pacote que vou adicionar ao meu projeto Unreal Engine Agora, ele mostrará as versões atuais do mecanismo com suporte. Observe que, se a versão do seu mecanismo não for suportada aqui, ainda há uma maneira de adicioná-la. Vamos até Adicionar ao Projeto aqui. Se você não vê seu projeto, pode clicar nesta pequena caixa de seleção aqui para mostrar todos os projetos existentes E então você precisa rolar para baixo e encontrar o projeto que deseja adicionar Esse pacote de conteúdo dois para mim, esse será o primeiro da plataforma. Agora, ele vai dizer, ei, os ativos não são compatíveis com esta versão, então basta selecionar a versão mais recente. Isso é o que você deve fazer se estiver mostrando que esse pacote de ativos é incompatível com sua versão mais recente Você ainda pode adicioná-lo Basta selecionar a versão mais recente. Para mim, será 5.3 E então vou clicar em Adicionar ao projeto Agora, ao fazer isso, você verá essa pequena barra de progresso à medida que todo esse conteúdo está sendo adicionado ao seu projeto. Então, vou pausar o vídeo aqui e, quando terminarmos, mostrarei onde esse conteúdo está agora no seu navegador de conteúdo Ok, então a instalação do pacote de conteúdo foi concluída. E aqui no meu navegador de conteúdo, posso ver que tenho essa nova pasta chamada pacote Advance Village. E o que vou fazer aqui é classificar por malhas estáticas Então, se você não tem um filtro de malha estática existente aqui, você pode ativá-lo ou disponibilizá-lo clicando aqui para ver malhas estáticas, porque eu quero encontrar esses adereços Então, eu vou ligar esse filtro. E agora você pode ver todas essas coisas diferentes, esses adereços que você pode colocar em seu nível Agora eu quero colocar um monte de grama no topo da minha superfície aqui Então, a maneira de fazer isso é selecionar nesta barra de pesquisa aqui. Eu vou fazer uma busca por grama, isso vai encontrar alguns canteiros de grama. Eu gosto desse canteiro de grama em vez de um. E então vou mudar o modo do editor aqui do modo de seleção no canto superior esquerdo para o modo folhagem. Shift mais três teclas de atalho para chegar aqui. Ok, no modo folhagem, você pode colocar qualquer malha estática de forma rápida e fácil Não precisa ser apenas grama, árvores, pedras ou qualquer coisa assim. Então, aqui vai dizer que solte a folhagem aqui. Essencialmente, você pode soltar qualquer malha estática nessa área. Vou soltar esse arrasto com o botão esquerdo do mouse. Vamos deixá-lo aqui, tipo. Então, o que eu gosto de fazer é mudar essa visualização de miniatura para visualização em lista Poderíamos jogar alguns outros aqui também. Na verdade, deixe-me pesquisar e ver se há alguma árvore neste pacote. Eu quero algo que pareça relativamente bom. Acho que vamos escolher uma dessas árvores aqui, talvez. Existe um pinheiro? Vamos ver se há um tipo de pinheiro no pinheiro. Agora vamos escolher a árvore normal, ok? Esse cara vai fazer muito bem em arrastar e soltar isso aqui. A maneira como isso funciona é com qualquer coisa que esteja marcada aqui em sua lista de folhagens. Desde que você tenha sua ferramenta de pintura selecionada, você pode clicar com o botão esquerdo do mouse e adicionar instâncias ao seu nível. Agora, obviamente, ao fazer isso, o que acabei de fazer, parece terrível. Isso é muito denso. Eu não gosto disso. Eu poderia fazer o controle Z para desfazer isso, mas o que vou fazer em vez disso é manter pressionada a tecla Shift ao clicar com o botão esquerdo, pressionar a tecla Shift ao clicar com o botão esquerdo, vou trocar para essa ferramenta de Apagar e ela apagará tudo Então, mantendo pressionada a tecla Shift, você pode ver que minha ferramenta Apagar agora está selecionada Então, agora eu clico com o botão esquerdo e vou apagar essa folhagem. Agora, mais uma vez, você viu que era muito denso e, na verdade, eu não quero adicionar árvores e grama ao mesmo tempo, então vou ligar apenas a grama. E agora o que posso fazer é selecionar minha grama. E apenas selecionando minha grama abaixo, posso definir todos os tipos de propriedades sobre como eu quero que essa grama apareça no meu nível, incluindo o quão densa ela é. Deixe-me definir essa densidade bem abaixo, aqui mesmo. Eu vou para algo parecido com um ponto. Na verdade, deixe-me configurá-lo para um. Por enquanto, estava configurado para 100, então agora, se eu clicar com o botão esquerdo, você pode ver o quão esparso isso vai ser Isso é muito denso. Então, vamos tentar novamente aos 100. E tente novamente, clique com o botão esquerdo, para que você possa ver o quão denso é lá. Acho que vou configurar isso para, digamos, 200. Agora também posso definir todos os tipos de outras propriedades por aqui, incluindo uma escala. Esse é outro problema comum com o qual você pode querer mexer. Se eu clicar com o botão esquerdo agora, todas as instâncias da minha grama terão exatamente a mesma altura, o que talvez você queira, talvez não. Eu quero ter um pouco de variedade aqui. Então, vou fazer o controle Z para desfazer isso. E vou definir minha escala menta para 0,5 e minha escala Mac para dois. Então, eu tenho uma pequena variação nos locais gramados e agora você pode ver o que isso faz. Tudo bem, algumas outras coisas que você pode querer ajustar aqui. Rolando para baixo em um ângulo de inclinação aleatório. Este realmente aparece com árvores. Na verdade, deixe-me ligar uma árvore. Agora acabei de selecionar minhas árvores. Com isso selecionado, posso alterar as propriedades das minhas árvores. Deixe-me reduzir minha densidade para algo como um. O que o ângulo de inclinação aleatório fará é aleatório o ângulo em que a árvore cresce. No momento, está crescendo em linha reta. Controle Z. Se eu fizer um ângulo de inclinação aleatório de, digamos, até 20 graus, isso fará com que minhas árvores possam ficar levemente inclinadas Ele vai escolher aleatoriamente, então eu estou apenas clicando para você possa ver que um está bem reto, aquele está inclinado para o lado, etc Só oferece um pouco de variedade. Ok, então vou começar com grama, apenas selecionando minha grama aqui. Minhas propriedades referentes à minha grama que eu posso ajustar. Vou seguir em frente, clicar com o botão esquerdo e arrastar. Agora eu poderia fazer isso para pintar grama em todo o meu nível. No entanto, eu também poderia aumentar o tamanho do meu pincel aqui para me dar um pincel de bolhas maior para pintar em todo o meu nível Então, deixe-me fazer isso rapidamente. Estou apenas pressionando o botão esquerdo. Agora, isso pode ser o que você quer, talvez não, mas eu gostaria de ter um pouco de grama, ou melhor, terra, neste caminho principal para que seja mais fácil identificar meu caminho linear de viagem Então, vou definir o tamanho do meu pincel algo como, digamos, 300. E agora, se eu entrasse, digamos, nessa visualização, mantendo pressionada a tecla Shift no botão esquerdo, eu poderia apagar algumas folhagens ao longo do meu caminho principal de viagem Então você pode imaginar como você poderia estender isso até o final de um caminho como este. Mantendo pressionada a tecla Shift, sem mais nem menos. Ok, agora digamos que eu queria adicionar algumas árvores ao meu nível. Agora eu poderia usar o pincel de bolhas para adicionar algumas árvores. No entanto, vou selecionar minha árvore, então só quero árvores. Você vai desmarcar minha grama. Também vou mudar a escala aqui para 0,2 a 0,8, alguma variedade ali. Vou ter um ângulo de inclinação aleatório de até 20 graus. Agora, mais uma vez, eu poderia fazer um pincel com bolhas e adicionar múltiplos deles No entanto, você também pode usar esse modo único. Ao escolher esse modo único, você está no modo de instância única. Agora você tem esse pequeno pincel de bolhas bem ali Onde quer que você clique, você gerará uma árvore. Essa é uma maneira muito rápida e fácil de preencher seu nível com alguma folhagem ou qualquer outra malha Não precisa ser árvores, não precisa ser grama. Portanto, há uma técnica rápida de como você pode decorar seu nível. Agora você pode encontrar casos como esse em que não quer grama no meu quarteirão. A razão pela qual foi aplicado no topo deste bloco é porque aqui eu tenho meus vários filtros o que é considerado um alcatrão válido. Colocar uma malha estática Pon é uma delas. Se eu quiser apagar isso da minha malha estática aqui, preciso selecionar minha grama Nesse caso, sairei do modo de instância única. E agora, apenas mantendo pressionada a tecla shift, posso clicar com o botão esquerdo e apaguei isso Agora, se eu não quiser que seja permitido nem mesmo passar por cima dessa malha estática, eu simplesmente desmarcaria a malha estática para impedir Agora, esse piso é atualmente considerado uma peça de malha estática, mas é assim que você pode determinar o que é válido pintar sobre atores paisagistas, sobre os quais não falamos neste curso. Malhas estáticas? Sim. Até mesmo outras folhagens. Tudo bem, então há uma rápida explicação como você pode adicionar um monte de folhagens ou adereços ao Eu gostaria de usar a ferramenta de folhagem para adicionar malhas de qualquer tipo de forma rápida e fácil Não precisa ser grama, não precisa ser árvores. Podem ser cercas, casas, caixotes, barris, qualquer coisa. Quero adicionar um rápido adendo a este vídeo. Porque depois de colocarmos essas peças de nível aqui e você jogar seu nível, talvez você tenha algo que agora se pareça com isso. Onde talvez sua câmera esteja bem colocada. Você não quer sair do seu nível mais uma vez, é aqui que você pode voltar para seu personagem em terceira pessoa e ajustar a câmera. Se você se lembra do início do curso, na verdade, temos a capacidade de definir algumas configurações temporárias de câmera aqui mesmo em nosso nível. Eu só quero apontar algumas coisas. No momento, estou jogando na janela de visualização selecionada e , enquanto estou jogando na janela de visualização selecionada, posso entrar abaixo do meu contorno e escolher meu spawn no personagem escolher meu spawn Com isso selecionado na categoria geral, expusemos essas variáveis do início do curso. Para ajustar a câmera em tempo real, vou agir e ativar isso, ela ativará todas essas configurações Agora posso tentar ajustar o deslocamento da minha câmera para tornar isso o que eu quero Talvez algo como 300 no Z seja o que você quer. Talvez 400. Eu só vou continuar mudando isso. Eu gosto de 400. Agora, quando eu sair daqui, vou clicar em Escape. Essa é apenas uma configuração temporária que eu tinha ali. Novamente, tudo isso vem por meio desse script dentro do meu personagem em terceira pessoa. Estávamos ajustando o deslocamento Z da nossa câmera quando isso foi configurado para ser verdade Se eu voltasse e jogasse, ele voltaria às configurações antigas da câmera Como lidamos com o ajuste da câmera? Bem, novamente, eu gosto desse Z 400. Isso está afetando minha câmera. Estrondo. Então, se eu for inspecionar o componente do boom da minha câmera, deixe-me ir até minha janela de exibição e mostrar onde está o componente do boom da minha câmera. É aquela linha vermelha. Tudo bem, se eu configurasse o componente de boom da minha câmera na localização Z para 400, ele o configuraria assim. Salvei isso e agora, se eu voltar ao jogo, ele manterá essa alteração. Então é assim que isso deve funcionar. Só queria adicionar esse adendo aqui a este vídeo. Por favor, tenha um bom campo de visão jogando água. Veja na próxima. 97. Nível do menu principal: Bem-vindo. Ao longo dos próximos vídeos, criaremos esse menu principal do nosso jogo que terá um único botão e, quando clicarmos nele , ele simplesmente inicia o nível aqui. Em nossa versão funcional do projeto, começaremos criando um nível totalmente novo. Na verdade, vamos começar nesse novo nível. E nesse novo nível, vamos gerar um widget, nosso menu principal E então, a partir desse menu principal, clicando no botão vamos lá. Faremos a transição do nível do menu principal para esse nível. Então, vamos seguir em frente e criar esse novo nível. Aparecendo abaixo do arquivo no topo. novo controle de nível é a tecla de atalho para criar um novo nível. Você trará este pequeno seletor de nível novo Vamos criar um nível vazio, então vá em frente, selecione-o e clique em Criar Estamos em nosso novo nível vazio , atualmente sem título Vamos em frente e salve isso. Podemos clicar aqui para salvá-lo. Isso nos perguntará onde gostaríamos de salvar isso. Vamos acessar nossa pasta de níveis de plataforma. E vou simplesmente chamar isso de LV underscore Main Menu. E então vamos salvar isso imediatamente. Então, agora temos nosso nível de menu principal. A única outra coisa que eu gostaria de realizar neste vídeo é aparecer em nossas configurações. Vamos ver nossas configurações de projeto e, aqui, deixe-me colocar isso na parte superior, vou entrar em mapas e modos. Aqui, no mapa de inicialização do nosso editor, vamos mudar isso do nível um para o nível do menu principal Deixe-me digitar o principal lá. O que isso fará é na próxima vez que abrirmos o Unreal, ele abrirá automaticamente nesse nível do menu principal Então, estamos adicionando um pouco de atrito aqui, entrando em nosso jogo começando no nível do menu principal E, novamente, a partir daí, faremos a transição para o nosso LV Ok, isso é tudo que eu quero realizar neste. Você não precisa salvar nada aqui nas configurações do seu projeto. Só vai lembrar isso na próxima vez que você abrir o editor. Isso bastará para este. Veja ganhar a próxima. 98. Layout do menu principal: Tudo bem, agora que temos nosso nível de menu principal neste, nosso objetivo é criar um plano de widget que servirá como interface de usuário para o menu principal do nosso jogo, essencialmente o layout do menu principal Agora, antes de realmente nos aprofundarmos nisso, certifique-se de ter importado todas as fontes do início do curso, que deveriam ser todas importadas, pois vamos usá-las. Além disso, certifique-se de ter importado todas as texturas anexadas a este curso, pois faremos uso de algumas delas Tudo bem, com isso, vamos entrar na nossa pasta U I. Vamos clicar com o botão direito em algum espaço vazio. Escolheremos o widget da interface do usuário, o blueprint. E vamos escolher esse widget de usuário como a classe principal no topo aqui Vamos nos dar um nome. Vou chamar isso de BP underscore Main Menu. E então, com isso selecionado, podemos simplesmente tocar na barra de espaço para abri-la Ok, no lado esquerdo, temos vários widgets que podemos adicionar para compor nosso menu principal Esta é a área de design, aqui mesmo. Aqui embaixo, mostraremos a hierarquia, a relação de vários widgets entre si E então, no painel de detalhes, podemos definir várias propriedades para cada um dos widgets que adicionamos Os widgets com os quais quero começar aqui são um painel de tela Então, vou digitar no painel de tela, vou arrastá-lo para dentro. Isso basicamente funcionará como uma espécie de placa de cortiça, se você quiser, a placa de aderência na qual fixaremos outros widgets Então esse é o primeiro. O segundo será uma imagem. Então, vou colocar isso aqui para que você possa ver aqui embaixo na hierarquia Está anexado ao nosso painel de tela. Vou renomear essa imagem imediatamente para não me confundir com minha próxima imagem Então, selecionando esses dois, este será o fundo de sublinhado da imagem e eu vou definir os detalhes para eles posteriormente Mas o próximo que vou adicionar também será anexado ao meu painel de tela. Vamos simplesmente arrastar outra imagem como essa, renomeando-a pressionando F dois nela Esta será minha imagem, título de sublinhado. A propósito, com qualquer um desses widgets selecionados, você pode renomeá-lo fazendo F dois ou no painel de detalhes na parte superior Você também pode renomeá-lo lá. Em seguida, vou trazer um widget de botão aqui. Meu botão vai para algum lugar nas proximidades. Então, vamos arrastá-lo e soltá-lo ali mesmo. Vou renomear esse botão, sublinhando Play. E então vou arrastar um texto para cima do meu botão. Então, eu poderia arrastá-lo e soltá-lo aqui em cima do meu botão Jogar na hierarquia, ou eu poderia colocá-lo diretamente em cima do botão Na visão do designer, esse recuo mostra que anexar uma relação e eu simplesmente renomearemos simplesmente renomearemos Tudo bem, a seguir, vamos definir os detalhes de cada um deles. Primeiro, selecionarei o plano de fundo da minha imagem atualmente no painel de detalhes. Vou definir a âncora para isso, em tela cheia. Isso vai definir meu ponto de ancoragem totalmente assim Agora, para realmente ter isso em tela cheia, eu tenho que desfazer meus offsets Então, deixe-me clicar nesses botões de voltar, à direita, ali mesmo e ali mesmo. Temos esse deslocamento aqui ainda definido para 100. Vamos continuar e definir isso para zero. Na parte inferior do offset, também será zero Nossa âncora será essa tela cheia. E então nossas compensações serão zero em todos os aspectos, o que realmente o tornará em tela cheia Agora, eu quero realmente colocar uma imagem aqui, então, na seção de pincel de aparência abaixo da imagem, vou pesquisar o menu principal e tenho essa textura que podemos colocar em segundo plano. É muito boa. Em seguida, nosso título de imagem, atualmente esta caixa branca. Vamos definir a âncora para que seja essa no canto superior direito que tentará manter esse título no canto superior direito da nossa janela de jogo Se tentarmos redimensionar nossa janela de jogo para a posição x, vou definir isso para menos 700, a posição Y. Vou definir que seja zero E você pode ver isso se movendo. Ao atualizar esses tamanhos, vou definir que seja 700 e o tamanho que vou definir como 400. Agora, por que eu escolhi esse tamanho ali mesmo? Bem, é porque minha imagem de pincel aqui, vou escolher ser meu texto de Super Mario. Esse aqui. E isso se encaixa muito bem. Mais uma vez, observe que essas posições são relativas ao ponto de ancoragem, porque os pontos de ancoragem no canto superior direito aqui, essa posição x, é relativa a esse ponto de ancoragem Tudo bem, a seguir vamos escolher nosso botão, jogar e definir alguns parâmetros relacionados a isso. Vou experimentar uma âncora que está aqui ao longo da âncora do lado direito Vou experimentar essa caixa aqui, mais ou menos isso, certo? Caixa para a posição x. Vou escolher menos 115. Eu determinei tudo isso com antecedência, a posição y. Vou definir isso como 256. Vou definir isso para 450, o tamanho y. Vou definir isso para 130. Agora parece que vai transbordar da borda da minha tela aqui. Mas veja isso. Vou definir o alinhamento para seja um no X, um no y. Mais uma vez, y. Mais uma se você fizer 0,5 para cada um deles, isso dividirá a diferença em relação ao seu ponto de ancoragem e seus deslocamentos aqui diferença em relação ao seu ponto de ancoragem e seus deslocamentos Definir isso como 1.1 vai configurá-lo para os extremos desse posicionamento Tudo bem, para o estilo que vou usar. Na verdade, voltaremos ao estilo aqui em pouco tempo. Vamos fazer isso. Endopacidade da cor, aparência, extremidade da cor Eu sou. Defina a cor fundo e a cor de fundo para isso, vou definir um valor vermelho de 0,2, um valor zero, um valor B de zero e o valor que é o valor alfa de um. Então, sim, vou usar isso com meu esquema de cores. Para o estilo de aparência. Agora podemos definir o estilo desse botão para vários estados. O estado normal, o estado de flutuação quando você está passando o mouse sobre ele. O estado de pressão quando você clica nele, esse tipo de coisa. Então, vamos começar com nosso estilo normal. Como esse botão ficará normalmente? Bem, eu quero desenhar como uma caixa arredondada. Isso vai ser muito bom. As configurações de contorno que eu quero definir para isso serão 444,4 em geral No entanto, minha largura aqui será definida como sete, depois o tipo de arredondamento, e é aqui que ela realmente vai estilizá-la Vou definir um raio de meia altura, isso vai dar uma aparência arredondada ali mesmo, da qual eu gosto É assim que o botão ficará normalmente. Agora vamos configurá-lo de acordo com a aparência do mouse quando passarmos o mouse sobre ele . Mais uma vez, entre nas configurações de contorno porque se não alterarmos essas configurações de contorno para que correspondam, o que vai acontecer é que elas começarão a ficar assim, mas depois voltarão a ter aparência quadrada quando passarmos o mouse sobre elas, que não queremos, a largura aqui será definida como sete Mais uma vez, o tipo de arredondamento será definido para o raio de meia altura, o contorno No entanto, vou definir uma cor amarelada, então vamos usar amarelo, algo parecido Vou configurá-lo para ser semitransparente. Talvez um valor de 0,5 para o. Vamos clicar em OK. Aí está a escolha do revendedor com o que você deseja definir quando estiver passando o mouse sobre Tudo bem, e então, para nosso estado de imprensa, quando clicarmos nele, entraremos nas configurações de contorno mais uma vez. Vou definir essa largura para sete. O tipo de arredondamento será o raio de meia altura, o contorno, acho que vou deixar com esse tipo de cor esbranquiçada Isso vai ficar bem. E, você sabe, só para diferenciar isso um pouco, acho que vou definir minha largura aqui para quando pressionarmos para dez, apenas tornando-a um pouco mais grossa E então aqui embaixo, temos esse som pressionado e temos esse som flutuante É bom que eles tenham esses campos aqui. Assim, podemos inserir automaticamente alguns efeitos sonoros quando passamos o mouse sobre esse botão, bem como quando pressionamos esse botão Então, vamos passar o mouse primeiro. Vou configurar isso para ser o grab, V, R, grab. E para pressionar Som para quando clicarmos nisso, vou definir isso como minha moeda. Som Tudo bem, em seguida, vamos definir nosso texto. Vamos mudar o estilo do texto aqui. Em primeiro lugar, vamos entrar na seção de preenchimento, expandindo-a um pouco E eu vou definir o preenchimento para isso. Na verdade, você sabe o que, vou voltar um pouco ao preenchimento aqui Vamos definir primeiro o estilo da fonte. Mas, na verdade, mesmo antes de fazermos isso, vamos definir o texto real. E vou mudar isso para, vamos ao ponto de exclamação. Vamos nos livrar de onde diz bloco de texto ali mesmo. Exclua isso. Vamos lá, a família da fonte. Vou definir essa como minha fonte Super Mario. Vou configurá-lo de acordo com a escolha do meu revendedor de Super Mario ou 256 fontes para definir como você deseja configurá-lo. O tamanho aqui, vamos aumentar o tamanho. Eu vou para, vamos tentar 45, algo assim. E o tamanho do contorno. Vamos mudar o tamanho do nosso contorno. Então, estamos delineando um pouco nosso texto aqui. Vou mudar isso para seis. Você pode definir uma cor de contorno com isso aí mesmo. Vou deixar em preto. Agora, isso não parece muito centralizado no meu botão, então é por isso que vou voltar e corrigir, para que possamos fazer isso por meio dessas opções de preenchimento na parte superior Mais uma vez, eu expandi isso. Vou colocar meu preenchimento esquerdo em zero. E veja como esse texto meio que muda à medida que atualizamos esses valores O preenchimento superior define isso para dez, o preenchimento direito, eu vou definir isso para zero Na parte inferior, também vou definir isso como zero, e isso parece decentemente centralizado Tudo bem, com isso, temos um layout de menu principal decente. Vamos compilar isso e salvar os caras. Isso é tudo o que queríamos realizar neste. Nos vemos na próxima. 99. Script de menu principal: Tudo bem, neste vamos adicionar um script para exibir nosso menu principal. E também para tornar nosso menu principal interativo para que possamos lançar nosso primeiro nível. Então, aqui estou eu no meu menu principal do LV. Este nível vazio em branco. Vamos entrar em nosso plano de níveis. E eu simplesmente cliquei lá em cima, Plano de nível aberto. E vamos trabalhar a partir desse evento existente. Comece a jogar. Então, vou me livrar do Event Tick aqui. Se você não vê o início do evento aqui, basta clicar com o botão direito do mouse e encontrar o início do evento. Jogue com isso, vou inserir um nó de sequência, manter pressionada a tecla S e clicar com o botão esquerdo. Vamos fazer três coisas distintas começar a jogar aqui. Então, vou clicar no botão Adicionar alfinete para adicionar outro. A primeira coisa que eu quero fazer é arrastar isso e digitar criar widget, Criar widgets para o nome do Aqui podemos inserir o widget que gostaríamos de criar Esse será o nosso menu principal do BP Agora, não basta simplesmente criar o widget; na verdade, precisamos dizer que ele seja adicionado à nossa janela de visualização Então, para fazer isso, podemos sair daqui e dizer Adicionar à janela de visualização Se eu conseguir soletrar Add to Viewport corretamente, aí está Adicionar ao Viewport. Esse widget cria o widget do menu principal E este está dizendo que esse widget deve ser adicionado à nossa janela de visualização A próxima coisa que vou fazer é clicar com o botão direito do mouse e digitar get player controller. E a partir disso, vou me arrastar para fora e dizer mostrar o cursor do mouse. Vamos definir mostrar o cursor do mouse. Vamos verificar isso para tornar isso verdade, isso fará com que o cursor do mouse apareça para que possamos clicar no botão Vamos. Agora, algo que devo salientar aqui, como eu sabia que essa propriedade existia? Bem, deixe-me ir para o projeto do meu framework, meu controlador BP Player, e dentro daqui meu controlador BP Player, se eu for para os padrões de classe no lado direito, eu posso digitar o mouse na parte superior do mouse e lá está, mostrar o cursor do mouse Essa é uma das propriedades padrão de um controlador de player. Por padrão, não estamos mostrando o cursor do mouse, mas o que estamos essencialmente dizendo em nosso script do menu principal aqui é que, ei, seja qual for o controlador de jogador que estamos usando, queremos ter certeza de mostrar o cursor do mouse para que possamos interagir com nosso menu principal aqui. Ok, a última coisa que eu quero fazer é simplesmente tocar um pouco de música. Então, vou adiar isso e dizer Sound to To D. O som não está localizado em nenhum ponto específico dentro do seu nível Ele não tem uma localização X, Y e Z a partir da qual está jogando. E para isso, você pode inserir qualquer música que quiser. Vou simplesmente colocar Starter Music Esta é uma música que está na pasta Starter Content Novamente, você pode colocar qualquer coisa aqui, mas vou ouvir um pouco de música tocando. Então esse será o nosso roteiro final para quando jogarmos esse nível. Vamos compilar aqui, garantir que nosso script tenha uma boa aparência e salve Agora, se eu fosse jogar, meu menu principal aparecerá na tela. Mas você verá algumas coisas que são problemáticas Uma é que vemos nosso Hud na tela, o que não queremos ver O número dois é que eu realmente não consigo interagir com isso. Você pode ver que o efeito de passar o mouse sobre o botão está entrando em vigor E, de fato, eu posso clicar nele, mas nada realmente acontece. Eu não sou levado para outro nível. Então, vamos corrigir esses dois problemas, começando com a exibição do nosso Hud Agora, o motivo pelo qual nosso Hud está sendo exibido, se eu voltar ao meu editor de nível principal aqui Vamos para nossas configurações E dentro das configurações do nosso projeto, se formos para mapas e modos, você pode ver que nosso modo de jogo padrão para este projeto é nosso modo de jogo em terceira pessoa. Agora, se eu acessar esse ativo específico, ele estará no meu conteúdo iniciado ou na minha pasta de plantas em terceira pessoa E eu abro isso, este é o plano que determina outros planos que nosso projeto está usando, como nosso controlador de jogador e nossa classe de peões padrão Agora, novamente, estou na classe padrão do nosso modo de jogo em terceira pessoa Portanto, nosso modo de jogo determina essas outras plantas que nosso projeto está usando de forma mais proeminente, a classe do jogador e nossa classe de peão padrão Observe que esses são exatamente os mesmos que podemos encontrar aqui nas configurações do nosso projeto no modo de jogo em terceira pessoa, que é determinar nossa classe de peões E nosso controlador de player. Agora, nosso controlador de player, que eu abri aqui, é isso que está adicionando o Hud à janela de visualização Então, agora, quando estamos jogando nosso jogo e carregamos o nível do menu principal, nosso projeto está aplicando esse modo de jogo em terceira pessoa a esse nível. E isso, por sua vez, determina que nosso controlador de jogador está sendo usado , bem como essa classe de peão padrão Como nosso controlador de player está sendo usado, é isso que está exibindo nosso capuz. Nós simplesmente não queremos que isso apareça. Então, o que podemos fazer? Bem, há uma solução muito simples aqui: simplesmente criar um novo modo de jogo para usar apenas esse nível específico. Então, basicamente, eu posso substituir o modo de jogo a partir das configurações do nosso projeto aqui mesmo neste nível específico Nosso menu principal de nível. E eu posso fazer isso por meio das Configurações Mundiais. Agora, se você não vir essa guia Configurações do mundo, se estiver em Configurações, poderá acessar as Configurações do mundo alternativamente. Window World Settings, que também pode ativar esse painel com nossas Configurações mundiais aqui. Podemos substituir nosso modo de jogo está sendo usado apenas para este mundo. Apenas este nível, mundo e nível são usados de forma intercambiável Então, vou criar um novo modo de jogo. E eu posso fazer isso, eu poderia escrever clique em algum espaço vazio aqui no navegador de conteúdo. Mas também posso fazer isso imediatamente nesta guia Configurações do mundo. Então, vou para o modo de jogo. Clique neste botão de adição aqui para criar um novo modelo de modo de jogo E vou simplesmente escolher um lugar onde gostaria de dizer isso. Deixe-me dizer isso na minha pasta Blueprints Frameworks E vou chamar isso de menu principal do meu modo de jogo BP. Em seguida, clicarei em Salvar. Mais uma vez, é o projeto do Gamo que determinará todos os outros vários projetos que estamos usando aqui Agora, nossa classe de controle de jogador foi padronizada para simplesmente controlador de jogador Isso é diferente das configurações do nosso projeto, que usam nosso controlador de player personalizado. Portanto, este não está usando nosso controlador BP player. Como você pode ver, é apenas o controlador padrão do player. Não temos nenhum código aqui dentro. Agora, se eu fosse simplesmente jogar nosso jogo, não veríamos mais o Hud na tela porque criamos um modo de jogo totalmente novo que não utiliza nosso controlador de jogador personalizado Isso está fazendo com que nosso Hud apareça na tela. Estamos substituindo o modo de jogo das configurações do nosso projeto para que os problemas sejam corrigidos Em seguida, vamos fazer com que nossa interface do menu principal seja realmente funcional. Para fazer isso, vamos acessar nossa pasta de interface de usuário da plataforma. Encontre nosso menu principal, clique duas vezes nele para abri-lo , caso ainda não o tenha aberto. E aqui vamos até a guia do gráfico no lado direito. A guia do gráfico é onde você pode escrever um script específico para esse widget específico , o blueprint Agora tem alguns nós de eventos a partir dos quais podemos construir. Mas, na verdade, eu não quero nenhum desses, então vou excluí-los. Agora, observe que, no painel do meu projeto, temos a reprodução de botões Isso está referenciando esse widget de botão em nossa guia de designer, nossa reprodução de botões aqui Observe que, com esse widget selecionado no painel de detalhes, essa caixa de seleção foi automaticamente marcada quanto à variável Isso está permitindo que isso apareça na seção de variáveis no painel meu plano Agora, com isso selecionado, podemos adicionar um evento para esse widget específico E queremos adicionar um para um clique. Então, temos esse botão de adição aqui. Se você clicar aqui, ele adicionará um evento para quando clicarmos nesse botão. Ou seja, nós o selecionamos com o cursor do mouse aqui. Então, o que queremos fazer? Bem, vou adicionar um pouco de atraso porque não quero pular para o nosso nível imediatamente após clicar aqui. Então, vou manter pressionada a tecla D e clicar com o botão esquerdo. Eu simplesmente vou adiar por, digamos, meio segundo. E então vou arrastar esse tipo em nível aberto pelo nome. E qual é o nível que eu quero abrir? Bem, se eu voltar aos meus níveis aqui, esse é o nível que eu quero abrir. Lv, sublinhado um. Se eu clicar com o botão direito do mouse e renomear, vou pressionar o controle C para copiar isso Em seguida, vá para o meu widget do menu principal. Entre aqui, controle V para colar isso. Esse é todo o script de que precisamos para realmente torná-lo funcional. Deixe-me clicar em salvar aqui. Agora, se eu fosse entrar e jogar. Tudo bem, todo o nosso roteiro está escrito lá. Até mesmo um pouco de música de fundo. Se eu clicar no meu botão Vamos, temos um pequeno atraso. E então, entramos em nosso jogo. Tudo bem, agora temos um menu principal funcional. Mais uma vez, configuramos um nível vazio dentro do nosso nível vazio. Entramos na planta do nível e configuramos um script para exibir nosso menu principal e mostrar o cursor do mouse Também estamos tocando um pouco de música de fundo. disso, também o configuramos para anular nosso plano de modo de jogo aqui na configuração mundial, para que nosso capuz de jogo não apareça nosso plano de modo de jogo aqui na configuração mundial , para que nosso capuz de jogo não E por fim, em nosso widget do menu principal, simplesmente adicionamos um pouco de script para nosso botão aqui, porque nosso botão está configurado para ser uma variável Com isso, simplesmente adicionamos um evento para quando clicamos nele. Vamos adiar e , em seguida, vamos abrir o emprego de nível apropriado. Muito bem, pessoal. Vamos em frente e salve tudo o que for necessário, faça isso por este. Nos vemos na próxima. 100. Anims de widgets de menu principal: Bem vindo de volta. Neste vídeo, vamos adicionar um pouco de jazz ao nosso menu principal, mostrando como animar vários widgets Agora, o conceito mostrado nosso menu principal também pode ser aplicado à sua cabana. Vamos direto ao assunto. Então, animar qualquer um dos elementos em seu menu principal aqui, é escalá-lo, girá-lo, fazer com que ele desapareça Qualquer coisa desse tipo, precisamos abrir nossa janela de animações, que pode ser feita aqui dentro do menu principal do WBP. Vá em frente e clique na janela na parte superior. E aqui temos essa janela de animações que não está ativada Vamos ligá-lo. Isso colocará um painel de animação na parte inferior. OK. A forma como isso vai funcionar é criar uma animação nomeada. Vamos mostrar aqui vários elementos da nossa tela para serem animados e, por meio de um script, vamos fazer com que essa animação seja reproduzida Então, vamos criar nossa animação nomeada clicando neste botão verde mais animação. Vou simplesmente chamar essa introdução de pressionar Enter. Agora, com essa animação selecionada, basicamente o que eu quero fazer é que nosso botão play comece na borda da tela aqui. E então animar isso é deslizar para dentro. Então, certifique-se de ter selecionado isso, porque eu quero que isso comece na tela, vou definir uma nova posição relativa x aqui. Então, vou definir isso de menos 115 para 600 e pressionar Enter. Como chego a esse número? Bem, isso foi apenas por meio de muitas tentativas e erros antes de gravar este vídeo. Então 600, vai começar na borda da minha tela aqui. Agora, anote qualquer propriedade sobre esse widget de botão que gostaríamos de alterar com o tempo por meio de nossa animação Aqui você pode ver isso indicado no painel de detalhes com este pequeno diamante com o botão de adição nele Assim, podemos adicionar quadros-chave para essas várias propriedades. E há mais aqui embaixo que você também pode mudar. Você pode adicioná-los à sua linha do tempo simplesmente clicando neles. Então, eu quero mudar a posição x aqui do meu botão ao longo do tempo. Então, vou seguir em frente e clicar aqui. Adicione um quadro-chave para essa propriedade na minha animação. Então aí está. Acabei de clicar nisso E agora podemos ver nosso botão, nosso slot de tela no painel, nossos deslocamentos Agora é aqui que as coisas ficam um pouco complicadas. botões, reprodução de botões, slot do painel de tela, deslocamentos do slot do painel Ok, todos esses são considerados deslocamentos, mas não clicamos em algo chamado posição X, mas aqui embaixo esse é tecnicamente nosso Portanto, há uma pequena discrepância entre a rotulagem deles que pode confundir muitos estudantes Portanto, observe que essa é a propriedade que eu quero alterar aqui. Atualmente, está no valor de 600. Isso será associado ao nosso deslocamento para a esquerda aqui Ok, então na marca de zero segundo em nossa linha do tempo, é aqui que queremos começar a posição dos nossos botões Agora, se eu passar o mouse aqui embaixo, posso ver que, ao passar o mouse aqui, tenho esses dois tipos de tábuas indicando o início e o fim da Eu quero puxar essa da maneira certa para a soma certa, assim. OK. E, como você pode ver, essa linha vermelha também serve para o passeio. Isso vai denotar o final da minha animação. Assim, você pode simplesmente arrastá-la para frente e para trás para tornar sua animação mais longa ou mais curta. A propósito, a roda de rolagem, mantendo pressionado o controle na roda de rolagem reduzirá ou expandirá sua linha do tempo Se você segurar o botão direito do mouse, poderá mover para a esquerda e para a direita. Apenas uma observação básica de navegação: uma vez que recuássemos, pudemos ver nosso único quadro-chave lá na marca de zero segundo em nosso deslocamento à esquerda Novamente, essa é a nossa posição x. Agora eu vou querer que essa animação seja bem rápida. Então, vou puxar o final dessa linha do tempo para a marca de 0,25 segundo Em seguida, vou manter pressionado o controle e rolar roda para expandir isso um pouco mais. Agora, basicamente, eu quero que esse botão se mova nessa direção ao longo de um quarto de segundo. Então, vou mover meu controle deslizante da linha do tempo até a marca de 0,25 segundo E então eu preciso determinar para onde eu quero mover isso. Bem, eu determinei que um valor que eu gostaria de ter para isso é menos 115. Então, eu posso literalmente clicar aqui onde diz à esquerda. Cliquei onde mostrava o número 600. Vou colocar menos 115 e pressionar Enter. Então, isso vai essencialmente denotar o final da minha animação Agora, se eu fosse esfregar isso para frente e para trás, você pode ver como isso vai se mover ao longo de um quarto de Na verdade, se eu colocar meu controle deslizante de linha do tempo no início aqui e clicar em Reproduzir, você poderá ver como isso vai se desenrolar Agora, observe que essa será a única propriedade que pretendo alterar aqui com meu botão ao longo de 0,25 segundos. Mas você também pode ajustar outras propriedades com o botão aqui. A cor e a opacidade, a cor de fundo, todos esses tipos de coisas Para algumas dessas outras propriedades que você poderia expandir, talvez seja necessário clicar em alguns desses triângulos suspensos Então, poderíamos mudar o pivô, o ângulo de cisalhamento, a escala, todo esse tipo Pode ser feito nessa mesma animação de introdução. Tudo bem, então temos uma animação nomeada. E estamos dizendo ao nosso botão para fazer algo nessa animação nomeada. Agora, como podemos realmente fazer com que isso seja acionado? Bem, para isso, precisamos acessar nossa guia gráfica, aqui em cima. Vamos até aqui. Temos esse script para clicar no botão, clicar no botão e iniciar um novo nível. Agora, queremos adicionar um script que reproduzirá essa animação. Já construímos um evento aqui antes. construção do evento é como o início da reprodução do evento com um widget, um blueprint Vou clicar com o botão direito do mouse e trazer isso de volta. E vou simplesmente digitar que há uma construção de evento. É isso que estamos procurando. Fora disso, vou adiar um pouco. Então, vou manter pressionada a tecla D e clicar com o botão esquerdo, trazendo um nó de atraso. Vou atrasar por 2 segundos. Então eu também vou acompanhar essa animação que estou prestes a tocar com um som. Vou fazer um som dois D. O som que eu gostaria de tocar será chamado de drop drop item do navegador de conteúdo que está nas pastas VR do motor. Se você não vê isso, você pode clicar neste ícone de engrenagem aqui. Certifique-se de mostrar o conteúdo do mecanismo. Isso lhe dará acesso a esse cara. Então, o que eu quero fazer é trazer minha animação para que eu possa falar com ela e pedir para ela tocar. Bem, na minha aba de designer, eu tenho essa animação chamada Intro Mas aqui no meu gráfico eu não vejo isso em lugar nenhum. Então, como faço referência a isso? Logo abaixo da seção de variáveis, se eu entrar em animações, há o nome dessa animação que acabei de criar Introdução, isso está falando sobre essa animação de introdução aqui Vamos trazer isso para o nosso gráfico. Arraste e solte, nós vamos conseguir isso. E então, se continuarmos com isso, podemos dizer reproduzir animação. E agora temos muito controle sobre essa animação. A partir dessa função, podemos dizer a que horas da animação queríamos reproduzir. Vamos jogar desde o início. Então, vamos deixar isso em 0 segundos. Número de loops para jogar Você pode fazer com que ele reproduza vários loops. Você pode jogar isso para frente, para trás ou jogar pingue-pongue para frente e para trás E você também pode ajustar a velocidade de reprodução a partir daqui. Portanto, se não estiver satisfeito com esse quarto de segundo, poderá estendê-la com uma velocidade de reprodução mais lenta Ou acelere. Ok, então esse será o nosso roteiro para reproduzir essa animação 2 segundos depois que nosso menu principal for exibido. Então, vamos compilar isso e salvar. Agora, se jogarmos, veja isso, vemos nosso menu principal. Mas 2 segundos depois, bum, nosso botão desliza. Ok, agora eu realmente quero adicionar outra animação aqui. Porque eu quero fazer com que, quando passarmos o mouse sobre o botão, ele realmente aumente um pouco de tamanho Então, vamos adicionar outra animação para isso. Mais uma vez, eu poderia voltar para a aba de designer e criar uma animação totalmente nova. Então, vou clicar nessa animação positiva e vou chamá-la animação do meu botão de reprodução em escala. Sim, primeiro preciso ter certeza de selecionar minha animação. Então, com o que eu quero falar? Mais uma vez, vou escalar nosso botão play, mesmo que ele esteja fora da lateral da tela aqui Não importa, porque a animação de introdução é o que vai fazer com que ela apareça Eu simplesmente quero falar sobre isso agora. O que eu quero mudar sobre isso? Eu quero mudar a escala para isso. Vou rolar para baixo no painel de detalhes. Estou procurando a escala de transformação de renderização. Agora eu posso expandir isso para escalar apenas o aspecto x ou Y desse botão, mas eu quero escalar os dois. Se eu simplesmente estiver na escala de transformação, clique aqui. Isso adicionará um quadro-chave a isso aqui na minha linha do tempo. Vamos expandir essa escala. Agora, se eu fosse até aqui na minha linha do tempo, eu poderia ver essas duas tábuas Vou expandir isso para cerca de um décimo de segundo aqui Isso pode ser muito curto. Deixe-me pressionar o controle e aumentar o zoom. Ok, então, ao longo de um décimo de segundo, eu posso ver esses dois quadros-chave aqui para a escala X e a escala Y. Agora, o que vou fazer é mover meu controle deslizante da linha do tempo para a marca de décimo de Vou adicionar mais quadros-chave para isso. Eu poderia fazer isso para X e Y de forma independente, mas se eu clicar nesse minúsculo botão de adição onde diz escala, isso adicionará mais dois quadros-chave nesse momento marcado para os valores x e y. Vou definir os dois como 1.11 0.1 Agora, ao alterá-los para 1.1, você pode ver como está aumentando o botão Então você pode ver como isso vai aumentar ao longo da reprodução da animação. Ok, mais uma vez, como faço para que isso toque? Bem, vou voltar para minha guia gráfica. Vamos descer até aqui. Eu tenho meu botão selecionado, então veja isso. Eu tenho alguns eventos. Quando passamos o mouse sobre o botão, ou seja, nosso mouse está sobre ele, e quando descobrimos o botão, nosso mouse não está sobre Então, vamos adicionar eventos para ambos. Aí está o primeiro, deixe-me adicionar o mouse. Aqui estão nossos dois eventos. Vou trazer nossa nova animação aqui, o dimensionamento do botão play. Vamos pegar isso. Vou arrastar isso e digitar a animação do jogo. Quando passarmos o mouse sobre o botão, teremos que criar um pouco de espaço aqui embaixo Quando passamos o mouse sobre o botão, queremos reproduzir essa animação para frente Deixe-me selecionar isso e fazer o controle D para duplicar isso Quando descobrirmos o botão, certifique-se de conectá-lo como animação para ser reproduzida aqui também Quando descobrimos o botão, ou seja, não estamos passando o mouse sobre Queremos definir o modo de jogo ao contrário. Isso vai ser bastante simples. Passe o mouse para frente, passe o mouse para trás. Vamos compilar isso, salvar e jogar. Então, 2 segundos depois, nossos botões vão deslizar para dentro. Agora, quando eu passo o mouse, esse botão fica maior. No entanto, ele volta ao seu tamanho normal. Podemos clicar nele, iniciar o jogo e, pronto, temos algumas animações de widgets Trabalho bem feito, pessoal. Isso vai valer a pena para este. Nos vemos na próxima. 101. Interação com o controlador no menu principal: Tudo bem, bem-vindos de volta a todos. Bem, agora temos um menu principal em funcionamento. E podemos clicar nesse botão “vamos lá” assim que ele aparecer para iniciar nosso jogo. Mas, como alguns de vocês sem dúvida notaram, não podemos interagir com esse botão com um controle. Então, se você tem um controle físico do Xbox conectado ao seu computador, você não pode realmente iniciar o jogo pressionando o botão Então, pensei em adicionar mais um vídeo aqui para mostrar como podemos interagir com nosso menu principal com um controlador. Então, primeiro de tudo, certifique-se de ter um controle, como um controle Xbox, conectado ao seu computador, e é assim que podemos fazer isso acontecer Aqui estou dentro do meu menu principal do WBP. Vou fazer a transição da nossa visão de designer para nossa visualização gráfica. O que precisamos fazer no final de nossa construção de evento aqui é onde estamos atrasando por 2 segundos. Em seguida, vamos tocar um som e animar em nosso widget de introdução Vamos adicionar dois nós no final aqui. A primeira que vamos adicionar é uma referência ao nosso botão play. Então, vamos arrastar e soltar isso. Vamos pegar isso, depois vamos sair disso e trazer uma função conhecida como Set Focus. Defina o foco. Certifique-se de conectarmos isso assim. Agora, se eu pressionar o botão play, você notará algo. Agora, quando nosso botão desliza para dentro, vemos uma caixa azul ao redor do botão vamos lá que mostra que nosso controle agora está focado nesse botão. E se eu apertasse o botão, eu tenho um controle Xbox conectado Na verdade, isso me permitirá clicar nesse botão e depois iniciar o jogo. Agora, obviamente, você não quer ver aquele contorno azul quando na verdade, está em uma versão oficial enviada do Então, como podemos nos livrar disso? Bem, para fazer isso, vamos entrar na configuração do nosso projeto. Então, voltando ao meu editor de nível principal aqui, posso acessar as configurações do projeto acessando a opção Configurações aqui, Configurações do projeto ou acessando Editar. Configurações do projeto aqui. Basta fazer uma busca por Render Focus. Atualmente, temos essa regra de foco de renderização, que está definida como sempre. E é isso que faz com que esse contorno azul apareça ao redor desse botão quando ele se anima mostrando que está focado Então, se eu voltasse às configurações do meu projeto e mudasse de sempre para dizer nunca, eu voltaria e jogaria. Agora, no meu botão, deslize para a vista. Não vejo esse contorno azul, embora eu ainda possa pressionar o botão no meu controle Xbox conectado e iniciar o jogo Muito bom com isso, vamos continuar e salvar esse ativo. Vou clicar com o botão direito do mouse sobre isso e salvar. E pessoal, isso vai fazer isso por esse. Nos vemos na próxima. 102. Layout de menu: Bem, agora que criamos um menu principal para o nosso jogo, não seria bom se criássemos um menu de pausa Eu acho que seria. Então, vamos direto ao assunto. Vou começar na minha pasta U I aqui. E mais uma vez, vou clicar com o botão direito do mouse em algum espaço vazio. Widget de interface de usuário, planta. Vamos escolher esse widget logo na parte superior. E vou chamar esse novo widget blueprint asset BP E então vamos clicar duas vezes nele para abri-lo imediatamente. Agora, dentro daqui, haverá apenas alguns widgets que vamos adicionar Mais uma vez, vamos começar com um painel de tela. O painel Canvas funcionará como uma prancha de aderência, uma placa de cortiça com a qual também fixar outros widgets Então, o painel de tela será o primeiro. O segundo que vamos adicionar aqui será conhecido como desfoque de fundo. Então, vamos basicamente desfocar nosso jogo ao sobrepor nosso jogo ao menu Paws Então, eu poderia arrastar isso para cima meu painel de tela dessa forma. Ou eu poderia arrastá-lo até aqui. Deixe-me arrastá-lo para cima do meu painel de tela aqui apenas para mostrar outra maneira de fazer as coisas. Vou selecionar nosso desfoque de fundo imediatamente. E vou definir uma âncora para isso no painel de detalhes Essa será essa âncora em tela cheia. Agora, esses deslocamentos serão todos relativos à nossa tela cheia, porque queremos que seja em tela cheia Não queremos essa compensação de forma alguma. Queremos que os deslocamentos na esquerda, direita, superior e inferior sejam todos zero Portanto, defina os deslocamentos como zero em todos os sentidos. E agora temos um desfoque de fundo toda a tela Agora, para a quantidade de desfoque que é controlada por essa intensidade de desfoque aqui, você pode mexer nisso assim que aparecermos em Descobri que uma intensidade de desfoque de cinco tende a ser quase certa Ok, em seguida, vou adicionar um botão à nossa tela aqui. Então, vindo abaixo do painel da paleta, vamos arrastar um botão até aqui E você pode ver que ele o anexou ao meu desfoque de fundo, o que eu realmente não queria E isso encheu toda a minha tela por causa disso. Então, o que vou fazer é arrastar e soltar isso volta no topo do meu painel de tela aqui. Você vê isso delineado? E agora eu basicamente apertei meu botão de volta, ele não está mais ligado ao meu desfoque de fundo Com isso, vou definir alguns detalhes imediatamente. Para começar, vou nomear isso no painel de detalhes, meu botão Continuar Teremos apenas um botão que diz Continuar em nosso menu de pausa Agora mudamos o nome desse widget, a âncora. Vou definir a âncora para ser essa do meio quadrado. E isso significa que os deslocamentos de posição serão relativos a essa âncora Vou definir a posição x como zero. A posição y deve ser zero. E agora, se eu ampliar isso, você pode ver como está meio que alinhado com o canto superior esquerdo do botão. Confira isso. Se eu definir meu alinhamento x aqui como 0,5, ele basicamente vai para metade desse alinhamento x. E o mesmo com o alinhamento y aqui. Se eu definir isso como 0,5 também, isso terá o alinhamento y, o alinhamento de cima para baixo Então, isso vai ser muito bom. Agora vou definir o tamanho do botão aqui no X para 450 no Y. Vou definir isso para 130 Se eu aumentar o zoom para trás, você terá uma ideia do tamanho desse botão na tela. Tudo bem, em seguida, vamos definir nosso estilo para nosso botão. Isso será muito semelhante ao que definimos para nosso menu principal aqui, estilo normal. Vou definir nossa largura aqui como sete abaixo do estilo. Com o tipo de arredondamento, vou mudar para esse raio de meia altura Isso vai dar a ele esse formato de pílula que eu meio que gosto Esse vai ser meu estilo normal. Então, o botão, o que parece normalmente sem passarmos mouse sobre ele ou sem clicarmos nele. Então, eu vou derrubar isso. Agora vamos definir o estado de foco para esse botão. Para isso, mais uma vez vou definir a largura como sete. O tipo de arredondamento também será a metade da altura, raio e o contorno Vou clicar aqui mesmo. Vamos definir isso para uma cor meio amarelada. E eu vou definir o valor, o valor alfa como 0,5, então vai ser meio transparente, então eu vou continuar com isso, está parecendo muito bom Então esse será o nosso próprio estilo de botão. Então, vamos definir nosso estilo prensado para isso. Vou definir a largura como dez, esse tipo de arredondamento. Vou definir o raio de meia altura mais uma vez. E eu vou deixar essa cor. Então, eu só vou mudar realmente a largura desse contorno E lá embaixo, temos nossa impressora. Som e nosso foco. Som para passar o mouse. Som Vamos em frente e defina isso para pegar, pegar, sublinhar VR, pegar Q. Mais uma vez, isso está no editor do motor VR Som Então, se você não tem acesso a esse caminho, clicar neste ícone de engrenagem mostra o conteúdo do motor deve levá-lo até lá Mas aí está. Minha sugestão V R que eu quero para passar o mouse Som A prensa Sound I want é minha moeda. Moeda Mario. Ah, e eu quase esqueci Eu quero definir uma cor de fundo para isso. Então, rolando até aqui com nosso botão contínuo selecionado, há nossa cor de fundo Eu queria algo meio acastanhado, algo assim Talvez um pouco mais escuro, algo assim seja muito bom Não fique obcecado com isso por enquanto. Clique em Ok, agora queremos definir algum texto em cima desse botão. Podemos fazer isso arrastando aqui nosso widget de texto. Eu poderia arrastá-lo para cima desse botão ou para baixo na hierarquia Se eu arrastar até aqui abaixo da hierarquia, quando vejo que o botão continuar está cercado por esse contorno azul, posso arrastá-lo e soltá-lo bem em cima dele E eu posso selecionar esse widget de texto no painel Detalhes, vou chamá-lo de sublinhado Continuar Se eu rolar para cima no painel Detalhes, o texto imediatamente, posso configurá-lo para ser lido. Continuar. E para a família de fontes, novamente, eu não gosto do Roboto lá Isso é um pouco chato. Então é aqui que essas fontes importadas realmente são úteis. Vou definir isso para o meu estilo de fonte Mario 256, mais ou menos assim. Vou definir o tamanho da fonte para 45, o tamanho do meu contorno, vou definir isso para seis, então eu tenho um pequeno contorno preto ao redor Talvez eu tenha definido aquela cor avermelhada como um pouco escura demais. É um pouco difícil ver esse esboço. E, novamente, se quiser ajustar a cor do contorno, você pode clicar ali mesmo e ajustá-la Então eu quero empurrar esse botão um pouco para baixo , porque ele está um pouco na parte superior Então, posso melhorar isso entrando nesta seção de preenchimento, logo na parte superior do painel de detalhes Vou expandir isso e para isso, vou definir a esquerda como sendo, vou descer até o topo. Vou definir que seja dez. E depois para a direita e para a parte inferior. Tudo bem. E eu acho que isso vai ficar muito bom. Sim, isso é decente o suficiente para mim. Com isso, vamos prosseguir e salvá-lo. Agora temos nosso layout do menu de pausa. No próximo vídeo, criaremos a entrada e o script necessários para que ela seja exibida na tela e a torne interativa. Nos vemos lá. 103. Script de menu de parada: Bem vindo de volta. Neste vídeo, nosso objetivo é fazer com que possamos pausar nosso jogo e interagir com nosso menu de pausa para que possamos Para fazer isso, vamos começar acessando nossa pasta de terceira pessoa. Dentro daqui, vamos para a pasta de entrada, vamos criar uma ação de entrada que será responsável por pausar nosso jogo Vamos entrar na entrada de terceira pessoa. Vamos entrar em nossa pasta de ações aqui dentro. E eu vou manter pressionado o controle e rolar. Volte para trás para diminuir o tamanho dessas imagens em miniatura Essa é uma ótima dica para você. Pode manter pressionado o controle e rolar. Rode para cima e para baixo para reduzir e ampliar essas miniaturas. E vou clicar com o botão direito do mouse em algum espaço vazio. Vamos entrar em Entrada em nosso menu de entrada. Vamos entrar em Ação de Entrada. Agora vamos chamar isso de pausa de sublinhado. E então vamos clicar duas vezes nesse cara para abri-lo. Tudo bem, então dentro desse ativo, estamos definindo algumas coisas sobre como essa ação de entrada será acionada, bem como quando ela pode ser acionada. Então, primeiro de tudo, vamos definir como isso será acionado na área de gatilhos. Vamos adiar um pouco para que você possa ver o que está associado qual será nosso tipo de valor, boole digital, como aconteceu, não é? Aciona aqui mesmo. Vamos clicar nesse botão de adição e, em nosso índice zero, vamos expandir isso para baixo. E queremos acionar algo quando pressionamos um determinado botão. E diz aqui que vai disparar incêndios apenas uma vez quando a entrada exceder o limite de atuação Queremos descobrir quando um determinado botão foi pressionado? Agora, isso é muito importante. Não perca essa etapa. Queremos que isso seja acionado também quando o jogo estiver em pausa. Se você não marcar essa caixa, quando voltarmos a pausar o jogo, ele não funcionará touro digital pressionou o gatilho e depois gatilho quando a pausa foi definida como verdadeira, vá em frente e salve isso Agora, a próxima coisa que precisamos fazer é voltar ao nosso projeto de personagem Esta é uma pequena crítica do nosso personagem BP, em terceira pessoa Rolando para trás e voltando para cima , onde nosso evento começou. Jogue aqui. E agora estamos dividindo o início do nosso evento Jogue para um nó de sequência. Aqui é onde temos nosso contexto de mapeamento. E é isso que determina quais entradas funcionam em nosso jogo e quais não funcionam. E atualmente estamos usando esse ativo padrão do IMC dentro do nosso modelo de personagem Agora eu posso navegar até isso clicando nesta lupa. E mais uma vez está aqui. Dentro de nossas pastas de terceira pessoa. E se eu clicar duas vezes nesse recurso, isso pode parecer familiar do início do curso. É aqui que estamos essencialmente inserindo nossas várias ações de entrada criadas E então estamos associando botões a eles. Por exemplo, quando pressionamos tecla esquerda do teclado ou do botão frontal do gamepad, é isso que inicia nosso evento de tiro de bola de fogo Ok, então precisamos adicionar um novo mapeamento aqui para nossa pausa de IA Podemos fazer isso clicando aqui em Mapeamentos, esse pequeno botão de adição Por alguma razão, ele expande tudo isso mais uma vez, o que é um pouco chato, mas acabou de criar essa entrada aqui Então é aqui que podemos inserir nossa pausa A, aí está. Agora, mais uma vez, ele faz essa coisa de expandir todos eles. Novamente, podemos associar alguns botões a isso para pausar o jogo Quero fazer com que a tecla do nosso teclado, bem como o que seria uma espécie de botão de início em um game pad, pausem o jogo, definam as teclas que podem iniciar esse evento Vou clicar nesse teclado, que vai deixá-lo laranja. Agora eu posso simplesmente tocar em uma tecla no meu teclado. Então eu vou pressionar a tecla e aí está a tecla. E então vou adicionar outro para a entrada do meu controle para pausar o jogo Então, vou clicar nisso mais uma vez. E, claro, ele faz essa coisa irritante de expandir todas essas categorias abertas E agora eu posso inserir uma segunda entrada para pausar o jogo. Então eu vou clicar nisso, agora eu tenho um controle Xbox conectado a isso Vou pressionar o botão que está ao lado do botão X no meu controle Xbox. Então, ele será conhecido como Gamepad Special. Certo. Isso era o que era inicialmente conhecido como botão Iniciar nos painéis de jogos mais tradicionais. Ok, com eles agora associados, podemos salvar isso e fechá-lo. Também podemos encerrar nosso BP, personagem em terceira pessoa E também nosso ativo Input Action Pause. Ok, agora para pausar nosso jogo, eu realmente quero colocar esse script dentro do nosso plano de controle de jogador porque nosso personagem pode morrer Só queremos colocar isso em um plano que persistirá independentemente de nosso jogador estar morto ou não Então, vamos seguir em frente e encontrar nosso modelo de controlador de player E, mais uma vez, se você não tiver certeza qual esquema de controle de jogador está usando, você pode encontrar isso nas Configurações do projeto em Configurações e Configurações do projeto em Mapas e modos Temos nosso modo de jogo padrão aqui. E este é o nosso controlador de jogador BP Player da classe Player Controller Podemos navegar até ele diretamente no navegador de conteúdo. Lá está em nossa pasta de estrutura de diagramas de plataforma. Vamos clicar duas vezes nesse cara para abri-lo. Vou rolar a roda para trás e encontrar algum espaço vazio aqui. E eu vou direto para cá. Então, precisamos encontrar esse evento de ação de entrada ou essa pausa Então, vou clicar com o botão direito do mouse em algum espaço vazio e digitar uma pausa de sublinhado E este é o que eu estou procurando, um evento de ação aprimorado, uma pausa Tem aquele ícone de seta ao lado. E lá vamos nós. Isso se refere ao nosso evento de pausa que acabamos de configurar em nosso contexto de mapeamento de entrada Então, o que queremos que aconteça? Bem, quando começarmos pressionando a tecla, dispararemos com esse pino. Vou executar isso por meio de um nó de ramificação. Você vai ver Y aqui em pouco tempo. Vamos passar isso por um galho. E a condição que vamos verificar aqui é se estamos ou não mostrando o cursor do mouse. Então, vou clicar com o botão direito do mouse em algum espaço vazio e digitar mostrar o cursor do mouse. Vamos entender isso agora exibindo o cursor do mouse. Vou conectar isso ao galho imediatamente. Este é um booleano que existe aqui dentro da nossa classe mãe do controlador de jogador Se eu for para os padrões da classe e, no painel de detalhes, digito o cursor do mouse. Aí está meu botão de exibição do cursor do mouse Boolean Então, vou verificar se estamos mostrando isso ou não. Agora, na primeira vez que pressionarmos, digamos , a tecla, não mostraremos o cursor do mouse. Por padrão, é falso. Então, o que queremos fazer? Então, com base nessa ramificação falsa, vamos criar um widget Bem, qual widget gostaríamos de criar? Nosso menu de pausa. Obviamente, o menu de pausa do WBP Agora, não basta criá-lo. Também precisamos pedir que ele seja adicionado à janela de visualização. Mas antes de fazer isso, vou clicar com o botão direito neste pino aqui. E vou promover nosso menu de pausa para uma variável que acabou de criar esse setter E aqui na nossa seção de variáveis do Blueprint, ele está pedindo que demos um nome à nossa variável Então, vou chamar isso de meu menu de pausa. E então o que vou fazer é pegar a saída disso e dizer Adicionar à janela de visualização Isso é o que realmente adicionará o menu de pausa à janela de exibição E então, no final disso, vou arrastar e digitar mostrar o cursor do mouse. E desta vez eu quero definir mostrar o cursor do mouse. E aqui vou definir isso como verdadeiro. Então, aqui está a ideia. Na primeira vez que pausarmos nosso jogo, digamos, pressionando a tecla do teclado, por padrão, ela será falsa Então, vamos passar por aqui, vamos mostrar nosso menu de pausa E então vamos dizer, sim, agora estamos mostrando o menu de pausa, modo que, se tentarmos pressionar a tecla novamente, dispararemos da ramificação verdadeira Assim, acabaremos criando apenas um desses menus de pausa Não vamos criar acidentalmente uma segunda instância disso Tudo bem, mas ainda não terminamos. Depois de mostrarmos esse conjunto, mostre o cursor do mouse O que eu quero fazer é tocar um som. Então, toque um som, dois D, clicando nesse menu suspenso, vou digitar em pausa Eu tenho esse efeito sonoro de pausa de Mario. E então esse é o verdadeiro problema. Vou arrastar isso e digitar pausa no jogo. Existe uma função para definir a pausa do jogo e é isso que realmente vai pausar o Depois de marcar essa caixa, muito importante, você marca essa caixa. Ok, ótimo. Então, isso realmente interromperá o jogo Como podemos pausá-lo com a mesma entrada? Bem, lembre-se de que isso vai virar isso para verdade na primeira vez que pressionarmos a tecla ou o botão Iniciar em nosso controle Então, na segunda vez que tentarmos pressionar isso, novamente, vamos percorrer a ramificação verdadeira. Então, o que podemos fazer aqui é trazer uma referência ao nosso menu de pausa. Nós vamos conseguir isso. Lembre-se de que criamos esse menu de pausa aqui. E então vamos adiar isso e dizer Remover pais. Remover do pai. Basicamente, isso removerá o menu de pausa da tela É assim que você remove um determinado widget da tela. Você recebe uma referência a ela e pede que ela seja removida dos pais. Depois de removido, o que eu quero fazer digitar mostrar o cursor do mouse mais uma vez e vamos dizer não, não estamos mais mostrando o cursor do mouse. Então, da próxima vez que pressionarmos a tecla novamente, ela avaliará o padrão para que possamos recriá-lo novamente. Vamos também tocar som para D. Play Sound Tot. Vamos tocar o mesmo som de pausa porque não estamos pausando nosso jogo Em seguida, arrastaremos a pausa definida do jogo e, desta vez, garantiremos que ela esteja desmarcada Então, esse será nosso script final de pausa e retomada ali Se você quiser pausar o vídeo aqui para avaliar isso, tente enquadrá-lo da melhor maneira possível Tudo bem, vamos compilar e salvar isso imediatamente. E apenas nos dê um teste rápido. Então, entrando e jogando. Tudo bem, então aqui estou eu. Vou apenas tocar nessa tecla na tecla do meu teclado. Eu vejo o menu de pausa aparecer. Vou tocar na tecla novamente. Pausa. Ótimo. Vou experimentá-lo no meu controle aqui. Então, vou pressionar isso, o que é conhecido como botão Iniciar no controle clássico que o está pausando A propósito, faça uma pausa, você pode até misturar e combinar esse tempo Eu faço uma pausa no meu controle e pressiono a tecla no meu teclado para pausar o jogo Agora está tudo muito bem. No entanto, atualmente esse botão não é interativo. Vamos tornar isso interativo também. Para que também possamos pausar o jogo clicando em Continuum Tudo bem, para fazer isso, vamos sair do nosso controlador BP player Vamos voltar ao nosso menu de pausa da BP. Vamos até a guia do gráfico no lado direito, logo na seção de variáveis do meu plano, há uma referência ao nosso botão continuar Tudo o que precisamos fazer é entrar no painel de detalhes, onde está escrito ao clicar. Vamos adicionar um evento para isso. Então, vou clicar nesse botão de adição e simplesmente arrastar para fora dele, vamos dizer remover dos pais. Isso basicamente nos removerá da tela se estivermos na tela. E então vamos clicar com o botão direito do mouse obter o controlador do player. Vou sair disso e dizer cursor do mouse. Vou definir mostrar o cursor do mouse. Vamos garantir que o cursor do mouse não seja mais visto. Em seguida, tocaremos o Sound two D. Tenho certeza de que você pode adivinhar qual som gostaríamos de tocar nessa pausa Som E então, para finalizar isso, desative a pausa do jogo. Vamos definir isso como se eu dissesse falso, que também equivale a Portanto, certifique-se de que isso seja falso. Vamos compilar isso e salvá-lo. E depois entrar e jogar. Vou tocar nessa tecla no meu teclado. O cursor do meu mouse está levantado. Agora eu posso clicar neste botão Continuar. Continuar. E isso interrompe o jogo e vamos embora. Pausa Não faça uma pausa. Emprego. Muito bem, pessoal. Temos um menu de pausa em funcionamento, pessoal, que fará tudo por este Nos vemos na próxima. 104. BÔNUS - Player Sprint: Tudo bem, bem-vindo de volta. Um vídeo bônus para todos vocês Vou mostrar como você pode adicionar uma mecânica de sprint ao seu E para começar, vou estar na minha pasta de ações de entrada em terceira pessoa. Este diretório está aqui, e vamos criar uma nova ação de entrada. Vamos clicar com o botão direito do mouse em algum espaço vazio. Vamos abordar a ação de entrada e entrada. Esse é o ativo que queremos criar. Um sprint de sublinhado é como vou chamar esse cara. E não há nada aqui que eu precise definir, então vou clicar nisso e salvar agora, preciso adicionar esse evento dentro do meu contexto de mapeamento de entrada. E, mais uma vez, para entender qual contexto de mapeamento de entrada estamos usando, podemos entrar no nosso esquema de caracteres Aqui está meu BP, personagem em terceira pessoa. Esse é o que estou usando para este curso aqui, após seu evento, comece a jogar. E eu tenho uma sequência para anotar lá em cima. Temos nosso contexto de mapeamento. Esta é a lista de eventos de entrada que nosso jogo está usando atualmente. E se eu clicar nesses navegadores e no navegador de conteúdo, posso ver que é esse aqui, meu IMC padrão Então, vou clicar duas vezes nele para abri-lo. E agora eu preciso acrescentar que é um evento de sprint aqui dentro. Para fazer isso, preciso clicar neste botão de adição para Mapeamentos Isso vai criar essa entrada aqui embaixo. E agora tudo que eu preciso fazer é inserir meu sprint, aquela ação de entrada que acabei de criar Agora, tudo o que preciso fazer, e por qualquer motivo que continue causando esse tipo de efeito estranho, preciso associar alguns botões para isso Então, como eu quero fazer meu personagem correr? Bem, vou clicar neste teclado e dizer que a tecla Shift esquerda fará isso. Vou clicar nisso novamente. Ele vai fazer uma coisa estranha, e eu vou clicar nesse teclado E eu vou dizer que a tecla Shift direita também pode fazer isso. E então, para usuários de controladores, vou clicar nesse botão de adição mais uma vez. E também direi que, se eu segurar, direi que é a tecla X no meu controle Xbox que é conhecida como botão frontal esquerdo do Gamepad Isso também desencadeará isso. Ok, com isso adicionado ao meu recurso de contexto de mapeamento de entrada aqui, vamos continuar e salvá-lo. E agora podemos voltar para dentro do nosso personagem em terceira pessoa. E eu vou voltar a ampliar aqui. E acho que vou colocar esse roteiro que estou prestes a escrever. Vai ser bem curto. Vou colocá-lo ao lado da minha entrada de salto aqui. Então, vou dar uma olhada aqui um pouco. Vou clicar em algum espaço vazio e fazer uma busca por um sprint É aquele com a seta ao lado. Aí está meu evento de ação, ampliando um pouco isso O que eu quero fazer é falar com o componente de movimento do meu personagem. Como o componente de movimento do nosso personagem aqui é nossa velocidade máxima de caminhada , atualmente definida como 1.000 isso é o que determina o quão rápido nosso personagem pode ir. Vou arrastar isso para dentro, depois vou sair disso e dizer definir velocidade de caminhada. Também vou querer definir isso para uma nova velocidade quando começarmos a iniciar essa ação Deixe-me fazer o controle mais D para duplicar esse nó, bem como quando concluirmos essa ação Ou seja, no nosso caso, mantendo pressionada uma das teclas shift ou o botão X no controle do Xbox. Qual eu quero que seja a nova velocidade máxima de caminhada quando eu iniciar este evento Bem, acho que vou configurá-lo e isso realmente envolverá a redefinição da minha velocidade de movimento padrão Atualmente, minha velocidade máxima de caminhada padrão está definida 1.000. Vou definir isso para ser algo como 650 quando não estiver correndo E então eu direi que quando eu estiver correndo, vou definir isso como, vamos dizer 1.200. Então, como eu defino isso de volta para 650 por padrão no componente de movimento do meu personagem, direi que quando não estamos correndo, quando terminamos de segurar nosso botão de corrida, esse é o botão X em um controle Xbox ou a esquerda ou direita Vou ajustar isso de volta para aquele valor de 650. Isso deve bastar. Então, vamos compilar aqui para garantir que nosso script esteja bom E salve e depois entre e jogue. Vamos jogar isso. E se eu apenas me mover para frente e para trás, agora vou em uma velocidade mais lenta Agora, se eu segurar a tecla Shift, você pode ver que estou dirigindo E se eu soltar essa tecla shift, eu volto para uma velocidade mais lenta É assim que podemos adicionar uma mecânica de sprint ao nosso jogo. Espero que vocês gostem desse, pessoal. Isso bastará para este. Vejo você ganhar o próximo. 105. BÔNUS - Dilatação no tempo da flor de fogo: Tudo bem, outro vídeo bônus para todos aqui. Quero fazer com que, quando nosso personagem colete a flor de fogo , haja uma pequena desaceleração no tempo, em vez de nosso personagem simplesmente correr por aquela flor de fogo e imediatamente ficar maior simplesmente correr por aquela flor de fogo e imediatamente ficar Eu quero vender esse efeito um pouco melhor. Então, como podemos fazer isso? Bem, para isso, podemos usar algo chamado dilatação global do tempo Essa é uma forma de diminuir o tempo. Isso pode ser feito em nosso personagem de terceira pessoa, blueprint Se você esqueceu onde está, plantas em terceira pessoa, aí está nosso personagem em terceira pessoa Vamos abrir esse cara aqui dentro. Quero ir para a seção do roteiro em que nosso personagem coletou a flor de fogo. Isso ganhou poder floral. Agora, o que vamos fazer é que, assim que esse evento personalizado for acionado, sairemos daqui e definiremos a dilatação temporal global E, novamente, é isso que pode retardar o tempo. Um valor de 0,0 significaria que o tempo está parado. 1,0 significa 100% do nosso tempo normal. Um valor de 0,5 significaria cortar nosso fluxo de tempo pela metade. Vou definir nossa dilatação do tempo aqui para 0,2 e então vamos fazer todas essas coisas aqui Quando terminamos com todo o efeito de crescimento do personagem, isso é importante. Quero definir nossa dilatação do tempo global para voltar ao fluxo normal do tempo Então, o que posso fazer aqui é, a partir desse pino de acabamento, vou arrastar e dizer definir a dilatação temporal global Sim, certifique-se de que está saindo do final de nossa linha do tempo e, em seguida, entrando em nosso botão de direção da linha do tempo Aqui vamos voltar nosso tempo para o horário normal, que será 1.0 . Está tudo bem. Há mais uma coisa que eu quero fazer é que aqui dentro da nossa linha do tempo, eu vou clicar duas vezes nesse nó. Dentro daqui, temos esses botões na parte superior. E essa aqui é ignorar a dilatação do tempo. Então, queremos ignorar a dilatação do tempo enquanto esse efeito está acontecendo Então eu vou ligar isso, e quando estiver ligado e estiver azul aqui, poderemos testar todo esse efeito. Então, deixe-me voltar ao nosso gráfico de eventos mais uma vez, logo no início da obtenção do poder da flor, vamos desacelerar o tempo. Vamos ignorar esse efeito para o crescimento de nossos personagens. E então, quando esse cronograma estiver concluído, voltaremos esse tempo ao seu fluxo normal Vamos compilar isso e salvar, entrar e jogar E aqui vamos nós. Vou manter pressionada a tecla shift para usar meus novos poderes de sprint E deixe-me pisar nesse idiota aqui. Livre-se dele bem rápido. Tudo bem, e agora veja o que acontece quando eu coleciono essa flor de fogo. Um pouco devagar e depois voltar ao nosso fluxo normal de tempo. Tudo bem, pessoal, isso vai acabar com essa. Nos vemos na próxima.