﻿1
00:00:04,350 --> 00:00:05,010
‫Olá e bem-vindo.

2
00:00:05,010 --> 00:00:11,900
‫O assunto desta palestra será a função de tomar dano do ator e como a chamamos.

3
00:00:11,910 --> 00:00:14,460
‫Vamos mergulhar e descobrir tudo sobre isso.

4
00:00:15,830 --> 00:00:21,050
‫Então, para que possamos causar dano a algo, precisamos realmente ter algo que

5
00:00:21,050 --> 00:00:22,010
‫possamos acertar.

6
00:00:22,520 --> 00:00:29,210
‫Então vamos para a nossa rota de navegador de conteúdo e trazer um dos personagens do atirador da BP.

7
00:00:29,870 --> 00:00:36,110
‫Porque, na verdade, o que acontece é que, se você trouxer um personagem para a cena, automaticamente o Unreal

8
00:00:36,110 --> 00:00:42,140
‫fará com que esse personagem seja controlado pelo ar e os que aparecerem no início do jogador serão controlados

9
00:00:42,140 --> 00:00:43,070
‫pelo jogador.

10
00:00:43,190 --> 00:00:44,600
‫Então isso é ótimo.

11
00:00:44,600 --> 00:00:45,830
‫Esse é exatamente o comportamento que queremos.

12
00:00:45,860 --> 00:00:51,140
‫Se eu seguir em frente e apertar alt p, você notará que estou no ponto de spawn errado, então

13
00:00:51,140 --> 00:00:53,750
‫talvez eu queira deletar este segundo início de jogador.

14
00:00:54,140 --> 00:00:56,900
‫Se eu clicar em LP agora, ele estará no local certo.

15
00:00:57,200 --> 00:00:58,580
‫Aí está meu inimigo.

16
00:00:58,580 --> 00:01:00,020
‫Eu posso atirar no inimigo.

17
00:01:00,020 --> 00:01:03,100
‫Eu recebo o efeito de acertos, mas obviamente não estou causando nenhum dano.

18
00:01:03,110 --> 00:01:04,040
‫Ainda não de qualquer maneira.

19
00:01:04,670 --> 00:01:07,130
‫E causar danos é um processo de duas partes.

20
00:01:07,520 --> 00:01:12,440
‫A primeira parte está enviando o dano e a segunda parte está recebendo.

21
00:01:12,680 --> 00:01:18,440
‫Nesta palestra, vamos lidar com o envio de dano ao jogador e as chamadas de função envolvidas com

22
00:01:18,440 --> 00:01:19,100
‫isso.

23
00:01:19,910 --> 00:01:28,040
‫Portanto, o principal que veremos é o ator Dot H e estamos procurando por uma chamada de

24
00:01:28,040 --> 00:01:30,560
‫função chamada take Damage.

25
00:01:31,430 --> 00:01:35,810
‫E você pode ver aqui que é essa função virtual aqui ela retorna um float.

26
00:01:35,930 --> 00:01:41,630
‫O que está retornando é o dano real aplicado ao ator, a quantidade real que realmente foi aplicada.

27
00:01:42,500 --> 00:01:50,750
‫E o que entra é o valor do dano, um evento de dano, que nos dá mais informações sobre isso, o

28
00:01:50,750 --> 00:01:51,980
‫dano que aconteceu.

29
00:01:52,880 --> 00:01:54,380
‫Temos um instigador.

30
00:01:54,620 --> 00:01:58,460
‫Isso quer dizer quem foi o controlador responsável por causar esse dano?

31
00:01:59,120 --> 00:02:03,620
‫E então o dano causado, qual foi o responsável pelo ator?

32
00:02:03,890 --> 00:02:06,350
‫Então, neste caso, pode ser uma arma.

33
00:02:06,350 --> 00:02:10,130
‫Ou está dizendo aqui o projétil que explodiu, a pedra que caiu em você?

34
00:02:10,700 --> 00:02:15,590
‫Neste caso, a arma que atirou em você será o ator responsável.

35
00:02:16,100 --> 00:02:18,710
‫Então, isso é levar dano em poucas palavras.

36
00:02:18,980 --> 00:02:24,110
‫A maior parte disso deve ser bastante simples para você montar, com exceção dessa estrutura de

37
00:02:24,110 --> 00:02:25,220
‫evento de dano.

38
00:02:25,220 --> 00:02:26,450
‫E isso é um pouco mais complicado.

39
00:02:26,450 --> 00:02:32,080
‫Então, vamos dar uma olhada nessa estrutura de eventos de dano e ver o que podemos fazer?

40
00:02:32,090 --> 00:02:34,130
‫Como vai ser composto?

41
00:02:34,130 --> 00:02:35,750
‫Como vamos juntar isso?

42
00:02:36,110 --> 00:02:42,310
‫Agora, não é imediatamente óbvio, mas na verdade existem dois subtipos para esse evento de dano.

43
00:02:42,320 --> 00:02:47,300
‫Na prática, você não criará um evento de dano EF,

44
00:02:47,300 --> 00:02:54,230
‫mas sim um evento de dano de ponto EF ou um evento de dano radial EF.

45
00:02:54,470 --> 00:02:58,160
‫Esses são os dois principais tipos de dano que existem no Unreal.

46
00:02:58,370 --> 00:03:02,300
‫Você pode criar mais tipos diferentes de dano para suas próprias coisas personalizadas.

47
00:03:02,300 --> 00:03:08,480
‫Como você pode ter um dano de fogo com parâmetros diferentes, mas no nosso caso

48
00:03:08,480 --> 00:03:11,930
‫estamos interessados no dano radial e pontual EF.

49
00:03:11,930 --> 00:03:18,350
‫Então, radial novamente seria algo como uma granada explodindo, nesse caso você quer dizer, ok, onde está

50
00:03:18,350 --> 00:03:20,950
‫o raio, qual é a queda?

51
00:03:20,960 --> 00:03:27,440
‫Todos esses tipos de coisas em que o ponto de dano é muito mais apropriado para coisas como

52
00:03:27,440 --> 00:03:28,070
‫armas.

53
00:03:28,550 --> 00:03:35,900
‫Então, vamos criar um evento de dano de ponto EF e vamos procurar o construtor, aqui está o construtor

54
00:03:35,900 --> 00:03:40,040
‫para ele, e podemos ver o que ele está recebendo.

55
00:03:40,250 --> 00:03:41,690
‫Está tomando a quantidade de dano novamente.

56
00:03:41,690 --> 00:03:43,220
‫Então isso é um pouco de repetição lá.

57
00:03:43,700 --> 00:03:48,350
‫Estamos tendo o resultado de acerto que causou esse dano pontual.

58
00:03:48,950 --> 00:03:51,350
‫Então nós estamos tendo a direção do tiro.

59
00:03:51,350 --> 00:03:51,650
‫Excelente.

60
00:03:51,650 --> 00:03:52,850
‫Já calculamos isso.

61
00:03:52,850 --> 00:03:58,160
‫Eu estava pensando um pouco à frente quando fizemos isso na aula anterior e depois nessa subclasse

62
00:03:58,160 --> 00:03:59,500
‫de tipo de dano.

63
00:03:59,510 --> 00:04:02,690
‫Agora isso pode ser usado para passar mais informações.

64
00:04:02,690 --> 00:04:08,420
‫Então, na verdade, em vez de criar um tipo de evento de dano diferente, você provavelmente criaria um tipo

65
00:04:08,420 --> 00:04:09,470
‫de dano diferente.

66
00:04:09,470 --> 00:04:12,770
‫Então você pode ter um tipo de fogo ou algo assim.

67
00:04:13,040 --> 00:04:18,950
‫No nosso caso, como não precisamos de nenhum tipo de dano, não estamos causando dano de fogo ou qualquer coisa

68
00:04:18,950 --> 00:04:20,870
‫extra como esse dano de veneno.

69
00:04:21,170 --> 00:04:25,070
‫Então o que vamos fazer é apenas passar um ponto nulo para aqui.

70
00:04:25,400 --> 00:04:32,030
‫Então, vamos tentar construir um desses juntos e então eu vou deixar você esfriar esse evento de dano.

71
00:04:33,050 --> 00:04:39,650
‫Então a primeira coisa a fazer é colar o tipo, vamos chamá-lo de evento de dano e

72
00:04:39,650 --> 00:04:41,270
‫então vamos construí-lo.

73
00:04:41,660 --> 00:04:45,830
‫Então, em primeiro lugar, os danos são, bem, ainda não temos um desses para a arma.

74
00:04:45,830 --> 00:04:47,870
‫Nós não temos quanto dano ele faz.

75
00:04:48,260 --> 00:04:50,900
‫Assim, podemos ir em frente e criar algumas informações.

76
00:04:50,900 --> 00:04:52,520
‫Eles já têm um alcance máximo.

77
00:04:52,820 --> 00:04:54,620
‫Queremos mais algumas propriedades aqui.

78
00:04:54,680 --> 00:05:00,410
‫Será uma edição em qualquer lugar, o que nos permitirá dizer dano de flutuação.

79
00:05:00,410 --> 00:05:01,370
‫Quanto dano fazemos?

80
00:05:01,370 --> 00:05:05,720
‫Vou fazer um dano de dez e então podemos usar isso no C++.

81
00:05:05,720 --> 00:05:09,050
‫Então, dano é o que vamos passar como o primeiro argumento.

82
00:05:09,590 --> 00:05:11,480
‫O segundo é aquele resultado de acerto?

83
00:05:11,480 --> 00:05:13,400
‫Bem, felizmente, temos os resultados chamados hit.

84
00:05:14,500 --> 00:05:22,390
‫Então a próxima coisa será a direção do disparo que já calculamos para o nosso emissor no

85
00:05:22,390 --> 00:05:23,050
‫local.

86
00:05:24,000 --> 00:05:29,490
‫Então vamos olhar para a subclasse, que será apenas um ponteiro nulo.

87
00:05:30,180 --> 00:05:31,740
‫Ok, então está feito.

88
00:05:31,740 --> 00:05:36,000
‫A próxima coisa seria apenas pegar o ator que estamos tentando danificar.

89
00:05:36,010 --> 00:05:38,310
‫Isso é bastante direto do hit que você faz.

90
00:05:38,790 --> 00:05:41,340
‫Hit dot obter ator aqui.

91
00:05:42,150 --> 00:05:48,570
‫Mas você precisará verificar se isso não é nulo porque não queremos acabar com um ator nulo

92
00:05:48,570 --> 00:05:52,360
‫no qual estamos tentando causar danos ou vamos acabar travando.

93
00:05:53,220 --> 00:05:58,750
‫Portanto, seu desafio será chamar essa verificação de função de dano para o ator ser nulo.

94
00:05:58,770 --> 00:06:04,650
‫Em primeiro lugar, não queremos que um ator nulo e chame o dano e veja se você consegue compilar.

95
00:06:04,650 --> 00:06:06,120
‫Puxa o vídeo e vá em frente.

96
00:06:08,450 --> 00:06:08,640
‫OK.

97
00:06:08,660 --> 00:06:09,230
‫Bem vindo de volta.

98
00:06:09,740 --> 00:06:12,200
‫Então nós temos nosso personagem aqui.

99
00:06:12,350 --> 00:06:13,520
‫Eu só vou chamar isso.

100
00:06:14,000 --> 00:06:15,650
‫Vou dar a isso uma pequena variável.

101
00:06:15,650 --> 00:06:23,900
‫Então, um ponteiro de ator será o ator hit e então vamos em frente e fazer uma instrução if

102
00:06:23,900 --> 00:06:31,700
‫aqui, basicamente dizendo que se o ator hit não for igual a um ponteiro nulo, então vamos continuar

103
00:06:31,700 --> 00:06:37,700
‫com este ator de sucesso para chamar a função de receber dano nele.

104
00:06:38,450 --> 00:06:42,800
‫E nós vamos fazer a quantidade de dano aqui são os primeiros argumentos.

105
00:06:43,160 --> 00:06:44,600
‫Qual foi a segunda?

106
00:06:44,600 --> 00:06:49,190
‫Eu só vou navegar de volta para tomar dano e dar uma olhada.

107
00:06:49,190 --> 00:06:54,470
‫Então a próxima é a estrutura que montamos neste evento de dano.

108
00:06:54,620 --> 00:06:56,300
‫Vamos colocar isso em um segundo.

109
00:06:56,750 --> 00:07:00,740
‫Então vamos dar uma olhada no controlador que criou isso.

110
00:07:00,740 --> 00:07:02,420
‫Bem, esse é o nosso controlador.

111
00:07:02,420 --> 00:07:05,180
‫O controlador de armas é quem está causando o dano.

112
00:07:05,180 --> 00:07:11,150
‫E então este é o instigador foi o último parâmetro em dano de ataque.

113
00:07:11,150 --> 00:07:18,950
‫E provavelmente só queremos construir essa estrutura dentro disso se o ator não for igual a pontos nulos, porque não

114
00:07:18,950 --> 00:07:23,540
‫é necessário se não tivermos um ator para aplicar esse dano.

115
00:07:24,560 --> 00:07:28,490
‫Então vamos compilar e ver se isso vai funcionar.

116
00:07:28,850 --> 00:07:30,230
‫Então eu tenho um erro no meu log.

117
00:07:30,260 --> 00:07:31,790
‫Vamos ver o que está acontecendo.

118
00:07:31,790 --> 00:07:33,440
‫Ah, só está faltando um ponto e vírgula.

119
00:07:33,650 --> 00:07:34,760
‫Bem, isso é muito fácil.

120
00:07:34,760 --> 00:07:37,010
‫Um para consertar depois do ato dois lá.

121
00:07:37,010 --> 00:07:38,060
‫Vamos tentar de novo.

122
00:07:38,840 --> 00:07:39,230
‫Frio.

123
00:07:39,230 --> 00:07:45,920
‫Tudo foi compilado com sucesso e podemos ir em frente e jogar e apenas verificar esse conjunto.

124
00:07:46,070 --> 00:07:51,950
‫O tiro não vai nos dar nenhum erro nulo ou tentar travar o motor.

125
00:07:52,360 --> 00:07:53,660
‫Parece que está tudo bem.

126
00:07:54,140 --> 00:08:00,740
‫Então vamos para a próxima palestra onde vamos tentar receber o dano nesse ator aqui que

127
00:08:00,740 --> 00:08:03,350
‫colocamos no nível C disso.

