﻿1
00:00:04,530 --> 00:00:06,030
‫Ciao e Benvenuto.

2
00:00:06,060 --> 00:00:10,920
‫In questa lezione creeremo una pistola e impareremo come architetteremo le pistole per

3
00:00:10,920 --> 00:00:17,250
‫questo gioco in modo che siano intercambiabili, in modo da poter avere proprietà diverse su diversi tipi

4
00:00:17,250 --> 00:00:18,090
‫di pistole.

5
00:00:18,480 --> 00:00:24,810
‫Ed è generalmente così che funzionano le architetture negli sparatutto in prima persona o in terza persona, tuffiamoci e vediamo come

6
00:00:24,810 --> 00:00:25,650
‫è fatto.

7
00:00:27,060 --> 00:00:27,300
‫Bene.

8
00:00:27,300 --> 00:00:30,630
‫Quindi non abbiamo controllato il nostro piano di progetto per un po' di tempo.

9
00:00:31,020 --> 00:00:32,600
‫Non siamo arrivati al movimento del piano.

10
00:00:32,610 --> 00:00:35,160
‫Per ora è finita l'animazione, è fatta.

11
00:00:35,520 --> 00:00:39,180
‫E le riprese, questa è la prossima cosa su cui dobbiamo concentrarci.

12
00:00:39,690 --> 00:00:45,570
‫Ora, è un po' confuso qui perché la nostra rete sembra già avere una pistola, ma in realtà

13
00:00:45,570 --> 00:00:47,220
‫non vogliamo usare questa pistola.

14
00:00:47,220 --> 00:00:49,110
‫Vogliamo usarlo in un modo diverso.

15
00:00:49,650 --> 00:00:55,950
‫Il motivo è che in un tipo di gioco sparatutto, spesso vuoi essere in grado di passare da un'arma all'altra o almeno

16
00:00:56,280 --> 00:00:59,160
‫essere in grado di avere personaggi diversi, avere armi diverse.

17
00:00:59,490 --> 00:01:05,790
‫E il modo più semplice per farlo è progettare la pistola come una cosa separata dal personaggio in modo che

18
00:01:05,790 --> 00:01:09,720
‫tu possa scambiarli in modo che possa essere responsabile di come spara.

19
00:01:09,780 --> 00:01:14,760
‫Se si tratta di un lanciarazzi, di un fucile o di un fucile, faranno le cose in modi diversi.

20
00:01:15,450 --> 00:01:20,670
‫Ora potresti dire, ok, bene, creiamo un componente della pistola e possiamo incollare i componenti della pistola

21
00:01:21,000 --> 00:01:22,380
‫sotto la nostra rete.

22
00:01:22,770 --> 00:01:30,390
‫Funzionerebbe, tranne per il fatto che perdiamo la modularità che ci consente di aggiungere più componenti alla

23
00:01:30,390 --> 00:01:31,110
‫pistola.

24
00:01:31,500 --> 00:01:38,700
‫Quindi quello che vogliamo davvero fare è seguire la strada dell'avere un attore per la pistola che sia l'identificazione del bambino per il

25
00:01:38,700 --> 00:01:39,780
‫personaggio del tiratore.

26
00:01:39,810 --> 00:01:43,590
‫Ora, questo è qualcosa che non ci siamo mai imbattuti prima, ma funziona così.

27
00:01:44,310 --> 00:01:51,150
‫Puoi avere un personaggio sparatutto e una pistola da bambino, e il personaggio sparatutto può avere più componenti che

28
00:01:51,150 --> 00:01:53,010
‫sono figli l'uno dell'altro.

29
00:01:53,010 --> 00:01:58,350
‫Quindi hai la capsula, abbiamo la maglia come figli della capsula al momento, e i

30
00:01:58,350 --> 00:02:01,710
‫componenti della pistola possono essere schermati per quello.

31
00:02:02,010 --> 00:02:05,700
‫Quindi la mesh ottiene l'ID figlio nella mesh del personaggio.

32
00:02:06,150 --> 00:02:11,460
‫E se ha altri componenti come forse un effetto particellare sulla volata della pistola, potrebbe essere

33
00:02:11,460 --> 00:02:13,110
‫l'ID figlio della mesh.

34
00:02:13,410 --> 00:02:19,590
‫Quindi puoi vedere che queste gerarchie sono in qualche modo indipendenti, che hai i componenti della

35
00:02:19,590 --> 00:02:25,560
‫scena, quelli che si sono trasformati sulla destra, e possono trovarsi in una certa gerarchia.

36
00:02:25,980 --> 00:02:31,280
‫E poi la gerarchia degli attori segue effettivamente la gerarchia dei componenti della scena.

37
00:02:31,290 --> 00:02:33,240
‫Gli attori non hanno una propria gerarchia.

38
00:02:33,240 --> 00:02:35,580
‫Questo è il pezzo che richiede un po' di tempo per farti girare la testa.

39
00:02:35,580 --> 00:02:38,070
‫È stato un momento aha quando ha fatto clic per me.

40
00:02:38,520 --> 00:02:44,580
‫È che in realtà non c'è una gerarchia di attori, c'è solo una gerarchia di componenti della scena.

41
00:02:44,940 --> 00:02:50,430
‫Ci sono attori che possiedono gli stessi componenti e quindi finiscono per avere una gerarchia perché

42
00:02:50,430 --> 00:02:55,950
‫i loro componenti della scena sono correlati tra loro, ma in realtà non hanno una relazione tra loro.

43
00:02:56,670 --> 00:03:02,760
‫Quindi, detto questo, per impostare il contesto, la prima cosa che vogliamo fare è creare noi

44
00:03:02,760 --> 00:03:05,190
‫stessi un attore di armi C++.

45
00:03:05,670 --> 00:03:11,730
‫E in questo caso, non sarà una pedina o un personaggio o qualcosa del genere.

46
00:03:11,730 --> 00:03:14,400
‫Sarà solo un attore diretto perché non abbiamo bisogno di alcun comportamento.

47
00:03:14,400 --> 00:03:16,290
‫Non è necessario possederlo, non abbiamo bisogno di fare nulla.

48
00:03:16,290 --> 00:03:17,880
‫È solo un attore semplice, semplice.

49
00:03:18,390 --> 00:03:19,710
‫Quindi andiamo avanti e facciamolo.

50
00:03:19,710 --> 00:03:21,030
‫In effetti, una piccola sfida per te.

51
00:03:21,030 --> 00:03:26,190
‫Vai avanti e crea quell'attore C++, qualcosa che dovresti essere in grado di fare una piccola mini sfida, provalo.

52
00:03:26,760 --> 00:03:27,780
‫Ok, sono tornato.

53
00:03:27,780 --> 00:03:28,860
‫Lo farò.

54
00:03:28,890 --> 00:03:34,470
‫Nuova classe C++ e non abbiamo bisogno di avere vediamo, attore.

55
00:03:34,470 --> 00:03:35,490
‫Questo è tutto ciò che vogliamo scegliere.

56
00:03:35,910 --> 00:03:42,060
‫E andremo avanti e chiameremo questa pistola, semplice come creiamo quella classe.

57
00:03:42,330 --> 00:03:42,550
‫Bene?

58
00:03:42,570 --> 00:03:46,350
‫E una volta fatto, apparirà nel tuo editor di codice.

59
00:03:46,380 --> 00:03:52,170
‫E non abbiamo ancora bisogno di fare nulla con esso perché la prima cosa che voglio fare è creare una sottoclasse

60
00:03:52,530 --> 00:03:53,340
‫di progetto.

61
00:03:53,340 --> 00:03:59,370
‫Quindi fai clic con il pulsante destro del mouse sulla tua classe nel browser dei contenuti e invece di chiamarla Mike e non so quali

62
00:03:59,370 --> 00:04:04,530
‫impostazioni predefinite automatiche di BP sottolineano la pistola, lo metterò alla radice del contenuto quattro Ora possiamo fare un po'

63
00:04:04,530 --> 00:04:06,630
‫di riorganizzando una volta che avremo più classi.

64
00:04:06,900 --> 00:04:09,750
‫Come ho detto prima, creeremo la classe Blueprint.

65
00:04:09,750 --> 00:04:10,890
‫Come puoi vedere, è completamente vuoto.

66
00:04:10,890 --> 00:04:12,450
‫Ha questa radice di scena predefinita.

67
00:04:12,840 --> 00:04:14,340
‫Vorremo sistemarlo.

68
00:04:14,470 --> 00:04:20,460
‫Quello che vogliamo fare in realtà è aggiungere un componente in C++ perché questo è un corso C++.

69
00:04:20,460 --> 00:04:23,970
‫Facciamo pratica con l'aggiunta di componenti in C++.

70
00:04:24,150 --> 00:04:29,700
‫Significa anche che avremo accesso a quei componenti dall'interno del nostro codice C++ per manipolare e scrivere

71
00:04:29,700 --> 00:04:35,520
‫il nostro codice che ora la configurazione che vorremo è avere un componente root della scena, che sarà

72
00:04:35,520 --> 00:04:39,450
‫semplicemente componenti della scena e poi una mesh che ne è figlia.

73
00:04:39,450 --> 00:04:40,230
‫Perché lo vogliamo?

74
00:04:40,230 --> 00:04:47,730
‫Perché vogliamo essere in grado di cambiare la posizione della mesh rispetto alle radici della pistola in modo da

75
00:04:47,730 --> 00:04:52,110
‫poter posizionare sostanzialmente la maniglia in posizioni diverse per maglie diverse.

76
00:04:52,110 --> 00:04:55,440
‫Quindi, se abbiamo pistole diverse, possiamo assicurarci che abbiano tutte le impugnature nello stesso posto.

77
00:04:55,440 --> 00:05:00,540
‫Quindi, quando lo attacchiamo alla mano del personaggio, apparirà con la maniglia nella mano del personaggio.

78
00:05:01,230 --> 00:05:02,580
‫Ok, quindi come lo faremo?

79
00:05:02,580 --> 00:05:08,550
‫Passeremo al nostro codice di Visual Studio e creerò una sezione privata qui sotto dove

80
00:05:08,850 --> 00:05:12,630
‫memorizzeremo le nuove proprietà per i diversi componenti che

81
00:05:12,630 --> 00:05:13,050
‫creeremo.

82
00:05:13,590 --> 00:05:17,130
‫Quindi creerò una nuova proprietà visibile ovunque.

83
00:05:17,610 --> 00:05:21,210
‫Vogliamo che i nostri componenti siano visibili ovunque perché i loro puntatori di punti, non vogliamo

84
00:05:21,210 --> 00:05:26,370
‫essere in grado di modificare i puntatori, ma vogliamo essere in grado di vedere le proprietà di quei puntatori ed essere in grado di farlo.

85
00:05:26,600 --> 00:05:26,960
‫Quelli.

86
00:05:26,960 --> 00:05:30,830
‫E questo diventa quindi l'ambito di competenza della classe a cui stiamo puntando.

87
00:05:30,950 --> 00:05:34,550
‫Che quindi decide cosa viene mostrato, cosa è modificabile.

88
00:05:34,580 --> 00:05:38,240
‫Quindi tutto ciò che vogliamo dire qui è che non è il punto di essere modificabile.

89
00:05:38,510 --> 00:05:39,980
‫Quindi ecco perché andare per visibile comunque.

90
00:05:40,580 --> 00:05:41,630
‫Comunque, un po' di revisione lì.

91
00:05:41,930 --> 00:05:44,960
‫Ora vogliamo che questa sia una vista perché è un componente.

92
00:05:44,960 --> 00:05:48,470
‫Quindi è un componente della scena che vogliamo.

93
00:05:49,250 --> 00:05:54,710
‫Se riesco a digitarlo correttamente, ho visto i componenti ed è un puntatore ad esso e questo sarà

94
00:05:54,710 --> 00:05:56,270
‫il nostro componente principale.

95
00:05:57,690 --> 00:05:58,170
‫Così.

96
00:05:58,830 --> 00:06:01,410
‫E poi vorremo una nuova proprietà.

97
00:06:02,310 --> 00:06:03,610
‫Di nuovo visibile ovunque.

98
00:06:03,840 --> 00:06:05,460
‫Per la nostra rete.

99
00:06:07,080 --> 00:06:16,200
‫La classe per la mesh sarà costituita da alcuni componenti MASH statici perché questo non è un mash scheletrico,

100
00:06:16,200 --> 00:06:19,620
‫è rigido, non ha scheletro, ossa.

101
00:06:20,040 --> 00:06:24,690
‫Quindi voglio che sia un indicatore e questo raffredderà il mosto in questo modo.

102
00:06:25,750 --> 00:06:30,170
‫In effetti, penso di dover essere un po 'attento qui perché penso che il componente root esista

103
00:06:30,170 --> 00:06:31,770
‫già nella classe genitore per l'attore.

104
00:06:31,790 --> 00:06:34,280
‫Quindi chiamerò questo percorso invece.

105
00:06:35,180 --> 00:06:38,840
‫E poi abbiamo già un costruttore nel C++.

106
00:06:38,840 --> 00:06:42,380
‫Dovremo solo includere l'appropriato -- qui.

107
00:06:42,410 --> 00:06:46,200
‫Ora, un piccolo trucco quando sei nel codice di Visual Studio è scoprire dove potrebbe essere un file in anticipo.

108
00:06:46,200 --> 00:06:50,600
‫Usi Control P e cercherai.

109
00:06:50,810 --> 00:06:53,090
‫In questo caso, vogliamo la mesh statica.

110
00:06:53,090 --> 00:07:01,910
‫Quindi componenti mesh statici e possiamo vedere che i componenti mesh statici puntino h se vado avanti e lo apro e passa il

111
00:07:01,910 --> 00:07:07,400
‫mouse sopra la scheda, puoi vedere che si trova sotto questo lungo percorso.

112
00:07:07,400 --> 00:07:12,590
‫Ma la parte interessante è che è sotto le classi, da cui poi possiamo guardare

113
00:07:12,590 --> 00:07:19,580
‫da lì che saranno componenti, componenti mesh statici, quindi posso chiudere quella scheda in basso e includere appena sopra i fatti

114
00:07:19,580 --> 00:07:21,440
‫sotto l'inclusione per una pistola.

115
00:07:21,740 --> 00:07:28,940
‫Faremo un'inclusione hash per i componenti e quindi i componenti della mesh statica.

116
00:07:29,570 --> 00:07:35,630
‫Ora in realtà, mi sono appena ricordato che le mesh che abbiamo per qualche motivo non sono in realtà mesh statiche come

117
00:07:35,630 --> 00:07:37,040
‫credo che potrebbero essere.

118
00:07:37,040 --> 00:07:43,790
‫Scott The Meshes, puoi scoprirlo andando nei pacchetti di risorse, nelle armi dei giochi sparatutto e dando un'occhiata

119
00:07:43,790 --> 00:07:44,960
‫a queste maglie.

120
00:07:44,960 --> 00:07:48,380
‫E abbastanza sicuro, se ci passi sopra, puoi vedere che sono maglie scheletriche.

121
00:07:48,710 --> 00:07:49,760
‫Non chiedermi perché.

122
00:07:49,820 --> 00:07:51,710
‫Per qualche ragione è quello che sono.

123
00:07:52,280 --> 00:07:56,780
‫Quindi vorremo cambiare il tipo in mesh scheletrico nel file di intestazione.

124
00:07:56,780 --> 00:08:01,310
‫Quindi, invece della mesh statica, utilizzerà invece la mesh scheletrica.

125
00:08:01,610 --> 00:08:05,990
‫E lo stesso per l'inclusione sarà lo scheletro.

126
00:08:07,280 --> 00:08:09,500
‫Punto h del componente mesh che vogliamo ricordare.

127
00:08:09,500 --> 00:08:11,180
‫Non ci sei tu nei file di intestazione.

128
00:08:12,420 --> 00:08:15,420
‫E credo che gli stessi componenti siano già inclusi qui per impostazione predefinita.

129
00:08:15,870 --> 00:08:20,260
‫Quindi è il momento di una sfida per aggiungere un componente mesh tutto tuo.

130
00:08:20,280 --> 00:08:27,390
‫Creeremo un componente della scena radice, lo imposteremo alla radice e lo imposteremo alla radice per la classe e creeremo un

131
00:08:27,840 --> 00:08:33,240
‫componente mesh e imposteremo l'allegato tra i due in modo che il componente mesh sia un

132
00:08:33,240 --> 00:08:37,320
‫figlio di quella radice vista componenti, video a impulsi e provaci.

133
00:08:37,710 --> 00:08:38,790
‫Ok, bentornato.

134
00:08:38,790 --> 00:08:42,660
‫Quindi andremo oltre e stabiliremo, prima di tutto, le nostre radici.

135
00:08:42,930 --> 00:08:48,180
‫Sarà un oggetto secondario di tipo predefinito per la creazione.

136
00:08:48,600 --> 00:08:56,100
‫Hai visto i componenti e quindi gli daremo un nome che sarà con la macro di testo, lo chiameremo

137
00:08:56,100 --> 00:08:59,490
‫radici e finiremo con il punto e virgola.

138
00:08:59,490 --> 00:09:01,530
‫Quindi lo imposteremo come root.

139
00:09:01,530 --> 00:09:06,180
‫Quindi imposta i componenti radice lo imposterà come componente radice per l'attore.

140
00:09:06,180 --> 00:09:07,890
‫Quindi imposta root come componente principale.

141
00:09:08,370 --> 00:09:09,180
‫Roba buona.

142
00:09:09,600 --> 00:09:12,270
‫Quindi vorremo creare la nostra mesh.

143
00:09:12,450 --> 00:09:21,420
‫Quindi mesh equivale a creare un sottooggetto predefinito ed è il tuo componente mesh scheletrico che vogliamo come classe e

144
00:09:21,420 --> 00:09:27,720
‫quindi la macro di testo per chiamarlo mesh e aggiungere un punto e virgola.

145
00:09:27,790 --> 00:09:29,880
‫E poi vogliamo impostare l'allegato.

146
00:09:30,210 --> 00:09:34,110
‫Quindi sarà impostata la freccia della mesh.

147
00:09:35,210 --> 00:09:42,890
‫Imposta l'allegato e vorremo collegarci alla radice come cose così interessanti in modo da poter andare avanti e

148
00:09:42,890 --> 00:09:50,420
‫salvarlo e, si spera, compilare e costruire e andremo su Unreal e daremo un'occhiata alla nostra

149
00:09:50,420 --> 00:09:51,470
‫classe figlio.

150
00:09:51,890 --> 00:09:57,260
‫E abbastanza sicuro, qui abbiamo noi stessi le radici, abbiamo la sub mesh, abbiamo anche questa radice di

151
00:09:57,260 --> 00:10:02,270
‫scena predefinita che è in giro, penso che riavviamo l'editor e vediamo se va via.

152
00:10:02,780 --> 00:10:06,980
‫A volte, quando si aggiungono componenti, le cose possono indugiare in questo modo e venire memorizzate nella cache.

153
00:10:07,370 --> 00:10:11,840
‫E abbastanza sicuro, se apriamo di nuovo i progetti della pistola BP, puoi vedere che abbiamo appena ottenuto quei

154
00:10:11,840 --> 00:10:12,440
‫due componenti.

155
00:10:12,440 --> 00:10:18,530
‫Abbiamo aggiunto le radici e la mesh e probabilmente vorremmo cambiare la mesh con una delle mesh

156
00:10:18,530 --> 00:10:21,470
‫scheletriche degli asset pack del gioco sparatutto.

157
00:10:21,950 --> 00:10:23,210
‫Abbiamo un fucile, abbiamo un lanciatore.

158
00:10:23,210 --> 00:10:25,670
‫Sceglierò questo come fucile.

159
00:10:26,060 --> 00:10:30,230
‫Quindi in realtà chiamarlo pistola BP è un po' falso.

160
00:10:30,230 --> 00:10:32,780
‫Questo dovrebbe essere probabilmente il fucile BP.

161
00:10:32,780 --> 00:10:40,130
‫Quindi andiamo avanti e rinominalo, vai al browser dei contenuti e rinominalo in BP Rifle o BP Gun,

162
00:10:40,130 --> 00:10:41,570
‫sottolinea il fucile.

163
00:10:41,570 --> 00:10:44,660
‫Ora raccogli direttamente il fucile BP che vanno.

164
00:10:45,080 --> 00:10:47,600
‫E questo ci ha dato una pistola.

165
00:10:47,600 --> 00:10:54,350
‫Ora, ovviamente, ora questo significa che possiamo avere tutti i tipi di proprietà contro questo attore,

166
00:10:54,350 --> 00:11:00,950
‫come la forza dell'arma, la sua portata e così via, creando nuove proprietà in C++.

167
00:11:00,950 --> 00:11:08,030
‫E questo è il punto di forza di avere questa architettura è che le pistole possono quindi essere leggermente diverse.

168
00:11:08,030 --> 00:11:15,590
‫Possiamo avere diverse meccaniche di tiro per fucili contro cecchini rispetto a giochi di ruolo e cose del genere.

169
00:11:16,040 --> 00:11:17,420
‫Quindi è fantastico.

170
00:11:17,420 --> 00:11:18,800
‫E possiamo anche avere statistiche diverse.

171
00:11:18,800 --> 00:11:23,480
‫Quindi possiamo avere un fucile forte e un fucile debole a seconda delle diverse sottoclassi del progetto.

172
00:11:23,780 --> 00:11:24,320
‫Roba forte.

173
00:11:24,320 --> 00:11:29,720
‫Ora, nella prossima lezione, vedremo come genereremo effettivamente questa pistola come figli

174
00:11:30,050 --> 00:11:32,420
‫del nostro personaggio attuale.

175
00:11:32,660 --> 00:11:33,320
‫Lo vedrò.

