﻿1
00:00:04,390 --> 00:00:05,230
‫Hallo en welkom.

2
00:00:05,230 --> 00:00:08,770
‫In deze lezing gaan we de dingen bekijken vanuit het oogpunt van de speler.

3
00:00:08,770 --> 00:00:15,010
‫We zullen de viewport van de speler, de locatie en rotatie van de camera in handen krijgen,

4
00:00:15,400 --> 00:00:20,980
‫in wezen, zodat wanneer we op de triggerknop drukken, we een foutopsporingscamera kunnen tekenen.

5
00:00:20,980 --> 00:00:26,680
‫Deze kleine rode kerels hier, deze kleine rode boxy camera's die ons laten zien waar die kijkpoort is.

6
00:00:27,010 --> 00:00:28,030
‫En dat kunnen we bevestigen.

7
00:00:28,030 --> 00:00:31,960
‫Dat kunnen we later gebruiken voor raytracing voor het pistool.

8
00:00:31,990 --> 00:00:34,750
‫Laten we erin duiken en dat allemaal in actie zien.

9
00:00:36,230 --> 00:00:38,280
‫Laat ik deze lezing beginnen met een vraag.

10
00:00:38,300 --> 00:00:45,800
‫Dus als je op deze manier door je kijkvenster richt en je probeert het midden van je scherm uit te

11
00:00:45,800 --> 00:00:50,810
‫lijnen met dat D op D-commandocentrum of nul-commandocentrum, wat dat ook mag zijn.

12
00:00:51,350 --> 00:00:54,610
‫En ik mik waar zou ik naar streven?

13
00:00:54,950 --> 00:00:56,150
‫Wat zou ik verwachten te raken?

14
00:00:56,570 --> 00:00:59,660
‫Je zou kunnen zeggen, nou, ik zou verwachten dat het dat nulbedrag zou halen.

15
00:00:59,660 --> 00:01:01,010
‫Dat lijkt het voor de hand liggende antwoord.

16
00:01:01,320 --> 00:01:06,080
‫Nou, dat is niet per se wat je gaat raken, afhankelijk van hoe je dingen doet, hoe je

17
00:01:06,080 --> 00:01:06,950
‫je herschikking doet.

18
00:01:06,950 --> 00:01:11,030
‫Laten we dus eens kijken naar de strategieën die we hebben om de meest voor de hand liggende te herschikken.

19
00:01:11,330 --> 00:01:15,880
‫Zoals je zegt, nou, we schieten uit het geweer, dus we gaan de loop van het geweer herschikken.

20
00:01:15,890 --> 00:01:20,390
‫Oh, tussen haakjes, deze opzet, die heel, heel primitief is, is eigenlijk een opzet van een derde persoon.

21
00:01:20,390 --> 00:01:21,800
‫We hebben hier een camera.

22
00:01:21,800 --> 00:01:23,810
‫We hebben het karakter, we hebben het pistool.

23
00:01:23,810 --> 00:01:26,510
‫En hij probeert hier op een ander doelwit te schieten.

24
00:01:26,990 --> 00:01:31,100
‫Dus, ten eerste, we herschikten ons uit het geweer zoals die leerling.

25
00:01:31,310 --> 00:01:37,940
‫Misschien mist het omdat onze camera niet wijst waar het pistool wijst, niet noodzakelijk.

26
00:01:38,150 --> 00:01:41,480
‫Ook al wijzen ze in dezelfde richting, ze zijn enigszins verschoven van elkaar,

27
00:01:41,720 --> 00:01:43,940
‫dus ze zullen niet noodzakelijk dezelfde dingen raken.

28
00:01:43,940 --> 00:01:48,170
‫In plaats daarvan kunt u ervoor kiezen om vanaf de camera opnieuw te casten.

29
00:01:48,620 --> 00:01:54,530
‫Dat betekent dat waar de camera ook naar kijkt, het ding zal zijn dat geraakt wordt en dat voelt over

30
00:01:54,530 --> 00:01:57,230
‫het algemeen natuurlijker aan in games van derden.

31
00:01:57,740 --> 00:02:02,510
‫Als je in first-person games zit, komen de dingen een beetje dichterbij, omdat je vaak heel dicht bij het vat

32
00:02:02,510 --> 00:02:02,930
‫zit.

33
00:02:02,930 --> 00:02:07,070
‫Maar zelfs in first-person games is deze regel meestal het geval.

34
00:02:07,070 --> 00:02:10,760
‫U wilt zich niet verplaatsen waar het richtpunt zich op het scherm bevindt.

35
00:02:11,030 --> 00:02:16,940
‫Je hebt meestal een klein stukje gebruikersinterface dat zich hier in het midden van je scherm bevindt, en dat is waar

36
00:02:16,940 --> 00:02:18,620
‫je naar beneden gaat richten.

37
00:02:18,620 --> 00:02:24,710
‫En daarom hebben we de neiging om onze herschikking te doen met goed geworpen wapens in deze kijkpoort.

38
00:02:25,430 --> 00:02:32,330
‫Gelukkig is er een manier voor ons om deze viewport te krijgen en we doen het eigenlijk vanaf de controller, we krijgen

39
00:02:32,330 --> 00:02:34,250
‫de viewport van de controller.

40
00:02:34,670 --> 00:02:41,690
‫Dus dat vereist dat we naar het personage gaan, de controller van het personage zoeken en vervolgens de locatie

41
00:02:41,690 --> 00:02:44,000
‫en rotatie van de viewport vinden.

42
00:02:44,420 --> 00:02:50,480
‫En wat we in deze lezing gaan doen, is proberen te visualiseren en te bevestigen dat die kijkvensterlocatie en

43
00:02:50,480 --> 00:02:52,790
‫-rotatie is wat we zouden verwachten.

44
00:02:53,270 --> 00:02:57,110
‫En dat gaan we doen door enkele debug-helpers te tekenen.

45
00:02:57,590 --> 00:03:05,120
‫Nu bevinden de debug-helpers zich in een header-bestand en de naam van de kop van de bestanden is add debug.

46
00:03:06,340 --> 00:03:06,760
‫Help ons.

47
00:03:06,760 --> 00:03:10,440
‫Grappig genoeg geloof ik of teken, teken, debug hulp.

48
00:03:10,550 --> 00:03:10,960
‫Dat is hem.

49
00:03:11,620 --> 00:03:16,570
‫En als we deze F 12 gaan bekijken om naar een header-bestand te navigeren als

50
00:03:16,570 --> 00:03:22,090
‫je het al in je omvat, gaan we op zoek naar een camera die debug-camera wordt genoemd.

51
00:03:22,090 --> 00:03:26,620
‫En dit tekent iets dat een beetje lijkt op mijn diagram hier, een beetje een driehoek

52
00:03:26,890 --> 00:03:29,170
‫of een ophef die we kunnen gebruiken.

53
00:03:29,590 --> 00:03:31,070
‫Dus wat is er nodig?

54
00:03:31,150 --> 00:03:37,600
‫En het zal een locatie van die camera in de wereld opnemen, een rotatie voor die camera.

55
00:03:38,050 --> 00:03:41,780
‫Dus locatie, rotatie, gezichtsveld zal het maken.

56
00:03:41,800 --> 00:03:46,900
‫We zullen dat waarschijnlijk instellen op een standaard zoals 90 graden als schaal, als kleurstandaard.

57
00:03:46,900 --> 00:03:48,070
‫Deze zijn allemaal standaard ingesteld.

58
00:03:48,070 --> 00:03:49,480
‫Dus we kunnen die standaardwaarden gewoon gebruiken.

59
00:03:50,110 --> 00:03:57,790
‫Dus laten we proberen een camera hier beneden in mijn pistool te debuggen en we zullen het in de pool trigger-methode plaatsen, want dat is waarom

60
00:03:57,820 --> 00:03:59,180
‫we ons werk doen.

61
00:03:59,530 --> 00:04:01,800
‫Het moet eerst en vooral, wat was het?

62
00:04:01,810 --> 00:04:03,640
‫Het was een nieuwe wereld.

63
00:04:04,060 --> 00:04:06,130
‫Dus we krijgen onze wereld.

64
00:04:07,420 --> 00:04:08,590
‫We moeten naar binnen trekken.

65
00:04:08,950 --> 00:04:11,350
‫Het volgende zou een locatie zijn.

66
00:04:11,360 --> 00:04:20,950
‫Laten we voorlopig de acteurslocatie pakken en ook een acteursrotatie maken.

67
00:04:22,090 --> 00:04:25,610
‫En wat het laatste was dat we nodig hadden, was een gezichtsveld.

68
00:04:25,630 --> 00:04:33,250
‫Laten we gewoon gaan voor een gezichtsveld van 90 graden, wat daar gewoon een willekeurig iets is, en we kunnen doorgaan en

69
00:04:33,250 --> 00:04:35,590
‫compileren en zien of dit verschijnt.

70
00:04:36,340 --> 00:04:40,210
‫En laten we dan op play drukken en op de.

71
00:04:41,200 --> 00:04:42,050
‫Trigger knop.

72
00:04:42,070 --> 00:04:43,420
‫Ik zie hier niets.

73
00:04:43,420 --> 00:04:46,810
‫Laten we een F8 doen en kijken of we dichterbij kunnen komen.

74
00:04:47,780 --> 00:04:48,270
‫Hmmmm.

75
00:04:48,490 --> 00:04:51,730
‫Ik laat hier nog steeds geen camera zien.

76
00:04:51,740 --> 00:04:53,470
‫Ik vraag me af of het echt heel klein is.

77
00:04:54,580 --> 00:05:00,430
‫Dus een van de andere opties hier is dat we misschien aanhoudende lijnen willen hebben.

78
00:05:01,180 --> 00:05:07,600
‫En dat betekent dat we alles in C++ moeten specificeren, zodat we onze schaal op één kunnen zetten.

79
00:05:07,600 --> 00:05:14,290
‫We zouden het zelfs kunnen verhogen tot een schaal van twee, voor het geval dat de grootte een probleem is dat we kunnen

80
00:05:14,410 --> 00:05:14,890
‫kiezen.

81
00:05:14,890 --> 00:05:16,900
‫Een kleur die beter zichtbaar is, kan rood zijn.

82
00:05:16,900 --> 00:05:18,730
‫Dus f calico lange dubbele punt rood.

83
00:05:19,510 --> 00:05:26,620
‫En dan kunnen we proberen om hardnekkige regels waar te maken en die uit te proberen.

84
00:05:26,620 --> 00:05:27,460
‫Benadrukken.

85
00:05:28,440 --> 00:05:29,640
‫Dus nog een keer compileren.

86
00:05:30,920 --> 00:05:32,540
‫En in het spel springen.

87
00:05:33,290 --> 00:05:34,850
‫En daar gaan we.

88
00:05:34,910 --> 00:05:35,630
‫We slaan.

89
00:05:37,390 --> 00:05:44,410
‫De trekker, en je kunt zien dat hier een kleine cameradoos verschijnt waar we de trekker indrukken

90
00:05:44,410 --> 00:05:50,230
‫en de rotatie en locatie worden bepaald door de wapens, locatie en rotatie.

91
00:05:50,350 --> 00:05:52,970
‫Dus nu willen we in plaats daarvan proberen de viewport te krijgen.

92
00:05:52,990 --> 00:05:56,980
‫Dus zoals ik al zei, dit komt op onze controller.

93
00:05:57,400 --> 00:06:01,180
‫Laten we dus nog eens naar controller punt H kijken.

94
00:06:01,180 --> 00:06:06,340
‫We willen die in het gameframework en we gaan hier naar een viewport zoeken.

95
00:06:06,740 --> 00:06:07,330
‫Sorry?

96
00:06:07,330 --> 00:06:09,820
‫Eigenlijk is gezichtspunt het woord dat we zoeken.

97
00:06:10,240 --> 00:06:10,990
‫En er zijn er hier een paar.

98
00:06:11,020 --> 00:06:15,460
‫Krijg acteursogen, gezichtspunten die door de ogen van de acteur zouden kijken.

99
00:06:15,760 --> 00:06:21,370
‫Maar we willen eigenlijk het gezichtspunt krijgen, dat voor een luchtcontroller hun ogen zal gebruiken.

100
00:06:21,760 --> 00:06:24,460
‫Maar voor een speler gebruiken we de camera van de speler.

101
00:06:24,460 --> 00:06:25,540
‫Dus dat is wat we willen.

102
00:06:25,540 --> 00:06:27,460
‫We willen het gezichtspunt van de speler.

103
00:06:28,030 --> 00:06:31,840
‫Maar eerst en vooral moeten we die controller in handen krijgen.

104
00:06:32,200 --> 00:06:38,920
‫En de manier om dat te doen, is dat we allereerst onze eigenaar moeten laten onthouden dat toen we ons schietpersonage

105
00:06:39,370 --> 00:06:44,860
‫open moesten houden en we naar beneden of naar boven gingen om te beginnen met spelen.

106
00:06:45,100 --> 00:06:47,980
‫Je kunt zien dat we de wapenbezitter instellen als het personage.

107
00:06:48,520 --> 00:06:51,630
‫Dat betekent dat we in het geweer de andere kant op kunnen.

108
00:06:51,640 --> 00:06:56,680
‫We kunnen zeggen dat we de eigenaar krijgen en dat zal ons het shooter-personage opleveren.

109
00:06:57,010 --> 00:06:59,350
‫Nu zal het niet weten dat het een shooter-personage is.

110
00:06:59,350 --> 00:07:00,850
‫Het enige wat het weet is dat het een acteur is.

111
00:07:00,850 --> 00:07:02,320
‫Dus we zullen hier een cast moeten doen.

112
00:07:02,950 --> 00:07:07,540
‫Dus doen we een cast naar het A Shooter-personage.

113
00:07:08,600 --> 00:07:12,680
‫En eigenlijk hoeven we niet eens zoveel te weten als het feit dat het een schietpersonage is.

114
00:07:12,950 --> 00:07:18,770
‫Het is voldoende om te weten dat het een pion is, en elke pion kan dit wapen bezitten, zelfs als het

115
00:07:18,770 --> 00:07:19,640
‫geen schutter-personage is.

116
00:07:19,850 --> 00:07:22,070
‫Probeer dus zo niet-specifiek mogelijk te zijn.

117
00:07:22,280 --> 00:07:24,140
‫Maar waarom moet het een pion zijn?

118
00:07:24,140 --> 00:07:29,270
‫Het moet een pion zijn omdat we een controller nodig hebben en alleen pionnen kunnen door controllers worden bezeten.

119
00:07:29,720 --> 00:07:30,920
‫Dus laten we dit in een variabele zetten.

120
00:07:30,920 --> 00:07:38,930
‫Het wordt een -- ster en dan wordt de pion van de eigenaar de naam van de variabele.

121
00:07:39,770 --> 00:07:42,110
‫Dan moeten we controleren of dit niet nul is.

122
00:07:48,750 --> 00:07:53,820
‫En ik ga dit gewoon doen met een one-liner die zegt dat als het nu is, we vroeg

123
00:07:54,150 --> 00:07:59,070
‫terugkomen van Apple Trigger, zodat we geen enkel risico lopen om iets te koelen met een nul-aanwijzer.

124
00:07:59,580 --> 00:08:09,830
‫Dus dan kunnen we een controller voor een eigenaar krijgen en die willen we opslaan in de A controller store.

125
00:08:10,110 --> 00:08:12,720
‫En dit kan de eigenaar-controller zijn.

126
00:08:14,210 --> 00:08:14,870
‫Zoals zo.

127
00:08:15,590 --> 00:08:19,610
‫En nogmaals, we willen gewoon controleren of dit niet null is, omdat

128
00:08:19,610 --> 00:08:23,660
‫we daarop een methode gaan aanroepen en we kunnen geen methoden aanroepen op null-pointers.

129
00:08:23,960 --> 00:08:26,690
‫Het maakt onwerkelijk, ongelukkig en crasht.

130
00:08:27,050 --> 00:08:31,220
‫Dus dit is waar we nu onze eigen controller kunnen doen.

131
00:08:33,310 --> 00:08:37,000
‫En we zouden in staat moeten zijn om een standpunt in te nemen.

132
00:08:38,450 --> 00:08:43,250
‫Dus hier komt de uitdaging voor jou om die locatie en rotatie in te stellen met behulp van die nieuwe functie.

133
00:08:43,520 --> 00:08:45,860
‫U kunt de handtekening weer voor ons zien.

134
00:08:45,860 --> 00:08:52,000
‫We gaan naar Controller Dot H, hadden een bestand en bekijken dat om een standpunt te spelen.

135
00:08:52,010 --> 00:08:58,700
‫Probeer aan de hand van deze handtekening uit te vinden hoe je deze kunt gebruiken om die locatie en rotatie te

136
00:08:58,700 --> 00:09:01,250
‫krijgen die we willen doorgeven aan onze draw-debug-helper.

137
00:09:01,820 --> 00:09:05,630
‫En je gaat je dus herinneren dat dit out-parameters gebruikt.

138
00:09:05,630 --> 00:09:12,770
‫Dus herzie uw app-parameters, teken de debug-camera met behulp van dat fragment dat we zojuist hebben geschreven en test het

139
00:09:12,770 --> 00:09:14,090
‫in de viewport.

140
00:09:14,360 --> 00:09:19,340
‫Ga en klik een paar keer op de triggerknop op verschillende locaties en kijk waar die camera

141
00:09:19,340 --> 00:09:21,110
‫eindigt met pauzevideo en probeer het.

142
00:09:22,440 --> 00:09:22,760
‫Oké.

143
00:09:22,770 --> 00:09:23,250
‫Welkom terug.

144
00:09:23,550 --> 00:09:24,630
‫Dus krijg plan view point.

145
00:09:24,630 --> 00:09:29,640
‫Ik ga de naam van de methode kopiëren en hierheen brengen omdat het een out-parameter is.

146
00:09:29,670 --> 00:09:36,090
‫Ik moet eerst de variabelen declareren waarin ik wil dat die waarden op de vectorlocatie gaan.

147
00:09:36,780 --> 00:09:41,070
‫We hebben een F, een rotator, een rotatie.

148
00:09:42,320 --> 00:09:45,590
‫En die willen we doorgeven als argumenten.

149
00:09:45,620 --> 00:09:48,080
‫Laat me mijn inkeping daar een beetje opknappen.

150
00:09:48,470 --> 00:09:51,620
‫En we gaan voorbij aan de locatie, de rotatie.

151
00:09:52,280 --> 00:09:58,520
‫En we weten dat, omdat het hier zojuist is verklaard toen we dit lezen, we kunnen raden dat dit

152
00:09:58,520 --> 00:10:03,890
‫nu onze parameters zijn, ook al is er in dat opzicht geen syntaxishulp van C++.

153
00:10:04,550 --> 00:10:09,440
‫En dan kunnen we deze locatie doorgeven in plaats van de acteurslocatie, en we

154
00:10:09,440 --> 00:10:17,870
‫kunnen deze rotatie doorgeven in plaats van de actieve rotatie in onze draw a debug camera en we kunnen die compilatie bouwen en uitproberen

155
00:10:17,870 --> 00:10:19,070
‫in de editor.

156
00:10:19,340 --> 00:10:21,290
‫Het lijkt erop dat het compileren voltooid is.

157
00:10:21,300 --> 00:10:22,850
‫Laten we gaan spelen.

158
00:10:23,540 --> 00:10:29,110
‫En toen ik op Trigger drukte, zag je een camera recht boven mijn gezichtspunt verschijnen.

159
00:10:29,120 --> 00:10:29,900
‫Dat is een goed teken.

160
00:10:30,260 --> 00:10:31,370
‫Ik stap een beetje achteruit.

161
00:10:31,370 --> 00:10:32,000
‫Je kan zien.

162
00:10:32,000 --> 00:10:32,480
‫Daar ga je.

163
00:10:32,480 --> 00:10:38,240
‫We hebben camera's die precies in de goede richting wijzen vanaf waar ik net keek.

164
00:10:38,240 --> 00:10:43,640
‫Dus je kunt je voorstellen hoe we een straal uit die camera aan het einde van de camera kunnen

165
00:10:43,640 --> 00:10:48,860
‫schieten en proberen daar iets te raken waar ik op dat moment naar aan het kijken was.

166
00:10:49,100 --> 00:10:51,120
‫En dat gaan we de volgende lezing doen.

167
00:10:51,140 --> 00:10:51,680
‫Zie je daar.

