‫Olá e bem-vindo.
‫Nesta palestra, vamos criar um novo componente em C++, esta caixa de gatilho, que nos informará
‫quando entrarmos na alcova ou colocarmos qualquer objeto na alcova.
‫Você pode ver que estamos recebendo uma pequena mensagem de planta no canto superior esquerdo.
‫E para fazer isso, teremos que entender como as sobreposições, bloqueios e diferentes respostas de
‫colisão se comportam no Unreal.
‫Vamos mergulhar e descobrir.
‫Agora já nos familiarizamos com o funcionamento dos canais de rastreamento.
‫Sabemos que você pode ter respostas de rastreamento nos diferentes objetos em nossa cena, como este arbusto aqui.
‫Você pode ver que ele tem uma resposta para ignorar os rastros de armas, mas bloqueia os rastros de visibilidade.
‫Depois, há esse exemplo de vidro à prova de balas que bloqueia armas, mas permite visibilidade e uma parede
‫de tijolos que bloqueia ambos.
‫Assim você pode ver como este sistema funciona com canais de rastreamento.
‫Agora, o que acontece se estivermos tentando decidir quais objetos podem se sobrepor?
‫Quais passam?
‫Quais bloqueiam um ao outro?
‫Isso pode ficar um pouco mais complicado.
‫Já vimos isso quando tentamos fazer com que a gárgula se sobrepusesse ao nosso peão.
‫Agora, é assim que funciona.
‫Essencialmente, usamos esses tipos de objeto.
‫Cada objeto pode pertencer a um tipo de objeto específico.
‫E isso é diferente do tipo de sistema de tipos em C++.
‫Estes são tipos de colisão.
‫Então você pode ter um objeto A, um objeto B, e em suas configurações, se dermos uma olhada nas configurações em
‫nossa gárgula, por exemplo, você pode ver que eles têm seu próprio tipo de objeto.
‫Este é um objeto estático mundial.
‫Mas, mais abaixo, eles também têm suas respostas a outros tipos de objetos.
‫Então você pode ver que este objeto bloqueará outras estáticas do mundo.
‫Ele bloqueará outras dinâmicas mundiais.
‫Ele irá sobrepor os tipos de peões.
‫Ele bloqueará corpos físicos e praticamente bloqueará todos os outros tipos.
‫E, obviamente, o próprio peão, se formos e encontrarmos nosso jogador BP.
‫E olhe em seu componente cápsula.
‫Veja os detalhes e role para baixo até onde temos uma predefinição de colisão.
‫Se pudermos expandir a predefinição de puxar e colidir, não podemos editá-la, mas podemos ver o que ela está fazendo.
‫E você pode ver que ele tem sua própria resposta à estática mundial.
‫Portanto, sua resposta à estática mundial seria bloqueá-la.
‫Então, na verdade, temos duas opções diferentes aqui.
‫O peão está dizendo que eu bloqueio a estática do mundo, mas a gárgula está dizendo que eu sobreponho peões.
‫Então o que deve acontecer?
‫Bem, é aqui que entra esta tabela e eu tenho um link para esta postagem no blog,
‫se você quiser lê-la na íntegra nos recursos da palestra.
‫Então você pode ver que é preciso a menor interação de bloqueio entre os dois.
‫Então, se o objeto A era o peão e está dizendo, hey, eu deveria bloquear aquela gárgula, mas as gárgulas objetam B e
‫está dizendo, hey, eu deveria sobrepor aquele peão.
‫Portanto, será necessário o menor bloqueio desses dois e se sobreporá.
‫Portanto, isso significa que, se você deseja que duas coisas bloqueiem uma à outra, ambas precisam concordar que é isso
‫que querem fazer.
‫Então vamos ver outro exemplo aqui.
‫Temos o jogador que é do tipo peão de objeto, e sua resposta de objeto a outros peões
‫é bloqueá-los e objetos estáticos do mundo é bloqueá-los.
‫A parede de tijolos é um objeto estático mundial.
‫Ele pode bloquear peões e bloquear a estática do mundo.
‫Então, esses dois concordariam um com o outro.
‫Agora, o arbusto também é estático no mundo, mas se sobrepõe aos peões.
‫É muito parecido com nossa gárgula, mas bloqueia a estática do mundo.
‫Então, se você descer e dar uma olhada no que aconteceria, o peão tentaria viajar pelo mato e
‫poderia, porque leva a opção de menor bloqueio, que é a sobreposição e gera um
‫evento de sobreposição que podemos conectar no código ou blueprint, enquanto não será capaz de passar pela
‫parede de tijolos e gerará um evento hit novamente, algo que podemos conectar em Blueprint
‫ou C++.
‫Então, por que eu entro em toda essa profundidade?
‫Porque o que eu quero fazer é colocar um objeto que a gente é basicamente invisível dentro dessa parede que nos
‫permite colocar a gárgula aqui e temos um evento quando isso acontece.
‫Então, a gárgula vai sustentar um evento e dizer, Ei, eu tenho algo sobreposto comigo.
‫Então, por que tudo isso é importante?
‫Porque eu quero colocar um objeto que é invisível, mas vai se sobrepor à gárgula e nos informar sobre
‫esse fato.
‫Podemos então consultá-lo em C++ ou podemos obter eventos em blueprints de qualquer maneira.
‫E a maneira como vamos fazer isso é, antes de tudo, criar uma planta desta parede de masmorra.
‫Então, vou clicar no botão blueprint no painel de detalhes,
‫criar uma nova subclasse, e vou chamá-la de BP, Underscore Secret Wall, e vamos clicar em selecionar para criá-la.
‫E levou-o para a nossa janela principal e tem um motor nele.
‫O que eu também quero adicionar aqui é essencialmente um componente que é chamado de colisão de caixa.
‫Então, se clicarmos em uma colisão de caixa, você verá que ela é completamente invisível.
‫Ele apenas fornece algumas extensões de caixa que podemos alterar.
‫Podemos torná-los maiores para que em qualquer lugar onde colocarmos a gárgula nesta caixa, ela a aceite.
‫E podemos ver que tem opções de colisão aqui embaixo.
‫Temos uma sobreposição toda dinâmica como padrão, mas como a predefinição padrão.
‫Mas se for personalizado, você pode ver que podemos alterar os tipos de objeto e podemos alterar a forma como ele
‫responde a coisas diferentes aqui.
‫E acho que o mais importante, como você pode ver, está configurado para se sobrepor à maioria dos tipos de objetos, o que significa
‫que, mesmo que eles não estejam configurados para se sobreporem à dinâmica do mundo, eles se sobreporão.
‫Não vai bloquear nada que nos permita posicionar a gárgula aqui.
‫Então, vou deletar esse componente da cena porque queremos fazer é criar um novo
‫componente em C++ baseado nessa colisão de caixa.
‫Agora eu só quero mostrar a vocês que com esta caixa, se voltarmos para a predefinição padrão
‫em que estava, que era sobrepor toda dinâmica eu acredito e verificamos ou como já está marcado na verdade gerar eventos de sobreposição
‫já está marcado.
‫Então podemos ir para o nosso gráfico de eventos e podemos clicar com o botão direito aqui e procurar por sobreposição.
‫E bem no topo, você pode ver um componente adicional que começa a se sobrepor para a caixa.
‫Então, se clicarmos nele e realmente renomearmos o componente da caixa para a área de acionamento assim, basicamente, se sobrepusermos à área de
‫acionamento, obteremos uma lista de propriedades da coisa que está se sobrepondo a nós, para
‫que possamos pegar o.
‫Está se sobrepondo com as crianças.
‫Obtenha seu nome.
‫Então, obter o nome de exibição é o nome do nó e, em seguida, podemos pegar isso e imprimir a string de resultado
‫e conectá-la ao pino de execução e podemos seguir em frente e clicar em play.
‫E se caminharmos até a área, você pode ver que está dizendo que o tocador de bipe é a coisa que se sobrepõe a ele.
‫Agora ele não pode ver o erro porque está muito escuro.
‫Então eu vou para a parede secreta novamente e um bipe e eu vou adicionar um componente de luz spot, que eu
‫vou colocar nesta pequena alcova girando sua face para baixo e iluminando o espaço onde nós
‫quer o objeto.
‫Agora, na cena, podemos vê-lo muito claramente.
‫Então vamos em frente e aperte o play e podemos caminhar até aquela alcova.
‫Se o sobrepusermos, ele diz que há o tocador de bipe se sobrepondo e
‫podemos pegar nossa gárgula desta cela usando nossa garra recém-cunhada, e podemos pegar essa gárgula e colocá-la nesta área.
‫No entanto, não parece estar gerando nenhum evento de sobreposição, e isso porque, assim como precisamos, há duas
‫partes na colisão.
‫Há também duas partes para gerar eventos de sobreposição.
‫Então, só porque nós o habilitamos nesse componente de caixa não significa que a gárgula se movendo para ele
‫realmente nos alertará sobre qualquer evento de sobreposição.
‫Então o que temos que fazer é ir até a gárgula e verificar seus eventos de sobreposição também.
‫Então, os eventos de sobreposição devem acontecer.
‫Vamos pegar a gárgula, levá-la até a alcova e enfiá-la.
‫E agora temos um evento chegando.
‫Quando isso acontece, a estátua da Gárgula está de fato sendo registrada.
‫Agora, não quero usar eventos de blueprint neste caso específico.
‫Então, o que eu quero fazer é pegar nosso componente de área de gatilho e realmente transformá-lo em algum componente C++ que
‫possa avaliar se ele tem a estátua Gargoyle que deseja ou se já não está nele.
‫A maneira como vamos fazer isso é ir para os componentes ADD, criar novos componentes C++.
‫E como a classe pai, em vez de escolher o componente ACT ou
‫os componentes da cena, iremos para todas as classes e procuraremos o componente box.
‫E você pode ver os componentes de forma, componentes de caixa, o que queremos e podemos ir em frente e clicar
‫em próximo.
‫Portanto, gostaria de desafiá-lo a criar este componente agora que mostrei como definir a classe
‫pai.
‫Então você vai chamá-lo de componentes de gatilho e terá que copiar algumas coisas dos outros componentes que
‫criamos porque não está configurado da mesma maneira.
‫Visto que estamos derivando de um pai diferente, você não precisa copiar o alinhamento de sua classe.
‫Essa linha inteira está basicamente vazia no componente de gatilho conforme você a cria.
‫Portanto, copie isso do seu grabber ou do seu movedor e, caso contrário, você não poderá adicionar seus componentes
‫aos seus projetos.
‫Então você deve usar esses novos componentes de gatilho para substituir nossos componentes de caixa atuais e imprimir algo de Begin
‫Play novamente.
‫Begin Play não será configurado automaticamente para você, então você terá que copiar do arquivo de
‫cabeçalho e do arquivo C++ de nossos outros componentes para configurá-lo.
‫Pause o vídeo e vá em frente.
‫OK.
‫Bem vindo de volta.
‫Então, vou chamá-lo de componentes de gatilho, todos com uma palavra e um clique para criar a classe.
‫Então, como previsto, uma nova linha de classe não tem nada dentro dos parênteses.
‫E se dermos uma olhada no nosso editor e formos para o BP secret, tentaremos adicionar este componente
‫search for trigger.
‫Você pode ver que nada aparece.
‫E a razão para isso é que, se formos até eu pegar um ponto H e tivermos que olhar para sua linha de
‫classe, você pode ver que há um pouco aqui que diz um blueprint spawn de um componente.
‫Então, crucialmente, precisamos copiar isso.
‫Ele também tem um grupo de classe.
‫Podemos também copiar a coisa toda porque isso nos permite criar esses componentes no blueprint para que
‫possamos colar isso como a linha de classe para o componente de gatilho.
‫E então a outra coisa, se formos pegá-lo, você pode ver que ele começou a tocar.
‫Está dentro de uma seção protegida e podemos apenas copiar a definição dessa função de início
‫de reprodução, copiá-la em nossos componentes de gatilho e colocá-la como estava no grabber, logo abaixo do corpo
‫gerado.
‫Então podemos ir ao nosso pegar um CP e ver quão grande em jogo foi definido.
‫Aqui você pode ver que tem esse jogo legal de super começar que é realmente importante.
‫Então, vamos copiar isso, passar para um componente de gatilho.
‫CP E nós vamos mudar o você pega dois pontos para seu componente de gatilho, comece a jogar e então aqui nós
‫podemos colocar um novo log e vamos escrever uma mensagem simples, como componente de gatilho
‫vivo.
‫Vamos em frente e compilar.
‫Isso pode demorar um pouco, já que fizemos algumas mudanças bastante significativas em nosso arquivo principal.
‫E uma vez feito isso, podemos entrar em nossa parede secreta da BP, adicionar e procurar por gatilho.
‫E aqui você pode ver que temos esse componente de gatilho.
‫Agora podemos adicionar isso.
‫Podemos remover nossa área de gatilho que configuramos anteriormente.
‫Apenas vá em frente e exclua isso e verifique se queremos excluí-lo.
‫Isso basicamente invalidará esse evento que criamos e podemos verificar se as colisões estão configuradas como
‫queremos no gatilho, se formos dar uma olhada.
‫Sim, está configurado para sobrepor toda a dinâmica e gerar eventos de sobreposição.
‫E, finalmente, o que precisamos substituir é este evento aqui onde vamos selecionar nosso
‫gatilho com o botão direito do mouse e ir para desfraldar o evento add para Trigger Collision e adicionar nosso próprio componente começar a sobreposição.
‫Isso é o que estávamos usando antes.
‫Conecte o pino ativo e conecte o pino de execução para ir para o nível da masmorra.
‫Vá e pegue a gárgula, tente enfiá-la na alcova e notamos que não está funcionando.
‫Então agora temos esse gatilho configurado.
‫Vamos para a viewport e você pode ver que na verdade o trigger não foi feito.
‫Não foi feito grande o suficiente.
‫Não o posicionamos corretamente.
‫Então vamos posicioná-lo no centro da alcova e vamos aumentar as propriedades de extensão da caixa para que peguemos o
‫que quer que tenhamos colocado dentro dessa área da alcova.
‫Não importa se é um pouco maior e nos dá uma margem de segurança, então podemos entrar na
‫masmorra, apertar play e depois entrar na alcova.
‫E com certeza, ele detecta que o jogador BP entrou naquela alcova.
‫Coisas boas.
‫Nesta palestra, aprendemos tudo sobre tipos de objeto e respostas de tipo de objeto, e usamos
‫isso para configurar esse componente de gatilho.
‫Vejo você na próxima palestra.