‫Hallo en welkom.
‫In deze lezing gaan we nieuwe componenten toevoegen aan de app-speler, de
‫fysica-handgreep, en we gaan leren hoe we er een verwijzing naar kunnen krijgen in onze grabber-component.
‫We gaan ook kijken hoe we onszelf kunnen beschermen tegen het per ongeluk laten crashen van de motor.
‫Laten we erin duiken en kijken hoe.
‫Nu, om een object te grijpen, moeten we communiceren met het fysica-systeem.
‫En er is eigenlijk een onderdeel dat we kunnen gebruiken, de fysica-handgreep, waarmee we fysieke objecten kunnen pakken en ze kunnen vertellen
‫waar we willen zijn in de wereld, maar op zo'n manier dat het fysieke beperkingen erkent, zodat
‫het dat doet' t door muren gaan.
‫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
‫het naartoe moeten laten gaan.
‫Dus we gaan componenten van deze fysica gebruiken.
‫We gaan het toevoegen aan onze speler, BP, samen met de grijper.
‫Dus laten we naar de knop Toevoegen onder het componentenpaneel gaan en zoeken naar de fysica-handle en toevoegen.
‫En je kunt zien dat het een acteurscomponent is, geen scènecomponent, omdat het naar beneden gaat
‫in het onderste gedeelte, dus het heeft eigenlijk geen fysieke transformatie van zichzelf.
‫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
‫willen hebben dat het object dat we hebben vastgepakt.
‫Als je naar de documentatie gaat, kun je dit zien in de beschikbare functies.
‫Als je naar beneden scrolt naar het functiegedeelte, kun je zien dat er een vrijgavecomponent en een
‫grijpcomponent bij locatiefunctie is.
‫Er is ook een ingestelde doellocatie en rotatie.
‫Dit is waar het wil proberen het object te plaatsen, maar het zal uiteraard alle fysieke beperkingen daarbij
‫respecteren en het zal het op een soepele manier doen alsof het op een veer zit.
‫We gaan deze functies nu nog niet gebruiken, maar we moeten wel een manier vinden om
‫deze component in onze grabbercomponent te bemachtigen.
‫Dus hoe doen we dat?
‫Laten we naar onze C gaan. P en kijk eens in een groot spel en probeer het te pakken te krijgen.
‫Nu is er een functie op elke actor waarmee we een component op type kunnen vinden.
‫Maar wat is het type fysieke handgreep?
‫Welnu, het is een onderdeel voor je physics-handvat dat dit type krijgt dat we moeten gebruiken en opnemen, en je kunt
‫zien dat het in de documentatie is opgenomen in de physics engine forward slash physics handle-component.
‫Dus laten we dat kopiëren naar een grabber CP en additief onder add draw debug helpers.
‫Wat we dan gaan doen, is dat we ONA zover krijgen dat hij onze
‫eigendomsakte te pakken krijgt, een aanwijzer naar een pijl en een coole vondst, component per klasse.
‫Deze functie is een speciaal soort functie die een sjabloonfunctie wordt genoemd in C++, en dit betekent
‫dat je er een aantal parameters aan kunt doorgeven die daadwerkelijk worden geëvalueerd wanneer je compileert.
‫En de manier waarop u dit doet, is door punthaken zoals deze te gebruiken.
‫Dus je gebruikt een punthaak na de functie en je geeft het het type dat je wilt
‫dat het vindt, wat in ons geval het onderdeel is dat je fysica zo behandelt.
‫En dan sluit je de punthaken.
‫Maar omdat het een functie is, moet je het ook met gewone haakjes aanroepen.
‫Dus dan zet je de tweede set haakjes hierna.
‫U kunt dus zien dat deze argumenten voor de compileertijd worden doorgegeven met de punthaken en
‫dat de runtime-argumenten worden doorgegeven met de haakjes.
‫Nu, net als een normale functie, zal dit een retourwaarde hebben en in dit geval zal de retourwaarde het
‫type zijn dat we hier hebben doorgegeven.
‫Maar als een aanwijzer, dus we kunnen een componentaanwijzer voor je physics-handvat nemen en een variabele maken voor
‫dat wat we de physics-handle gaan noemen en deze gelijk stellen aan deze krijg eigenaar vind component per klasse.
‫Laten we nu een puntkomma aan het einde van deze regel onthouden en dat is alles
‫wat nodig is om een ander onderdeel van dezelfde actor te bemachtigen.
‫Onthoud nu dat ik je heb verteld dat pointers gevaarlijk kunnen zijn, omdat ze soms een nulpunt kunnen zijn en dat
‫kan leiden tot een crash.
‫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
‫acteur hebben gezet en deze nog niet hebben aangesloten op een physics-handvatcomponent.
‫Als dit het geval is, wordt de aanwijzer van de fysica-handgreep een nulwijzer.
‫En als we de pijl-operator of de verwijzende operator op die aanwijzer proberen te gebruiken, zal onze
‫engine crashen.
‫En het kan soms heel moeilijk zijn om te zien hoe die crash eruitziet.
‫Dus ik ga gewoon door en veroorzaak deze crash alleen maar om je te laten zien en je kunt
‫het misschien herkennen als het je in de toekomst overkomt, ik ga onze fysica-handvataanwijzer opnieuw toewijzen
‫gelijk aan de nulwijzer .
‫Speciaal trefwoord.
‫Het is alles.
‫Nee, Pieter.
‫Zo heb je de NULL-aanwijzer in C++ gespeld.
‫Dan zet je een puntkomma aan het einde.
‫En wat we dan kunnen doen is natuurkunde doen, pijlen hanteren, zo'n naam krijgen.
‫En als we doorgaan en compileren met behulp van live codering en als dat klaar is met compileren, gaan we door
‫en zorgen we er in de eerste plaats voor dat we alles opslaan wat hier gaande is in IBP plex en op het
‫punt staat te crashen de motor.
‫En als ik doorga en op play druk, is dit het resultaat dat we een crash krijgen.
‫Verslaggever Als je dit ziet, zou je misschien geneigd zijn te denken dat er iets mis is gegaan met onwerkelijk,
‫maar het is eigenlijk jouw code die hier debet is.
‫Je kunt zien dat in dit crashrapport de eerste regel zegt dat het probleem komt van je pak een dubbele punt,
‫dubbele punt, begin met spelen.
‫En het geeft ons ook het regelnummer, namelijk regel 28.
‫Dus je kunt zien dat op dit punt op regel 28, wanneer we naar die aanwijzer verwijzen, om er
‫een functie op aan te roepen, we eigenlijk een ernstige fout hebben begaan door niet eerst te controleren of die aanwijzer nul
‫was.
‫Dus dat is wat we moeten doen.
‫En dat doen we met een if-statement.
‫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
‫plaatsen, de naam in deze if-verklaring kunnen krijgen en dat ons beschermt omdat die code,
‫dat de referentiecode wordt niet uitgevoerd in het geval dat we een
‫null-aanwijzer hebben.
‫Dus ik ga door en verwijder regel 27 nu waar we het op een nee-wijzer zetten en ik
‫ga je uitdagen om de componentnaam voor jezelf af te drukken.
‫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
‫niet gelukt is om die component te pakken te krijgen en proberen de component te verwijderen om te controleren, pauzeren
‫de video en hebben geleden.
‫Oké.
‫Welkom terug.
‫Dus we gaan hier een nieuw jou log-bericht maken en we gaan zeggen dat we een fysica-handvat hebben, dubbele punt
‫procent s en we hebben deze fysica-handvatnaam.
‫Dus ik ga gewoon knippen en plakken als de tweede argumenten of de vierde argumenten in het U-logboek.
‫En ik ga een ster plaatsen omdat het een string is.
‫Laten we nu een alt-statement toevoegen onder onze if-statements.
‫En hier gaan we nog een jaarlogboek plaatsen, dit keer in
‫plaats van een display, we gaan een waarschuwingsbericht plaatsen dat in het geel zal verschijnen
‫en we gaan nee zeggen physics handvat gevonden, uitroepteken.
‫Nu, heb de editor niet geopend.
‫Dus ik ga een control shift B doen om in Visual Studio-code te bouwen, de terminal te sluiten wanneer deze
‫succesvol is en opnieuw te starten vanuit het nieuwe project.
‫Zodra dat is gestart, laten we doorgaan en op play drukken, het uitvoerlogboek openen en we zouden het logbericht moeten
‫zien.
‫A heeft een fysica-handvat.
‫Welke naam de naam is vertrouwd natuurkunde handvat.
‫Wat als we nu naar onze pieperspeler zouden gaan en die fysica-handgreep daadwerkelijk verwijderen en doorgaan
‫en spelen.
‫Kijk nu eens naar ons outputlogboek en ze gaan, we hebben een gele waarschuwing dat er geen physics-handle is
‫gevonden.
‫Dus laten we stoppen met spelen.
‫Laten we doorgaan en de fysica-handgreep terug toevoegen, want we zullen het willen en we zullen de speler redden.
‫BP Geweldig spul.
‫We hebben dus uitgezocht hoe we andere componenten kunnen bemachtigen vanuit een component en we hebben geleerd hoe we met
‫een null moeten omgaan.
‫Een punt is en waarom we voorzichtig moeten zijn.
‫Ik zie je in de volgende lezing.