‫Hallo.
‫Welkom.
‫In deze lezing gaan we de grijper veel betrouwbaarder maken.
‫En we gaan het ook mogelijk maken om een vastgegrepen onderdeel te laten vallen, zodat we het kunnen rondgooien en
‫het over het algemeen een beetje nuttiger maken.
‫Laten we erin duiken en kijken hoe dit wordt gedaan.
‫De reden dat we deze waterspuwer vaak niet kunnen oppikken, is dat componenten
‫die natuurkunde simuleren omwille van de prestaties, in slaap vallen als ze een bepaalde tijd stil hebben gestaan.
‫En dat is wat we zien.
‫Deze fysica-simulatie van waterspuwers gaat slapen en wordt niet gewekt als we ons eraan
‫vastmaken met onze fysica-handgreep.
‫Dus wat we moeten leren is het wakker te maken als we het raken met een bolspoor.
‫Laten we nu gaan kijken naar de primitieve componentdocumentatie die we hebben gezien.
‫De primitieve component is het ding dat wordt geretourneerd door ons hitresultaat, maar wat eigenlijk een primitieve
‫component is.
‫Dus hier in de documentatie staat dat een primitieve component een scènecomponent is die
‫een soort geometrie bevat of genereert en wordt weergegeven of gebruikt als botsingsgegevens.
‫Dus over het algemeen zijn primitieve componenten degene die fysica kunnen simuleren.
‫We kunnen hier dus enkele natuurkundige simulatiemethoden verwachten.
‫En waar ik naar ga zoeken is een functie met het sleutelwoord wake erin.
‫We gaan een paar functies doornemen totdat we er een vinden die zegt: Wek alle stijve lichamen.
‫Stijve lichamen zijn in wezen een fysica-term voor objecten die fysica simuleren.
‫Dus je kunt zien dat het een leegte heeft.
‫Retourtype heeft geen argumenten.
‫Dus we zouden dit gewoon moeten kunnen noemen als we ons eraan willen hechten.
‫Dus als we een CP in onze if-statement gaan pakken, hebben we dit onderdeel bereikt, we staan op het punt het te
‫pakken.
‫Het eerste dat we moeten doen, is misschien laten we een variabele maken om deze primitieve component op te slaan.
‫Dus we hebben een primitieve componentaanwijzer genaamd hit component set die gelijk is aan de hit resultaat
‫punt get component.
‫En dan die hitcomponent-aanwijzer gebruiken, kunnen we alle starre lichamen met een pijl wekken en dan de haakjes en de puntkomma
‫aan het einde plaatsen.
‫Dus dit zou dat onderdeel gewoon een kick moeten geven, wakker maken zodat het reageert op de fysica.
‫Laten we nu vervangen waar we hitresultaten hebben gedaan.
‫Krijg geen componenten in onze physics-handle-oproep om de locatie van componenten te pakken, want we hebben daar nu een variabele voor en
‫laten we opnieuw compileren als dat klaar is.
‫Laten we doorgaan en op play drukken en de waterspuwer voorlopig een beetje op de grond laten zitten en hem laten slapen
‫en dan proberen hem op te rapen.
‫En je zult merken dat we er geen problemen mee hebben om het op te rapen, het op de grond te laten liggen, wat dan ook.
‫Het komt goed en maak die harde lichamen van de natuurkunde wakker en begin ze te simuleren zodat ze kunnen
‫worden opgetild en vastgepakt.
‫Het is je misschien opgevallen dat we momenteel niet in staat zijn om de
‫physics-hendel vrij te geven, dus dat wordt jouw uitdaging om dat te doen in de release-functie.
‫Dus je gaat de release-component op die physics-handle aanroepen.
‫Dat is een functie die beschikbaar is op de fysica-handvataanwijzer.
‫Je gaat eerst kijken of we een onderdeel hebben dat je kunt pakken.
‫Dus als je een grijpcomponent krijgt die een aanwijzer naar de grijpcomponent terugstuurt, zijn die
‫punten nul als de fysica-handgreep momenteel niets grijpt.
‫Dus je kunt dat gebruiken om te controleren of we iets hebben en alleen vrijgeven als we momenteel iets
‫pakken.
‫En als bonus kun je een keer gaan kijken of we het doel opnieuw kunnen stellen.
‫Alleen als we iets te pakken hebben, maar bekijk de video en ga aan de slag.
‫Welkom terug.
‫Dus laten we naar binnen gaan om een kopje te pakken.
‫Ga naar de release-functie en verwijder het releaselog.
‫En hier gaan we een if-statement plaatsen en we gaan zeggen of en nu we
‫onze fysica-handvatten moeten pakken.
‫Dus we gaan allereerst een componentaanwijzer voor je fysica-handvat doen, die we de fysica-handgreep
‫gaan noemen en die gelijk stellen om de fysica-handgreep te krijgen.
‫Dus dan gaan we zeggen dat als de fysica-handgreep gelijk is aan de nulaanwijzer, we willen doorgaan en terugkeren
‫omdat we niets kunnen doen, iets vrijgeven.
‫Als we helemaal geen physics-handvat hebben, dan willen we even checken of we op dit moment nog iets vasthouden
‫met ons physics-handvat.
‫Dus als, laten we zeggen, als de fysica-handgreep de component haakjes niet gelijk is aan de nul-aanwijzer, dan betekent de body van deze if-verklaring dat we
‫iets hebben dat momenteel wordt gegrepen, nou dan gaan we een component voor
‫de fysica-handgreep maken voor het loslaten van de pijl , die het gaat loslaten, zoals de naam al doet
‫vermoeden.
‫En een ding dat ik hier niet in de code heb gedaan, maar het is waarschijnlijk de moeite waard om aan de jouwe toe te
‫voegen, is dat voordat we de component vrijgeven, het de moeite waard is om door te gaan en componenten te pakken te krijgen en dan de zwakke, alle
‫stijve lichamen toe te voegen, net zoals wij deden voordat we het onderdeel pakken.
‫Want als we een onderdeel zouden laten groeien en een tijdje niet bewegen, kan het ook gaan slapen.
‫En dus loslaten zou niets uithalen.
‫Dus dit is de moeite waard om toe te voegen omdat het die hoekzaak zou vangen en we willen de
‫doellocatie niet in vinkje zetten als we een physics-handvat hebben dat momenteel niets grijpt.
‫Dus hier in onze tick-componenten, gaan we een if-statement plaatsen dat precies hetzelfde zal zijn.
‫Het gaat om te zeggen dat de fysica handvat de pijl een onderdeel krijgt dat niet gelijk is aan de nulaanwijzer.
‫Vervolgens gaan we in de hoofdtekst van de if-instructie de berekening van de doellocatie en de instelling
‫van de doellocatie ook in die fysica-handle plaatsen.
‫Laten we dit opnieuw compileren en uitproberen.
‫Laten we doorgaan en op play drukken.
‫En probeer de waterspuwer te grijpen.
‫En als ik dan de muis loslaat, valt hij weer op de grond.
‫Dus en het lijkt niet te worden beïnvloed door of het wakker is of slaapt.
‫We lijken het wakker te maken, ongeacht of we het elke keer dat we het oppakken, in wezen zijn.
‫Dus dat lijkt precies te werken zoals ik het zou willen.
‫Het loopt niet vast.
‫Het voelt zo goed als goed.
‫Het enige rare ding is dat wanneer ik erin ga, je kunt zien dat het een rare schok geeft
‫omdat het in botsing komt met de speler.
‫Nu kunnen we dit een klein beetje oplossen door naar onze waterspuwer in het detailvenster te gaan, de categorie Alle te
‫selecteren, naar beneden te scrollen naar botsing en naar onze aangepaste voorinstelling voor botsingen te kijken en naar beneden te
‫kijken in de objectreacties.
‫We zullen hier later wat meer over zien.
‫Er is een pionobjectreactie.
‫Dit zegt eigenlijk: moet ik in botsing komen met de pion of wat?
‫Wat moet mijn reactie zijn op de pion?
‫Nou, ik ga het zo instellen dat het overlapt met de pion.
‫En dat betekent dat als het met mij in botsing komt, het het in wezen gewoon negeert.
‫En dan nog iets dat we moeten doen, omdat dit eigenlijk uit twee statische meshes bestaat,
‫ze hebben hun eigen botsingsinstellingen.
‫Ik ga naar de aarde heuvel.
‫Dat is het ding onder de waterspuwer.
‫En hier ga ik eigenlijk gewoon dingen vereenvoudigen.
‫Ik ga het deel van de zandheuvel maken, zonder aanrijding.
‫Dus ik ga het overschakelen naar de voorinstelling zonder botsing.
‫Dan ga ik verder en druk op play, pak de waterspuwer van de vloer.
‫En nu kun je zien dat wanneer ik ermee aan het rennen ben, er
‫geen van die rare glitches is omdat het niet probeert te botsen met het botsingsnetwerk van de speler.
‫Goed spul.
‫In deze lezing hebben we geleerd hoe we onze grijper veel betrouwbaarder kunnen maken en ook hoe we
‫de grijpcomponent kunnen loslaten.
‫Goed spul.
‫Ik zie je in de volgende lezing.