﻿1
00:00:04,320 --> 00:00:05,250
‫Hallo en welkom.

2
00:00:05,250 --> 00:00:11,310
‫In deze lezing gaan we wat lijntracering opzetten, zodat we op de muren kunnen schieten en

3
00:00:11,640 --> 00:00:14,040
‫deze foutopsporingspunten kunnen zien verschijnen.

4
00:00:14,370 --> 00:00:18,030
‫En we gaan dit doen met een nieuwe functie lijntracering per kanaal.

5
00:00:18,030 --> 00:00:22,290
‫We gaan zien waarom we die lijn gebruiken die is getraceerd op objecttype, wat we eerder hebben gebruikt.

6
00:00:22,530 --> 00:00:24,090
‫Laten we erin duiken en kijken hoe het gedaan is.

7
00:00:25,490 --> 00:00:30,950
‫Dus terug in ons gebouw ontsnapping, gebruikten we lijntraceringen en we gebruikten deze functie hier, de

8
00:00:31,550 --> 00:00:32,630
‫lijntracering op objecttype.

9
00:00:32,960 --> 00:00:36,080
‫En is dit wat we willen gebruiken?

10
00:00:36,540 --> 00:00:42,110
‫Welnu, wat is het verschil tussen lijntracering per objecttype en zijn zeer naaste broer of zus,

11
00:00:42,110 --> 00:00:44,240
‫namelijk een lijntracering per kanaal.

12
00:00:45,170 --> 00:00:53,030
‫Welnu, het objecttype zegt, ik wil door deze regel zoeken en kijken of ik een object vind dat overeenkomt met dit

13
00:00:53,030 --> 00:00:53,490
‫type.

14
00:00:53,510 --> 00:01:01,670
‫Dus ik geloof dat wat we gebruikten bij het bouwen van een ontsnapping zoiets was als het fysieke lichaamsobjecttype en dat is

15
00:01:01,670 --> 00:01:04,040
‫geweldig, het zal fysieke lichamen raken.

16
00:01:04,340 --> 00:01:09,950
‫Maar als je plotseling besluit dat je iets anders een balletje wilt laten slaan, laat dat niet veel ruimte voor

17
00:01:09,950 --> 00:01:10,540
‫opties.

18
00:01:10,550 --> 00:01:16,430
‫Dus kanaal is daar beter voor omdat het ons in staat stelt om onze eigen aangepaste kanalen te definiëren

19
00:01:16,430 --> 00:01:21,860
‫en vervolgens te definiëren welke soorten objecten transparant zijn voor dat kanaal en welke het blokkeren.

20
00:01:22,220 --> 00:01:29,120
‫Dus dat is geweldig, want wat we willen kunnen doen is zeggen, oké, misschien kan een soort Bush geen

21
00:01:30,080 --> 00:01:36,590
‫kogel blokkeren, terwijl een muur een kogel wel blokkeert, maar het zal geen schade oplopen, maar dat kunnen

22
00:01:36,590 --> 00:01:37,790
‫we later afhandelen.

23
00:01:38,300 --> 00:01:45,140
‫Dus kanaliseert de hele route die we gaan afleggen en we kunnen hier de juiste methode vinden door controle uit te voeren.

24
00:01:45,140 --> 00:01:50,930
‫P En tussen haakjes, er is nog een extra leuk stukje dat ik pas onlangs heb

25
00:01:50,930 --> 00:01:58,130
‫geleerd, namelijk dat als je het act-symbool gebruikt, je kunt zoeken naar symbolen in dit bestand en of zelfs in andere bestanden.

26
00:01:58,130 --> 00:01:59,960
‫Maar als je het bestand open hebt, gaat het veel sneller.

27
00:02:00,440 --> 00:02:07,160
‫Dan zou je zoiets als lijntracering kunnen doen en je kunt zien dat er een lijst is met

28
00:02:07,160 --> 00:02:14,120
‫alle symbolen die functies of klassen of variabelen zijn, en we kunnen die lijn, tracering, testlijn, tracering, afzonderlijk per

29
00:02:14,120 --> 00:02:15,890
‫kanaal per objecttype vinden.

30
00:02:15,890 --> 00:02:21,350
‫We willen dit eerste spoor van één regel, een enkel BI-kanaal, dat een out-parameter zal hebben voor

31
00:02:21,350 --> 00:02:26,960
‫wat we raken, de startpunten, de eindpunten, het conflict-traceerkanaal komt daar in een klein beetje en dan

32
00:02:26,960 --> 00:02:32,210
‫een zoekopdracht parameters die een aantal standaardinstellingen hebben, waar we ons eigenlijk geen zorgen over hoeven

33
00:02:32,210 --> 00:02:33,080
‫te maken.

34
00:02:33,410 --> 00:02:39,140
‫Dus alleen die eerste paar dingen, de hit Start en en Trace Channel, waar we ons zorgen over willen maken.

35
00:02:39,710 --> 00:02:41,540
‫Laten we een Trace Channel opzetten.

36
00:02:41,780 --> 00:02:45,170
‫We gaan hiervoor naar instellingen en projectinstellingen.

37
00:02:45,350 --> 00:02:48,920
‫En dan kijken we onder de motor naar het aanrijdingsgebied.

38
00:02:48,950 --> 00:02:53,180
‫En hieronder kun je zien dat we objectkanalen en traceerkanalen hebben.

39
00:02:53,240 --> 00:02:57,530
‫Objectkanalen is eigenlijk gewoon een andere manier om verschillende soorten objecten te zeggen.

40
00:02:57,530 --> 00:03:02,090
‫Dus als je zowel de standaardsets van objecten als pionnen en dat soort dingen wilt hebben, als

41
00:03:02,090 --> 00:03:05,870
‫je een nieuwe categorie objecten wilt, dan zou je de objectkanaalroute kunnen volgen.

42
00:03:06,230 --> 00:03:12,260
‫Maar de sporen stellen je in staat om het andere uiteinde van het spectrum te definiëren, wat is als, weet

43
00:03:12,260 --> 00:03:15,500
‫je, ik heb een kogel, welke objecten kan het raken?

44
00:03:15,860 --> 00:03:21,590
‫Dus we gaan deze route af, voegen een nieuw traceerkanaal toe, en we gaan deze bullet noemen.

45
00:03:22,660 --> 00:03:25,750
‫En de standaardreactie zal zijn.

46
00:03:25,750 --> 00:03:29,200
‫BLOCK Wat in feite betekent dat alle objecttypen gaan.

47
00:03:29,200 --> 00:03:36,040
‫BLOK Tenzij we nu anders specificeren, kunnen we dit accepteren en kunnen we onze presets hier beneden

48
00:03:36,040 --> 00:03:36,610
‫bekijken.

49
00:03:37,030 --> 00:03:42,280
‫En als we dat gewoon uitbreiden, zullen de voorinstellingen je laten zien dat we een heleboel verschillende dingen

50
00:03:42,280 --> 00:03:47,440
‫hebben waarop we kunnen toepassen, dingen die we kunnen zeggen, we willen dat dit een natuurkundige acteur is,

51
00:03:47,440 --> 00:03:52,600
‫in welk geval het objecttype is, wat een vooraf gedefinieerd objectkanaal zal zijn, zal een fysica-lichaam zijn.

52
00:03:52,960 --> 00:04:00,490
‫Maar als we dit uitbreiden, kun je hier zien wat de reactie is op de verschillende soorten sporen.

53
00:04:00,490 --> 00:04:06,160
‫Dus we hebben onze traceertype camera's, onze eigen kogels, zichtbaarheid, het blokkeert al deze en dan hebben

54
00:04:06,160 --> 00:04:07,000
‫we objecttypes.

55
00:04:07,000 --> 00:04:13,600
‫Dus dat is hoe het natuurkundig samenwerkt met andere objecten zoals pionnen en voertuigen, enz. Dat is niet hoe het interageert

56
00:04:13,600 --> 00:04:16,600
‫met lijntracering per object.

57
00:04:16,720 --> 00:04:19,150
‫Dat is enigszins verwarrend en het heeft me eerder in de war gebracht.

58
00:04:19,780 --> 00:04:26,920
‫Dus het traceertype is wat interessant is en we kunnen hier gewoon een kijkje nemen en zien dat er geen botsing moet

59
00:04:26,920 --> 00:04:28,930
‫worden ingesteld om niet te botsen.

60
00:04:28,930 --> 00:04:31,870
‫Dus laten we ervoor zorgen dat onze kogels daar niet ook mee in botsing komen.

61
00:04:31,870 --> 00:04:39,100
‫Dus het negeren van enkele van de voorinstellingen zodat onze opsommingsteken werkt zoals we zouden verwachten, alles overlappen, bijvoorbeeld,

62
00:04:39,100 --> 00:04:42,310
‫zou in principe moeten overlappen met het opsommingsteken.

63
00:04:42,730 --> 00:04:49,810
‫En waarschijnlijk moeten onzichtbare muur en onzichtbare muurdynamiek ook worden genegeerd in het kader van onze

64
00:04:49,810 --> 00:04:50,320
‫opsomming.

65
00:04:50,890 --> 00:04:51,910
‫Zelfde met dynamisch hier.

66
00:04:51,910 --> 00:04:55,030
‫Je kunt zien dat we in feite eindigen met iets dat veel lijkt op een zichtbaar spoor.

67
00:04:55,450 --> 00:05:00,790
‫Maar de reden om het gescheiden te houden is dat we misschien een klein onderscheid willen maken, zoals je kunt zien,

68
00:05:00,790 --> 00:05:04,480
‫je kunt niet door deze struik kijken, maar je kunt er wel doorheen schieten.

69
00:05:04,690 --> 00:05:08,920
‫Door dat soort dingen is het hebben van een eigen traceerkanaal echt heel handig.

70
00:05:09,130 --> 00:05:14,740
‫Nu willen we dit traceerkanaal in code kunnen gebruiken, en het is een beetje funky hoe we dit moeten

71
00:05:14,740 --> 00:05:21,430
‫doen, want er is hier een opsomming, een E-collisiekanaal, en als we F12 naar zijn definitie gaan, kun je zien er is een

72
00:05:21,430 --> 00:05:27,550
‫heleboel voor de vooraf gedefinieerde, wereldstatisch - zichtbaarheid, enz. hier beneden, maar dan zijn

73
00:05:27,550 --> 00:05:33,550
‫er nog een heleboel motortraceerkanalen één, twee en gametraceerkanaal één, twee, drie,

74
00:05:33,550 --> 00:05:34,840
‫enz. voorgedefinieerd.

75
00:05:35,560 --> 00:05:37,540
‫Welke van ons is dit?

76
00:05:37,540 --> 00:05:39,700
‫Weet je, we hebben hier geen kogel.

77
00:05:40,330 --> 00:05:42,730
‫We moeten eigenlijk een van deze game-traceerkanalen gebruiken.

78
00:05:42,730 --> 00:05:44,350
‫Dus het is echt een beetje verwarrend.

79
00:05:44,740 --> 00:05:45,490
‫Welke is het?

80
00:05:46,000 --> 00:05:50,710
‫Dus de manier waarop u dit doet, is door naar uw projectmap te gaan en naar config.

81
00:05:51,280 --> 00:05:56,080
‫En wat we willen is de standaard engine INI en die willen we openen in een tekst.

82
00:05:56,080 --> 00:05:58,270
‫Dus je zou dat in elke gewenste tekst kunnen doen.

83
00:05:58,270 --> 00:06:00,520
‫Ik sleep het graag naar Visual Studio-code.

84
00:06:00,880 --> 00:06:03,070
‫Zodat Visual Studio-code degene is die het opent.

85
00:06:03,880 --> 00:06:10,930
‫En hier willen we in wezen zoeken naar onze kogel en zien waar deze aan is toegewezen.

86
00:06:10,930 --> 00:06:16,930
‫En ik denk dat deze eerste regel ons vertelt dat het kanaal dat het heeft gekregen het spel Trace Channel one

87
00:06:16,930 --> 00:06:17,380
‫is.

88
00:06:17,800 --> 00:06:18,370
‫Fantastisch.

89
00:06:18,370 --> 00:06:21,670
‫Dus dat gaan we gebruiken als we onze lijntracering doen.

90
00:06:22,300 --> 00:06:26,860
‫Dus laten we beginnen om de structuur van dit lijnspoor op zijn plaats te krijgen.

91
00:06:27,840 --> 00:06:30,500
‫Het eerste dat we nodig hebben, is een startpunt.

92
00:06:30,510 --> 00:06:31,230
‫Dat hebben we al.

93
00:06:31,230 --> 00:06:32,760
‫Dat is de locatie van onze viewport.

94
00:06:33,210 --> 00:06:37,650
‫We hebben ook een eindpunt nodig voor onze lijntracering dat iets moeilijker te berekenen is.

95
00:06:38,130 --> 00:06:45,660
‫Dus laten we een F-vector voor ons einde maken, en we gaan dit berekenen door ons stoppunt te gebruiken, plus

96
00:06:46,410 --> 00:06:54,060
‫de rotatie vermenigvuldigd met de hoeveelheid, de afstand die we willen weggaan en niet de rotatie, maar de vector die wijst

97
00:06:54,070 --> 00:06:56,640
‫in de richting van de rotatie.

98
00:06:57,120 --> 00:07:03,840
‫Enigszins verwarrend, maar eigenlijk als je een rotatiepuntvector doet, krijg je een vector die in de richting

99
00:07:03,840 --> 00:07:05,850
‫van deze rotatie wijst.

100
00:07:05,850 --> 00:07:11,200
‫Het doet een beetje het tegenovergestelde van wat we deden in de animatieblauwdruk om een rotatie van de vector te

101
00:07:11,200 --> 00:07:11,640
‫krijgen.

102
00:07:11,850 --> 00:07:12,930
‫Dit gaat de andere kant op.

103
00:07:13,350 --> 00:07:20,840
‫Dus we gaan locatie plus deze rotatievector doen, en dan willen we in wezen een maximaal bereik.

104
00:07:20,850 --> 00:07:25,950
‫Dus ik ga hier een nieuwe eigenschap introduceren, overal een bewerking maken en het wordt een

105
00:07:25,950 --> 00:07:27,990
‫float genaamd Max Range zoals zo.

106
00:07:27,990 --> 00:07:33,960
‫En we kunnen het instellen op een standaardwaarde van ongeveer 10.000 of een maximaal bereik van duizend.

107
00:07:33,960 --> 00:07:36,810
‫Dat wordt ongeveer 100 meter, sorry, ongeveer tien meter.

108
00:07:37,260 --> 00:07:42,810
‫En we gaan over naar een rotatiepuntvector vermenigvuldigd met het maximale bereik.

109
00:07:42,810 --> 00:07:46,470
‫Dus dat wordt de vector die we krijgen van die rotatie en zal een grootte hebben van één.

110
00:07:46,830 --> 00:07:50,970
‫Door het te vermenigvuldigen met het maximale bereik, wordt het een vector van grootte, wat het maximale bereik ook is.

111
00:07:50,970 --> 00:07:54,630
‫En dan voegen we dat toe aan de locatie om ons het eindpunt te geven.

112
00:07:54,810 --> 00:07:57,510
‫Maak je geen zorgen als je die wiskunde niet 100% volgt.

113
00:07:58,050 --> 00:08:01,280
‫Het belangrijkste is dat we zo bij ons eindpunt willen komen.

114
00:08:01,560 --> 00:08:07,530
‫Dan gaat het hier line-in doen om wat lijntracering toe te voegen en ik

115
00:08:07,530 --> 00:08:12,720
‫ga deze draw-debug-camera verwijderen omdat ik hier een andere draw-debug-helper wil doen.

116
00:08:13,110 --> 00:08:19,140
‫Ik wil een debug-punt tekenen dat je hier kunt vinden, de wereld inneemt, een positie en een grootte en

117
00:08:19,140 --> 00:08:20,370
‫een kleur inneemt.

118
00:08:20,730 --> 00:08:24,360
‫En of het nu persistent is of niet, we willen waarschijnlijk dat het persistent is, dat het zichtbaar is.

119
00:08:24,810 --> 00:08:31,350
‫Dus we zouden in staat moeten zijn om iets in deze richting te doen, laten we zeggen debug-punten tekenen en

120
00:08:31,350 --> 00:08:37,800
‫we gaan hier meteen een wereld van maken, en dan beginnen we in plaats daarvan met de locatie van

121
00:08:37,800 --> 00:08:44,280
‫onze viewport, net zoals een test om te zien hoe dit teken-debug-punt werkt, geef het een grootte om het

122
00:08:44,400 --> 00:08:48,390
‫een f-kleur rood te geven en zijn persistent waar te maken.

123
00:08:48,390 --> 00:08:52,410
‫En dan gaan we naar hoofdletter voor de puntkomma en kijken of dit werkt.

124
00:08:52,410 --> 00:08:55,170
‫Laten we compileren in de engine en op play drukken.

125
00:08:55,950 --> 00:08:58,110
‫Dus nu schiet ik en beweeg ik iets naar achteren.

126
00:08:58,110 --> 00:08:59,430
‫Je ziet dat er een punt is.

127
00:08:59,760 --> 00:09:02,340
‫Het is echter heel erg klein en moeilijk te zien.

128
00:09:02,340 --> 00:09:06,780
‫Dus ze gaan dit in plaats daarvan verhogen naar 20.

129
00:09:07,050 --> 00:09:08,040
‫Eens kijken of dat beter is.

130
00:09:08,160 --> 00:09:09,360
‫Compileren en spelen.

131
00:09:09,480 --> 00:09:09,720
‫Ja.

132
00:09:09,720 --> 00:09:12,780
‫En ja hoor, nu zie ik een heel, heel duidelijk punt.

133
00:09:13,380 --> 00:09:16,680
‫Tijd dus voor jouw uitdaging om een lijntracering per kanaal te doen.

134
00:09:16,920 --> 00:09:22,470
‫We hebben het eerder met objecttypen gedaan, dus hopelijk kunnen we dat extrapoleren naar het doen per kanaal.

135
00:09:22,740 --> 00:09:28,020
‫Gebruik dus de locatie en het einde die we al hebben gedefinieerd als het begin en einde.

136
00:09:28,620 --> 00:09:34,860
‫Controleer het succes van het resultaat door een if-statement te maken, dus alleen om de out-parameter goed te krijgen

137
00:09:34,860 --> 00:09:38,880
‫in de out-parameter van het hitresultaat en alleen een debug-punt te tekenen.

138
00:09:38,880 --> 00:09:44,910
‫Als we met succes het punt hebben bereikt en onthouden dat we dat kanaal gebruiken dat we in de punt hebben gevonden,

139
00:09:44,910 --> 00:09:46,020
‫ook elk bestand.

140
00:09:46,020 --> 00:09:50,820
‫Dus pauzeer de video en kijk of je al die parameters en argumenten in

141
00:09:51,150 --> 00:09:56,010
‫de lijntracering kunt sorteren en die debug-punttekening kunt krijgen waar we raken met onze lijntracering.

142
00:09:56,820 --> 00:10:02,360
‫In dit stadium doen we niets slims, zoals het negeren van de speler-acteur.

143
00:10:02,370 --> 00:10:07,800
‫Dus je lijntracering kan uiteindelijk de speler raken en dat is oké voor deze uitdaging.

144
00:10:08,160 --> 00:10:08,640
‫Video pauzeren.

145
00:10:08,680 --> 00:10:09,000
‫Probeer het eens.

146
00:10:10,640 --> 00:10:10,990
‫Oké.

147
00:10:11,000 --> 00:10:11,480
‫Welkom terug.

148
00:10:11,810 --> 00:10:13,850
‫Dus laten we er meteen in duiken.

149
00:10:13,850 --> 00:10:18,380
‫We gaan eerst de wereld pakken en een pijl daarop.

150
00:10:18,380 --> 00:10:22,940
‫We gaan een lijntracering per kanaal doen.

151
00:10:24,110 --> 00:10:25,850
‫Dan hebben we een treffer nodig.

152
00:10:25,860 --> 00:10:32,600
‫Dus bij parameters moeten we eerst onze hitresultaten struct verklaren om het door te geven als een app-parameter.

153
00:10:33,110 --> 00:10:37,520
‫Het zal het hit noemen en ze zullen het hier doorgeven als het eerste argument.

154
00:10:37,970 --> 00:10:39,410
‫Dan hebben we de locatie nodig.

155
00:10:40,470 --> 00:10:41,700
‫En we hebben het einde nodig.

156
00:10:42,180 --> 00:10:43,410
‫En dan wat?

157
00:10:43,470 --> 00:10:44,370
‫Wat komt er hierna?

158
00:10:44,370 --> 00:10:45,360
‫De botsing.

159
00:10:46,200 --> 00:10:47,220
‫Een botsingskanaal.

160
00:10:47,580 --> 00:10:49,470
‫Dus dat wordt een E-botsingskanaal.

161
00:10:49,470 --> 00:10:50,490
‫Dikke darm.

162
00:10:50,490 --> 00:10:53,550
‫En dan zou het e c moeten zijn, wat zeiden we?

163
00:10:53,560 --> 00:10:55,350
‫Laten we eens kijken in de standaard engine.

164
00:10:55,350 --> 00:11:01,140
‫Elk CC-game-traceerkanaal is degene die de standaard heeft geconfigureerd om te vragen.

165
00:11:01,440 --> 00:11:03,300
‫Zijn er hier nog meer argumenten die we nodig hebben?

166
00:11:03,300 --> 00:11:04,500
‫Laten we meegaan.

167
00:11:04,860 --> 00:11:06,720
‫We hebben de botsingsparameters die standaard zijn uitgeschakeld.

168
00:11:06,720 --> 00:11:09,870
‫Dus nee, we hebben hier niets nodig.

169
00:11:10,350 --> 00:11:14,160
‫En wat we dan kunnen doen, is dat we hiervoor een booleaans resultaat nodig hebben.

170
00:11:14,160 --> 00:11:15,810
‫Succes B dus.

171
00:11:16,970 --> 00:11:19,230
‫En het klinkt erg handig, niet?

172
00:11:19,250 --> 00:11:20,120
‫Succes zijn.

173
00:11:20,780 --> 00:11:23,060
‫Laten we zeggen An als B succes.

174
00:11:24,230 --> 00:11:26,660
‫We willen dat debugpunt tekenen.

175
00:11:26,660 --> 00:11:27,870
‫Dus we gaan dit naar beneden verplaatsen.

176
00:11:27,890 --> 00:11:34,190
‫Ik kan dit doen met Alt en dan verplaatst de pijl de lijn zo rond, en dan kan ik hem

177
00:11:34,760 --> 00:11:41,330
‫laten inspringen met een besturingselement en de juiste vierkante haken op je toetsenbord en dat zorgt ervoor dat het er zo uitziet.

178
00:11:41,330 --> 00:11:46,490
‫En nu willen we in plaats van de locatie, die het startpunt is, de hitlocatie.

179
00:11:46,490 --> 00:11:50,060
‫Dus dat wordt zo'n puntlocatie.

180
00:11:50,330 --> 00:11:54,500
‫En het lijkt erop dat ik een puntkomma aan het einde van deze regel mis.

181
00:11:54,650 --> 00:11:56,600
‫Laten we dat bouwen en het proberen.

182
00:11:56,960 --> 00:12:02,440
‫Als dat eenmaal is samengesteld, ga je de wereld in en probeer je op onze muren te schieten.

183
00:12:03,080 --> 00:12:03,620
‫Daar ga je.

184
00:12:03,620 --> 00:12:07,430
‫Je kunt zien dat we een punt op de muur hebben, precies waar ik heb geschoten.

185
00:12:07,430 --> 00:12:08,750
‫Ik kan dit meerdere keren doen.

186
00:12:09,110 --> 00:12:16,010
‫Het lijkt te raken als ik te ver van een muur ga, het raakt helemaal niet omdat ons maximale bereik vrij kort

187
00:12:16,010 --> 00:12:16,430
‫is.

188
00:12:16,820 --> 00:12:20,990
‫En je kunt zien dat als ik eenmaal binnen het maximale bereik kom, het raakt en een punt trekt.

189
00:12:21,350 --> 00:12:23,900
‫Dat is dus een geslaagde uitdaging.

190
00:12:23,900 --> 00:12:29,090
‫We kunnen nu een bepaald punt weergeven en volgen.

191
00:12:29,330 --> 00:12:35,390
‫De volgende stap is om ervoor te zorgen dat er daadwerkelijk wat deeltjeseffecten worden weergegeven, wat veel cooler zal

192
00:12:35,450 --> 00:12:38,600
‫zijn dan alleen maar een foutopsporingspunt daarvoor te tekenen.

193
00:12:38,600 --> 00:12:39,950
‫Ik zie je in de volgende lezing.

