﻿1
00:00:04,420 --> 00:00:05,380
‫Hallo en welkom.

2
00:00:05,380 --> 00:00:10,030
‫In deze lezing gaan we nieuwe componenten toevoegen aan de app-speler, de

3
00:00:10,030 --> 00:00:16,030
‫fysica-handgreep, en we gaan leren hoe we er een verwijzing naar kunnen krijgen in onze grabber-component.

4
00:00:16,030 --> 00:00:20,620
‫We gaan ook kijken hoe we onszelf kunnen beschermen tegen het per ongeluk laten crashen van de motor.

5
00:00:20,830 --> 00:00:23,140
‫Laten we erin duiken en kijken hoe.

6
00:00:24,280 --> 00:00:29,170
‫Nu, om een object te grijpen, moeten we communiceren met het fysica-systeem.

7
00:00:29,500 --> 00:00:37,030
‫En er is eigenlijk een onderdeel dat we kunnen gebruiken, de fysica-handgreep, waarmee we fysieke objecten kunnen pakken en ze kunnen vertellen

8
00:00:37,030 --> 00:00:43,030
‫waar we willen zijn in de wereld, maar op zo'n manier dat het fysieke beperkingen erkent, zodat

9
00:00:43,030 --> 00:00:45,530
‫het dat doet' t door muren gaan.

10
00:00:46,120 --> 00:00:53,170
‫En het lijkt er een beetje op dat het object op een veer staat in plaats van strikt een specifiek punt te volgen waar we

11
00:00:53,170 --> 00:00:54,640
‫het naartoe moeten laten gaan.

12
00:00:55,150 --> 00:00:57,850
‫Dus we gaan componenten van deze fysica gebruiken.

13
00:00:57,850 --> 00:01:02,200
‫We gaan het toevoegen aan onze speler, BP, samen met de grijper.

14
00:01:02,200 --> 00:01:09,550
‫Dus laten we naar de knop Toevoegen onder het componentenpaneel gaan en zoeken naar de fysica-handle en toevoegen.

15
00:01:09,910 --> 00:01:14,110
‫En je kunt zien dat het een acteurscomponent is, geen scènecomponent, omdat het naar beneden gaat

16
00:01:14,320 --> 00:01:18,220
‫in het onderste gedeelte, dus het heeft eigenlijk geen fysieke transformatie van zichzelf.

17
00:01:18,610 --> 00:01:23,770
‫Wat we doen met de fysica-handgreep, is dat we het het object vertellen dat moet worden vastgepakt en dan vertellen we het waar we het

18
00:01:23,770 --> 00:01:25,900
‫willen hebben dat het object dat we hebben vastgepakt.

19
00:01:26,230 --> 00:01:31,810
‫Als je naar de documentatie gaat, kun je dit zien in de beschikbare functies.

20
00:01:31,990 --> 00:01:39,370
‫Als je naar beneden scrolt naar het functiegedeelte, kun je zien dat er een vrijgavecomponent en een

21
00:01:39,370 --> 00:01:41,110
‫grijpcomponent bij locatiefunctie is.

22
00:01:41,440 --> 00:01:45,910
‫Er is ook een ingestelde doellocatie en rotatie.

23
00:01:45,910 --> 00:01:51,100
‫Dit is waar het wil proberen het object te plaatsen, maar het zal uiteraard alle fysieke beperkingen daarbij

24
00:01:51,100 --> 00:01:56,260
‫respecteren en het zal het op een soepele manier doen alsof het op een veer zit.

25
00:01:56,500 --> 00:02:02,380
‫We gaan deze functies nu nog niet gebruiken, maar we moeten wel een manier vinden om

26
00:02:02,380 --> 00:02:05,230
‫deze component in onze grabbercomponent te bemachtigen.

27
00:02:05,710 --> 00:02:07,540
‫Dus hoe doen we dat?

28
00:02:07,840 --> 00:02:15,260
‫Laten we naar onze C gaan. P en kijk eens in een groot spel en probeer het te pakken te krijgen.

29
00:02:15,280 --> 00:02:23,740
‫Nu is er een functie op elke actor waarmee we een component op type kunnen vinden.

30
00:02:24,100 --> 00:02:27,110
‫Maar wat is het type fysieke handgreep?

31
00:02:27,130 --> 00:02:34,450
‫Welnu, het is een onderdeel voor je physics-handvat dat dit type krijgt dat we moeten gebruiken en opnemen, en je kunt

32
00:02:34,450 --> 00:02:40,090
‫zien dat het in de documentatie is opgenomen in de physics engine forward slash physics handle-component.

33
00:02:40,090 --> 00:02:46,150
‫Dus laten we dat kopiëren naar een grabber CP en additief onder add draw debug helpers.

34
00:02:46,900 --> 00:02:53,260
‫Wat we dan gaan doen, is dat we ONA zover krijgen dat hij onze

35
00:02:53,680 --> 00:03:00,070
‫eigendomsakte te pakken krijgt, een aanwijzer naar een pijl en een coole vondst, component per klasse.

36
00:03:00,400 --> 00:03:07,510
‫Deze functie is een speciaal soort functie die een sjabloonfunctie wordt genoemd in C++, en dit betekent

37
00:03:07,510 --> 00:03:14,230
‫dat je er een aantal parameters aan kunt doorgeven die daadwerkelijk worden geëvalueerd wanneer je compileert.

38
00:03:14,470 --> 00:03:18,790
‫En de manier waarop u dit doet, is door punthaken zoals deze te gebruiken.

39
00:03:19,240 --> 00:03:25,270
‫Dus je gebruikt een punthaak na de functie en je geeft het het type dat je wilt

40
00:03:25,270 --> 00:03:30,640
‫dat het vindt, wat in ons geval het onderdeel is dat je fysica zo behandelt.

41
00:03:31,090 --> 00:03:33,220
‫En dan sluit je de punthaken.

42
00:03:33,220 --> 00:03:37,630
‫Maar omdat het een functie is, moet je het ook met gewone haakjes aanroepen.

43
00:03:37,630 --> 00:03:41,680
‫Dus dan zet je de tweede set haakjes hierna.

44
00:03:41,680 --> 00:03:48,580
‫U kunt dus zien dat deze argumenten voor de compileertijd worden doorgegeven met de punthaken en

45
00:03:48,580 --> 00:03:52,090
‫dat de runtime-argumenten worden doorgegeven met de haakjes.

46
00:03:52,690 --> 00:03:58,840
‫Nu, net als een normale functie, zal dit een retourwaarde hebben en in dit geval zal de retourwaarde het

47
00:03:58,840 --> 00:04:01,270
‫type zijn dat we hier hebben doorgegeven.

48
00:04:01,420 --> 00:04:08,650
‫Maar als een aanwijzer, dus we kunnen een componentaanwijzer voor je physics-handvat nemen en een variabele maken voor

49
00:04:08,650 --> 00:04:16,150
‫dat wat we de physics-handle gaan noemen en deze gelijk stellen aan deze krijg eigenaar vind component per klasse.

50
00:04:16,510 --> 00:04:21,850
‫Laten we nu een puntkomma aan het einde van deze regel onthouden en dat is alles

51
00:04:21,850 --> 00:04:25,930
‫wat nodig is om een ander onderdeel van dezelfde actor te bemachtigen.

52
00:04:26,170 --> 00:04:32,680
‫Onthoud nu dat ik je heb verteld dat pointers gevaarlijk kunnen zijn, omdat ze soms een nulpunt kunnen zijn en dat

53
00:04:32,680 --> 00:04:34,510
‫kan leiden tot een crash.

54
00:04:34,840 --> 00:04:42,040
‫Dus stel je voor dat we vergeten waren om een physics-handvatcomponent op onze acteur te plaatsen, of dat we een grijper op een nieuwe

55
00:04:42,040 --> 00:04:46,000
‫acteur hebben gezet en deze nog niet hebben aangesloten op een physics-handvatcomponent.

56
00:04:46,180 --> 00:04:52,360
‫Als dit het geval is, wordt de aanwijzer van de fysica-handgreep een nulwijzer.

57
00:04:52,540 --> 00:04:58,540
‫En als we de pijl-operator of de verwijzende operator op die aanwijzer proberen te gebruiken, zal onze

58
00:04:58,540 --> 00:04:59,530
‫engine crashen.

59
00:04:59,530 --> 00:05:03,070
‫En het kan soms heel moeilijk zijn om te zien hoe die crash eruitziet.

60
00:05:03,490 --> 00:05:09,940
‫Dus ik ga gewoon door en veroorzaak deze crash alleen maar om je te laten zien en je kunt

61
00:05:09,940 --> 00:05:15,640
‫het misschien herkennen als het je in de toekomst overkomt, ik ga onze fysica-handvataanwijzer opnieuw toewijzen

62
00:05:15,640 --> 00:05:17,740
‫gelijk aan de nulwijzer .

63
00:05:18,970 --> 00:05:20,230
‫Speciaal trefwoord.

64
00:05:20,290 --> 00:05:20,680
‫Het is alles.

65
00:05:21,100 --> 00:05:22,360
‫Nee, Pieter.

66
00:05:22,420 --> 00:05:24,520
‫Zo heb je de NULL-aanwijzer in C++ gespeld.

67
00:05:24,520 --> 00:05:25,780
‫Dan zet je een puntkomma aan het einde.

68
00:05:26,140 --> 00:05:32,170
‫En wat we dan kunnen doen is natuurkunde doen, pijlen hanteren, zo'n naam krijgen.

69
00:05:32,710 --> 00:05:38,140
‫En als we doorgaan en compileren met behulp van live codering en als dat klaar is met compileren, gaan we door

70
00:05:38,140 --> 00:05:43,960
‫en zorgen we er in de eerste plaats voor dat we alles opslaan wat hier gaande is in IBP plex en op het

71
00:05:43,960 --> 00:05:45,520
‫punt staat te crashen de motor.

72
00:05:45,880 --> 00:05:50,080
‫En als ik doorga en op play druk, is dit het resultaat dat we een crash krijgen.

73
00:05:50,080 --> 00:05:55,360
‫Verslaggever Als je dit ziet, zou je misschien geneigd zijn te denken dat er iets mis is gegaan met onwerkelijk,

74
00:05:55,360 --> 00:05:58,210
‫maar het is eigenlijk jouw code die hier debet is.

75
00:05:58,540 --> 00:06:06,190
‫Je kunt zien dat in dit crashrapport de eerste regel zegt dat het probleem komt van je pak een dubbele punt,

76
00:06:06,220 --> 00:06:08,170
‫dubbele punt, begin met spelen.

77
00:06:08,170 --> 00:06:11,440
‫En het geeft ons ook het regelnummer, namelijk regel 28.

78
00:06:11,890 --> 00:06:18,370
‫Dus je kunt zien dat op dit punt op regel 28, wanneer we naar die aanwijzer verwijzen, om er

79
00:06:18,370 --> 00:06:26,020
‫een functie op aan te roepen, we eigenlijk een ernstige fout hebben begaan door niet eerst te controleren of die aanwijzer nul

80
00:06:26,020 --> 00:06:26,560
‫was.

81
00:06:27,010 --> 00:06:28,300
‫Dus dat is wat we moeten doen.

82
00:06:28,300 --> 00:06:29,650
‫En dat doen we met een if-statement.

83
00:06:29,650 --> 00:06:41,350
‫We zeggen in feite dat als de fysica-handgreep niet gelijk is aan de nul-aanwijzer, dan kunnen we doorgaan en dingen op die fysica-handle aanroepen, zodat we de fysica-handle kunnen

84
00:06:41,350 --> 00:06:47,080
‫plaatsen, de naam in deze if-verklaring kunnen krijgen en dat ons beschermt omdat die code,

85
00:06:47,080 --> 00:06:52,270
‫dat de referentiecode wordt niet uitgevoerd in het geval dat we een

86
00:06:52,270 --> 00:06:53,200
‫null-aanwijzer hebben.

87
00:06:53,470 --> 00:06:58,780
‫Dus ik ga door en verwijder regel 27 nu waar we het op een nee-wijzer zetten en ik

88
00:06:58,780 --> 00:07:02,410
‫ga je uitdagen om de componentnaam voor jezelf af te drukken.

89
00:07:02,860 --> 00:07:10,900
‫Dus print alleen als we de eigenlijke component hebben, in principe hebben we geen null-aanwijzer en gebruiken we een else om te waarschuwen als het ons

90
00:07:10,900 --> 00:07:16,990
‫niet gelukt is om die component te pakken te krijgen en proberen de component te verwijderen om te controleren, pauzeren

91
00:07:17,290 --> 00:07:18,940
‫de video en hebben geleden.

92
00:07:22,230 --> 00:07:22,710
‫Oké.

93
00:07:22,710 --> 00:07:23,550
‫Welkom terug.

94
00:07:23,640 --> 00:07:33,360
‫Dus we gaan hier een nieuw jou log-bericht maken en we gaan zeggen dat we een fysica-handvat hebben, dubbele punt

95
00:07:33,660 --> 00:07:37,110
‫procent s en we hebben deze fysica-handvatnaam.

96
00:07:37,140 --> 00:07:42,990
‫Dus ik ga gewoon knippen en plakken als de tweede argumenten of de vierde argumenten in het U-logboek.

97
00:07:43,470 --> 00:07:46,770
‫En ik ga een ster plaatsen omdat het een string is.

98
00:07:47,010 --> 00:07:49,980
‫Laten we nu een alt-statement toevoegen onder onze if-statements.

99
00:07:50,310 --> 00:07:55,470
‫En hier gaan we nog een jaarlogboek plaatsen, dit keer in

100
00:07:55,470 --> 00:08:02,040
‫plaats van een display, we gaan een waarschuwingsbericht plaatsen dat in het geel zal verschijnen

101
00:08:02,700 --> 00:08:07,200
‫en we gaan nee zeggen physics handvat gevonden, uitroepteken.

102
00:08:07,410 --> 00:08:08,880
‫Nu, heb de editor niet geopend.

103
00:08:08,880 --> 00:08:14,760
‫Dus ik ga een control shift B doen om in Visual Studio-code te bouwen, de terminal te sluiten wanneer deze

104
00:08:14,760 --> 00:08:17,700
‫succesvol is en opnieuw te starten vanuit het nieuwe project.

105
00:08:17,760 --> 00:08:24,930
‫Zodra dat is gestart, laten we doorgaan en op play drukken, het uitvoerlogboek openen en we zouden het logbericht moeten

106
00:08:24,930 --> 00:08:25,330
‫zien.

107
00:08:25,330 --> 00:08:26,970
‫A heeft een fysica-handvat.

108
00:08:26,970 --> 00:08:29,550
‫Welke naam de naam is vertrouwd natuurkunde handvat.

109
00:08:30,060 --> 00:08:39,450
‫Wat als we nu naar onze pieperspeler zouden gaan en die fysica-handgreep daadwerkelijk verwijderen en doorgaan

110
00:08:39,450 --> 00:08:41,070
‫en spelen.

111
00:08:41,070 --> 00:08:47,880
‫Kijk nu eens naar ons outputlogboek en ze gaan, we hebben een gele waarschuwing dat er geen physics-handle is

112
00:08:47,970 --> 00:08:48,720
‫gevonden.

113
00:08:48,840 --> 00:08:49,800
‫Dus laten we stoppen met spelen.

114
00:08:50,070 --> 00:08:55,800
‫Laten we doorgaan en de fysica-handgreep terug toevoegen, want we zullen het willen en we zullen de speler redden.

115
00:08:55,800 --> 00:08:57,030
‫BP Geweldig spul.

116
00:08:57,030 --> 00:09:03,540
‫We hebben dus uitgezocht hoe we andere componenten kunnen bemachtigen vanuit een component en we hebben geleerd hoe we met

117
00:09:03,540 --> 00:09:05,220
‫een null moeten omgaan.

118
00:09:05,220 --> 00:09:08,520
‫Een punt is en waarom we voorzichtig moeten zijn.

119
00:09:08,820 --> 00:09:10,230
‫Ik zie je in de volgende lezing.

