Blueprints de Unreal Engine 5 para iniciantes: criação de videogames e mídia interativa | Jordy Vandeput | Skillshare

Velocidade de reprodução


1.0x


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

Blueprints de Unreal Engine 5 para iniciantes: criação de videogames e mídia interativa

teacher avatar Jordy Vandeput, Filmmaker and Youtuber

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.

      Apresentação

      2:03

    • 2.

      A interface do Blueprint

      10:00

    • 3.

      Eventos no Unreal Engine

      5:24

    • 4.

      Blueprints controláveis — classes de peão e personagem

      7:24

    • 5.

      Explorando o projeto de nível

      4:32

    • 6.

      Mecânica simples de jogo: sistema de plantio de bombas

      12:46

    • 7.

      Hit a detecção com traçado de linha

      11:17

    • 8.

      Eventos de simulação dinâmica

      9:13

    • 9.

      Funções do blueprint — Código reutilizável

      7:28

    • 10.

      Práticas recomendadas da organização blueprint

      4:41

    • 11.

      Projetos finais e conclusão

      3:45

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

441

Estudantes

4

Projetos

Sobre este curso

Aprenda o roteiro visual do Unreal Engine Blueprint do zero e dê vida aos seus níveis estáticos. Este curso para iniciantes ensina como criar mecânica de jogos e sistemas interativos sem escrever código. Através de projetos práticos, você vai entender a lógica por trás dos blueprints — não apenas copiar o que você vê.



Novo no Unreal Engine 5? Confira meu curso para iniciantes!

O que você vai aprender:

  • Navegue pelo editor de blueprint e entenda os componentes
  • Crie seus primeiros objetos interativos que respondem à entrada do jogador
  • Criar mecânicas de jogo, como plantio de bombas, pintura com spray e colisões que mudam de cor
  • Usar eventos, variáveis e funções para controlar o jogo
  • Implemente a detecção de acerto com o traçado de linha para a mecânica de filmagem
  • Organizar blueprints bagunçados em gráficos limpos e profissionais
  • Depurar problemas como um profissional usando técnicas comprovadas

Por que fazer este curso: cada elemento dinâmico no Unreal Engine, seja uma porta que se abre, um inimigo que ataca ou uma luz que pisca, requer blueprints. Sem eles, seus belos níveis permanecem museus estáticos. Este curso transforma você de alguém preso a cenas sem vida em alguém que pode criar qualquer coisa interativa.

Para quem isso serve: perfeito para iniciantes que abriram o Unreal Engine, mas se sentem perdidos ao tentar fazer as coisas realmente funcionarem. Não é necessário ter experiência em programação. Se você entende que "quando isso acontecer, faça isso", você pode dominar os blueprints.

O que você vai construir:

  • Rotação e mudança de cores de objetos
  • Personagens e peões controláveis
  • Sistemas de iluminação interativa
  • Mecânico de grafite com tinta spray
  • Alfinetes de boliche baseados em física
  • Projeto final: jogo de plataforma randomizado OU cena de floresta dinâmica para renderização de filmes

O que você precisa:

  • Unreal Engine 5 (gratuito)
  • Noções básicas de computador
  • Vontade de criar experiências interativas

Recursos incluídos:

  • Todos os arquivos do projeto com blueprints comentados
  • Dois projetos finais completos com soluções

Pare de olhar para cenas estáticas. Comece a criar mundos interativos. Junte-se a milhares de estudantes que desbloqueiam o poder dos blueprints do Unreal Engine.

Conheça seu professor

Teacher Profile Image

Jordy Vandeput

Filmmaker and Youtuber

Top Teacher

Hi, I'm Jordy and I hosts one of the biggest YouTube channels about filmmaking & video editing; Cinecom.

With more than 2.5 million subscribers, we publish weekly tutorial videos. After graduating from film school in 2012, I immediately began teaching online where my real passion lays.

I've never liked the way education works. So I wanted to do something about it. With the classes I produce, I try to separate myself from the general crowd and deliver a class experience rather than some information thrown at a student.

Take a look at my unique classes, I'm sure you'll enjoy :-)

Visualizar o perfil completo

Level: Beginner

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