﻿1
00:00:04,400 --> 00:00:05,330
‫Olá e bem-vindo.

2
00:00:05,330 --> 00:00:09,230
‫Nesta palestra, vamos causar danos a este ator aqui.

3
00:00:09,260 --> 00:00:13,400
‫Faremos isso substituindo um método virtual chamado levar dano ao ator.

4
00:00:13,700 --> 00:00:18,320
‫E você pode ver no log aqui, temos a saúde diminuindo enquanto eu tiro esse personagem até

5
00:00:18,320 --> 00:00:21,830
‫zero e então ele para em zero, não entrando em números negativos.

6
00:00:21,830 --> 00:00:23,570
‫Então vamos mergulhar e ver como isso é feito.

7
00:00:26,480 --> 00:00:32,810
‫Então, enquanto atualmente estamos sendo capazes de causar danos aos atores que atingimos aqui, como esse

8
00:00:33,470 --> 00:00:36,530
‫cara, não estamos realmente recebendo esse dano.

9
00:00:36,560 --> 00:00:42,800
‫Então é aí que entram os métodos virtuais da última palestra, porque assim como começar a jogar ou tech,

10
00:00:42,920 --> 00:00:46,010
‫queremos ser capazes de receber dano em um ator.

11
00:00:46,070 --> 00:00:50,630
‫Agora, felizmente, se você for ao ator Dot H e der uma olhada aqui, poderá ver

12
00:00:50,630 --> 00:00:52,940
‫que existe esse método virtual de dano.

13
00:00:53,300 --> 00:01:00,330
‫Agora, isso pode ser feito também com eventos e você provavelmente já viu isso antes de se registrar

14
00:01:00,350 --> 00:01:01,460
‫para eventos.

15
00:01:01,520 --> 00:01:06,920
‫Agora, o que vou fazer é apenas uma maneira diferente de causar danos, onde na verdade temos danos armazenados

16
00:01:06,920 --> 00:01:09,410
‫contra o ator e não em um componente.

17
00:01:10,220 --> 00:01:15,620
‫E uma maneira fácil de receber esse dano é através de um método virtual aqui.

18
00:01:16,070 --> 00:01:18,440
‫E este é o método virtual que vamos substituir.

19
00:01:18,740 --> 00:01:24,860
‫Então eu vou copiar isso e passar para o nosso ator em particular, que é o atirador.

20
00:01:25,100 --> 00:01:25,730
‫Vai ser rápido.

21
00:01:25,730 --> 00:01:27,620
‫Ele pode procurar o atirador.

22
00:01:27,620 --> 00:01:28,550
‫Personagem Ponto H.

23
00:01:29,120 --> 00:01:35,200
‫E a única coisa que quero verificar é onde isso entra, o ator ponto H.

24
00:01:35,870 --> 00:01:41,420
‫Então, se rolarmos para cima, devemos ser capazes de ver em qual seção estamos aqui.

25
00:01:42,170 --> 00:01:50,210
‫Então, vou rolar para cima até descobrir que, quer estejamos em público ou o que eles vão, estamos na

26
00:01:50,210 --> 00:01:51,170
‫seção pública.

27
00:01:51,170 --> 00:01:54,500
‫Então isso deveria estar na seção pública aqui também.

28
00:01:54,530 --> 00:02:00,140
‫Então, vou colocá-lo sob nossa tecnologia e configurar o componente de entrada do jogador

29
00:02:00,140 --> 00:02:02,930
‫no ponto de tiro e colá-lo.

30
00:02:03,320 --> 00:02:10,670
‫E como eu disse na última palestra, você pode usar override para ter certeza de que está de fato substituindo um método

31
00:02:10,670 --> 00:02:16,340
‫virtual do pai e não é necessário ter virtual na frente aqui, mas vamos mantê-lo de qualquer

32
00:02:16,340 --> 00:02:17,000
‫maneira.

33
00:02:17,240 --> 00:02:21,530
‫E aqui você pode ver todos os dados que estão chegando para sofrer danos.

34
00:02:21,530 --> 00:02:29,030
‫Temos uma quantidade de dano, os eventos de dano e o controlador que está causando o dano, o instigador e o

35
00:02:29,030 --> 00:02:30,470
‫causador do dano.

36
00:02:30,470 --> 00:02:34,190
‫Todas aquelas coisas que passamos da arma estão surgindo aqui também.

37
00:02:34,190 --> 00:02:34,910
‫Então isso é ótimo.

38
00:02:35,270 --> 00:02:41,000
‫Agora, se formos em frente e fizermos uma mudança de controle, P cria implementação ou copia e cola, então podemos

39
00:02:41,000 --> 00:02:43,610
‫ir e fazer a implementação para sofrer danos.

40
00:02:43,910 --> 00:02:49,190
‫Mas a primeira coisa a ser cautelosa é que sempre que estamos substituindo algo,

41
00:02:49,190 --> 00:02:56,420
‫queremos pensar em chamar a versão da classe pai de take Damage porque pode haver alguma implementação lá que

42
00:02:56,750 --> 00:02:58,340
‫precise ser executada.

43
00:02:58,970 --> 00:03:00,080
‫Então é isso que vamos fazer.

44
00:03:00,080 --> 00:03:01,040
‫Fazemos isso sempre.

45
00:03:01,040 --> 00:03:02,150
‫Fizemos isso com tecnologia.

46
00:03:02,150 --> 00:03:03,650
‫Fizemos isso com Begin Play.

47
00:03:03,650 --> 00:03:07,520
‫Você pode ver que sempre tivemos isso super legal no começo, e isso porque

48
00:03:07,520 --> 00:03:10,970
‫quando sobrescrevemos um método, nós o reescrevemos completamente, removemos completamente esse comportamento.

49
00:03:11,240 --> 00:03:16,910
‫Então, se queremos esse comportamento, o que normalmente fazemos, devemos sempre começar com um cool a

50
00:03:16,940 --> 00:03:17,420
‫super.

51
00:03:17,600 --> 00:03:19,760
‫Então vamos fazer um dano legal.

52
00:03:21,420 --> 00:03:23,460
‫Isso vai levar a quantidade de dano.

53
00:03:23,550 --> 00:03:25,290
‫Então é aqui que fica um pouco tedioso.

54
00:03:25,290 --> 00:03:27,810
‫Infelizmente, minha ferramenta de preenchimento automático não faz isso por nós.

55
00:03:27,810 --> 00:03:28,970
‫Evento de dano.

56
00:03:30,560 --> 00:03:32,600
‫Então qual foi o próximo?

57
00:03:32,600 --> 00:03:34,760
‫Nós tínhamos o controle.

58
00:03:35,090 --> 00:03:37,330
‫Então, o instigador do evento, é apenas uma cópia.

59
00:03:37,910 --> 00:03:42,140
‫E então temos o causador do dano, que é o ator.

60
00:03:43,280 --> 00:03:48,080
‫Então, tudo isso é chamado para a implementação dos pais de levar dano.

61
00:03:48,650 --> 00:03:52,130
‫E a única coisa é que isso tem um tipo de retorno.

62
00:03:52,220 --> 00:03:54,400
‫Portanto, o dano real aplicado.

63
00:03:54,410 --> 00:03:55,550
‫Então vamos flutuar.

64
00:03:56,720 --> 00:03:59,090
‫Dano aplicado?

65
00:03:59,390 --> 00:04:01,430
‫O valor de retorno é de receber dano?

66
00:04:01,430 --> 00:04:04,760
‫Então vamos manter esse dano aplicado lá?

67
00:04:05,360 --> 00:04:11,390
‫E, realisticamente, isso será o mesmo que o valor do dano em nosso caso de uso específico,

68
00:04:11,390 --> 00:04:14,330
‫mas não necessariamente, então usaremos o dano aplicado.

69
00:04:14,780 --> 00:04:20,750
‫A próxima coisa que queremos fazer é manter as informações sobre quanta saúde realmente temos.

70
00:04:21,140 --> 00:04:24,770
‫Agora, a maneira como vou fazer isso é com duas variáveis aqui.

71
00:04:25,100 --> 00:04:30,200
‫A primeira é que vou fazer as duas novas propriedades porque quero deixar a saúde visível no

72
00:04:30,200 --> 00:04:31,880
‫inspetor, pelo menos por enquanto.

73
00:04:32,510 --> 00:04:37,160
‫E vamos fazer com que a propriedade do primeiro ano seja a saúde máxima.

74
00:04:37,160 --> 00:04:39,410
‫É para isso que inicializamos a saúde inicialmente.

75
00:04:39,710 --> 00:04:47,960
‫Então, sua propriedade, será um padrão de edição apenas porque será usado no início da reprodução.

76
00:04:48,260 --> 00:04:53,090
‫E assim, alterar esse valor de saúde máxima após o fato, não terá nenhum impacto.

77
00:04:53,090 --> 00:05:01,310
‫Então, Max Health, vou definir o Max health para 100 aqui e então teremos uma outra propriedade aqui, que, como eu disse,

78
00:05:01,310 --> 00:05:05,960
‫será uma propriedade de um ano apenas para podermos inspecionar isto.

79
00:05:06,350 --> 00:05:09,530
‫E eu vou ter isso como visível em qualquer lugar.

80
00:05:10,660 --> 00:05:15,010
‫Mas não editável porque não queremos poder mudar essa saúde, pelo menos não no momento.

81
00:05:15,580 --> 00:05:18,700
‫Você pode querer isso para fins de depuração, mas eu não.

82
00:05:19,090 --> 00:05:26,920
‫Então vamos ter saúde aqui e no começo do jogo vamos configurar para que essa saúde.

83
00:05:28,020 --> 00:05:30,720
‫É igual à saúde máxima.

84
00:05:31,140 --> 00:05:32,430
‫Então começamos com o spawn.

85
00:05:32,430 --> 00:05:35,640
‫Temos nossa saúde máxima e então podemos começar a diminuir.

86
00:05:35,640 --> 00:05:41,550
‫Ele define o tempo para um desafio para você diminuir a saúde do personagem.

87
00:05:41,910 --> 00:05:48,420
‫Então você vai usar o dano aplicado aqui ao invés da outra opção aqui.

88
00:05:48,420 --> 00:05:54,900
‫Então, temos nossos tiros, personagem, ponto, CP que recebem dano, temos uma quantidade de dano, mas na verdade queremos

89
00:05:54,900 --> 00:05:59,100
‫o dano aplicado que volta de receber dano, porque isso poderia ter

90
00:05:59,100 --> 00:06:01,800
‫sido reduzido por algum processo no pai.

91
00:06:02,670 --> 00:06:03,360
‫Então nós fazemos isso.

92
00:06:03,360 --> 00:06:10,380
‫Em seguida, reduzimos o valor da saúde e registramos os resultados apenas para simplificar, para que você possa verificar

93
00:06:10,380 --> 00:06:16,020
‫quando estiver atirando naquele aliado que a saúde dele está diminuindo e depois testá-lo.

94
00:06:16,050 --> 00:06:17,550
‫Então pause o vídeo e vá em frente.

95
00:06:17,970 --> 00:06:19,140
‫Ok, bem-vindo de volta.

96
00:06:19,140 --> 00:06:20,250
‫Então vamos dar uma chance.

97
00:06:20,670 --> 00:06:27,630
‫Então, saúde, nós basicamente queremos diminuir isso pelo dano aplicado.

98
00:06:29,290 --> 00:06:30,580
‫Mas isso é suficiente?

99
00:06:30,910 --> 00:06:36,850
‫Bem, e se o dano aplicado for maior do que a quantidade de saúde que nos resta?

100
00:06:37,420 --> 00:06:43,600
‫Bem, nesse caso, provavelmente queremos que o dano aplicado seja essa quantidade de saúde.

101
00:06:44,020 --> 00:06:47,560
‫Então, a maneira como podemos fazer isso é dizer que o dano foi aplicado.

102
00:06:48,830 --> 00:06:51,940
‫Deve ser igual aos f pontos matemáticos.

103
00:06:51,950 --> 00:06:54,320
‫Homens da saúde.

104
00:06:55,640 --> 00:06:57,560
‫E o dano aplicado.

105
00:06:57,980 --> 00:07:00,770
‫Então esse é o dano que basicamente queremos aplicar.

106
00:07:01,250 --> 00:07:05,990
‫Então, na verdade, vou em frente e renomeie isso em vez de chamá-lo de dano aplicado.

107
00:07:06,410 --> 00:07:09,770
‫Vou chamá-lo de dano a ser aplicado.

108
00:07:10,780 --> 00:07:19,480
‫Dano a ser aplicado como Saigon renomeie isso aqui e depois o dano a ser aplicado contra a saúde menos o dano

109
00:07:19,480 --> 00:07:22,120
‫a ser aplicado que faz sentido.

110
00:07:22,120 --> 00:07:25,210
‫E basicamente na pior das hipóteses isso vai ser a saúde.

111
00:07:25,210 --> 00:07:28,030
‫Então, isso vai definir nossa saúde para zero.

112
00:07:28,930 --> 00:07:32,890
‫E lembre-se, devemos devolver o dano que realmente aplicamos.

113
00:07:33,070 --> 00:07:41,710
‫Então, para retornar o dano ao apply, que agora foi aplicado e finalmente queremos um log UII no final aqui, que

114
00:07:41,710 --> 00:07:45,160
‫será apenas um aviso para que possamos vê-lo.

115
00:07:46,180 --> 00:07:54,940
‫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

116
00:07:54,940 --> 00:07:55,720
‫float.

117
00:07:56,350 --> 00:08:02,770
‫E então podemos colocar a saúde ali mesmo e ir em frente e clicar em construir.

118
00:08:04,920 --> 00:08:05,160
‫Agora.

119
00:08:05,190 --> 00:08:08,400
‫O meu é compilado depois de corrigir um ponto e vírgula ausente.

120
00:08:08,400 --> 00:08:15,810
‫Aqui, vamos verificar se temos ferramentas de desenvolvedor de janela e queremos o log de saída aqui para que possamos

121
00:08:15,840 --> 00:08:17,760
‫ver essa mensagem de log.

122
00:08:18,180 --> 00:08:25,650
‫E eu vou seguir em frente e apertar play e tentar atirar nesse personagem se eu atirar nele.

123
00:08:25,670 --> 00:08:26,120
‫Ai está.

124
00:08:26,130 --> 00:08:30,150
‫A saúde deixou 90, 76, t, blá, blá, blá, até zero.

125
00:08:30,150 --> 00:08:35,280
‫E se eu continuar atirando, não vamos abaixo de zero por causa daquela f matemática dot min.

126
00:08:35,640 --> 00:08:38,340
‫Então isso me diz que temos nossa saúde configurada corretamente.

127
00:08:38,340 --> 00:08:42,150
‫Apenas outra maneira de fazer isso em vez de fazê-lo dentro de um componente.

128
00:08:42,150 --> 00:08:46,380
‫Você pode fazer isso dentro do ator, bem como alguns prós e contras dessa abordagem.

129
00:08:46,740 --> 00:08:51,750
‫Eventualmente, você pode querer separar isso em componentes separados para que você possa reutilizá-lo em diferentes

130
00:08:51,750 --> 00:08:52,200
‫elementos.

131
00:08:52,500 --> 00:08:58,200
‫Mas S é apenas outra maneira, como eu digo agora, porque esse personagem não parece particularmente morto depois que o

132
00:08:58,200 --> 00:08:59,970
‫derrubamos para zero de saúde.

133
00:09:00,180 --> 00:09:02,910
‫Precisamos corrigir as animações para suportar isso.

134
00:09:02,910 --> 00:09:05,940
‫Então veremos isso na próxima palestra e nos vemos lá.

