﻿1
00:00:04,350 --> 00:00:05,010
‫Ciao e Benvenuto.

2
00:00:05,010 --> 00:00:11,900
‫L'argomento di questa lezione sarà la funzione di subire danni dell'attore e come la chiamiamo.

3
00:00:11,910 --> 00:00:14,460
‫Entriamo e scopriamo tutto al riguardo.

4
00:00:15,830 --> 00:00:21,050
‫Quindi, per poter infliggere danni a qualcosa, dobbiamo effettivamente avere qualcosa che

5
00:00:21,050 --> 00:00:22,010
‫possiamo colpire.

6
00:00:22,520 --> 00:00:29,210
‫Quindi andiamo al nostro percorso del browser dei contenuti e portiamo uno dei personaggi sparatutto di BP.

7
00:00:29,870 --> 00:00:36,110
‫Perché in realtà quello che succede è se porti un personaggio nella scena, automaticamente Unreal renderà

8
00:00:36,110 --> 00:00:42,140
‫questo personaggio controllato dall'aria e quelli che si generano all'inizio del giocatore saranno controllati

9
00:00:42,140 --> 00:00:43,070
‫dal giocatore.

10
00:00:43,190 --> 00:00:44,600
‫Quindi è fantastico.

11
00:00:44,600 --> 00:00:45,830
‫Questo è esattamente il comportamento che vogliamo.

12
00:00:45,860 --> 00:00:51,140
‫Se vado avanti e premo alt p, noterai che in realtà sono nel punto di spawn sbagliato,

13
00:00:51,140 --> 00:00:53,750
‫quindi forse voglio eliminare questo secondo inizio giocatore.

14
00:00:54,140 --> 00:00:56,900
‫Se colpisco LP ora sarà nella posizione giusta.

15
00:00:57,200 --> 00:00:58,580
‫C'è il mio nemico.

16
00:00:58,580 --> 00:01:00,020
‫Posso sparare al nemico.

17
00:01:00,020 --> 00:01:03,100
‫Ottengo l'effetto dei colpi, ma ovviamente non sto facendo alcun danno.

18
00:01:03,110 --> 00:01:04,040
‫Non ancora comunque.

19
00:01:04,670 --> 00:01:07,130
‫E fare danni è un processo in due parti.

20
00:01:07,520 --> 00:01:12,440
‫La prima parte invia il danno e la seconda lo riceve.

21
00:01:12,680 --> 00:01:18,440
‫In questa lezione, ci occuperemo dell'invio di danni al giocatore e delle chiamate di funzione

22
00:01:18,440 --> 00:01:19,100
‫coinvolte.

23
00:01:19,910 --> 00:01:28,040
‫Quindi quello principale che esamineremo è nell'attore Dot H e stiamo cercando una chiamata di

24
00:01:28,040 --> 00:01:30,560
‫funzione chiamata take Damage.

25
00:01:31,430 --> 00:01:35,810
‫E puoi vedere qui che è questa funzione virtuale qui restituisce un float.

26
00:01:35,930 --> 00:01:41,630
‫Ciò che sta restituendo è il danno effettivo applicato all'attore, l'importo effettivo che è stato effettivamente applicato.

27
00:01:42,500 --> 00:01:50,750
‫E quello che c'è dentro è l'importo del danno, un evento di danno, che ci fornisce maggiori informazioni su questo, il danno

28
00:01:50,750 --> 00:01:51,980
‫che è successo.

29
00:01:52,880 --> 00:01:54,380
‫Abbiamo un istigatore.

30
00:01:54,620 --> 00:01:58,460
‫Quindi questo sta dicendo chi era il controllore responsabile di aver causato questo danno?

31
00:01:59,120 --> 00:02:03,620
‫E poi il danno causato, qual è il responsabile dell'attore?

32
00:02:03,890 --> 00:02:06,350
‫Quindi in questo caso potrebbe essere una pistola.

33
00:02:06,350 --> 00:02:10,130
‫O sta dicendo qui il proiettile che è esploso, la roccia che è caduta su di te?

34
00:02:10,700 --> 00:02:15,590
‫In questo caso, la pistola che ti ha sparato sarà l'attore responsabile.

35
00:02:16,100 --> 00:02:18,710
‫Quindi questo è prendere danni in poche parole.

36
00:02:18,980 --> 00:02:24,110
‫La maggior parte di ciò dovrebbe essere abbastanza semplice da mettere insieme con l'eccezione di questa struttura

37
00:02:24,110 --> 00:02:25,220
‫dell'evento di danno.

38
00:02:25,220 --> 00:02:26,450
‫Ed è un po' più complicato.

39
00:02:26,450 --> 00:02:32,080
‫Quindi diamo un'occhiata a questa struttura dell'evento di danno e vediamo cosa possiamo fare?

40
00:02:32,090 --> 00:02:34,130
‫Come sarà composto?

41
00:02:34,130 --> 00:02:35,750
‫Come lo metteremo insieme?

42
00:02:36,110 --> 00:02:42,310
‫Ora, non è immediatamente ovvio, ma in realtà ci sono due sottotipi per questo evento di danno.

43
00:02:42,320 --> 00:02:47,300
‫In pratica, non creerai effettivamente un evento di danno EF, ma

44
00:02:47,300 --> 00:02:54,230
‫piuttosto creerai un evento di danno in punti EF, oppure creerai un evento di danno radiale EF.

45
00:02:54,470 --> 00:02:58,160
‫Questi sono i due principali tipi di danno che esistono in Unreal.

46
00:02:58,370 --> 00:03:02,300
‫Puoi creare più diversi tipi di danni per le tue cose personalizzate.

47
00:03:02,300 --> 00:03:08,480
‫Ad esempio, potresti avere un danno da fuoco con parametri diversi, ma nel nostro caso siamo interessati

48
00:03:08,480 --> 00:03:11,930
‫al radiale EF radiale e al danno puntuale.

49
00:03:11,930 --> 00:03:18,350
‫Quindi di nuovo radiale sarebbe qualcosa come una granata che esplode, nel qual caso vuoi dire, ok, dov'è

50
00:03:18,350 --> 00:03:20,950
‫il raggio, qual è la caduta?

51
00:03:20,960 --> 00:03:27,440
‫Tutti quei tipi di cose in cui il danno è molto più appropriato per cose come le

52
00:03:27,440 --> 00:03:28,070
‫pistole.

53
00:03:28,550 --> 00:03:35,900
‫Quindi creeremo un evento di danno in punti EF e andremo a cercare il costruttore, ecco

54
00:03:35,900 --> 00:03:40,040
‫il costruttore e possiamo vedere cosa sta prendendo.

55
00:03:40,250 --> 00:03:41,690
‫Sta prendendo di nuovo l'importo del danno.

56
00:03:41,690 --> 00:03:43,220
‫Quindi c'è un po' di ripetizione lì.

57
00:03:43,700 --> 00:03:48,350
‫Abbiamo il risultato del colpo che ha causato il verificarsi di questo punto di danno.

58
00:03:48,950 --> 00:03:51,350
‫Quindi abbiamo la direzione del tiro.

59
00:03:51,350 --> 00:03:51,650
‫Grande.

60
00:03:51,650 --> 00:03:52,850
‫L'abbiamo già calcolato.

61
00:03:52,850 --> 00:03:58,160
‫Stavo pensando un po' al futuro quando l'abbiamo fatto nella lezione precedente e poi in questa sottoclasse

62
00:03:58,160 --> 00:03:59,500
‫di tipo di danno.

63
00:03:59,510 --> 00:04:02,690
‫Ora questo può essere utilizzato per passare più informazioni.

64
00:04:02,690 --> 00:04:08,420
‫Quindi in realtà, invece di creare un diverso tipo di evento di danno, probabilmente creeresti un diverso

65
00:04:08,420 --> 00:04:09,470
‫tipo di danno.

66
00:04:09,470 --> 00:04:12,770
‫Quindi potresti avere un tipo di fuoco o qualcosa del genere.

67
00:04:13,040 --> 00:04:18,950
‫Nel nostro caso, poiché non abbiamo bisogno di alcun tipo di danno, non stiamo facendo danni da fuoco o qualcosa in

68
00:04:18,950 --> 00:04:20,870
‫più come quel danno da veleno.

69
00:04:21,170 --> 00:04:25,070
‫Quindi quello che faremo è semplicemente passare un punto nullo qui.

70
00:04:25,400 --> 00:04:32,030
‫Quindi proviamo a costruirne uno insieme e poi ti lascerò raffreddare quell'evento di subire danni.

71
00:04:33,050 --> 00:04:39,650
‫Quindi la prima cosa da fare è incollare il tipo, lo chiameremo evento di danno e

72
00:04:39,650 --> 00:04:41,270
‫poi lo costruiremo.

73
00:04:41,660 --> 00:04:45,830
‫Quindi prima di tutto, gli importi dei danni, beh, non ne abbiamo ancora uno per la pistola.

74
00:04:45,830 --> 00:04:47,870
‫Non abbiamo quanti danni fa.

75
00:04:48,260 --> 00:04:50,900
‫Quindi possiamo andare avanti e creare alcune informazioni.

76
00:04:50,900 --> 00:04:52,520
‫Hanno già una portata massima.

77
00:04:52,820 --> 00:04:54,620
‫Vogliamo altre proprietà qui.

78
00:04:54,680 --> 00:05:00,410
‫Sarà una modifica ovunque, il che ci consentirà di dire danni al galleggiante.

79
00:05:00,410 --> 00:05:01,370
‫Quanti danni facciamo?

80
00:05:01,370 --> 00:05:05,720
‫Lo farò danni di dieci e poi possiamo usarlo in C++.

81
00:05:05,720 --> 00:05:09,050
‫Quindi il danno è ciò che passeremo come primo argomento.

82
00:05:09,590 --> 00:05:11,480
‫Il secondo è quel risultato di successo?

83
00:05:11,480 --> 00:05:13,400
‫Bene, fortunatamente, abbiamo i risultati chiamati hit.

84
00:05:14,500 --> 00:05:22,390
‫Quindi la prossima cosa sarà la direzione del tiro che abbiamo già calcolato per il nostro emettitore sul

85
00:05:22,390 --> 00:05:23,050
‫posto.

86
00:05:24,000 --> 00:05:29,490
‫Quindi esamineremo la sottoclasse, che sarà solo un puntatore nullo.

87
00:05:30,180 --> 00:05:31,740
‫Va bene, così è fatto.

88
00:05:31,740 --> 00:05:36,000
‫La prossima cosa sarebbe semplicemente prendere l'attore che stiamo cercando di danneggiare.

89
00:05:36,010 --> 00:05:38,310
‫È abbastanza semplice dal colpo che fai.

90
00:05:38,790 --> 00:05:41,340
‫Hit dot prendi attore qui.

91
00:05:42,150 --> 00:05:48,570
‫Ma dovrai controllare che questo non sia nullo perché non vogliamo finire con un attore nullo su cui stiamo

92
00:05:48,570 --> 00:05:52,360
‫cercando di fare danni o finiremo per andare in crash.

93
00:05:53,220 --> 00:05:58,750
‫Quindi la tua sfida sarà chiamare quel controllo della funzione di subire danni per l'attore che è nullo.

94
00:05:58,770 --> 00:06:04,650
‫Prima di tutto, non vogliamo un attore nullo e chiama subisci danni e vediamo se riesci a farlo compilare.

95
00:06:04,650 --> 00:06:06,120
‫Tira il video e prova.

96
00:06:08,450 --> 00:06:08,640
‫Bene.

97
00:06:08,660 --> 00:06:09,230
‫Ben tornato.

98
00:06:09,740 --> 00:06:12,200
‫Quindi abbiamo il nostro personaggio qui dentro.

99
00:06:12,350 --> 00:06:13,520
‫Chiamerò solo questo.

100
00:06:14,000 --> 00:06:15,650
‫Darò a questo una piccola variabile.

101
00:06:15,650 --> 00:06:23,900
‫Quindi un puntatore attore sarà l'attore di successo e quindi andremo avanti e faremo un'istruzione if qui, in pratica

102
00:06:23,900 --> 00:06:31,700
‫dicendo che se l'attore di successo non è uguale a un puntatore nullo, allora andremo avanti con

103
00:06:31,700 --> 00:06:37,700
‫questo attore di successo per chiamare la funzione subisci danno su di esso.

104
00:06:38,450 --> 00:06:42,800
‫E faremo l'importo del danno qui è il primo argomento.

105
00:06:43,160 --> 00:06:44,600
‫Qual è stato il secondo?

106
00:06:44,600 --> 00:06:49,190
‫Mi limiterò a tornare a prendere danno e dare un'occhiata.

107
00:06:49,190 --> 00:06:54,470
‫Quindi il prossimo è la struttura che abbiamo messo insieme questo evento di danno.

108
00:06:54,620 --> 00:06:56,300
‫Mettiamolo in un secondo.

109
00:06:56,750 --> 00:07:00,740
‫Quindi daremo un'occhiata al controller che lo ha creato.

110
00:07:00,740 --> 00:07:02,420
‫Bene, quello è il nostro controllore.

111
00:07:02,420 --> 00:07:05,180
‫Il controller delle armi è quello che fa il danno.

112
00:07:05,180 --> 00:07:11,150
‫E poi questo è l'istigatore era l'ultimo parametro in attacco fisico.

113
00:07:11,150 --> 00:07:18,950
‫E probabilmente vogliamo costruire questa struttura all'interno di questo solo se l'attore non è uguale a punti nulli perché non è

114
00:07:18,950 --> 00:07:23,540
‫necessario se non abbiamo un attore a cui applicare questo danno.

115
00:07:24,560 --> 00:07:28,490
‫Quindi andiamo oltre e compiliamo e vediamo se funzionerà.

116
00:07:28,850 --> 00:07:30,230
‫Quindi ho un errore nel mio registro.

117
00:07:30,260 --> 00:07:31,790
‫Vediamo cosa sta succedendo.

118
00:07:31,790 --> 00:07:33,440
‫Oh, mi manca solo un punto e virgola.

119
00:07:33,650 --> 00:07:34,760
‫Bene, è abbastanza facile.

120
00:07:34,760 --> 00:07:37,010
‫Uno da sistemare dopo aver ottenuto l'atto due lì.

121
00:07:37,010 --> 00:07:38,060
‫Andiamo e riproviamo.

122
00:07:38,840 --> 00:07:39,230
‫Freddo.

123
00:07:39,230 --> 00:07:45,920
‫Tutto è stato compilato correttamente e possiamo semplicemente andare avanti e giocare e controllare quel set.

124
00:07:46,070 --> 00:07:51,950
‫Le riprese non ci daranno errori nulli o proveranno a mandare in crash il motore.

125
00:07:52,360 --> 00:07:53,660
‫Sembra che vada bene.

126
00:07:54,140 --> 00:08:00,740
‫Quindi passeremo alla prossima lezione in cui cercheremo di ricevere il danno su questo attore qui che

127
00:08:00,740 --> 00:08:03,350
‫abbiamo posizionato nel livello C che.

