‫Portanto, nosso objetivo é ser capaz de disparar projéteis e obter um efeito de explosão
‫quando o projétil atinge algo, inclusive quando atingimos a torre inimiga e quando os projéteis da torre inimiga nos atingem.
‫Olá e bem-vindo de volta.
‫Agora vamos dar uma olhada no nosso plano de seção e ver até onde chegamos.
‫Agora sabemos que criamos um tanque.
‫Ele pode se mover em todo o mundo.
‫Fizemos uma classe de torre inimiga.
‫Adicionamos funcionalidade de fogo e projéteis junto com dano e destruição à saúde em nosso jogo.
‫Agora temos condições de vitória e derrota e estamos exibindo aquelas com widgets em nosso HUD.
‫Agora, o último item é adicionar nossos efeitos especiais, o que significa que precisamos de um pouco de fumaça
‫atrás de nosso projétil, além de algumas explosões e sons.
‫E haverá algumas outras coisas que adicionaremos para apimentar nosso jogo e torná-lo um pouco
‫mais polido.
‫Agora, neste vídeo, vamos lidar com algumas partículas atingidas.
‫Estes são efeitos especiais para quando o projétil atinge algo.
‫Isso vai envolver algo chamado sistema de partículas.
‫Então, vamos voltar ao editor e dar uma olhada nos sistemas de partículas que temos em nosso projeto.
‫Então eu estou aqui no editor.
‫Vou entrar na pasta de ativos e efeitos e aqui temos três efeitos.
‫Estes são chamados de sistemas de partículas.
‫Agora temos um efeito de acerto, um efeito de morte e um rastro de projétil.
‫Agora vamos em frente e clique duas vezes no efeito p hit e você verá que aqui temos um editor de sistema
‫de partículas.
‫E nesta pequena janela, veremos essa explosão acontecendo repetidamente.
‫Agora, felizmente, este sistema de partículas já foi criado para nós e parece uma pequena
‫explosão.
‫E gostaríamos de ver essa explosão acontecer assim que o projétil atingir alguma coisa.
‫Então esse é o nosso objetivo para este vídeo.
‫Então aqui no código do V, eu gostaria de voltar para nossa classe de projéteis.
‫Então vamos para o projétil H e eu vou adicionar uma variável a esta classe e este será um
‫sistema de partículas.
‫Agora, isso pode ser uma variável privada e o tipo será U.
‫Sistema de partículas e será um ponteiro e podemos chamar isso de partículas de acerto.
‫Agora vou declarar isso e também vou dar uma nova propriedade.
‫Então, digamos que você é uma propriedade e eu quero fazer isso em qualquer lugar para que possamos definir isso a partir do
‫projeto do nosso projétil.
‫E enquanto estou nisso, vou dar a isso uma categoria e colocarei isso na categoria combate,
‫já que está relacionado às nossas outras variáveis de combate.
‫Agora, isso é editado em qualquer lugar porque planejamos definir isso de dentro do blueprint para que possamos prosseguir
‫e compilar isso.
‫Agora vamos voltar ao editor e vou fechar meus outros projetos e entrar na nossa pasta de
‫atores aqui em projetos.
‫Atores, aqui está o nosso B. P. projétil.
‫Vamos abrir isso e abrir o editor de blueprint completo.
‫Agora, vamos dar uma olhada nos detalhes.
‫Painel.
‫Lembre-se, o próprio projétil BP deve ser selecionado para ver essas variáveis gerais.
‫E aqui está nossa seção de combate e vemos partículas atingidas.
‫Agora, aqui temos um menu suspenso e podemos selecionar sistemas de partículas.
‫Como essa variável é do tipo sistema de partículas, vamos usar o efeito de acerto para nossas partículas de acerto.
‫Então agora temos uma variável e seu valor é definido aqui no projeto do projétil.
‫Então vamos compilar e salvar isso.
‫Agora, o próximo passo é realmente gerar esse sistema de partículas assim que atingirmos algo, o que significa que
‫ao acertar é a função perfeita para fazer isso, agora precisamos saber como gerar partículas e usar a
‫jogabilidade.
‫Statics tem uma função útil para isso.
‫É chamado de emissor de spawn no local e diz que reproduz o efeito especificado no local e
‫rotação fornecidos.
‫Atire e esqueça.
‫Isso é bom porque não precisamos nos preocupar em removê-lo ou excluí-lo.
‫Nós apenas disparamos esta função.
‫Ele gera o sistema de partículas e cuida de limpá-lo para nós, o que é ótimo.
‫Então, vamos dar uma olhada na sintaxe agora.
‫Existem vários parâmetros de entrada, mas esta função tem várias sobrecargas.
‫Agora, como existem várias versões dessa função, vamos entrar no código do V e dar uma
‫olhada nessas diferentes versões.
‫Agora vou abrir o CP do projétil e dar uma olhada na função ao acertar.
‫Agora, aqui embaixo, vou digitar o emissor de geração de estatísticas de jogo no local e assim que eu digitar os
‫parênteses de abertura, o pop-up está me mostrando os parâmetros de entrada que preciso
‫passar.
‫Mas vemos um dos três, o que significa que existem três versões diferentes dessa função.
‫Três sobrecargas.
‫Vou clicar na seta para baixo duas vezes para dar uma olhada nessa sobrecarga específica.
‫Agora é preciso um objeto de contexto mundial, um sistema de partículas e um local, e os demais parâmetros de entrada têm.
‫Valores padrão, portanto, são opcionais.
‫Observe que o parâmetro de rotação está definido como rotador zero.
‫Agora, se quisermos, podemos definir a rotação dos emissores para a rotação do ator passando get
‫rotação ativa.
‫Não é muito importante, mas eu gostaria de gerar o emissor com a mesma rotação do ator.
‫Então, eu gostaria de usar a rotação ativa e passar isso.
‫Mas o resto desses parâmetros são opcionais.
‫Então, como sabemos que precisamos chamar o emissor de spawn no local para reproduzir um sistema de partículas, podemos fazer
‫isso na função on hit.
‫Sabemos que o primeiro parâmetro é um objeto de contexto mundial e já sabemos como lidar com isso.
‫Sabemos que é preciso um sistema de partículas e temos uma variável do sistema de partículas que podemos passar.
‫Também sabemos que precisamos de um local e uma rotação e sabemos como obtê-los para um determinado ator usando obter
‫localização do ator e obter rotação do ator.
‫Então, já que você tem todas essas informações, eu gostaria que você usasse a função de estática de
‫jogo U spawn emissor no local na função ao acertar para a classe de projétil.
‫Então, passando isso para o objeto de contexto do mundo, passando o próprio sistema de partículas, essa nova variável
‫de partículas de impacto que criamos e usamos a localização dos projéteis usando get active location e usamos a rotação
‫dos projéteis usando a rotação do ator get.
‫Pause o vídeo e gere o emissor na função on hit agora.
‫OK.
‫Então, vou remover esta linha que usamos apenas para dar uma olhada nas sobrecargas de função para esta
‫função.
‫E vou colocar isso antes de destruirmos o ator.
‫Então, se você colocou, digamos, no final da função, tudo bem.
‫O desafio ficou em aberto para você.
‫Mas vamos colocar isso antes de destruir o ator, porque se destruirmos o
‫ator, não faz sentido gerar partículas depois disso.
‫Então vamos fazer isso antes de destruir o ator.
‫Então, vamos dizer que a estática do jogo gera emissor no local e primeiro precisamos do nosso objeto de contexto
‫do mundo, que será este.
‫Em seguida, precisamos de nossas partículas de acerto seguidas de nossa localização de atores para a qual usaremos obter localização
‫de atores.
‫Em seguida, vamos passar a rotação para a qual usaremos obter rotação de ator e agora estamos gerando
‫o emissor no local.
‫Agora, uma coisa que eu gostaria de salientar é que se meu dono for um ponteiro nulo e nós retornarmos
‫desta função mais cedo, bem, pode ser uma boa ideia destruir o projétil ali.
‫Então, eu gostaria de remover esta declaração de retorno e dar a esta declaração if seu próprio corpo ainda retornará.
‫Mas antes de voltarmos, deveríamos estar destruindo o ator.
‫Então eu vou chamar destroy aqui neste if check.
‫E, de fato, mesmo se falharmos em todas as outras verificações aqui, verificando o outro ator, não
‫queremos um projétil permanecendo no mundo.
‫Portanto, devemos mover esta segunda chamada para destruir fora da verificação do if.
‫Dessa forma, estamos destruindo o projétil quando ele atinge algo, não importa o quê.
‫Dessa forma, não temos projéteis remanescentes por nenhum motivo.
‫Ok?
‫E enquanto estamos seguros, devemos notar que estamos usando partículas de hit aqui, o que significa
‫que devemos verificar se as partículas de hit estão definidas antes de tentarmos usá-las.
‫Caso contrário, podemos estar usando uma variável de partículas de hit que não foi definida e não devemos usar ponteiros
‫nulos.
‫Então, vamos colocar um if check aqui para ver se as partículas atingidas são válidas e se é válida, então
‫é seguro chamar o emissor de spawn no local aqui.
‫Tudo bem.
‫Vamos em frente e compilar isso agora.
‫E com uma compilação bem-sucedida, voltaremos ao editor e aqui está o projétil BP.
‫Temos nossas partículas de acerto definidas, portanto, certifique-se de que isso esteja definido antes de testarmos isso.
‫Caso contrário, não veremos nada.
‫E se apertarmos o play, podemos esperar pelo nosso widget go e então boom, confira isso.
‫Temos nuvens de fumaça.
‫Atingimos partículas sendo geradas.
‫Eu vou em frente e atirar em nossos inimigos e vamos ver que eles são gerados quando
‫estamos acertando os inimigos também.
‫Perfeito.
‫Então, em resumo, agora geramos algumas partículas de impacto.
‫Temos explosões quando nossos projéteis atingem algo no mundo.
‫E o próximo passo é ter um rastro de fumaça que segue atrás do projétil enquanto ele voa pelo
‫ar.
‫E trataremos disso no próximo vídeo.
‫Vejo você em breve.