﻿1
00:00:04,490 --> 00:00:10,940
‫In deze lezing gaan we een spelercontroller samenstellen die informatie ontvangt dat het spel is

2
00:00:10,940 --> 00:00:18,110
‫beëindigd vanuit de spelmodus en dit herstartgedrag zal creëren dat na 5 seconden het niveau opnieuw laadt

3
00:00:18,110 --> 00:00:20,870
‫nadat de speler is overleden.

4
00:00:21,080 --> 00:00:22,520
‫Laten we erin duiken en kijken hoe het gedaan is.

5
00:00:23,450 --> 00:00:30,950
‫Dus wanneer het spel inderdaad voorbij is, moeten we de spelercontroller op de hoogte stellen en we moeten ook een spelercontroller in onze C++

6
00:00:30,950 --> 00:00:37,340
‫hebben, zodat we het gedrag kunnen implementeren om ons toe te staan het niveau opnieuw op te starten en

7
00:00:37,340 --> 00:00:37,760
‫dergelijke.

8
00:00:38,300 --> 00:00:44,180
‫Dus het eerste wat je moet doen is wanneer dit punt wordt vernietigd, ten eerste, we loggen gewoon willekeurig.

9
00:00:44,420 --> 00:00:48,140
‫We willen wel even checken of het spel afgelopen is of niet.

10
00:00:48,170 --> 00:00:50,330
‫Nu zijn er twee scenario's.

11
00:00:50,330 --> 00:00:52,520
‫Een is waar we winnen en een is waar we verliezen.

12
00:00:52,850 --> 00:00:55,550
‫De verliezen zijn de eerste die ik ga aanpakken omdat het het gemakkelijkst is.

13
00:00:55,550 --> 00:00:58,190
‫Als de gedode pion de speler is die je verliest, dan is dat alles.

14
00:00:58,190 --> 00:01:04,100
‫Je zou ervoor kunnen kiezen om meerdere levens te hebben met verschillende iteraties van deze spelmodus, maar dat ga ik

15
00:01:04,100 --> 00:01:04,790
‫niet doen.

16
00:01:04,790 --> 00:01:06,170
‫Ik ga gewoon een vrijgezel leven hebben.

17
00:01:06,170 --> 00:01:07,460
‫Als je sterft, game over.

18
00:01:07,460 --> 00:01:08,630
‫Misschien wilt u opnieuw opstarten.

19
00:01:09,380 --> 00:01:13,490
‫Dus hoe controleren we of deze pion een spelercontroller is?

20
00:01:13,700 --> 00:01:14,930
‫Nou, dat is vrij eenvoudig.

21
00:01:14,930 --> 00:01:22,490
‫We kunnen gewoon een worp doen, zodat we een worp kunnen doen naar een spelercontroller en voor de gedode pion.

22
00:01:22,760 --> 00:01:25,310
‫En als dit niet nul is.

23
00:01:25,310 --> 00:01:26,810
‫Dus laten we de wijzer nemen.

24
00:01:26,810 --> 00:01:34,250
‫Een spelerbesturingsaanwijzer noem het de spelercontroller en sla het resultaat van die aanwijzer hier op.

25
00:01:34,550 --> 00:01:38,450
‫En we gaan eigenlijk zeggen als dit niet nee is.

26
00:01:38,930 --> 00:01:46,010
‫Dus als de spelercontroller geen nulaanwijzer is, weten we dat het de speler is die is overleden en dat het spel voorbij

27
00:01:46,010 --> 00:01:47,330
‫is voor de speler.

28
00:01:47,810 --> 00:01:52,040
‫Dus wat we willen doen, is een beroep doen op die spelercontroller-methode.

29
00:01:52,040 --> 00:01:57,440
‫We hebben al laten doorschemeren dat er een game is afgelopen methode.

30
00:01:57,470 --> 00:01:58,400
‫Laten we hier eens naar kijken.

31
00:01:58,400 --> 00:02:06,950
‫Als we een controle P doen en naar de spelercontroller dot h kijken, kunnen we zoeken naar een spel dat is afgelopen.

32
00:02:07,660 --> 00:02:13,340
‫Je kunt zeker zien dat er hier een virtuele methode is genaamd game is afgelopen en je kunt zien dat er een

33
00:02:13,340 --> 00:02:14,750
‫focus op het eindspel is.

34
00:02:14,750 --> 00:02:16,640
‫Op welke acteur moeten we ons uiteindelijk richten?

35
00:02:16,640 --> 00:02:19,760
‫Spel is standaard nulpunten en dat is waarschijnlijk wat ik ga gebruiken.

36
00:02:20,810 --> 00:02:22,850
‫En dan gaan we zeggen: is dit de winnaar?

37
00:02:22,880 --> 00:02:28,070
‫Kortom, je moet de speler de controle geven en weten of ze al dan niet hebben gewonnen.

38
00:02:28,430 --> 00:02:31,730
‫En dat is vrij eenvoudig, laten we zeggen, in dit geval.

39
00:02:31,730 --> 00:02:32,810
‫Nee, dat hebben ze niet.

40
00:02:33,290 --> 00:02:41,420
‫Dus we gaan een play controller arrow game doen is afgelopen, dan ga ik null pointer plaatsen voor de focus van

41
00:02:41,420 --> 00:02:47,480
‫het eindspel omdat we die functie niet echt nodig hebben en dan is de winnaar.

42
00:02:47,480 --> 00:02:49,190
‫Het zal gewoon vals zijn.

43
00:02:49,400 --> 00:02:53,330
‫Dit is niet de winnende spelercontroller, want het is degene die zojuist is overleden.

44
00:02:54,310 --> 00:02:56,890
‫Het is dus tijd voor een kleine uitdaging die u kunt implementeren.

45
00:02:56,890 --> 00:02:59,470
‫Spel is geëindigd in een play-controller.

46
00:02:59,800 --> 00:03:06,880
‫Dat betekent dat we een C++-spelercontroller moeten maken, de blauwdruk-subklasse moeten maken, die blauwdruk-subklasse standaard uit

47
00:03:06,880 --> 00:03:12,460
‫onze spelmodus moeten voortbrengen en dan wil je doorgaan en overschrijven.

48
00:03:12,490 --> 00:03:17,320
‫Het spel is afgelopen en plaats daar een logbericht om te controleren of we inderdaad krijgen.

49
00:03:17,320 --> 00:03:19,600
‫Die wedstrijd is op het juiste moment afgelopen.

50
00:03:19,990 --> 00:03:20,980
‫Pauzeer, video en ga aan de slag.

51
00:03:21,260 --> 00:03:21,540
‫Oké.

52
00:03:21,550 --> 00:03:22,060
‫Welkom terug.

53
00:03:22,360 --> 00:03:27,550
‫Dus, stap één, maak die C++-spelercontroller, maak een nieuwe C++-klasse aan.

54
00:03:27,700 --> 00:03:30,700
‫Ga dan op zoek naar eens kijken, spelercontroller.

55
00:03:30,730 --> 00:03:34,690
‫Vervolgens gaan we dit de shooter player-controller noemen.

56
00:03:34,720 --> 00:03:35,860
‫Ga je gang en creëer die klasse.

57
00:03:35,980 --> 00:03:44,510
‫Als dat eenmaal is gebeurd, willen we naar onze blauwdrukken gaan en een blauwdrukklasse maken die erop is gebaseerd.

58
00:03:44,530 --> 00:03:50,410
‫Dus we willen de shooter player-controller als basis, en we gaan het BP noemen,

59
00:03:50,830 --> 00:03:53,050
‫de shooter player-controller onderstrepen.

60
00:03:53,170 --> 00:03:57,520
‫Dit is momenteel niet echt nodig, maar later willen we wat UI-middelen

61
00:03:57,520 --> 00:03:59,170
‫aansluiten op de spelercontroller.

62
00:03:59,170 --> 00:04:00,700
‫Dus we zullen het daar klaar hebben.

63
00:04:01,240 --> 00:04:07,840
‫Dan gaan we naar de BP KML-spelmodus en plaatsen die in omdat we de standaard

64
00:04:07,840 --> 00:04:12,970
‫spelercontrollerklasse willen veranderen van de spelercontroller in onze BPM, de schoolshooter-spelercontroller.

65
00:04:13,420 --> 00:04:13,810
‫Stoer.

66
00:04:14,440 --> 00:04:16,330
‫Dan willen we overstappen.

67
00:04:16,330 --> 00:04:17,980
‫Ons spel is afgelopen.

68
00:04:18,610 --> 00:04:21,990
‫Dus laten we eens kijken of we naar de spelerbesturing gaan naar h.

69
00:04:22,000 --> 00:04:24,310
‫We kunnen zien dat dit in het openbare gedeelte is.

70
00:04:24,520 --> 00:04:25,300
‫Hier is de handtekening.

71
00:04:25,300 --> 00:04:25,930
‫Laten we het kopiëren.

72
00:04:25,930 --> 00:04:31,090
‫Ga naar als shooter play-controller dot h en maak openbaar.

73
00:04:32,110 --> 00:04:35,590
‫Aan die virtuele leegte is het spel afgelopen.

74
00:04:35,620 --> 00:04:39,970
‫Cool en we moeten al overschrijven, want dat werd duidelijk van ergens naar overschreven.

75
00:04:41,190 --> 00:04:45,300
‫En wat we dan kunnen doen, is dat we het kunnen implementeren.

76
00:04:45,330 --> 00:04:48,480
‫Control shift p we willen het een super Remember noemen.

77
00:04:49,820 --> 00:04:52,820
‫En we willen doen spel is zo afgelopen.

78
00:04:53,870 --> 00:05:01,640
‫En we willen de focus van het eindspel doorgeven en de B is winnaar en dan willen we inloggen.

79
00:05:01,790 --> 00:05:02,480
‫Dus je logt in.

80
00:05:02,930 --> 00:05:04,040
‫Hij is mijn macro daar.

81
00:05:04,700 --> 00:05:07,100
‫Wij zijn klaar.

82
00:05:07,190 --> 00:05:10,100
‫Het zal het logbericht zijn dat aan het einde uitkomt.

83
00:05:10,310 --> 00:05:12,620
‫Dus laten we compileren en kijken of dat werkt.

84
00:05:12,870 --> 00:05:14,240
‫Ik ga naar het uitvoerlogboek.

85
00:05:14,690 --> 00:05:15,290
‫Druk op spelen.

86
00:05:15,500 --> 00:05:18,350
‫Ga en laat je vermoorden, eigenlijk.

87
00:05:18,410 --> 00:05:19,920
‫De gezondheid gaat langzaam achteruit.

88
00:05:20,660 --> 00:05:23,420
‫En dan zouden we een bericht moeten zien.

89
00:05:23,450 --> 00:05:24,440
‫Krijgen we de boodschap?

90
00:05:24,470 --> 00:05:24,890
‫Nee.

91
00:05:24,920 --> 00:05:25,850
‫Dus laten we eens kijken.

92
00:05:25,850 --> 00:05:27,170
‫Wat is hier de spelercontroller?

93
00:05:27,200 --> 00:05:32,600
‫BP underscore shooter player controller lijkt de juiste te zijn.

94
00:05:32,930 --> 00:05:35,270
‫We hebben het override-spel is afgelopen.

95
00:05:35,570 --> 00:05:37,190
‫Hier zie ik een bug.

96
00:05:37,220 --> 00:05:41,120
‫Nu, dat is iets dat sommigen van jullie misschien hebben opgemerkt en naar het

97
00:05:41,630 --> 00:05:47,690
‫scherm hebben geschreeuwd, is dat we hier onze spelercontroller hebben waarnaar we aan het casten zijn en ik raak in de war met

98
00:05:47,690 --> 00:05:49,450
‫de echte pion van de speler.

99
00:05:49,910 --> 00:05:57,220
‫Dus wat we hier willen doen, is dat we willen zeggen dat we de controleur krijgen van de pion die werd gedood.

100
00:05:57,230 --> 00:06:01,220
‫Dus pion gedode stip krijgt controllerfout.

101
00:06:01,310 --> 00:06:06,040
‫Dus de pijl krijgt de controller en dan willen we die naar de spelercontroller casten.

102
00:06:06,080 --> 00:06:08,530
‫En als dat nul is, oké, dat zou moeten werken.

103
00:06:08,540 --> 00:06:10,670
‫Dus laten we doorgaan en dat uitproberen.

104
00:06:10,760 --> 00:06:12,050
‫Ga je gang en druk op play.

105
00:06:12,780 --> 00:06:13,760
‫Castle is weer vermoord.

106
00:06:15,610 --> 00:06:18,730
‫En ook deze keer krijgen we geen bericht.

107
00:06:19,000 --> 00:06:21,100
‫En deze keer is het om een subtiele reden.

108
00:06:21,550 --> 00:06:24,250
‫Dat komt omdat we ons losmaken van de controller.

109
00:06:24,760 --> 00:06:26,860
‫Voordat we dit noemen -- vermoord.

110
00:06:26,860 --> 00:06:32,560
‫Dus als het de controlerende pion probeert te krijgen, is dat eigenlijk nee, er is geen controlerende pion meer.

111
00:06:32,830 --> 00:06:38,200
‫We moeten deze melding dus doen net voordat we het loskoppelen van de controller.

112
00:06:38,590 --> 00:06:42,190
‫I omvat het opschuiven van de lijn die onze spelmodus in handen krijgt.

113
00:06:42,190 --> 00:06:46,960
‫Ik denk niet dat dat uitmaakt, maar nu ik er echt over nadenk, ja, natuurlijk wel.

114
00:06:47,290 --> 00:06:49,930
‫Dus laten we naar ons niveau gaan en spelen.

115
00:06:50,500 --> 00:06:51,640
‫Laten we gaan en beschoten worden.

116
00:06:52,060 --> 00:06:56,860
‫En als dat eenmaal is gebeurd, kunt u zien dat we klaar zijn, wordt afgedrukt zoals we willen.

117
00:06:56,890 --> 00:06:58,960
‫Dus onderweg hadden we een paar haperingen.

118
00:06:58,960 --> 00:07:01,390
‫Niet jouw schuld als je dat niet kreeg in de uitdaging.

119
00:07:01,750 --> 00:07:03,690
‫Tot dan toe heb je al het andere gedaan.

120
00:07:03,700 --> 00:07:04,690
‫Dat is geweldig.

121
00:07:05,110 --> 00:07:10,780
‫Dus hopelijk heb je misschien een poging gedaan om dat te debuggen, maar maak je geen zorgen als je vastloopt op die dingen.

122
00:07:11,350 --> 00:07:17,650
‫Het laatste dat ik hier wilde doen, is het spel daadwerkelijk opnieuw opstarten met een timer.

123
00:07:18,100 --> 00:07:25,210
‫De manier waarop we dit kunnen doen, is vrij eenvoudig, omdat de spelercontroller eigenlijk een herstartmethode

124
00:07:25,450 --> 00:07:25,900
‫heeft.

125
00:07:25,900 --> 00:07:30,160
‫Dus als we dit gaan bekijken, zou het een herstartniveau moeten zijn.

126
00:07:30,160 --> 00:07:35,560
‫Dat is degene die we willen bellen en we willen dit op een timer doen.

127
00:07:35,560 --> 00:07:42,460
‫Dus we hebben eerder timers gebruikt om dingen te herhalen, maar we kunnen het ook gebruiken om een actie met een bepaald

128
00:07:42,460 --> 00:07:43,720
‫bedrag uit te stellen.

129
00:07:44,200 --> 00:07:49,930
‫Dus ik ga naar de shooter-speler, controller, punt H en maak hier een privé-eigendom.

130
00:07:50,890 --> 00:07:56,500
‫Privé kan uw eigendom zijn dat overal kan worden bewerkt.

131
00:07:58,590 --> 00:07:59,100
‫Vlot.

132
00:07:59,100 --> 00:08:02,540
‫Dat wordt de herstartvertraging.

133
00:08:03,080 --> 00:08:05,460
‫U begrijpt waarom we hier al een blauwdrukbasis voor nodig hebben.

134
00:08:05,850 --> 00:08:08,160
‫Ik geef het een 5/2 vertraging.

135
00:08:08,670 --> 00:08:16,680
‫Dan ga ik over naar de C++ en we willen een get timer well doen, timer manager.

136
00:08:17,610 --> 00:08:19,620
‫En daar kunnen we dan wat mee.

137
00:08:19,890 --> 00:08:21,840
‫Dan moeten we opnemen.

138
00:08:21,870 --> 00:08:27,690
‫Dus hash include en het wordt de timermanager punt H.

139
00:08:28,410 --> 00:08:33,180
‫Dan zouden we de puntoperator moeten kunnen gebruiken omdat het retourtype hier een referentie is en

140
00:08:33,180 --> 00:08:35,250
‫we een ingestelde timer gaan doen.

141
00:08:35,340 --> 00:08:38,130
‫En hier moeten we een timer-handvat doorgeven.

142
00:08:38,130 --> 00:08:40,740
‫Dus laten we in het privégedeelte een set maken.

143
00:08:40,740 --> 00:08:42,810
‫Zou een f-timerhendel kunnen zijn.

144
00:08:42,930 --> 00:08:46,410
‫Ik noem het de herstarttimer zoals.

145
00:08:46,410 --> 00:08:51,060
‫Dus dat wordt het handvat dat we doorgeven aan onze ingestelde timer.

146
00:08:51,270 --> 00:08:57,780
‫Het volgende dat we bij de vijfde handtekening hier nodig hebben, is om het object te hebben dat we willen aanroepen, en

147
00:08:57,780 --> 00:08:58,830
‫dat wordt dit.

148
00:08:59,550 --> 00:09:04,950
‫En dan zal er zijn dat ik denk dat het gewoon de methode zelf zou moeten zijn.

149
00:09:05,610 --> 00:09:08,250
‫Dus we kunnen dat doen door ampersand te doen.

150
00:09:08,250 --> 00:09:13,890
‫En dan is het eigenlijk de methode, de methode van het herstartniveau, die we willen aanroepen en

151
00:09:13,890 --> 00:09:16,140
‫die werd gedefinieerd op de A-spelercontroller.

152
00:09:16,140 --> 00:09:17,640
‫Een spelercontroller dus.

153
00:09:19,270 --> 00:09:21,190
‫Dubbelpunt, dubbelpunt herstartniveau.

154
00:09:21,700 --> 00:09:27,970
‫En dan moeten we gewoon de vertraging doorgeven die we al hebben gedefinieerd als de herstartvertraging.

155
00:09:28,690 --> 00:09:35,740
‫Dus doe dat, maar een puntkomma aan het einde daar en hopelijk moeten we onszelf na 5 seconden opnieuw

156
00:09:35,740 --> 00:09:36,520
‫opstarten.

157
00:09:36,920 --> 00:09:41,590
‫We gaan het testen nu een beetje gemakkelijker maken door ons geweer te openen en het net een beetje

158
00:09:41,590 --> 00:09:42,490
‫dodelijker te maken.

159
00:09:42,490 --> 00:09:46,180
‫Dus ik ga naar de standaardinstellingen, doe de schade op 50.

160
00:09:46,180 --> 00:09:47,890
‫Dus word gedood met twee schoten.

161
00:09:48,310 --> 00:09:49,630
‫Laten we gaan en op play drukken.

162
00:09:50,660 --> 00:09:52,010
‫Laat ons snel vermoorden.

163
00:09:53,290 --> 00:10:00,400
‫En dan, na 5 seconden, moeten we hopelijk het level herstarten, we herstarten en we zijn terug in het level.

164
00:10:00,410 --> 00:10:02,830
‫Dus onze timer werkt zoals we verwachten.

165
00:10:03,730 --> 00:10:11,350
‫In latere versies zul je zien dat in plaats van opnieuw op te starten, je een foutmelding te zien krijgt die er

166
00:10:11,350 --> 00:10:16,980
‫zo uitziet en spreekt over een mislukte reis en iets zegt over je laffe sandbox,

167
00:10:17,140 --> 00:10:18,370
‫bla bla bla.

168
00:10:18,700 --> 00:10:23,620
‫Welnu, de manier waarop we dit moeten omzeilen wanneer we proberen opnieuw op te starten en willen

169
00:10:23,620 --> 00:10:29,800
‫controleren of onze herstart werkt, is dat we naar ons punt, punt, punt menu gaan in plaats van het afspeelmenu en we moeten

170
00:10:29,800 --> 00:10:31,840
‫spelen als een op zichzelf staand spel.

171
00:10:31,870 --> 00:10:38,290
‫Als het als je een op zichzelf staand spel speelt, duurt het iets langer om op te starten,

172
00:10:38,290 --> 00:10:43,390
‫maar het herstarten zal zoals verwacht werken en we zien het niveau opnieuw geladen.

173
00:10:43,630 --> 00:10:46,510
‫Het is duidelijk dat er niet veel aanwijzingen zijn dat dit gaat gebeuren.

174
00:10:46,510 --> 00:10:50,100
‫Dus we gaan kijken naar UI in de volgende colleges.

175
00:10:50,110 --> 00:10:50,770
‫Ik zie je daar.

