﻿1
00:00:04,400 --> 00:00:05,330
‫Ciao e Benvenuto.

2
00:00:05,330 --> 00:00:09,230
‫In questa lezione, infliggeremo danni a questo attore qui.

3
00:00:09,260 --> 00:00:13,400
‫Lo faremo sovrascrivendo un metodo virtuale chiamato subire danni sull'attore.

4
00:00:13,700 --> 00:00:18,320
‫E puoi vedere nel registro qui, abbiamo la salute che diminuisce mentre sparo a questo personaggio fino a

5
00:00:18,320 --> 00:00:21,830
‫zero e poi si ferma a zero, senza entrare in numeri negativi.

6
00:00:21,830 --> 00:00:23,570
‫Quindi tuffiamoci e vediamo come è fatto.

7
00:00:26,480 --> 00:00:32,810
‫Quindi, mentre attualmente siamo in grado di fare danni agli attori che abbiamo colpito qui, come questo

8
00:00:33,470 --> 00:00:36,530
‫ragazzo, in realtà non stiamo ricevendo quel danno.

9
00:00:36,560 --> 00:00:42,800
‫Quindi è qui che entrano in gioco i metodi virtuali dell'ultima lezione, perché proprio come iniziare il gioco o la tecnologia,

10
00:00:42,920 --> 00:00:46,010
‫vogliamo essere in grado di ricevere danni su un attore.

11
00:00:46,070 --> 00:00:50,630
‫Ora, fortunatamente, se vai dall'attore Dot H e dai un'occhiata qui, puoi vedere che

12
00:00:50,630 --> 00:00:52,940
‫c'è questo metodo virtuale di subire danni.

13
00:00:53,300 --> 00:01:00,330
‫Ora, questo può essere fatto anche con gli eventi e probabilmente lo avrai visto fare in questo modo prima di

14
00:01:00,350 --> 00:01:01,460
‫registrarti agli eventi.

15
00:01:01,520 --> 00:01:06,920
‫Ora quello che ho intenzione di fare è solo un modo diverso di fare danno, in cui abbiamo effettivamente il

16
00:01:06,920 --> 00:01:09,410
‫danno accumulato contro l'attore piuttosto che in un componente.

17
00:01:10,220 --> 00:01:15,620
‫E un modo semplice per ricevere quel danno è attraverso un metodo virtuale qui.

18
00:01:16,070 --> 00:01:18,440
‫E questo è il metodo virtuale che andremo a ignorare.

19
00:01:18,740 --> 00:01:24,860
‫Quindi andrò avanti e copierò questo e andrò al nostro attore in particolare, che è lo sparatutto.

20
00:01:25,100 --> 00:01:25,730
‫Sarà veloce.

21
00:01:25,730 --> 00:01:27,620
‫Può cercare il tiratore.

22
00:01:27,620 --> 00:01:28,550
‫Personaggio punto H.

23
00:01:29,120 --> 00:01:35,200
‫E l'unica cosa che voglio controllare è dove entra in gioco, l'attore punto H.

24
00:01:35,870 --> 00:01:41,420
‫Quindi, se scorriamo verso l'alto, dovremmo essere in grado di vedere in quale sezione ci troviamo qui.

25
00:01:42,170 --> 00:01:50,210
‫Quindi scorrerò fino a quando non trovo che, sia che siamo in pubblico o quello che fanno, siamo nella

26
00:01:50,210 --> 00:01:51,170
‫sezione pubblica.

27
00:01:51,170 --> 00:01:54,500
‫Quindi anche questo dovrebbe essere nella sezione pubblica qui.

28
00:01:54,530 --> 00:02:00,140
‫Quindi lo infilerò sotto la nostra tecnologia e imposterò il componente di input del giocatore nel

29
00:02:00,140 --> 00:02:02,930
‫punto dello sparatutto h e lo incollerò.

30
00:02:03,320 --> 00:02:10,670
‫E come ho detto nell'ultima lezione, puoi usare l'override per assicurarti di sovrascrivere un metodo virtuale dal

31
00:02:10,670 --> 00:02:16,340
‫genitore e non è necessario avere il virtuale qui davanti, ma lo terremo

32
00:02:16,340 --> 00:02:17,000
‫comunque.

33
00:02:17,240 --> 00:02:21,530
‫E qui puoi vedere tutti i dati che stanno arrivando per subire danni.

34
00:02:21,530 --> 00:02:29,030
‫Abbiamo un importo del danno, gli eventi di danno e il controller che sta causando il danno, l'istigatore e la

35
00:02:29,030 --> 00:02:30,470
‫causa del danno.

36
00:02:30,470 --> 00:02:34,190
‫Anche tutta quella roba che avevamo passato con la pistola sta spuntando qui.

37
00:02:34,190 --> 00:02:34,910
‫Quindi è fantastico.

38
00:02:35,270 --> 00:02:41,000
‫Ora, se andiamo avanti e facciamo un turno di controllo, P crea l'implementazione o copia e incolla, allora

39
00:02:41,000 --> 00:02:43,610
‫possiamo andare e fare l'implementazione per subire danni.

40
00:02:43,910 --> 00:02:49,190
‫Ma la prima cosa di cui diffidare è che ogni volta che stiamo sovrascrivendo

41
00:02:49,190 --> 00:02:56,420
‫qualcosa, vogliamo pensare di chiamare la versione della classe genitore di take Damage perché potrebbe esserci qualche implementazione che

42
00:02:56,750 --> 00:02:58,340
‫deve essere eseguita.

43
00:02:58,970 --> 00:03:00,080
‫Quindi è quello che faremo.

44
00:03:00,080 --> 00:03:01,040
‫Lo facciamo sempre.

45
00:03:01,040 --> 00:03:02,150
‫L'abbiamo fatto con la tecnologia.

46
00:03:02,150 --> 00:03:03,650
‫L'abbiamo fatto con Begin Play.

47
00:03:03,650 --> 00:03:07,520
‫Puoi vedere che all'inizio abbiamo sempre questo fantastico, e questo perché quando

48
00:03:07,520 --> 00:03:10,970
‫sovrascriviamo un metodo lo riscriviamo completamente, rimuoviamo completamente quel comportamento.

49
00:03:11,240 --> 00:03:16,910
‫Quindi, se vogliamo quel comportamento, cosa che di solito facciamo, allora dovremmo sempre iniziare con un aspetto da cool a

50
00:03:16,940 --> 00:03:17,420
‫super.

51
00:03:17,600 --> 00:03:19,760
‫Quindi faremo un bel danno.

52
00:03:21,420 --> 00:03:23,460
‫Questo prenderà l'importo del danno.

53
00:03:23,550 --> 00:03:25,290
‫Quindi è qui che diventa un po' noioso.

54
00:03:25,290 --> 00:03:27,810
‫Purtroppo, il mio strumento di completamento automatico non lo fa per noi.

55
00:03:27,810 --> 00:03:28,970
‫Evento di danno.

56
00:03:30,560 --> 00:03:32,600
‫Allora qual è stato il prossimo?

57
00:03:32,600 --> 00:03:34,760
‫Avevamo il controllo.

58
00:03:35,090 --> 00:03:37,330
‫Quindi l'istigatore dell'evento, è solo una copia.

59
00:03:37,910 --> 00:03:42,140
‫E poi abbiamo l'autore del danno, che è l'attore.

60
00:03:43,280 --> 00:03:48,080
‫Quindi tutto questo viene chiamato all'implementazione dei genitori di subire danni.

61
00:03:48,650 --> 00:03:52,130
‫E l'unica cosa è che questo ha un tipo di ritorno.

62
00:03:52,220 --> 00:03:54,400
‫Quindi il danno effettivo applicato.

63
00:03:54,410 --> 00:03:55,550
‫Quindi galleggeremo.

64
00:03:56,720 --> 00:03:59,090
‫Danno applicato?

65
00:03:59,390 --> 00:04:01,430
‫Il valore di ritorno è da subire danni?

66
00:04:01,430 --> 00:04:04,760
‫Quindi terremo solo in mano quel danno applicato lì?

67
00:04:05,360 --> 00:04:11,390
‫E realisticamente, sarà lo stesso dell'importo del danno nel nostro caso d'uso particolare, ma non

68
00:04:11,390 --> 00:04:14,330
‫necessariamente, quindi utilizzeremo il danno applicato.

69
00:04:14,780 --> 00:04:20,750
‫La prossima cosa che vogliamo fare è conservare le informazioni su quanta salute abbiamo effettivamente.

70
00:04:21,140 --> 00:04:24,770
‫Ora il modo in cui lo farò è con due variabili qui.

71
00:04:25,100 --> 00:04:30,200
‫Il primo è che realizzerò entrambe le nuove proprietà perché voglio rendere visibile la salute

72
00:04:30,200 --> 00:04:31,880
‫nell'ispettore, almeno per ora.

73
00:04:32,510 --> 00:04:37,160
‫E faremo in modo che la proprietà del primo anno sia la salute massima.

74
00:04:37,160 --> 00:04:39,410
‫Questo è ciò su cui inizializziamo la salute inizialmente.

75
00:04:39,710 --> 00:04:47,960
‫Quindi, proprietà, sarà una modifica predefinita solo perché verrà utilizzata all'inizio della riproduzione.

76
00:04:48,260 --> 00:04:53,090
‫E quindi cambiare quel valore di salute massima dopo il fatto, non avrà alcun impatto.

77
00:04:53,090 --> 00:05:01,310
‫Quindi Salute massima, imposterò la salute massima su 100 qui e poi avremo un'altra proprietà qui, che, come ho detto,

78
00:05:01,310 --> 00:05:05,960
‫sarà una proprietà annuale solo per noi da poter ispezionare esso.

79
00:05:06,350 --> 00:05:09,530
‫E lo avrò visibile ovunque.

80
00:05:10,660 --> 00:05:15,010
‫Ma non modificabile perché non vogliamo poter cambiare quella salute, almeno non al momento.

81
00:05:15,580 --> 00:05:18,700
‫Potresti volerlo per scopi di debug, ma non lo faccio.

82
00:05:19,090 --> 00:05:26,920
‫Quindi avremo salute qui e all'inizio del gioco lo imposteremo in modo che quella salute.

83
00:05:28,020 --> 00:05:30,720
‫È uguale alla salute massima.

84
00:05:31,140 --> 00:05:32,430
‫Quindi iniziamo con lo spawn.

85
00:05:32,430 --> 00:05:35,640
‫Abbiamo la nostra massima salute e poi possiamo iniziare a diminuire.

86
00:05:35,640 --> 00:05:41,550
‫Stabilisce il tempo per una sfida per te per ridurre la salute del personaggio.

87
00:05:41,910 --> 00:05:48,420
‫Quindi utilizzerai il danno applicato qui piuttosto che l'altra opzione qui.

88
00:05:48,420 --> 00:05:54,900
‫Quindi abbiamo i nostri tiri, personaggio, punto, CP che subiscono danni, abbiamo un importo di danno, ma in realtà vogliamo

89
00:05:54,900 --> 00:05:59,100
‫che venga applicato il danno che ritorna da subire danni perché potrebbe essere

90
00:05:59,100 --> 00:06:01,800
‫stato ridotto da qualche processo nel genitore.

91
00:06:02,670 --> 00:06:03,360
‫Quindi lo facciamo.

92
00:06:03,360 --> 00:06:10,380
‫Quindi riduciamo il valore della salute e registriamo i risultati solo per semplicità in modo che tu possa controllare

93
00:06:10,380 --> 00:06:16,020
‫che quando stai sparando a quell'alleato che la sua salute stia peggiorando e quindi testarlo.

94
00:06:16,050 --> 00:06:17,550
‫Quindi metti in pausa il video e prova.

95
00:06:17,970 --> 00:06:19,140
‫Ok, bentornato.

96
00:06:19,140 --> 00:06:20,250
‫Quindi proviamoci.

97
00:06:20,670 --> 00:06:27,630
‫Quindi la salute, in pratica, vogliamo ridurla con il danno applicato.

98
00:06:29,290 --> 00:06:30,580
‫Ma basta?

99
00:06:30,910 --> 00:06:36,850
‫Ebbene, cosa succede se il danno applicato è maggiore della quantità di salute che ci è rimasta?

100
00:06:37,420 --> 00:06:43,600
‫Bene, in quel caso, probabilmente vorremmo che il danno applicato fosse quella quantità di salute.

101
00:06:44,020 --> 00:06:47,560
‫Quindi il modo in cui possiamo farlo è dire che il danno si è applicato.

102
00:06:48,830 --> 00:06:51,940
‫Dovrebbe essere uguale ai punti f matematica.

103
00:06:51,950 --> 00:06:54,320
‫Uomini della salute.

104
00:06:55,640 --> 00:06:57,560
‫E il danno applicato.

105
00:06:57,980 --> 00:07:00,770
‫Quindi questo è il danno che fondamentalmente vogliamo applicare.

106
00:07:01,250 --> 00:07:05,990
‫Quindi andremo avanti e lo rinominerò invece di chiamarlo danno applicato.

107
00:07:06,410 --> 00:07:09,770
‫Lo chiamerò il danno da applicare.

108
00:07:10,780 --> 00:07:19,480
‫Danno da applicare come Saigon rinomina che qua e poi il danno da applicare contro la salute meno il danno

109
00:07:19,480 --> 00:07:22,120
‫da applicare che ha senso.

110
00:07:22,120 --> 00:07:25,210
‫E fondamentalmente, nel peggiore dei casi, sarà la salute.

111
00:07:25,210 --> 00:07:28,030
‫Quindi questo azzererà la nostra salute.

112
00:07:28,930 --> 00:07:32,890
‫E ricorda, dovremmo restituire il danno che abbiamo effettivamente applicato.

113
00:07:33,070 --> 00:07:41,710
‫Quindi, per restituire il danno da applicare, che ora è stato applicato e finalmente vogliamo un registro UII alla fine qui, che sarà

114
00:07:41,710 --> 00:07:45,160
‫solo un avvertimento in modo da poterlo vedere.

115
00:07:46,180 --> 00:07:54,940
‫E voglio che questa sia la salute rimasta qui e che sarà una percentuale F, 2% F minuscola per mostrare un

116
00:07:54,940 --> 00:07:55,720
‫float.

117
00:07:56,350 --> 00:08:02,770
‫E poi possiamo inserire la salute proprio lì e andare avanti e premere build.

118
00:08:04,920 --> 00:08:05,160
‫Adesso.

119
00:08:05,190 --> 00:08:08,400
‫Il mio è stato compilato dopo aver corretto un punto e virgola mancante.

120
00:08:08,400 --> 00:08:15,810
‫Qui, andiamo e assicuriamoci di avere uno strumento per sviluppatori di finestre e vogliamo il registro di output qui in modo da poter

121
00:08:15,840 --> 00:08:17,760
‫vedere quel messaggio di registro.

122
00:08:18,180 --> 00:08:25,650
‫E ho intenzione di andare avanti e premere play e andare e provare a sparare a questo personaggio se gli sparo.

123
00:08:25,670 --> 00:08:26,120
‫Ecco qua.

124
00:08:26,130 --> 00:08:30,150
‫La salute è rimasta 90, 76, t, bla, bla, bla, fino a zero.

125
00:08:30,150 --> 00:08:35,280
‫E se continuo a scattare, non scendiamo sotto lo zero a causa di quel punto min.

126
00:08:35,640 --> 00:08:38,340
‫Quindi questo mi dice che abbiamo impostato correttamente la nostra salute.

127
00:08:38,340 --> 00:08:42,150
‫Solo un altro modo per farlo invece di farlo all'interno di un componente.

128
00:08:42,150 --> 00:08:46,380
‫Puoi farlo all'interno dell'attore così come alcuni pro e contro di quell'approccio.

129
00:08:46,740 --> 00:08:51,750
‫Alla fine, potresti volerlo spogliare in componenti separati in modo da poterlo riutilizzare su elementi

130
00:08:51,750 --> 00:08:52,200
‫diversi.

131
00:08:52,500 --> 00:08:58,200
‫Ma S è solo un altro modo, come dico ora, perché questo personaggio non sembra particolarmente morto dopo che lo

132
00:08:58,200 --> 00:08:59,970
‫abbiamo abbattuto a zero salute.

133
00:09:00,180 --> 00:09:02,910
‫Dobbiamo sistemare le animazioni per supportarlo.

134
00:09:02,910 --> 00:09:05,940
‫Quindi lo vedremo nella prossima conferenza e ci vediamo lì.

