Agora, galera, a gente já tem um sistema funcionando bem legal aqui dentro de um level só. Só que agora, eu quero expandir um pouco o nosso pensamento para gente se encaixar em outras situações. "Que tipo de situação, Daniel?" Vamos supor que esse sistema todo que a gente tem na mão, a gente quer usar em outros levels. Eu posso simplesmente selecionar todo mundo e dar aquele bom e velho Control C, Control V? Claro que pode. Só que eu quero deixar uma forma mais profissional. Se, de repente, você está trabalhando com outro programador, vocês vão querer, de repente, compartilhar um arquivo ou outro. Então, é por isso que eu vou expandir um pouco mais a linha de raciocínio da classe. Então, aqui, gente, nós temos o nosso Level Blueprint, que é onde tem todas essas regras aqui. E a gente tem basicamente um coletável, vamos dizer assim. Daria até para melhorar o aspecto desse coletável, deixando-o, de repente, visualmente A gente pode até de, repente, vir aqui embaixo, na parte de "Rendering" e desligá-lo. Ou, no caso, ligar o "Actor Hidden in Game", Que é para ele ficar com mais carinha de coletável mesmo. Então, você vai esbarrar nele e ele vai ser deletado. Essa briga que ele faz, ele meio que dá uma teimada, é porque justamente a colisão dele vem antes do próprio trigger box. Então, por isso que justamente em uma linha de raciocínio dessa, a gente dá uma engordada na trigger box, que é para garantir que ele vai colidir primeiro com a box para aí, sim, ele deletar a tal da esfera. Então, sim, isso aqui agora é um sistema de coletável. O que eu quero começar a apresentar para vocês é algo que não fique preso no level. Qual é uma boa prática? Aliás, uma excelente prática para o desenvolvimento de jogos? É no Level Blueprint, você programar coisas que tenham a ver com o level. Então, desafios que vão ter dentro do level. Você tem um sistema de coletável, como, de repente, uma moeda, uma arma, que você quer coletar e tudo mais. Esse sistema, nessa mecânica, ela vai ser repetida em outros levels. Aliás, essa é a graça do jogo. É você ter vários sistemas que vão funcionar em vários universos diferentes. Então, por isso que agora, eu quero mostrar para vocês para valer mesmo, a tal da classe. Vamos aqui no nosso Content Drawer, vamos começar a customizar esses caras aqui. A gente pode vir aqui em "Content", que é a raiz do nosso projeto. Eu vou apertar o botão direito aqui, "New Folder". Vamos antes de tudo ser pessoas organizadas. Eu vou chamar esse cara aqui de "Collectibles". Para quem quiser botar tudo em português, beleza. É coletáveis. O meu convite é sempre já tentar aproveitar para treinar o inglês, por mais que você esteja um pouco enferrujado, porque o mercado é todo em inglês, né? As vagas, as melhores vagas, vão ser lá fora justamente. Então, collectibles. Vamos entrar aqui nesse cara. Botão direito novamente, "Blueprint Class". Olha o cara que eu estou falando. Na verdade, ele juntou dois caras que eu já estou falando aqui, que são o sistema de blueprint, que é a linguagem que a gente está utilizando para fazer a comunicação entre nós e a máquina, e uma classe. Vamos criar aqui. Só que antes, ele vai me dar uma tela, a famosa floating bar, perguntando que tipo de blueprint. Como é uma boa prática da Unreal, da Epic, eles gostam de facilitar a vida do desenvolvedor, então, eles vão dar sempre um kit de ferramentas já meio mastigado, que é para facilitar a vida do desenvolvedor. Então, vocês vão reparar aqui o seguinte: tem vários tipos de classes aqui. Você tem um "Actor", você tem um "Pawn", você tem um "Character", você tem o "Player Controller" e por aí vai. Ou seja, cada um vai ser um tipo de classe para momentos específicos. Então, o Actor, a ideia dele, é você fazer um arquivo, em que você pode jogá-lo para dentro do seu level. Para esse arquivo ser algo que você pode colocar em qualquer level, porque ele é um ator. Um ator, ele não pode interpretar qualquer filme, qualquer peça de teatro? Essa é a ideia, essa é a logística. Então, ele é uma classe de um ator que tem as regras dentro do universo dele, só que ele pode funcionar em qualquer level. Só que muitas vezes, vamos supor aqui que esse ator, ele não é mais um objeto. Ele passa a ser, de repente, algo que você pode controlar. É por isso que ele, aliás, eu gosto dos ícones que eles escolhem. Você pode ver que o ícone do Pawn é uma peça de xadrez. O que acontece? Quando você está com um tabuleiro de xadrez ali na sua frente, o que acontece? Você é a mente ali que está raciocinando, está pensando nas suas estratégias. Só que para você colocar a sua estratégia em ação, você vai precisar possuir, dar o Pawn, justamente, controlar algumas peças para ir de pouco em pouco, você vai executando toda a sua estratégia. Então, às vezes existe uma regra, assim como no jogo de xadrez, em qualquer jogo de tabuleiro, basicamente, as movimentações seguem regras. Então, esse Pawn, é justamente o momento, em que você está colocando regras, eventos, condições, sistemas, mecânicas para o ato de controlar algo. Então, imagina um jogo que ele está 3D e do nada você esbarra em uma coisa e ele vira 2D. Já aconteceu isso em jogo com você, tenho certeza. Mario Party, antigão, lá do 64, Game Cube, Nintendo WII, e as mecânicas trocavam toda hora. Ou seja, o sistema de Pawn, ele vai mudando, o character muda. Então, às vezes você tem personagens que vão ter regras diferentes. Então, tem um personagem, que, na verdade, vai ser inimigo, ele não vai ser o jogador principal. Então, por isso que ele dá uma classe diferente. Você tem um controle, a maneira de você utilizar a usabilidade às vezes muda, Então, é por isso que nós temos aqui vários camaradas bem diferentes e vão apresentar ferramentas diferentes para nós. Por último, eu só queria falar para vocês do Game Mode. O Game Mode é um tipo de classe em que a gente vai colocar as regras do jogo. Ele é um código que a Unreal toda hora o lê. Ela sempre o consulta: "Game Mode está certo isso aqui?" Então, beleza. Ela é como se fosse uma consulta geral. É o grande diretor é o Game Mode. Vamos começar com um Actor. Uma boa prática que a gente faz, a nomenclatura que a gente costuma seguir em jogos é: "BP", de Blueprint, em letra maiúscula, underline. Qual é a ocasião? Então, "Collectable". Esse aqui, gente, é o que a gente chama de parent class. É uma classe pai. Eu vou fazer aqui um coletável pai. "Como assim Pai, Daniel?" A ideia aqui do desenvolvedor, uma brincadeira que a gente costuma fazer entre desenvolvedores é que o desenvolvedor parece que é uma raça meio preguiçosa. Por quê? Às vezes ele gosta de programa um camarada só para depois ele só replicar. É uma brincadeira, mas é uma brincadeira muito efetiva, ou seja, você vai sofrer uma vez só com a linha de raciocínio. Depois, você vai replicá-la. Então, esse aqui vai ser o nosso father, o nosso pai. A gente pode abri-lo. E ele vai ter uma cara, ele vai ter justamente "Viewport", "Construction Script" e "Event Graph". Olha só que legal. E pode ser que esses caras aqui, eles tenham sumido. Pode ser que aconteça isso aqui, olha: já aconteceu no meu Unreal. Então, "Palma, palma, não priemos cânico", como diria o nosso Chapolin Colorado. A gente vê no lado esquerdo aqui em "My Blueprint" e você tem "Functions", "Constructions Script". Você pode ligá-lo aqui. Ou se, de repente, quem sumiu foi o Event Graphic. Você pode clicar duas vezes aqui. Pode mudar de ordem. Enfim, fiquem à vontade. E assim como nas outras partes aqui da Unreal, a gente tinha lá, por exemplo, um outliner, que é uma lista das coisas. A gente tem aqui também os nossos componentes. Dá para a gente começar a compor tudo o que precisa visualmente para, de repente, fazer uma moeda. Eu vou usar um exemplo de uma moeda. Então, a gente vai precisar, de pelo menos duas coisas: uma arte da moeda e a caixa de colisão, que é o que a gente já tinha começado a fazer. De repente, dá pra colocar até uma partícula de efeito especial para fazer um brilho. Dá para colocar justamente empilhando aqui. Cada componente visual pode ser justamente uma peça. Então, vamos dar um "Add" aqui. Eu posso começar com "Cylinder". Cylinder em inglês começa com y, então, c, y, l, para você começar a procurar cylinder, e dá para a gente só dar uma leve customizada nele aqui. Vamos apertar "E" para poder rotacionar. Rotaciona aqui 90°. Vamos com a escala. Dá uma amassada nele. E aí, é o seguinte: Caso vocês tenham criado esse projeto com o Starter Content, a gente vai poder colocar uma camarada aqui chamada Gold Material. Você vem aqui em "Material", do lado "M_Metal_Gold". "Daniel, acho que eu estava meio distraído. Eu acho que eu esqueci de ticar a caixa do Starter Content. E aí, lascou a vida? Eu preciso deletar esse projeto e criar outro?" Não precisa. Aqui em Content Drawer, esse aqui é um aviso para quem esqueceu de ligar o Contente Drawer. Você pode vir aqui em "Add", "Add Feature or Content Pack". E aí, você vem aqui em "Content", "Start Content", você o traz para dentro do seu projeto. Esse aqui é só para vocês verem que a Unreal dá umas opções na hora de criar o projeto, mas nenhuma é assim, tipo para você se arrepender amargamente. Então, fiquem tranquilos. E aí, galera, o que precisa fazer? Para fechar esse núcleo aqui, a gente vai precisar trazer todo esse camarada, só que agora para cá. O que está faltando aqui? Está faltando a caixa de colisão. Então, vamos dar um "Add". Aqui não chama mais trigger. Ele troca o nome. Ele troca o nome para "Box Collision". Fechou? Então, a colisão, como já tava explicando antes aqui, Vamos deixá-la "gordinha". Por que ela precisa o quê? Por que eu estou brincando de ela ser "gordinha"? Porque ela precisa estar sempre para fora da malha 3D, que é para você justamente colidir com ela primeiro de tudo. Então, com esse cara aqui feito, lembra que a gente pode selecionar esses casos aqui e deletar. Vamos na "Event Graph" e deleta todo mundo. Lembra que eu tinha começado a fazer uma linha de raciocínio, em que eu selecionava uma trigger box, vinha aqui no Level Blueprint e eu adicionava eventos para ele? Mesma coisa, não muda. Seleciona a box. Se quiser renomear até F2, "Box", sei lá, "BoxCollision". Evita ficar usando espaço no nome das coisas, em qualquer coisa digital, eu recomendo super. Então, botão direito enquanto ele está selecionado "Add Event for Box Collision". Colocou esse cara. "Daniel, pera, pera, espera aí. Estou vendo uma diferença aí, cara. O nó é o mesmo propósito, mas ele tem muito mais opções". Sim. Quando você entra em uma classe, você pode fazer algo muito mais nichado, muito mais específico, com muito mais ferramenta. É mais profissional. Eu estou afirmando para vocês. É muito mais profissional trabalhar dessa forma. Gente, segue o barco. Vamos brincar de programador agora. Vou até programar de uma forma um pouco mais rápida, obviamente, dando todo o contexto para vocês. Então, eu vou criar esse cara, dar um destroy na minha box colisão e na minha moeda. Então, vamos lá. Do "Other Actor", eu posso já puxar dele "cast to third Person", dá uma seta para cima, Enter nesse cara. Pode ver que ele já pluga o evento, olha. Lembrando que a linha branca é a pergunta: o que eu vou fazer? E a linha azul é a pergunta: para quem? Esse quem está colidindo com esse quem, realizando esse o quê. É isso que ele está fazendo. Desse cara aqui, eu posso dar agora um Destroy Actor. Ou melhor ainda, quando eu estou dentro de uma classe, eu posso dar um Destroy, o quê? "Component". Eu posso selecionar alguém para destruir, eu posso destruir todo mundo, o Actor inteiro que é o "BP_Collectible" ou deletar só alguém. Vamos começar, de repente, só com sei lá, deixa eu trocar esse cylinder aqui. Deixa eu chamá-lo de "Coin", de moeda. Então, "Destroy Component", eu vou deletar a Coin. Então, ele vai trazer aqui somente a coin. O único problema é que é legal você também deletar o box collision. Ou seja, se você vai destruir só a moeda, a colisão ainda está lá. Ou seja, se você já tem um contador de moeda, ele vai ficar sempre disparando. Então, vamos selecioná-la também e deletar esse cara aqui. "Compile". Vamos voltar aqui para o nosso level Pode deletar esses caras, tá? Ah, Perdão. Vamos só voltar aqui no third person, no Level Blueprint, vamos deletar esses caras, esses códigos aqui. porque agora estamos fazendo-o de uma maneira mais profissional. Vamos lá no Content Drawer. Olha aqui a nossa moeda. Então, lembra o que eu falei para vocês, olha. Agora a gente tem um cara que é imparcial. Se eu fizer um outro level, fizer o boss final aqui, fizer um outro level, eu posso usar essa classe aqui. Então, eu posso destrui-la. Então, galera, a gente começou a fazer uma classe de uma forma muito mais profissional. Se você parar para pensar a classe aqui, ela está funcionando perfeitamente por um sistema de uma moeda, que a gente pode usar em qualquer level. Essa é a viagem. E se você pirar mais ainda a cabeça, o que vai acontecer? Você vai poder, de repente, criar qualquer coisa que você pode coletar. Então, de repente, você quer fazer uma coleta de uma arma, uma coleta de alguma vestimenta, qualquer coisa que vá sumir do cenário e pode, de repente, entrar no inventário, é essa a forma que a gente tem que fazer. Maravilha? Então, convido vocês aí a arriscar. Troca um pouco a arte, troca um pouco o material, espalha um pouco mais. Dá para vocês agora replicarem várias vezes e você vai começar a ter uma cara muito mais próxima de um jogo.