﻿1
00:00:04,500 --> 00:00:05,370
‫Hallo en welkom.

2
00:00:05,370 --> 00:00:10,950
‫In deze lezing gaan we een grijper opzetten, zodat we ons

3
00:00:10,950 --> 00:00:15,090
‫waterspuwerbeeld echt kunnen pakken en voor ons meenemen.

4
00:00:15,390 --> 00:00:17,400
‫Laten we erin duiken en kijken hoe we dit doen.

5
00:00:18,180 --> 00:00:24,330
‫Dus het wordt tijd dat we deze grijpercomponenttoewijzing gaan noemen met een rotatie.

6
00:00:24,570 --> 00:00:26,760
‫Zoals ik al eerder zei, er zijn eigenlijk twee delen.

7
00:00:26,760 --> 00:00:34,050
‫We moeten het onderdeel pakken en later moeten we ook de doellocatie en rotatie instellen,

8
00:00:34,440 --> 00:00:36,000
‫zodat het beweegt.

9
00:00:36,210 --> 00:00:37,440
‫Dus eerst dingen eerst.

10
00:00:37,440 --> 00:00:44,310
‫In onze grijpfunctie moeten we een verwijzing naar onze fysica-handgreep bemachtigen.

11
00:00:44,730 --> 00:00:50,760
‫Dus ik ga de regel van Begin Play kopiëren en ik ga naar de grabber en ik ga hem

12
00:00:50,760 --> 00:00:51,510
‫hier plaatsen.

13
00:00:51,750 --> 00:00:55,710
‫En om onszelf te beschermen tegen dit nul zijn.

14
00:00:55,980 --> 00:00:57,270
‫Tja, wat moet er gebeuren?

15
00:00:57,570 --> 00:01:00,270
‫Nou, eigenlijk is er niets dat we willen doen.

16
00:01:00,270 --> 00:01:02,820
‫Als we geen natuurkundig handvat hebben, kunnen we niets pakken.

17
00:01:03,270 --> 00:01:09,450
‫Dus we zouden het hele lichaam van deze grijpfunctie in een if-statement kunnen zetten, maar dat kan er een beetje

18
00:01:09,450 --> 00:01:10,170
‫rommelig uitzien.

19
00:01:10,200 --> 00:01:13,560
‫Dus wat we in plaats daarvan kunnen doen, is wat bekend staat als een vroege terugkeer.

20
00:01:13,800 --> 00:01:18,420
‫In wezen zeggen we gewoon of de fysica het aankan.

21
00:01:19,460 --> 00:01:21,680
‫Is gelijk aan nul aanwijzer.

22
00:01:21,710 --> 00:01:23,750
‫Je moet hier een dubbel gelijkteken plaatsen.

23
00:01:23,750 --> 00:01:25,190
‫Anders is het een opdracht.

24
00:01:25,820 --> 00:01:32,330
‫Dan kunnen we naar beneden om wat beugels te doen en we kunnen hier gewoon een aangifte doen.

25
00:01:32,600 --> 00:01:38,210
‫Dus wat dit gaat doen, is dat als we nulpunten hebben voor de fysica-handgreep, het meteen terugkeert en de

26
00:01:38,210 --> 00:01:43,460
‫rest van de functie niet uitvoert, waardoor het veilig wordt in de rest van de functie om

27
00:01:43,760 --> 00:01:46,580
‫de fysica te gebruiken behandelen zoals we willen.

28
00:01:47,420 --> 00:01:48,960
‫Dat gaan we dus doen.

29
00:01:48,980 --> 00:01:51,960
‫We gaan naar beneden waar we een hit hebben.

30
00:01:52,000 --> 00:01:54,350
‫Ik denk dat we deze logberichten niet meer nodig hebben.

31
00:01:54,350 --> 00:01:55,880
‫Dus ik ga de alt-statements verwijderen.

32
00:01:56,240 --> 00:02:02,990
‫Ik ga in principe alles uit de hoofdtekst van de F-verklaring verwijderen en we gaan onze grabber

33
00:02:02,990 --> 00:02:03,740
‫gebruiken.

34
00:02:04,100 --> 00:02:12,770
‫Dus we gaan de physics uitvoeren om de componenten van de pijlgrijper op locatie met rotatie te behandelen.

35
00:02:13,070 --> 00:02:16,790
‫Dan moeten we het voorzien van een component die we proberen te grijpen.

36
00:02:17,060 --> 00:02:22,210
‫Als je een kijkje neemt, is het ding dat het verwacht een primitieve componenten.

37
00:02:22,220 --> 00:02:26,960
‫Laten we eens kijken of we iets dergelijks in ons hitresultaat hebben.

38
00:02:27,310 --> 00:02:33,710
‫Ga gewoon naar de documentatiepagina ervoor en zoek naar je primitieve componenten en je kunt zien

39
00:02:33,710 --> 00:02:38,580
‫dat de get-component de primitieve component die werd geraakt zou retourneren.

40
00:02:38,630 --> 00:02:39,230
‫Perfect.

41
00:02:39,230 --> 00:02:40,070
‫Dat is precies wat we nodig hebben.

42
00:02:40,430 --> 00:02:47,240
‫Dus we moesten zoeken naar het hitresultaat dot get componenten en dat geeft ons wat we

43
00:02:47,240 --> 00:02:49,370
‫willen voor het eerste argument.

44
00:02:50,120 --> 00:02:53,870
‫Nu is de volgende een F-naam voor een boog.

45
00:02:53,930 --> 00:02:57,380
‫Nu willen we eigenlijk niets bij een bepaald bot pakken.

46
00:02:57,390 --> 00:03:01,600
‫Dit zou het geval zijn als we een skeletachtig gaas hadden, maar dat hebben we niet.

47
00:03:01,610 --> 00:03:06,320
‫We hebben een statische mesh, dus we gebruiken alleen de naam, geen onderstreping.

48
00:03:06,770 --> 00:03:10,970
‫En in het algemeen, met F-namen waar we het over botten hebben, komt dit vrij veel naar voren.

49
00:03:11,240 --> 00:03:15,170
‫Als je er niets in wilt zetten, gebruik je naam, onderstreep niets.

50
00:03:15,380 --> 00:03:18,320
‫Nu hebben we de locatie nodig waar we het gaan pakken.

51
00:03:18,320 --> 00:03:20,230
‫En we hebben al gezegd dat we dit hebben onderzocht.

52
00:03:20,240 --> 00:03:29,270
‫Het is het impactpunt van het resultaat van de hit en dan de rotatiebron, de huidige rotatie van dat onderdeel zal alle huidige

53
00:03:29,270 --> 00:03:32,930
‫rotatie van de acteur doen, wat je maar wilt.

54
00:03:33,290 --> 00:03:35,360
‫Dus het resultaat van de treffers krijgt componenten.

55
00:03:35,360 --> 00:03:37,070
‫We gaan die resultaten pakken.

56
00:03:37,340 --> 00:03:41,260
‫Krijg componentpuntpijl omdat het een aanwijzer is.

57
00:03:41,630 --> 00:03:45,770
‫Krijg componentrotatie zoals.

58
00:03:45,770 --> 00:03:52,370
‫Dus nu kan het de afsluitende haakjes op een aparte regel plaatsen en ik zal een puntkomma plaatsen die de verklaring

59
00:03:52,370 --> 00:03:56,690
‫afrondt en dat zou effectief moeten zijn bij het pakken van onze componenten.

60
00:03:56,900 --> 00:04:04,100
‫Nu is het volgende deel van de puzzel in de tick-component waar we de fysica-handgreep opnieuw willen gebruiken.

61
00:04:04,100 --> 00:04:10,130
‫Dus ik ga de code voor nu kopiëren, wetende dat het kopiëren van code naar drie plaatsen een beetje te veel is, en

62
00:04:10,130 --> 00:04:15,170
‫we zouden kunnen overwegen om het uit te trekken in een functie zodat we die opnieuw kunnen gebruiken.

63
00:04:15,470 --> 00:04:17,330
‫Maar inlaatcomponenten gaan een physics-handvat gebruiken.

64
00:04:17,330 --> 00:04:22,070
‫We komen vervroegd terug als we geen fysica-handvat kunnen krijgen.

65
00:04:22,550 --> 00:04:26,300
‫En wat we dan gaan doen, is proberen die doellocaties in te stellen.

66
00:04:26,300 --> 00:04:35,090
‫Ik ga een physics-handvat, pijlenset, doellocatie en rotatie doen.

67
00:04:35,390 --> 00:04:37,280
‫En laten we hier een beetje over nadenken.

68
00:04:37,280 --> 00:04:42,110
‫In wat voor soort doellocatie zouden we geïnteresseerd kunnen zijn?

69
00:04:42,320 --> 00:04:46,100
‫In wezen zal het hetzelfde zijn als bij het eindpunt.

70
00:04:46,100 --> 00:04:52,250
‫We nemen onze huidige locatie en verplaatsen deze dan een bepaalde afstand naar buiten in de voorwaartse

71
00:04:52,250 --> 00:04:52,820
‫richting.

72
00:04:53,150 --> 00:04:54,530
‫Dit is nu configureerbaar.

73
00:04:54,530 --> 00:05:00,020
‫Je zou de maximale grijpafstand kunnen gebruiken, maar dat vind ik in de praktijk te ver weg.

74
00:05:00,350 --> 00:05:05,810
‫Dus als we naar onze opa Dot H gaan, gaan we een nieuwe, nieuwe eigenschap maken met de naam Edit Anywhere.

75
00:05:06,110 --> 00:05:09,920
‫En het wordt een vlotter die de houdafstand wordt genoemd.

76
00:05:10,280 --> 00:05:12,500
‫En ik ga dit op 200 zetten.

77
00:05:12,500 --> 00:05:15,080
‫Dus het zal veel dichter bij de speler zijn.

78
00:05:15,290 --> 00:05:20,810
‫Als we nu een CP willen pakken, kunnen we naar onze take-functie gaan en proberen dit doelwit te creëren.

79
00:05:20,810 --> 00:05:25,970
‫Locatie moet een F-vector zijn die doellocatie wordt genoemd.

80
00:05:26,780 --> 00:05:37,250
‫We gaan dat gelijk stellen aan de locatie van een component plus de voorwaartse vector vermenigvuldigd

81
00:05:37,250 --> 00:05:39,740
‫met de houdafstand.

82
00:05:40,400 --> 00:05:42,320
‫Dus dan kunnen we dat gebruiken als de doellocatie.

83
00:05:42,320 --> 00:05:47,660
‫Dat wordt ons eerste argument en dan hebben we de doelrotatie nodig.

84
00:05:47,960 --> 00:05:54,620
‫Welnu, daarvoor ga ik gewoon de rotatie van de huidige component gebruiken, zodat terwijl we rondkijken,

85
00:05:54,980 --> 00:06:03,290
‫we het object gaan roteren met onze weergave, zodat we gewoon de componentrotatie kunnen doen om de rotatie van

86
00:06:03,290 --> 00:06:07,180
‫te krijgen het huidige onderdeel van de grabberscène.

87
00:06:07,400 --> 00:06:12,830
‫Leuk, plaats een puntkomma aan het einde van die regel en hercompileer en kijk hoe dit werkt.

88
00:06:13,040 --> 00:06:17,750
‫Nu we succesvol hebben gecompileerd, laten we de waterspuwer selecteren en ervoor zorgen dat we de mobiliteit

89
00:06:17,750 --> 00:06:18,910
‫van START veranderen.

90
00:06:19,040 --> 00:06:25,040
‫Denk aan verplaatsbaar omdat we het nodig hebben om te kunnen bewegen als reactie op natuurkunde en laten we ervoor zorgen

91
00:06:25,040 --> 00:06:26,260
‫dat het natuurkunde simuleert.

92
00:06:26,270 --> 00:06:31,640
‫Laten we naar de categorie natuurkunde gaan en de knop natuurkunde simuleren controleren.

93
00:06:31,850 --> 00:06:34,730
‫Laten we op play drukken en proberen het op te pakken.

94
00:06:34,880 --> 00:06:39,500
‫Er gebeurt dus momenteel niets, maar het lijkt wel vast te zitten in de vloer, dus dat is niet

95
00:06:39,500 --> 00:06:39,940
‫ideaal.

96
00:06:39,950 --> 00:06:43,490
‫Laten we proberen het een beetje op te tillen, zodat het niet in de vloer vastzit.

97
00:06:44,060 --> 00:06:47,570
‫Laat het zo op de grond vallen en probeer het nu op te rapen.

98
00:06:47,790 --> 00:06:50,290
‫Die lijkt weer in de vloer vast te zitten.

99
00:06:50,300 --> 00:06:52,490
‫Dus laten we het gewoon een tweede keer proberen.

100
00:06:52,760 --> 00:06:53,120
‫Oké.

101
00:06:53,120 --> 00:06:59,570
‫Dus het is een beetje onbetrouwbaar en soms, als je het meteen vangt, pakt het de

102
00:06:59,630 --> 00:07:03,380
‫waterspuwer prima op en kun je het zo oppakken.

103
00:07:03,380 --> 00:07:10,670
‫Ik merk dat de rotatie niet correct is, en dit komt omdat ik het verkeerde heb gebruikt bij het grijpen van

104
00:07:10,670 --> 00:07:11,450
‫de fysica-component.

105
00:07:11,450 --> 00:07:17,540
‫Ik heb de rotatie van de waterspuwer en nu proberen we die rotatie te behouden die ik eigenlijk

106
00:07:17,870 --> 00:07:23,240
‫moest gebruiken, de rotatie die we gebruiken om de rotatie van de grijper te nemen.

107
00:07:23,510 --> 00:07:29,210
‫Dus laten we doorgaan en dat veranderen en opnieuw compileren en we zullen gewoon weer op play drukken en proberen het te pakken.

108
00:07:29,210 --> 00:07:29,780
‫Daar ga je.

109
00:07:30,050 --> 00:07:35,120
‫Deze keer pakte ik het en ik kreeg de juiste rotatie, de exacte rotatie die het had.

110
00:07:35,480 --> 00:07:39,290
‫En je kunt zien dat het lijkt alsof het aan een veer wordt gegrepen.

111
00:07:39,290 --> 00:07:44,630
‫Als ik hem door een muur probeer te duwen, probeert hij niet zo veel mogelijk door de muur te gaan.

112
00:07:44,630 --> 00:07:52,000
‫Het komt uiteindelijk door de muur, maar probeert de natuurkunde te observeren terwijl ik het beweeg.

113
00:07:52,130 --> 00:07:56,840
‫Dus laten we je nu uitdagen om een nieuwe functie uit te voeren, genaamd een physics-handvat krijgen.

114
00:07:56,840 --> 00:07:57,830
‫Het wordt privé.

115
00:07:58,160 --> 00:07:59,270
‫Het zou een U moeten retourneren.

116
00:07:59,270 --> 00:08:04,130
‫Natuurkunde verwerkt component, en het zou deze gedupliceerde code moeten verwijderen om de eigenaar te krijgen en de

117
00:08:04,130 --> 00:08:05,810
‫component per klasse te vinden.

118
00:08:06,170 --> 00:08:11,360
‫Je kunt het ook potentieel contact maken, kijken of het kan en het laten loggen.

119
00:08:11,360 --> 00:08:16,850
‫Als we geen component voor fysica hebben, geef dan een waarschuwingslogboek zodat het verschijnt en we weten dat we iets

120
00:08:16,850 --> 00:08:17,810
‫verkeerd hebben gedaan.

121
00:08:18,200 --> 00:08:19,940
‫Pauzeer de video en probeer het.

122
00:08:23,860 --> 00:08:24,190
‫Oké.

123
00:08:24,190 --> 00:08:24,700
‫Welkom terug.

124
00:08:24,730 --> 00:08:29,260
‫Allereerst gaan we naar de kop van het bestand waar we dit in het privégedeelte gaan plaatsen.

125
00:08:29,260 --> 00:08:37,150
‫Maar onder de eigenschappen laat ik het een paar fysica teruggeven, componenten behandelen en hier een asterisk

126
00:08:37,150 --> 00:08:38,050
‫plaatsen.

127
00:08:38,440 --> 00:08:46,240
‫Omdat we dit type hier in de koptekst gebruiken, moeten we onze include nemen en deze uit

128
00:08:46,240 --> 00:08:47,680
‫de grijper knippen.

129
00:08:47,680 --> 00:08:52,930
‫Dus de meegeleverde met betrekking tot de fysica-handgreep, we moeten deze in de grijperpunt h plaatsen waar

130
00:08:52,930 --> 00:08:55,630
‫we deze boven de gegenereerde h gaan plaatsen.

131
00:08:55,630 --> 00:08:58,360
‫Dat is het laatste wat altijd in ons hoofd van bestanden zit.

132
00:08:58,780 --> 00:09:01,600
‫En waarom hoeven we het niet ook in de CP te hebben?

133
00:09:01,900 --> 00:09:07,270
‫Nou, omdat we Grab of H opnemen, dus alles wat we invoeren, grab it of H

134
00:09:07,270 --> 00:09:11,680
‫zal automatisch in de CP komen, zodat we dat daarin kunnen opnemen.

135
00:09:12,340 --> 00:09:20,140
‫Nu kunnen we naar het punt gaan waar we deze functie definiëren en het de 'get physics-handling' noemen van

136
00:09:20,140 --> 00:09:21,430
‫zulke haakjes.

137
00:09:21,910 --> 00:09:29,110
‫En ik denk dat dit constant zou moeten zijn, niets zou moeten veranderen in onze grabber om deze functie aan te roepen.

138
00:09:29,650 --> 00:09:37,540
‫Ga gewoon naar de CP, ga naar de onderkant waar ik in de definitie ga plakken, ik ga

139
00:09:37,570 --> 00:09:45,970
‫een je grabber dubbele punt aan de voorkant plakken en dan verwijder ik de puntkomma, voeg een paar accolades toe.

140
00:09:46,420 --> 00:09:54,190
‫En wat we willen doen, is nemen waar we dit online hebben en we gaan dat er gewoon uit

141
00:09:54,190 --> 00:09:56,800
‫halen en vervangen door een get-fysica.

142
00:09:58,050 --> 00:10:00,140
‫Behandelen als zeep.

143
00:10:00,360 --> 00:10:07,350
‫En dan in de get-fysica-handle kunnen we eenvoudig de get owner find-component per klasse retourneren, enz.

144
00:10:07,560 --> 00:10:13,050
‫En nu kunnen we dit ook vervangen waar we het doen in de tic-component, we krijgen de fysica-greep te

145
00:10:13,050 --> 00:10:13,500
‫pakken.

146
00:10:13,950 --> 00:10:18,660
‫Laten we dat kleine stukje code vervangen door een physics-handvat.

147
00:10:19,080 --> 00:10:22,860
‫Nu is het zo'n klein stukje code, het is het bijna niet waard, maar het is zeker

148
00:10:22,860 --> 00:10:27,810
‫de moeite waard voor de oefening op dit punt en voor het feit dat we nu wat logberichten kunnen toevoegen en beginnen met spelen.

149
00:10:27,810 --> 00:10:32,760
‫We hoeven de fysica helemaal niet te gebruiken, dus ik ga die code daar gewoon verwijderen.

150
00:10:33,180 --> 00:10:37,080
‫Maar wat ik ga doen is dat ik een logbericht ga toevoegen.

151
00:10:37,440 --> 00:10:44,040
‫We gaan dus een variabele maken om ons resultaat hier op te slaan, want als we terugkeren en proberen een logbericht af te

152
00:10:44,040 --> 00:10:45,780
‫drukken, gaat dat niet werken.

153
00:10:46,140 --> 00:10:50,100
‫We krijgen dus een nieuwe component voor het omgaan met fysica, genaamd resultaat.

154
00:10:51,180 --> 00:11:00,270
‫Dat is, we gaan hier weg en we zullen zeggen dat als het resultaat gelijk is aan null pointer, nou, dan moeten we

155
00:11:00,270 --> 00:11:06,120
‫een nieuw logboek maken met een waarschuwing of in feite een fout, echt waar.

156
00:11:06,540 --> 00:11:12,270
‫En we gaan zeggen dat grabber een nieuwe physics handle-component nodig heeft.

157
00:11:12,840 --> 00:11:14,700
‫En dan na het if-statement.

158
00:11:14,700 --> 00:11:15,780
‫Dit zal dus gebeuren.

159
00:11:15,780 --> 00:11:21,030
‫Of het nu null is of niet, we gaan het resultaat retourneren.

160
00:11:21,330 --> 00:11:23,610
‫Dus laten we doorgaan en dat compileren en controleren of het allemaal werkt.

161
00:11:23,970 --> 00:11:30,960
‫Het lijkt te zijn gelukt en ik kan zien dat het moet werken, want als ik met de linkermuisknop in de scène klik, krijg

162
00:11:30,960 --> 00:11:37,230
‫ik de blauwe of debug-bollen die worden getekend en ze zouden niet worden getekend als we dat niet zouden krijgen.

163
00:11:37,230 --> 00:11:38,640
‫Natuurkunde verwerkt componenten.

164
00:11:38,760 --> 00:11:39,330
‫Goed spul.

165
00:11:39,330 --> 00:11:45,990
‫Dus in deze lezing hebben we ons waterspuwerbeeld kunnen grijpen met onze grijper, hoewel het soms

166
00:11:45,990 --> 00:11:48,090
‫een beetje onbetrouwbaar kan zijn.

167
00:11:48,090 --> 00:11:52,110
‫En we gaan dit uitzoeken in de komende lezingen, dus ik zie je daar.

