‫Olá e bem-vindo.
‫Nesta palestra, vamos causar danos a este ator aqui.
‫Faremos isso substituindo um método virtual chamado levar dano ao ator.
‫E você pode ver no log aqui, temos a saúde diminuindo enquanto eu tiro esse personagem até
‫zero e então ele para em zero, não entrando em números negativos.
‫Então vamos mergulhar e ver como isso é feito.
‫Então, enquanto atualmente estamos sendo capazes de causar danos aos atores que atingimos aqui, como esse
‫cara, não estamos realmente recebendo esse dano.
‫Então é aí que entram os métodos virtuais da última palestra, porque assim como começar a jogar ou tech,
‫queremos ser capazes de receber dano em um ator.
‫Agora, felizmente, se você for ao ator Dot H e der uma olhada aqui, poderá ver
‫que existe esse método virtual de dano.
‫Agora, isso pode ser feito também com eventos e você provavelmente já viu isso antes de se registrar
‫para eventos.
‫Agora, o que vou fazer é apenas uma maneira diferente de causar danos, onde na verdade temos danos armazenados
‫contra o ator e não em um componente.
‫E uma maneira fácil de receber esse dano é através de um método virtual aqui.
‫E este é o método virtual que vamos substituir.
‫Então eu vou copiar isso e passar para o nosso ator em particular, que é o atirador.
‫Vai ser rápido.
‫Ele pode procurar o atirador.
‫Personagem Ponto H.
‫E a única coisa que quero verificar é onde isso entra, o ator ponto H.
‫Então, se rolarmos para cima, devemos ser capazes de ver em qual seção estamos aqui.
‫Então, vou rolar para cima até descobrir que, quer estejamos em público ou o que eles vão, estamos na
‫seção pública.
‫Então isso deveria estar na seção pública aqui também.
‫Então, vou colocá-lo sob nossa tecnologia e configurar o componente de entrada do jogador
‫no ponto de tiro e colá-lo.
‫E como eu disse na última palestra, você pode usar override para ter certeza de que está de fato substituindo um método
‫virtual do pai e não é necessário ter virtual na frente aqui, mas vamos mantê-lo de qualquer
‫maneira.
‫E aqui você pode ver todos os dados que estão chegando para sofrer danos.
‫Temos uma quantidade de dano, os eventos de dano e o controlador que está causando o dano, o instigador e o
‫causador do dano.
‫Todas aquelas coisas que passamos da arma estão surgindo aqui também.
‫Então isso é ótimo.
‫Agora, se formos em frente e fizermos uma mudança de controle, P cria implementação ou copia e cola, então podemos
‫ir e fazer a implementação para sofrer danos.
‫Mas a primeira coisa a ser cautelosa é que sempre que estamos substituindo algo,
‫queremos pensar em chamar a versão da classe pai de take Damage porque pode haver alguma implementação lá que
‫precise ser executada.
‫Então é isso que vamos fazer.
‫Fazemos isso sempre.
‫Fizemos isso com tecnologia.
‫Fizemos isso com Begin Play.
‫Você pode ver que sempre tivemos isso super legal no começo, e isso porque
‫quando sobrescrevemos um método, nós o reescrevemos completamente, removemos completamente esse comportamento.
‫Então, se queremos esse comportamento, o que normalmente fazemos, devemos sempre começar com um cool a
‫super.
‫Então vamos fazer um dano legal.
‫Isso vai levar a quantidade de dano.
‫Então é aqui que fica um pouco tedioso.
‫Infelizmente, minha ferramenta de preenchimento automático não faz isso por nós.
‫Evento de dano.
‫Então qual foi o próximo?
‫Nós tínhamos o controle.
‫Então, o instigador do evento, é apenas uma cópia.
‫E então temos o causador do dano, que é o ator.
‫Então, tudo isso é chamado para a implementação dos pais de levar dano.
‫E a única coisa é que isso tem um tipo de retorno.
‫Portanto, o dano real aplicado.
‫Então vamos flutuar.
‫Dano aplicado?
‫O valor de retorno é de receber dano?
‫Então vamos manter esse dano aplicado lá?
‫E, realisticamente, isso será o mesmo que o valor do dano em nosso caso de uso específico,
‫mas não necessariamente, então usaremos o dano aplicado.
‫A próxima coisa que queremos fazer é manter as informações sobre quanta saúde realmente temos.
‫Agora, a maneira como vou fazer isso é com duas variáveis aqui.
‫A primeira é que vou fazer as duas novas propriedades porque quero deixar a saúde visível no
‫inspetor, pelo menos por enquanto.
‫E vamos fazer com que a propriedade do primeiro ano seja a saúde máxima.
‫É para isso que inicializamos a saúde inicialmente.
‫Então, sua propriedade, será um padrão de edição apenas porque será usado no início da reprodução.
‫E assim, alterar esse valor de saúde máxima após o fato, não terá nenhum impacto.
‫Então, Max Health, vou definir o Max health para 100 aqui e então teremos uma outra propriedade aqui, que, como eu disse,
‫será uma propriedade de um ano apenas para podermos inspecionar isto.
‫E eu vou ter isso como visível em qualquer lugar.
‫Mas não editável porque não queremos poder mudar essa saúde, pelo menos não no momento.
‫Você pode querer isso para fins de depuração, mas eu não.
‫Então vamos ter saúde aqui e no começo do jogo vamos configurar para que essa saúde.
‫É igual à saúde máxima.
‫Então começamos com o spawn.
‫Temos nossa saúde máxima e então podemos começar a diminuir.
‫Ele define o tempo para um desafio para você diminuir a saúde do personagem.
‫Então você vai usar o dano aplicado aqui ao invés da outra opção aqui.
‫Então, temos nossos tiros, personagem, ponto, CP que recebem dano, temos uma quantidade de dano, mas na verdade queremos
‫o dano aplicado que volta de receber dano, porque isso poderia ter
‫sido reduzido por algum processo no pai.
‫Então nós fazemos isso.
‫Em seguida, reduzimos o valor da saúde e registramos os resultados apenas para simplificar, para que você possa verificar
‫quando estiver atirando naquele aliado que a saúde dele está diminuindo e depois testá-lo.
‫Então pause o vídeo e vá em frente.
‫Ok, bem-vindo de volta.
‫Então vamos dar uma chance.
‫Então, saúde, nós basicamente queremos diminuir isso pelo dano aplicado.
‫Mas isso é suficiente?
‫Bem, e se o dano aplicado for maior do que a quantidade de saúde que nos resta?
‫Bem, nesse caso, provavelmente queremos que o dano aplicado seja essa quantidade de saúde.
‫Então, a maneira como podemos fazer isso é dizer que o dano foi aplicado.
‫Deve ser igual aos f pontos matemáticos.
‫Homens da saúde.
‫E o dano aplicado.
‫Então esse é o dano que basicamente queremos aplicar.
‫Então, na verdade, vou em frente e renomeie isso em vez de chamá-lo de dano aplicado.
‫Vou chamá-lo de dano a ser aplicado.
‫Dano a ser aplicado como Saigon renomeie isso aqui e depois o dano a ser aplicado contra a saúde menos o dano
‫a ser aplicado que faz sentido.
‫E basicamente na pior das hipóteses isso vai ser a saúde.
‫Então, isso vai definir nossa saúde para zero.
‫E lembre-se, devemos devolver o dano que realmente aplicamos.
‫Então, para retornar o dano ao apply, que agora foi aplicado e finalmente queremos um log UII no final aqui, que
‫será apenas um aviso para que possamos vê-lo.
‫E eu quero que esta seja a saúde que resta aqui e que será um percentual F, 2% F minúsculo para mostrar um
‫float.
‫E então podemos colocar a saúde ali mesmo e ir em frente e clicar em construir.
‫Agora.
‫O meu é compilado depois de corrigir um ponto e vírgula ausente.
‫Aqui, vamos verificar se temos ferramentas de desenvolvedor de janela e queremos o log de saída aqui para que possamos
‫ver essa mensagem de log.
‫E eu vou seguir em frente e apertar play e tentar atirar nesse personagem se eu atirar nele.
‫Ai está.
‫A saúde deixou 90, 76, t, blá, blá, blá, até zero.
‫E se eu continuar atirando, não vamos abaixo de zero por causa daquela f matemática dot min.
‫Então isso me diz que temos nossa saúde configurada corretamente.
‫Apenas outra maneira de fazer isso em vez de fazê-lo dentro de um componente.
‫Você pode fazer isso dentro do ator, bem como alguns prós e contras dessa abordagem.
‫Eventualmente, você pode querer separar isso em componentes separados para que você possa reutilizá-lo em diferentes
‫elementos.
‫Mas S é apenas outra maneira, como eu digo agora, porque esse personagem não parece particularmente morto depois que o
‫derrubamos para zero de saúde.
‫Precisamos corrigir as animações para suportar isso.
‫Então veremos isso na próxima palestra e nos vemos lá.