﻿1
00:00:04,710 --> 00:00:05,580
‫Ciao e Benvenuto.

2
00:00:05,580 --> 00:00:10,890
‫In questa lezione, faremo funzionare la condizione di vittoria in modo che io possa uccidere tutti i nemici

3
00:00:10,890 --> 00:00:14,160
‫nel mio livello e mi mostrerà questa schermata di vittoria.

4
00:00:14,160 --> 00:00:16,320
‫HAREL Entriamo e vediamo come si fa.

5
00:00:17,830 --> 00:00:22,170
‫Quindi vorremmo che fosse possibile per il nostro giocatore vincere questa partita.

6
00:00:22,180 --> 00:00:23,500
‫Al momento non possono.

7
00:00:24,040 --> 00:00:25,060
‫Allora come lo faremo?

8
00:00:25,090 --> 00:00:27,020
‫Beh, potresti farlo in diversi modi.

9
00:00:27,040 --> 00:00:32,710
‫Uno di questi sarebbe quando viene chiamato Pawn Killed e il pedone non è il controller di gioco.

10
00:00:32,710 --> 00:00:39,280
‫Ma poi potremmo sottrarre da una variabile che dice quanta aria ci sia nel mondo, quanta ne dobbiamo

11
00:00:39,280 --> 00:00:39,910
‫uccidere.

12
00:00:40,120 --> 00:00:43,750
‫E poi quando questo scende a zero, possiamo concludere la partita a favore del giocatore.

13
00:00:43,840 --> 00:00:49,480
‫Tuttavia, penso che sia un po' fragile perché ci richiede di mettere quanti nemici ci sono nel mondo in

14
00:00:49,480 --> 00:00:54,160
‫due posti essenzialmente deve essere nella modalità di gioco, ma deve anche essere nel mondo quando

15
00:00:54,160 --> 00:00:58,720
‫si posiziona il nemici abbattuti e quei due possono perdere la sincronizzazione, e questo causerà alcuni

16
00:00:58,720 --> 00:00:59,320
‫problemi.

17
00:00:59,860 --> 00:01:05,710
‫Quindi il modo in cui preferirei farlo è semplicemente dire, contiamo tutti i nemici del mondo ogni volta che viene uccisa una pedina, facciamo un

18
00:01:05,710 --> 00:01:11,740
‫riconteggio, un conteggio totale di tutti gli A. IO. e vedere quali sono

19
00:01:11,740 --> 00:01:12,910
‫ancora vivi.

20
00:01:13,030 --> 00:01:16,390
‫Se qualcuno di loro è ancora vivo, allora non finiremo ancora il gioco.

21
00:01:16,640 --> 00:01:17,590
‫Luogo il gioco non è finito.

22
00:01:17,920 --> 00:01:22,840
‫Ma se sono tutti morti e il controller di gioco non lo è, allora il giocatore ha vinto.

23
00:01:23,620 --> 00:01:29,170
‫Quindi, per poterlo fare, dobbiamo avere un modo per interrogare un controller del giocatore se è morto

24
00:01:29,170 --> 00:01:29,920
‫o meno.

25
00:01:30,100 --> 00:01:31,930
‫Scusa, voglio dire, il controller.

26
00:01:32,410 --> 00:01:35,770
‫Quindi cerchiamo il nostro controller sparatutto dot H.

27
00:01:36,460 --> 00:01:41,740
‫E quello che vogliamo fare qui è creare un nuovo metodo pubblico che ci permetta di interrogare se è morto

28
00:01:41,740 --> 00:01:42,280
‫o meno.

29
00:01:42,430 --> 00:01:49,270
‫Quindi faremo un pool basato, è morto e sarà un contrasto perché non dovrebbe cambiare ciò che

30
00:01:49,270 --> 00:01:52,660
‫sta effettivamente accadendo nel controller quando viene chiamato.

31
00:01:53,530 --> 00:01:55,540
‫E possiamo andare avanti e creare un'implementazione.

32
00:01:56,570 --> 00:02:01,740
‫Ora dovremmo controllare un -- che può dirci se è morto o meno.

33
00:02:01,760 --> 00:02:07,730
‫Se andiamo a dare un'occhiata a quello di nuovo, diamo un'occhiata al personaggio dello sparatutto, che è un --.

34
00:02:07,730 --> 00:02:12,020
‫Ricorda, abbiamo già questa funzione di contatto morto lì.

35
00:02:12,230 --> 00:02:17,180
‫Quindi essenzialmente quello che vogliamo fare è semplicemente trasmettere la richiesta al tiratore che controllo ora.

36
00:02:17,480 --> 00:02:17,940
‫Sì.

37
00:02:17,960 --> 00:02:23,660
‫Una cosa è che potresti dire in KML tutte le modalità di gioco, potresti entrare in possesso del

38
00:02:23,660 --> 00:02:30,110
‫controller, entrare in possesso di -- che quello che sta controllando, eseguire un cast e quindi controllare se quello -- è morto.

39
00:02:30,530 --> 00:02:36,350
‫Tuttavia, questa generalmente non è la migliore pratica perché significa che se all'improvviso qualcosa cambia nel

40
00:02:36,350 --> 00:02:43,460
‫modo in cui calcoliamo la morte e/o il controller aereo controllerà diversi tipi di --, all'improvviso dobbiamo cambiare la

41
00:02:43,460 --> 00:02:46,840
‫modalità di gioco, il che non ha senso.

42
00:02:46,850 --> 00:02:52,340
‫Quindi è meglio farlo e fare il passaggio all'interno dei controller dell'aria più robusti.

43
00:02:52,670 --> 00:02:58,730
‫Ci impedisce di giocherellare all'interno della classe di qualcun altro, il che generalmente significa che possiamo limitare quando le

44
00:02:58,730 --> 00:03:04,280
‫cose cambiano, possiamo limitare il numero di classi che dobbiamo andare a toccare e aggiornare e cambiare,

45
00:03:04,280 --> 00:03:06,680
‫il che è sempre una buona cosa.

46
00:03:07,490 --> 00:03:13,130
‫Quindi quello che vorremo fare è ottenere il -- e lanciare il -- per assicurarci che sia un personaggio sparatutto.

47
00:03:13,130 --> 00:03:14,150
‫Quindi facciamo un cast.

48
00:03:14,660 --> 00:03:17,030
‫Sarà per uno sparatutto.

49
00:03:18,010 --> 00:03:23,200
‫Il personaggio e penso che dovremo farlo, deve includere nella parte superiore del controllo visivo per assicurarci di

50
00:03:23,200 --> 00:03:25,720
‫conoscere il personaggio delle riprese in questo modo.

51
00:03:26,230 --> 00:03:34,120
‫E poi faremo il cast facendo un get -- e vorremo memorizzarlo in una variabile in modo

52
00:03:34,420 --> 00:03:36,790
‫che sia uno sparatutto.

53
00:03:37,030 --> 00:03:42,370
‫Puntatore carattere chiamato chiamiamolo controllato.

54
00:03:43,770 --> 00:03:44,490
‫Carattere.

55
00:03:46,000 --> 00:03:52,360
‫Non posso semplicemente chiamarlo carattere perché è già una variabile sul controller aereo e metti un punto e virgola

56
00:03:52,360 --> 00:03:56,440
‫alla fine della riga e verificheremo se questo è nullo o meno.

57
00:03:57,070 --> 00:04:03,730
‫Quindi il carattere di controllo non è uguale al puntatore nullo, quindi dovremmo essere in grado di interrogarlo per il suo stato se è

58
00:04:03,730 --> 00:04:04,720
‫morto o meno.

59
00:04:05,140 --> 00:04:09,910
‫Quindi dovremmo essere in grado di restituire quel personaggio controllato.

60
00:04:11,070 --> 00:04:12,120
‫È morto.

61
00:04:12,780 --> 00:04:16,170
‫Fondamentalmente, inoltriamo la richiesta al nostro personaggio di controllo.

62
00:04:16,500 --> 00:04:18,630
‫Se quel personaggio di controllo è un personaggio sparatutto.

63
00:04:19,110 --> 00:04:22,260
‫Tuttavia, si noti che qui non abbiamo una dichiarazione di reso.

64
00:04:22,260 --> 00:04:24,720
‫Nell'altro caso, abbiamo bisogno di un reso.

65
00:04:24,960 --> 00:04:26,580
‫C'è sempre bisogno di un ritorno.

66
00:04:26,850 --> 00:04:28,890
‫Se il valore restituito non è nullo.

67
00:04:29,280 --> 00:04:35,370
‫Quindi abbiamo bisogno di inserire una dichiarazione di ritorno qui al di fuori dell'istruzione if per catturare il caso in cui

68
00:04:35,370 --> 00:04:37,680
‫non abbiamo già restituito all'interno dell'istruzione if.

69
00:04:38,160 --> 00:04:40,890
‫E qui diremo solo, questo personaggio è morto?

70
00:04:40,920 --> 00:04:46,230
‫Ebbene, sì, essenzialmente, se non è così vero, in fondo è morto.

71
00:04:46,650 --> 00:04:52,200
‫Se non abbiamo un pedone, se non controlliamo un pedone, allora essenzialmente questo controller aereo è

72
00:04:52,200 --> 00:04:53,610
‫praticamente morto per noi.

73
00:04:54,120 --> 00:05:00,090
‫E ciò potrebbe accadere perché ricorda che il pedone si stacca dal suo controller quando muore.

74
00:05:01,110 --> 00:05:06,390
‫Quindi torneremo alla modalità di gioco e cosa vorremo fare qui?

75
00:05:07,080 --> 00:05:14,340
‫In sostanza, quello che vogliamo fare è un ciclo completo su tutti i file i.

76
00:05:14,340 --> 00:05:16,410
‫Il tiratore, i.

77
00:05:17,730 --> 00:05:19,050
‫Nel mondo.

78
00:05:20,230 --> 00:05:22,120
‫E con quello for loop.

79
00:05:22,690 --> 00:05:23,530
‫Cosa vogliamo fare?

80
00:05:23,740 --> 00:05:25,690
‫Vogliamo vedere è morto.

81
00:05:27,400 --> 00:05:32,080
‫Fondamentalmente e o fondamentalmente non è morto.

82
00:05:33,100 --> 00:05:39,320
‫E se qualcuno di loro non è morto, allora sappiamo immediatamente che non dobbiamo assolutamente controllare tutta l'aria.

83
00:05:39,340 --> 00:05:44,080
‫Se anche solo un ragazzo regna vivo, il gioco non è finito.

84
00:05:44,080 --> 00:05:49,120
‫Quindi possiamo fare quello che è noto come un ritorno anticipato, che probabilmente hai già

85
00:05:49,120 --> 00:05:54,180
‫visto prima, che uscirà semplicemente da questa funzione senza eseguire più del codice in essa contenuto.

86
00:05:54,190 --> 00:05:58,540
‫Quindi tutto dopo questo ritorno anticipato smetterà di eseguire il ciclo completo, smetterà di eseguire qualsiasi cosa dopo

87
00:05:58,540 --> 00:05:59,770
‫che smetterà di essere eseguita.

88
00:06:00,640 --> 00:06:07,180
‫Ma poi possiamo dire che se siamo riusciti a superare con successo questo ciclo completo senza che ritorni

89
00:06:07,180 --> 00:06:14,230
‫presto, il che significa che non ci sono alleati viventi nel mondo, allora dobbiamo andare avanti e terminare il gioco.

90
00:06:15,070 --> 00:06:15,850
‫Semplice come quella.

91
00:06:16,150 --> 00:06:22,460
‫Ora, una parte del puzzle che dobbiamo esaminare qui sono le chiamate di fine gioco.

92
00:06:22,780 --> 00:06:25,780
‫Il gioco è terminato sul controller del giocatore.

93
00:06:25,840 --> 00:06:29,170
‫Diamo un'occhiata a come il controller del giocatore sparatutto si occupa attualmente di questo.

94
00:06:29,200 --> 00:06:35,650
‫Se andiamo al suo CP, quello che vediamo attualmente è che sta attualmente ignorando totalmente il vincitore che B sta

95
00:06:35,650 --> 00:06:38,350
‫attualmente ignorando se è o meno il vincitore.

96
00:06:39,340 --> 00:06:43,900
‫Quindi quello che dobbiamo fare è dire se B è il vincitore.

97
00:06:45,030 --> 00:06:48,270
‫Allora faremo qualcos'altro.

98
00:06:49,080 --> 00:06:51,840
‫Mostreremo la nostra schermata di perdita.

99
00:06:52,110 --> 00:06:55,890
‫Quindi taglia queste righe qui che sono responsabili della visualizzazione della schermata di perdita.

100
00:06:55,890 --> 00:06:59,940
‫Mettilo nella dichiarazione out e ricominceremo comunque in entrambi i casi.

101
00:07:00,810 --> 00:07:02,580
‫Quindi attualmente l'essere è vincitore.

102
00:07:02,580 --> 00:07:03,460
‫Cosa faremo?

103
00:07:03,480 --> 00:07:11,550
‫Bene, andremo avanti e probabilmente creeremo anche un parabrezza, il che sarà abbastanza

104
00:07:11,550 --> 00:07:12,410
‫semplice.

105
00:07:12,420 --> 00:07:16,200
‫Passiamo al nostro file di intestazione per le riprese per riprodurre un controller.

106
00:07:16,530 --> 00:07:21,750
‫Possiamo duplicare, perdere la classe dello schermo e creare una classe dello schermo vincente.

107
00:07:21,750 --> 00:07:25,200
‫E qui possiamo anche andare avanti e combattere questo.

108
00:07:25,200 --> 00:07:26,130
‫Una mini sfida per te.

109
00:07:26,130 --> 00:07:29,490
‫Forse vai avanti e impostalo in modo che possa fare una schermata di vincita.

110
00:07:30,000 --> 00:07:30,630
‫Kay, bentornata.

111
00:07:30,630 --> 00:07:33,120
‫Quindi spero che tu ci abbia dato una possibilità.

112
00:07:33,120 --> 00:07:40,290
‫Andremo semplicemente dentro e metteremo il parabrezza qui invece di tutto il testo pubblicitario perso, essenzialmente tutto

113
00:07:40,290 --> 00:07:41,280
‫il resto.

114
00:07:42,870 --> 00:07:43,500
‫Così.

115
00:07:44,830 --> 00:07:51,760
‫Andremo avanti e compileremo questo, quindi andremo nell'editor e ci ritroveremo nella classe del

116
00:07:51,820 --> 00:07:53,610
‫controller del giocatore.

117
00:07:53,620 --> 00:07:56,680
‫E ora dovremmo vedere che c'è una classe di parabrezza vuota.

118
00:07:57,010 --> 00:08:02,290
‫E quello che faremo è andare nell'interfaccia utente e duplicare la schermata di perdita per

119
00:08:02,350 --> 00:08:03,430
‫chiamare il parabrezza.

120
00:08:03,670 --> 00:08:05,800
‫E potresti creare il tuo da zero se lo desideri.

121
00:08:05,800 --> 00:08:11,740
‫Ma lo userò in modo molto simile, tranne per il fatto che cambierò il colore per il verde.

122
00:08:12,680 --> 00:08:16,880
‫E trasformalo in una vittoria invece che in una sconfitta.

123
00:08:18,090 --> 00:08:21,770
‫Perché la logica di riavvio sarà effettivamente la stessa.

124
00:08:21,840 --> 00:08:25,590
‫Per qualche motivo ha ripristinato il mio colore che vado semplicemente a impostare di nuovo lo schermo a colori.

125
00:08:25,620 --> 00:08:26,430
‫Va bene, è fantastico.

126
00:08:26,430 --> 00:08:31,680
‫Ma abbiamo ancora questo pezzo di pseudocodice nella modalità di gioco KML che non è stato compilato.

127
00:08:31,710 --> 00:08:34,590
‫E questo perché è la tua sfida calcolare la vittoria.

128
00:08:34,980 --> 00:08:40,470
‫Compila lo pseudocodice, usa l'intervallo attivo T dal basso in quella classe per aiutarti.

129
00:08:40,830 --> 00:08:45,360
‫Usa la nuova è quella funzione che abbiamo creato sul controller e testala.

130
00:08:45,360 --> 00:08:49,410
‫Controlla se il tuo parabrezza si presenta quando uccidi tutta l'aria del mondo.

131
00:08:49,500 --> 00:08:53,370
‫Quindi lo lascerò con lo pseudocodice sullo schermo per dargli un'occhiata.

132
00:08:54,030 --> 00:08:54,970
‫K Bentornato.

133
00:08:54,990 --> 00:08:56,220
‫Quindi iniziamo con il ciclo for.

134
00:08:56,760 --> 00:08:59,020
‫Quindi ho intenzione di fare un per cosa facciamo per il loop over?

135
00:08:59,040 --> 00:09:00,600
‫Non è un controller questa volta.

136
00:09:00,600 --> 00:09:03,630
‫Sarà il controller aereo sparatutto.

137
00:09:03,630 --> 00:09:05,160
‫Quindi abbiamo bisogno di includerlo nell'hash.

138
00:09:06,120 --> 00:09:09,300
‫Sarà il tiratore.

139
00:09:10,250 --> 00:09:12,040
‫Il controllore aereo Don H.

140
00:09:13,110 --> 00:09:20,520
‫E questo significa che andremo in loop su un negozio di controller di Shooter II

141
00:09:20,520 --> 00:09:30,060
‫per raffreddare semplicemente il controller, i cortometraggi, e poi faremo di nuovo una serie di attori che un controller aereo sparatutto.

142
00:09:30,060 --> 00:09:33,810
‫Dobbiamo fare in modo che questi due tipi corrispondano, quindi ottenere il mondo.

143
00:09:34,290 --> 00:09:36,290
‫Quindi lo stiamo facendo a questo livello.

144
00:09:37,800 --> 00:09:42,450
‫E poi abbiamo il corpo del ciclo completo qui dove ci chiederemo se non è morto.

145
00:09:42,480 --> 00:09:47,820
‫Quindi, in caso contrario, Controller Arrow è morto.

146
00:09:49,660 --> 00:09:52,240
‫Fondamentalmente dicendo assicurati che non siamo morti.

147
00:09:52,720 --> 00:09:58,300
‫E se non è morto, allora andiamo avanti e torniamo a questo ritorno anticipato perché sappiamo che la partita

148
00:09:58,300 --> 00:09:59,860
‫non può ancora essere finita.

149
00:10:00,310 --> 00:10:05,860
‫E altrimenti, se abbiamo superato l'intero ciclo senza tornare, dobbiamo terminare il gioco perché

150
00:10:05,980 --> 00:10:10,090
‫il giocatore deve aver vinto, ucciso tutta l'IA nel livello.

151
00:10:10,600 --> 00:10:13,000
‫Quindi in questo caso, potremmo fare un gioco finale.

152
00:10:13,250 --> 00:10:13,830
‫VERO.

153
00:10:13,870 --> 00:10:15,060
‫Perché il giocatore ne ha uno.

154
00:10:15,430 --> 00:10:20,170
‫E questo dovrebbe notificare a tutti i controller del giocatore e ai controller di volo in giro.

155
00:10:20,860 --> 00:10:21,370
‫Freddo.

156
00:10:21,430 --> 00:10:24,760
‫Quindi andiamo oltre e compiliamolo, prima di tutto.

157
00:10:24,940 --> 00:10:27,760
‫Poi andrò a Unreal e farò una commedia.

158
00:10:27,790 --> 00:10:32,350
‫Per qualche motivo il mio editore pensa che io sia in questa operazione di modifica del colore specificata, quindi

159
00:10:32,350 --> 00:10:33,820
‫la chiuderò e la riavvierò.

160
00:10:33,970 --> 00:10:38,610
‫Ora che è stato avviato gratuitamente, vado avanti e premo play e vengo ucciso.

161
00:10:38,620 --> 00:10:40,400
‫Prima di tutto, sì, perdo ancora.

162
00:10:40,420 --> 00:10:41,080
‫È fantastico.

163
00:10:41,090 --> 00:10:43,780
‫Ora vediamo se riesco a uccidere questo tizio prima che lui uccida me.

164
00:10:44,670 --> 00:10:45,210
‫Andiamo.

165
00:10:45,210 --> 00:10:46,860
‫Boom, boom, boom, boom, boom, boom, boom.

166
00:10:47,220 --> 00:10:48,110
‫Perdo troppo in fretta.

167
00:10:48,120 --> 00:10:52,120
‫Andiamo a trovare di nuovo la pistola e settiamo.

168
00:10:52,140 --> 00:10:55,260
‫Abbiamo quel danno della pistola davvero alto.

169
00:10:55,290 --> 00:11:00,450
‫A scopo di test, questa volta andrò a riportare il danno a forse 20.

170
00:11:00,840 --> 00:11:02,940
‫Quindi è ancora veloce, ma non altrettanto veloce.

171
00:11:03,360 --> 00:11:06,240
‫Vai a giocare e colpisci questo ragazzo un paio di volte.

172
00:11:06,450 --> 00:11:12,160
‫E quello che abbiamo visto è che in realtà ho vinto perché il livello è ricominciato.

173
00:11:12,180 --> 00:11:15,630
‫Quindi se vado e uccido di nuovo questo tizio, vedrai che non sta succedendo niente.

174
00:11:15,630 --> 00:11:19,830
‫Sta dicendo nel registro dei messaggi ciò che è stato chiamato con una classe nulla.

175
00:11:19,830 --> 00:11:25,830
‫E la ragione di ciò, se passiamo a un controller del giocatore sparatutto BP, di nuovo, puoi vedere che non abbiamo

176
00:11:25,830 --> 00:11:27,300
‫collegato il nostro parabrezza.

177
00:11:27,360 --> 00:11:31,290
‫Una cosa che ho dimenticato di fare così posso andare a compilare, salvare e giocare.

178
00:11:31,290 --> 00:11:37,740
‫E ora si spera che se uccido questo ragazzo a un nuovo destino, vinco e ricomincerò tra 5 secondi.

179
00:11:38,100 --> 00:11:40,860
‫E voglio mostrarti che lo stesso è vero.

180
00:11:41,070 --> 00:11:46,080
‫Se metto più controller di giocatori nel mondo, mi verrà richiesto di ucciderli entrambi.

181
00:11:46,410 --> 00:11:49,890
‫Quindi andiamo a portare qui il personaggio dello sparatutto.

182
00:11:50,670 --> 00:11:52,890
‫E questo sarà il mio secondo nemico da uccidere.

183
00:11:52,890 --> 00:11:53,760
‫Quindi uccidi questo ragazzo.

184
00:11:53,790 --> 00:11:54,210
‫Boom.

185
00:11:55,410 --> 00:11:56,640
‫E non ha vinto.

186
00:11:56,880 --> 00:11:58,440
‫Poi vado dal secondo ragazzo.

187
00:11:58,710 --> 00:11:59,050
‫Boom.

188
00:11:59,400 --> 00:12:00,570
‫E ora ne ho uno.

189
00:12:00,570 --> 00:12:05,010
‫Perché ho ucciso tutta l'alfa e non dovevamo cambiare alcuna variabile per farlo.

190
00:12:05,010 --> 00:12:09,360
‫Perché io per loop conta tutti i vivi ogni volta da zero.

191
00:12:09,420 --> 00:12:12,230
‫Quindi attualmente stiamo vivendo in un mondo piuttosto silenzioso.

192
00:12:12,240 --> 00:12:18,210
‫Quindi, nella prossima lezione, voglio iniziare a guardare un po' come possiamo fare un po' di audio.

193
00:12:18,300 --> 00:12:19,020
‫Ci vediamo lì.

