﻿1
00:00:04,130 --> 00:00:04,610
‫Ehi.

2
00:00:04,610 --> 00:00:05,450
‫Ben tornato.

3
00:00:05,480 --> 00:00:09,080
‫Ora, abbiamo già creato una classe base -- C++.

4
00:00:09,200 --> 00:00:16,310
‫In questo video, deriveremo da quella classe per creare una nuova classe figlio basata su base --.

5
00:00:16,340 --> 00:00:19,310
‫Quindi discutiamo del motivo per cui vorremmo fare una cosa del genere.

6
00:00:19,580 --> 00:00:26,300
‫Quindi abbiamo questa base -- class e sappiamo che avremo due classi diverse che derivano da base

7
00:00:26,300 --> 00:00:27,080
‫--.

8
00:00:27,080 --> 00:00:30,020
‫Avremo il nostro carro armato e avremo la torre.

9
00:00:30,050 --> 00:00:34,760
‫Ora, la base contiene mesh, una capsula e un punto di spawn.

10
00:00:34,760 --> 00:00:38,210
‫E queste sono cose che il Tank e la torre possono ereditare entrambi.

11
00:00:38,360 --> 00:00:44,480
‫Ma anche il serbatoio e la torre avranno alcune funzionalità che differiscono l'una dall'altra.

12
00:00:44,480 --> 00:00:50,060
‫Per prima cosa, il nostro carro armato si sposterà nel mondo e sarà anche controllato dal

13
00:00:50,060 --> 00:00:50,720
‫giocatore.

14
00:00:50,720 --> 00:00:55,220
‫Quindi dovrà essere configurato per ricevere input dalla tastiera e dal mouse.

15
00:00:55,220 --> 00:00:57,950
‫La torre, d'altra parte, starà lì a sedere.

16
00:00:57,980 --> 00:01:03,860
‫Non ha bisogno di alcun input da parte del giocatore poiché le sue azioni saranno tutte controllate dal codice.

17
00:01:03,860 --> 00:01:10,010
‫Quindi, poiché il serbatoio e la torre si comporteranno in modo diverso, utilizzeremo l'ereditarietà per creare classi

18
00:01:10,010 --> 00:01:16,730
‫figlie di base -- così possiamo ereditare ciò che hanno in comune e quindi aggiungere a ciascuna classe quelle

19
00:01:16,730 --> 00:01:18,290
‫caratteristiche che saranno diverse.

20
00:01:18,290 --> 00:01:23,960
‫Quindi siamo di nuovo qui nell'editor e andrò nelle nostre classi C++, la cartella di Tune Tank in

21
00:01:23,960 --> 00:01:29,240
‫cui abbiamo la nostra classe base -- e questa sarà la classe da cui deriviamo.

22
00:01:29,240 --> 00:01:35,480
‫Ora possiamo fare clic con il pulsante destro del mouse qui e selezionare crea una classe C++ derivata da base --.

23
00:01:35,480 --> 00:01:41,690
‫Quindi scegliamo quello e gli permetterò di inserire questa classe nella stessa cartella dei serbatoi di ottimizzazione

24
00:01:41,690 --> 00:01:43,550
‫dei sorgenti come base --.

25
00:01:43,610 --> 00:01:47,360
‫E per questo nome lo chiamerò tank.

26
00:01:47,360 --> 00:01:54,560
‫Quindi la nostra classe di carri armati sarà la classe per il nostro vero carro armato, che controlliamo e ci spostiamo

27
00:01:54,560 --> 00:01:55,400
‫nel mondo.

28
00:01:55,430 --> 00:01:57,410
‫Quindi facciamo clic su crea classe.

29
00:01:57,560 --> 00:02:06,470
‫Ok, quindi abbiamo compilato e il codice vs si è aperto con il nostro nuovo file tank e abbiamo anche Tank CP.

30
00:02:06,500 --> 00:02:08,210
‫Ora questi sono piuttosto spogli.

31
00:02:08,210 --> 00:02:14,570
‫Non c'è davvero niente qui, ma anche se non possiamo vederli, abbiamo ereditato alcune cose

32
00:02:14,570 --> 00:02:15,950
‫dalla classe base.

33
00:02:15,950 --> 00:02:19,580
‫Abbiamo quei componenti che abbiamo aggiunto alla base --.

34
00:02:19,580 --> 00:02:23,810
‫Anche se si tratta di variabili private, esistono ancora in questa classe.

35
00:02:23,810 --> 00:02:29,030
‫Quindi ora che abbiamo creato la nostra classe di carri armati, parliamo di un paio di cose.

36
00:02:29,030 --> 00:02:31,880
‫Il carro armato avrà bisogno che la torretta non lo farà.

37
00:02:31,880 --> 00:02:37,490
‫Bene, dal momento che controlleremo il carro armato, avremo bisogno di un modo per concentrarci sul carro armato mentre

38
00:02:37,490 --> 00:02:39,530
‫si muove per tutto il livello.

39
00:02:39,950 --> 00:02:43,880
‫Ora, in questa immagine, questo qui è un componente della fotocamera.

40
00:02:43,880 --> 00:02:47,030
‫È la classe C++ sei il tuo componente della fotocamera.

41
00:02:47,180 --> 00:02:55,100
‫E questa linea rossa qui è chiamata componente del braccio a molla e la sua classe C++ è il componente del braccio a molla.

42
00:02:55,100 --> 00:03:01,370
‫L'aggiunta di questi componenti a un -- ci consente di visualizzare il -- dal punto di vista della fotocamera.

43
00:03:01,370 --> 00:03:07,790
‫E se la telecamera e il suo braccio a molla sono attaccati al -- in qualche modo, seguiranno il -- in giro

44
00:03:07,790 --> 00:03:08,930
‫per il mondo.

45
00:03:08,930 --> 00:03:14,540
‫Ora, di nuovo qui nell'editor, se torniamo alla nostra cartella --'s e apriamo BP -- tank, possiamo fare clic sul

46
00:03:14,540 --> 00:03:16,730
‫viewport in modo da poter vedere tutto.

47
00:03:16,730 --> 00:03:22,100
‫E poi possiamo selezionare la composizione della capsula e fare clic su aggiungi e seleziona il braccio a molla.

48
00:03:22,100 --> 00:03:24,080
‫Questo è un componente del braccio a molla.

49
00:03:24,080 --> 00:03:25,610
‫Sembra una linea rossa.

50
00:03:25,730 --> 00:03:31,490
‫Ora, con il nostro componente del braccio a molla selezionato, possiamo aggiungere un altro componente e scegliere la fotocamera.

51
00:03:31,490 --> 00:03:37,400
‫Ora, una volta aggiunta la telecamera collegata al braccio a molla, ora abbiamo un modo per vedere dal punto di vista

52
00:03:37,400 --> 00:03:41,230
‫della telecamera una volta che abbiamo effettivamente iniziato a controllare il --.

53
00:03:41,240 --> 00:03:43,040
‫Ora il braccio a molla è piuttosto utile.

54
00:03:43,040 --> 00:03:49,250
‫Ha questa lunghezza del braccio target e se la regoli, vedrai che la fotocamera si regola insieme al braccio

55
00:03:49,250 --> 00:03:49,940
‫a molla.

56
00:03:49,940 --> 00:03:54,470
‫Quindi questo è un modo per controllare la distanza della fotocamera dal --.

57
00:03:54,470 --> 00:04:00,170
‫Quindi queste sono sicuramente cose che vogliamo nella nostra classe --, ma le aggiungeremo

58
00:04:00,170 --> 00:04:04,460
‫dal lato C++ piuttosto che aggiungerle semplicemente qui nel progetto.

59
00:04:04,460 --> 00:04:05,750
‫Quindi li eliminerò.

60
00:04:05,750 --> 00:04:10,130
‫Quindi, per la tua sfida, vorrei che aggiungessi alcune cose alla classe dei carri armati.

61
00:04:10,130 --> 00:04:15,890
‫Per uno, abbiamo bisogno di un componente del braccio a molla e di un componente della fotocamera, quindi crea queste variabili e

62
00:04:15,890 --> 00:04:16,790
‫rendile dei puntatori.

63
00:04:16,790 --> 00:04:21,920
‫Vai avanti e crea una sezione pubblica e una privata e inserisci queste variabili nella sezione privata.

64
00:04:21,920 --> 00:04:27,590
‫Ora avremo bisogno che queste siano proprietà U, quindi fornisci loro macro di proprietà e compila quelle macro con

65
00:04:27,590 --> 00:04:31,610
‫gli specificatori appropriati in base a ciò che hai imparato nelle lezioni precedenti.

66
00:04:31,640 --> 00:04:36,920
‫Ora, una volta create queste variabili, crea un costruttore e inseriscilo nella sezione pubblica

67
00:04:36,920 --> 00:04:44,120
‫e definiscilo nel file CP, quindi all'interno del costruttore costruisci i nostri componenti della fotocamera e del braccio a molla

68
00:04:44,120 --> 00:04:46,340
‫usando crea oggetto secondario predefinito.

69
00:04:46,340 --> 00:04:50,750
‫Assicurati di utilizzare l'allegato di installazione per collegare questi componenti a qualcosa.

70
00:04:50,750 --> 00:04:54,380
‫Vorremmo che il nostro componente del braccio a molla fosse attaccato al componente principale.

71
00:04:54,380 --> 00:05:00,500
‫Quindi usa il componente principale e imposta l'attacco di configurazione e per la fotocamera, collegalo al braccio a molla.

72
00:05:00,500 --> 00:05:02,870
‫Puoi fare riferimento alla classe di base.

73
00:05:03,020 --> 00:05:05,950
‫A Ricorda a te stesso come appare il codice per fare queste cose.

74
00:05:05,960 --> 00:05:09,710
‫Vai avanti e metti in pausa il video e aggiungi queste cose alla classe del carro armato.

75
00:05:12,580 --> 00:05:13,180
‫Tutto bene.

76
00:05:13,180 --> 00:05:14,380
‫Quindi siamo qui a Tank.

77
00:05:15,250 --> 00:05:16,540
‫Ora, prima le cose.

78
00:05:16,540 --> 00:05:20,110
‫Mi piacerebbe avere una sezione pubblica e una sezione privata.

79
00:05:20,350 --> 00:05:24,840
‫Quindi la sezione privata sarà dove aggiungeremo questi due nuovi componenti.

80
00:05:24,850 --> 00:05:31,810
‫Vorremo un componente del braccio a molla a U, che sarà un puntatore, e possiamo chiamare questo braccio a

81
00:05:31,810 --> 00:05:32,290
‫molla.

82
00:05:32,290 --> 00:05:37,760
‫E avremo anche bisogno di un nuovo componente della fotocamera e chiameremo questa fotocamera.

83
00:05:37,780 --> 00:05:38,260
‫Va bene.

84
00:05:38,260 --> 00:05:39,970
‫Se i tuoi nomi sono leggermente diversi.

85
00:05:40,090 --> 00:05:45,070
‫Ora, subito, vedo gli errori di IntelliSense qui, il che significa che dovrò

86
00:05:45,070 --> 00:05:46,420
‫dichiararli in avanti.

87
00:05:46,420 --> 00:05:51,280
‫Quindi userò la lezione con il braccio a molla e la lezione con la fotocamera.

88
00:05:51,280 --> 00:05:53,150
‫E ora questi sono dichiarati in avanti.

89
00:05:53,170 --> 00:05:55,240
‫Ora abbiamo bisogno delle nostre nuove proprietà.

90
00:05:55,240 --> 00:05:57,460
‫Quindi aggiungiamo le nuove macro di proprietà.

91
00:05:57,970 --> 00:06:02,930
‫E all'interno della macro di proprietà vorremo avere alcuni specificatori.

92
00:06:02,950 --> 00:06:09,550
‫Questi saranno visibili ovunque poiché abbiamo visto che i componenti devono essere visibili ovunque per poter

93
00:06:09,550 --> 00:06:13,010
‫regolare i loro parametri nel pannello dei dettagli.

94
00:06:13,030 --> 00:06:18,550
‫Ora, non vedo alcuna necessità immediata di esposizione al grafico dell'evento, quindi non penso che sia necessario leggere,

95
00:06:18,550 --> 00:06:20,600
‫scrivere o leggere blueprint del progetto.

96
00:06:20,620 --> 00:06:21,160
‫Va bene.

97
00:06:21,160 --> 00:06:23,770
‫Se li hai aggiunti, li lascerò fuori ora.

98
00:06:23,770 --> 00:06:25,630
‫Darò a questi una categoria.

99
00:06:26,410 --> 00:06:32,230
‫E poiché questi sono componenti, li inserirò nella nostra categoria di componenti insieme agli altri

100
00:06:32,230 --> 00:06:33,330
‫nostri componenti.

101
00:06:33,340 --> 00:06:38,470
‫Ora non li espongo al grafico degli eventi, quindi non ho bisogno che il nostro meta consenta l'accesso privato specificato

102
00:06:38,500 --> 00:06:38,940
‫qui.

103
00:06:38,950 --> 00:06:45,640
‫Quindi questo è sufficiente per il braccio a molla e vorrei dare al componente della fotocamera la stessa tua proprietà.

104
00:06:46,180 --> 00:06:47,590
‫Quindi lo sto copiando.

105
00:06:47,590 --> 00:06:49,270
‫Quindi ora abbiamo i nostri componenti.

106
00:06:49,420 --> 00:06:54,700
‫La prossima cosa da fare è costruirli nel costruttore, il che significa che abbiamo bisogno di un costruttore.

107
00:06:54,700 --> 00:07:02,650
‫Ora il costruttore avrà lo stesso nome della classe, quindi è un tank e dobbiamo definire questo costruttore nel

108
00:07:02,650 --> 00:07:03,910
‫file CP.

109
00:07:03,910 --> 00:07:08,710
‫Quindi andiamo su Tank CP e creiamo un tank.

110
00:07:09,520 --> 00:07:16,180
‫Quindi c'è il nostro corpo della funzione e il costruttore del serbatoio deve essere preceduto dal nome della nostra classe e

111
00:07:16,180 --> 00:07:17,710
‫dall'operatore di risoluzione dell'ambito.

112
00:07:17,710 --> 00:07:19,360
‫Questi sono questi doppi due punti qui.

113
00:07:19,360 --> 00:07:24,850
‫In questo modo non stiamo solo creando una nuova funzione, ma stiamo definendo il nostro costruttore per questa classe.

114
00:07:24,850 --> 00:07:27,130
‫Ora vorremmo costruire questi componenti.

115
00:07:27,130 --> 00:07:29,530
‫Quindi iniziamo con il braccio a molla.

116
00:07:29,860 --> 00:07:39,160
‫Quindi diremo che il braccio a molla equivale a creare un oggetto secondario predefinito e questo sarà un componente del braccio a molla u.

117
00:07:41,260 --> 00:07:45,310
‫E per il testo, chiamerò semplicemente questo braccio di primavera.

118
00:07:46,270 --> 00:07:54,490
‫E per l'attacco, imposteremo il braccio a molla, installeremo l'attacco, passando nel componente radice.

119
00:07:55,920 --> 00:07:56,220
‫Adesso.

120
00:07:56,220 --> 00:07:57,240
‫Lo stavo aspettando.

121
00:07:57,240 --> 00:07:58,050
‫Eccolo.

122
00:07:58,050 --> 00:08:03,920
‫L'errore IntelliSense che dice che il puntatore al tipo di classe incompleto usa il componente del braccio a molla.

123
00:08:03,930 --> 00:08:10,320
‫Questo perché dobbiamo includere il file di intestazione poiché stiamo creando e utilizzando un componente del braccio a molla.

124
00:08:10,320 --> 00:08:16,020
‫Quindi ecco la mia documentazione irreale del motore e se scorro verso il basso, c'è il mio include.

125
00:08:16,020 --> 00:08:21,820
‫Quindi lo copierò e lo incollerò proprio qui in alto, appena sotto il bordo del serbatoio.

126
00:08:21,900 --> 00:08:26,520
‫Ora, solo una nota a margine in generale, manterrai il tuo file di intestazione di classe incluso

127
00:08:26,520 --> 00:08:29,370
‫in alto e includerai i tuoi componenti al di sotto.

128
00:08:29,370 --> 00:08:30,750
‫Quindi abbiamo il nostro braccio a molla.

129
00:08:30,750 --> 00:08:32,790
‫È ora di costruire la fotocamera.

130
00:08:32,790 --> 00:08:39,300
‫Quindi diremo che la fotocamera crea un oggetto secondario predefinito, il componente della fotocamera.

131
00:08:40,050 --> 00:08:45,240
‫E nella macro di testo, la chiamerò semplicemente fotocamera.

132
00:08:45,240 --> 00:08:51,120
‫E per la fotocamera chiamerò l'allegato di installazione che passa nel braccio a molla.

133
00:08:51,390 --> 00:08:54,240
‫E ovviamente ho bisogno del file di intestazione della fotocamera.

134
00:08:54,240 --> 00:08:59,820
‫Quindi ecco la documentazione del motore irreale e qui dove dice documentazione di

135
00:08:59,820 --> 00:09:05,490
‫ricerca, scriverò il tuo componente della fotocamera e qui ti vedo il componente della fotocamera.

136
00:09:05,490 --> 00:09:06,600
‫Lo selezionerò.

137
00:09:06,600 --> 00:09:09,450
‫Ed ecco la documentazione per il componente della fotocamera.

138
00:09:09,450 --> 00:09:14,100
‫Quindi lo copierò per includerlo e incollarlo proprio qui nella parte superiore del nostro file.

139
00:09:14,100 --> 00:09:15,930
‫E ora dovremmo essere bravi.

140
00:09:15,960 --> 00:09:18,630
‫Ok, quindi andiamo avanti e compiliamo questo.

141
00:09:18,810 --> 00:09:19,230
‫Bene.

142
00:09:19,230 --> 00:09:21,180
‫Quindi ho una compilazione riuscita.

143
00:09:21,210 --> 00:09:24,210
‫Torniamo indietro nell'editor e qui su -- Tank.

144
00:09:24,240 --> 00:09:30,690
‫Ovviamente, non vediamo nulla perché -- il tank è derivato dalla base -- e i componenti che abbiamo appena

145
00:09:30,690 --> 00:09:33,510
‫aggiunto, li abbiamo aggiunti alla classe tank.

146
00:09:33,510 --> 00:09:39,720
‫Quindi BP -- tank non li riceverà perché non deriva dalla classe tank.

147
00:09:39,720 --> 00:09:44,910
‫Ora potremmo creare un nuovo progetto basato sulla classe di carri armati, ma poi dovremmo

148
00:09:44,910 --> 00:09:46,710
‫riconfigurare questi componenti da capo.

149
00:09:46,710 --> 00:09:50,190
‫E non ho proprio voglia di affrontare tutto quel lavoro una seconda volta.

150
00:09:50,190 --> 00:09:55,080
‫C'è un modo più semplice per riparare questo progetto per la classe dei carri armati.

151
00:09:55,080 --> 00:10:01,530
‫Lo facciamo salendo alle impostazioni della classe e nel pannello dei dettagli con le impostazioni della classe selezionate, vediamo

152
00:10:01,530 --> 00:10:04,980
‫le opzioni della classe e c'è questa classe genitore.

153
00:10:04,980 --> 00:10:10,800
‫Il menu a discesa mostra che è impostato su base, ma se facciamo clic su di esso, possiamo cercare

154
00:10:10,800 --> 00:10:13,200
‫tank e scegliere tank come classe base.

155
00:10:13,200 --> 00:10:17,220
‫E ora questo progetto è derivato dalla classe dei carri armati.

156
00:10:17,220 --> 00:10:23,070
‫Quindi vediamo che tutte quelle proprietà che abbiamo impostato con i nostri componenti come la mesh e la dimensione della

157
00:10:23,070 --> 00:10:24,630
‫capsula, sono ancora tutte lì.

158
00:10:24,660 --> 00:10:27,090
‫Solo ora vediamo una telecamera.

159
00:10:27,390 --> 00:10:29,730
‫In effetti, abbiamo un braccio a molla e una fotocamera.

160
00:10:29,730 --> 00:10:33,720
‫E se selezioniamo ora il braccio a molla, possiamo vedere quella linea rossa.

161
00:10:33,720 --> 00:10:34,710
‫Quindi questo è fantastico.

162
00:10:34,710 --> 00:10:38,880
‫Quindi potrei prendere questo componente del braccio a molla e cambiarne la lunghezza del braccio target.

163
00:10:38,880 --> 00:10:46,650
‫Se mi piace, potrei impostarlo su qualcosa come 600 e posso persino cambiarne la rotazione in modo che inclini la fotocamera

164
00:10:46,650 --> 00:10:52,770
‫verso il basso rispetto al serbatoio selezionando la modalità di rotazione e ruotandola leggermente verso l'alto.

165
00:10:52,770 --> 00:10:58,500
‫Mi piace Quindi ora vorrei sottolineare che non dovresti cambiare la posizione della fotocamera.

166
00:10:58,530 --> 00:11:03,990
‫Potrebbe essere allettante selezionare la telecamera e spostarla nel mondo in modo da posizionarla e inclinarla

167
00:11:03,990 --> 00:11:05,190
‫nel modo giusto.

168
00:11:05,190 --> 00:11:07,350
‫Ma questo non è il modo corretto di farlo.

169
00:11:07,350 --> 00:11:13,410
‫Il modo corretto è impostare la rotazione e la lunghezza del braccio target del componente del braccio a molla.

170
00:11:13,410 --> 00:11:17,790
‫E il motivo è che vuoi che la fotocamera sia attaccata all'estremità del braccio a molla.

171
00:11:17,790 --> 00:11:23,460
‫Il braccio a molla ha molte caratteristiche integrate come il restringimento quando la fotocamera urta

172
00:11:23,460 --> 00:11:29,430
‫contro un muro per evitare ostacoli, il blocco della visuale sul laghetto e altre cose del genere.

173
00:11:29,430 --> 00:11:35,070
‫Quindi vorrai che la videocamera sia attaccata all'estremità del braccio a molla e quindi regoli

174
00:11:35,070 --> 00:11:39,990
‫il braccio a molla anziché regolare la posizione e la rotazione della videocamera.

175
00:11:40,110 --> 00:11:47,070
‫Quindi in questo video abbiamo creato la classe tank e abbiamo derivato da base pond per ereditare quelle qualità

176
00:11:47,070 --> 00:11:48,960
‫dalla classe base pond.

177
00:11:49,140 --> 00:11:56,100
‫Abbiamo aggiunto un componente del braccio a molla e un componente della fotocamera e li abbiamo esposti all'editor utilizzando solo visibile

178
00:11:56,100 --> 00:11:58,500
‫e li abbiamo inseriti nella loro categoria.

179
00:11:58,500 --> 00:12:03,900
‫Quindi ci stiamo avvicinando al prodotto finito passo dopo passo e continueremo a sviluppare questo serbatoio

180
00:12:03,900 --> 00:12:05,130
‫nella prossima lezione.

181
00:12:05,460 --> 00:12:06,510
‫Ci vediamo presto.

