‫Hallo en welkom.
‫In deze lezing gaan we een grijper opzetten, zodat we ons
‫waterspuwerbeeld echt kunnen pakken en voor ons meenemen.
‫Laten we erin duiken en kijken hoe we dit doen.
‫Dus het wordt tijd dat we deze grijpercomponenttoewijzing gaan noemen met een rotatie.
‫Zoals ik al eerder zei, er zijn eigenlijk twee delen.
‫We moeten het onderdeel pakken en later moeten we ook de doellocatie en rotatie instellen,
‫zodat het beweegt.
‫Dus eerst dingen eerst.
‫In onze grijpfunctie moeten we een verwijzing naar onze fysica-handgreep bemachtigen.
‫Dus ik ga de regel van Begin Play kopiëren en ik ga naar de grabber en ik ga hem
‫hier plaatsen.
‫En om onszelf te beschermen tegen dit nul zijn.
‫Tja, wat moet er gebeuren?
‫Nou, eigenlijk is er niets dat we willen doen.
‫Als we geen natuurkundig handvat hebben, kunnen we niets pakken.
‫Dus we zouden het hele lichaam van deze grijpfunctie in een if-statement kunnen zetten, maar dat kan er een beetje
‫rommelig uitzien.
‫Dus wat we in plaats daarvan kunnen doen, is wat bekend staat als een vroege terugkeer.
‫In wezen zeggen we gewoon of de fysica het aankan.
‫Is gelijk aan nul aanwijzer.
‫Je moet hier een dubbel gelijkteken plaatsen.
‫Anders is het een opdracht.
‫Dan kunnen we naar beneden om wat beugels te doen en we kunnen hier gewoon een aangifte doen.
‫Dus wat dit gaat doen, is dat als we nulpunten hebben voor de fysica-handgreep, het meteen terugkeert en de
‫rest van de functie niet uitvoert, waardoor het veilig wordt in de rest van de functie om
‫de fysica te gebruiken behandelen zoals we willen.
‫Dat gaan we dus doen.
‫We gaan naar beneden waar we een hit hebben.
‫Ik denk dat we deze logberichten niet meer nodig hebben.
‫Dus ik ga de alt-statements verwijderen.
‫Ik ga in principe alles uit de hoofdtekst van de F-verklaring verwijderen en we gaan onze grabber
‫gebruiken.
‫Dus we gaan de physics uitvoeren om de componenten van de pijlgrijper op locatie met rotatie te behandelen.
‫Dan moeten we het voorzien van een component die we proberen te grijpen.
‫Als je een kijkje neemt, is het ding dat het verwacht een primitieve componenten.
‫Laten we eens kijken of we iets dergelijks in ons hitresultaat hebben.
‫Ga gewoon naar de documentatiepagina ervoor en zoek naar je primitieve componenten en je kunt zien
‫dat de get-component de primitieve component die werd geraakt zou retourneren.
‫Perfect.
‫Dat is precies wat we nodig hebben.
‫Dus we moesten zoeken naar het hitresultaat dot get componenten en dat geeft ons wat we
‫willen voor het eerste argument.
‫Nu is de volgende een F-naam voor een boog.
‫Nu willen we eigenlijk niets bij een bepaald bot pakken.
‫Dit zou het geval zijn als we een skeletachtig gaas hadden, maar dat hebben we niet.
‫We hebben een statische mesh, dus we gebruiken alleen de naam, geen onderstreping.
‫En in het algemeen, met F-namen waar we het over botten hebben, komt dit vrij veel naar voren.
‫Als je er niets in wilt zetten, gebruik je naam, onderstreep niets.
‫Nu hebben we de locatie nodig waar we het gaan pakken.
‫En we hebben al gezegd dat we dit hebben onderzocht.
‫Het is het impactpunt van het resultaat van de hit en dan de rotatiebron, de huidige rotatie van dat onderdeel zal alle huidige
‫rotatie van de acteur doen, wat je maar wilt.
‫Dus het resultaat van de treffers krijgt componenten.
‫We gaan die resultaten pakken.
‫Krijg componentpuntpijl omdat het een aanwijzer is.
‫Krijg componentrotatie zoals.
‫Dus nu kan het de afsluitende haakjes op een aparte regel plaatsen en ik zal een puntkomma plaatsen die de verklaring
‫afrondt en dat zou effectief moeten zijn bij het pakken van onze componenten.
‫Nu is het volgende deel van de puzzel in de tick-component waar we de fysica-handgreep opnieuw willen gebruiken.
‫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
‫we zouden kunnen overwegen om het uit te trekken in een functie zodat we die opnieuw kunnen gebruiken.
‫Maar inlaatcomponenten gaan een physics-handvat gebruiken.
‫We komen vervroegd terug als we geen fysica-handvat kunnen krijgen.
‫En wat we dan gaan doen, is proberen die doellocaties in te stellen.
‫Ik ga een physics-handvat, pijlenset, doellocatie en rotatie doen.
‫En laten we hier een beetje over nadenken.
‫In wat voor soort doellocatie zouden we geïnteresseerd kunnen zijn?
‫In wezen zal het hetzelfde zijn als bij het eindpunt.
‫We nemen onze huidige locatie en verplaatsen deze dan een bepaalde afstand naar buiten in de voorwaartse
‫richting.
‫Dit is nu configureerbaar.
‫Je zou de maximale grijpafstand kunnen gebruiken, maar dat vind ik in de praktijk te ver weg.
‫Dus als we naar onze opa Dot H gaan, gaan we een nieuwe, nieuwe eigenschap maken met de naam Edit Anywhere.
‫En het wordt een vlotter die de houdafstand wordt genoemd.
‫En ik ga dit op 200 zetten.
‫Dus het zal veel dichter bij de speler zijn.
‫Als we nu een CP willen pakken, kunnen we naar onze take-functie gaan en proberen dit doelwit te creëren.
‫Locatie moet een F-vector zijn die doellocatie wordt genoemd.
‫We gaan dat gelijk stellen aan de locatie van een component plus de voorwaartse vector vermenigvuldigd
‫met de houdafstand.
‫Dus dan kunnen we dat gebruiken als de doellocatie.
‫Dat wordt ons eerste argument en dan hebben we de doelrotatie nodig.
‫Welnu, daarvoor ga ik gewoon de rotatie van de huidige component gebruiken, zodat terwijl we rondkijken,
‫we het object gaan roteren met onze weergave, zodat we gewoon de componentrotatie kunnen doen om de rotatie van
‫te krijgen het huidige onderdeel van de grabberscène.
‫Leuk, plaats een puntkomma aan het einde van die regel en hercompileer en kijk hoe dit werkt.
‫Nu we succesvol hebben gecompileerd, laten we de waterspuwer selecteren en ervoor zorgen dat we de mobiliteit
‫van START veranderen.
‫Denk aan verplaatsbaar omdat we het nodig hebben om te kunnen bewegen als reactie op natuurkunde en laten we ervoor zorgen
‫dat het natuurkunde simuleert.
‫Laten we naar de categorie natuurkunde gaan en de knop natuurkunde simuleren controleren.
‫Laten we op play drukken en proberen het op te pakken.
‫Er gebeurt dus momenteel niets, maar het lijkt wel vast te zitten in de vloer, dus dat is niet
‫ideaal.
‫Laten we proberen het een beetje op te tillen, zodat het niet in de vloer vastzit.
‫Laat het zo op de grond vallen en probeer het nu op te rapen.
‫Die lijkt weer in de vloer vast te zitten.
‫Dus laten we het gewoon een tweede keer proberen.
‫Oké.
‫Dus het is een beetje onbetrouwbaar en soms, als je het meteen vangt, pakt het de
‫waterspuwer prima op en kun je het zo oppakken.
‫Ik merk dat de rotatie niet correct is, en dit komt omdat ik het verkeerde heb gebruikt bij het grijpen van
‫de fysica-component.
‫Ik heb de rotatie van de waterspuwer en nu proberen we die rotatie te behouden die ik eigenlijk
‫moest gebruiken, de rotatie die we gebruiken om de rotatie van de grijper te nemen.
‫Dus laten we doorgaan en dat veranderen en opnieuw compileren en we zullen gewoon weer op play drukken en proberen het te pakken.
‫Daar ga je.
‫Deze keer pakte ik het en ik kreeg de juiste rotatie, de exacte rotatie die het had.
‫En je kunt zien dat het lijkt alsof het aan een veer wordt gegrepen.
‫Als ik hem door een muur probeer te duwen, probeert hij niet zo veel mogelijk door de muur te gaan.
‫Het komt uiteindelijk door de muur, maar probeert de natuurkunde te observeren terwijl ik het beweeg.
‫Dus laten we je nu uitdagen om een nieuwe functie uit te voeren, genaamd een physics-handvat krijgen.
‫Het wordt privé.
‫Het zou een U moeten retourneren.
‫Natuurkunde verwerkt component, en het zou deze gedupliceerde code moeten verwijderen om de eigenaar te krijgen en de
‫component per klasse te vinden.
‫Je kunt het ook potentieel contact maken, kijken of het kan en het laten loggen.
‫Als we geen component voor fysica hebben, geef dan een waarschuwingslogboek zodat het verschijnt en we weten dat we iets
‫verkeerd hebben gedaan.
‫Pauzeer de video en probeer het.
‫Oké.
‫Welkom terug.
‫Allereerst gaan we naar de kop van het bestand waar we dit in het privégedeelte gaan plaatsen.
‫Maar onder de eigenschappen laat ik het een paar fysica teruggeven, componenten behandelen en hier een asterisk
‫plaatsen.
‫Omdat we dit type hier in de koptekst gebruiken, moeten we onze include nemen en deze uit
‫de grijper knippen.
‫Dus de meegeleverde met betrekking tot de fysica-handgreep, we moeten deze in de grijperpunt h plaatsen waar
‫we deze boven de gegenereerde h gaan plaatsen.
‫Dat is het laatste wat altijd in ons hoofd van bestanden zit.
‫En waarom hoeven we het niet ook in de CP te hebben?
‫Nou, omdat we Grab of H opnemen, dus alles wat we invoeren, grab it of H
‫zal automatisch in de CP komen, zodat we dat daarin kunnen opnemen.
‫Nu kunnen we naar het punt gaan waar we deze functie definiëren en het de 'get physics-handling' noemen van
‫zulke haakjes.
‫En ik denk dat dit constant zou moeten zijn, niets zou moeten veranderen in onze grabber om deze functie aan te roepen.
‫Ga gewoon naar de CP, ga naar de onderkant waar ik in de definitie ga plakken, ik ga
‫een je grabber dubbele punt aan de voorkant plakken en dan verwijder ik de puntkomma, voeg een paar accolades toe.
‫En wat we willen doen, is nemen waar we dit online hebben en we gaan dat er gewoon uit
‫halen en vervangen door een get-fysica.
‫Behandelen als zeep.
‫En dan in de get-fysica-handle kunnen we eenvoudig de get owner find-component per klasse retourneren, enz.
‫En nu kunnen we dit ook vervangen waar we het doen in de tic-component, we krijgen de fysica-greep te
‫pakken.
‫Laten we dat kleine stukje code vervangen door een physics-handvat.
‫Nu is het zo'n klein stukje code, het is het bijna niet waard, maar het is zeker
‫de moeite waard voor de oefening op dit punt en voor het feit dat we nu wat logberichten kunnen toevoegen en beginnen met spelen.
‫We hoeven de fysica helemaal niet te gebruiken, dus ik ga die code daar gewoon verwijderen.
‫Maar wat ik ga doen is dat ik een logbericht ga toevoegen.
‫We gaan dus een variabele maken om ons resultaat hier op te slaan, want als we terugkeren en proberen een logbericht af te
‫drukken, gaat dat niet werken.
‫We krijgen dus een nieuwe component voor het omgaan met fysica, genaamd resultaat.
‫Dat is, we gaan hier weg en we zullen zeggen dat als het resultaat gelijk is aan null pointer, nou, dan moeten we
‫een nieuw logboek maken met een waarschuwing of in feite een fout, echt waar.
‫En we gaan zeggen dat grabber een nieuwe physics handle-component nodig heeft.
‫En dan na het if-statement.
‫Dit zal dus gebeuren.
‫Of het nu null is of niet, we gaan het resultaat retourneren.
‫Dus laten we doorgaan en dat compileren en controleren of het allemaal werkt.
‫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
‫ik de blauwe of debug-bollen die worden getekend en ze zouden niet worden getekend als we dat niet zouden krijgen.
‫Natuurkunde verwerkt componenten.
‫Goed spul.
‫Dus in deze lezing hebben we ons waterspuwerbeeld kunnen grijpen met onze grijper, hoewel het soms
‫een beetje onbetrouwbaar kan zijn.
‫En we gaan dit uitzoeken in de komende lezingen, dus ik zie je daar.