‫Hallo en welkom.
‫In deze lezing gaan we een nieuwe component in C++ maken, deze triggerbox, die aan ons zal rapporteren wanneer
‫we in de alkoof stappen of een willekeurig object in de alkoof plaatsen.
‫U kunt zien dat we een klein blauwdrukbericht in de linkerbovenhoek krijgen.
‫En om dat te doen, moeten we begrijpen hoe overlappingen en blokkeringen en verschillende
‫botsingsreacties zich gedragen in Unreal.
‫Laten we erin duiken en erachter komen.
‫Nu zijn we al vertrouwd geraakt met hoe traceringskanalen werken.
‫We weten dat je sporenreacties kunt krijgen op de verschillende objecten in onze scene, zoals deze struik hier.
‫Je kunt zien dat het een negeerreactie heeft op wapensporen, maar het blokkeert wel zichtbaarheidssporen.
‫Dan is er dit voorbeeld van kogelvrij glas dat wapens blokkeert maar zicht doorlaat en een bakstenen
‫muur die beide blokkeert.
‫U kunt dus zien hoe dit systeem werkt met traceerkanalen.
‫Wat gebeurt er als we proberen te beslissen welke objecten elkaar kunnen overlappen?
‫Welke passeren?
‫Welke blokkeren elkaar?
‫Dat kan een beetje ingewikkelder worden.
‫We zagen dit al toen we probeerden de waterspuwer te laten overlappen met onze pion.
‫Nu, dit is hoe het werkt.
‫In wezen gebruiken we deze objecttypen.
‫Elk object waartoe kan behoren, kan een bepaald objecttype zijn.
‫En dit is anders dan het type systeem in C++.
‫Dit zijn typen botsingen.
‫Dus je hebt misschien object A, een object B, en in hun instellingen, als we bijvoorbeeld de instellingen op
‫onze waterspuwer gaan bekijken, kun je zien dat ze hun eigen objecttype hebben.
‫Deze is een statisch wereldobject.
‫Maar verderop hebben ze ook hun reacties op andere soorten objecten.
‫U kunt dus zien dat dit object andere wereldstatistieken blokkeert.
‫Het zal andere werelddynamiek blokkeren.
‫Het zal de piontypes overlappen.
‫Het blokkeert fysieke lichamen en blokkeert vrijwel elk ander type.
‫En natuurlijk de pion zelf, als we onze BP-speler gaan zoeken.
‫En kijk in de capsulecomponent.
‫Bekijk de details en scrol verder naar beneden naar waar we een voorinstelling voor botsingen hebben.
‫Als we de voorinstelling voor trekken en botsen kunnen uitbreiden, kunnen we deze niet bewerken, maar we kunnen zien wat hij doet.
‫En je kunt zien dat het zijn eigen reactie heeft op de statische wereld.
‫Dus zijn reactie op de statische wereld zou zijn om het te blokkeren.
‫We hebben hier dus eigenlijk twee verschillende opties.
‫De pion zegt dat ik wereldstatistieken blokkeer, maar de waterspuwer zegt dat ik pionnen overlap.
‫Dus wat moet er gebeuren?
‫Welnu, hier komt deze tabel om de hoek kijken en ik heb een link naar deze
‫blogpost als je hem volledig wilt lezen in de lesbronnen.
‫U kunt dus zien dat er de minste blokkerende interactie tussen de twee nodig is.
‫Dus als het object A de pion was en het zegt, hé, ik zou die waterspuwer moeten blokkeren, maar de waterspuwers object B en
‫het zegt, hé, ik zou die pion moeten overlappen.
‫Dus er is de minste blokkade van die twee nodig en het gaat elkaar overlappen.
‫Het betekent dus wel dat als je wilt dat twee dingen elkaar blokkeren, ze het er allebei over eens moeten zijn
‫dat ze dat willen.
‫Dus laten we hier een ander voorbeeld bekijken.
‫We hebben de speler die van het objecttype pion is, en zijn objectreactie op andere pionnen is om ze te blokkeren
‫en statische objecten in de wereld is om ze te blokkeren.
‫De bakstenen muur is een statisch wereldobject.
‫Het kan pionnen blokkeren en statische werelden blokkeren.
‫Dus deze twee zouden het met elkaar eens zijn.
‫Nu is de struik ook wereldstatisch, maar hij overlapt pionnen.
‫Het lijkt erg op onze waterspuwer, maar het blokkeert wereldstatistieken.
‫Dus als je naar beneden gaat en kijkt naar wat er zou gebeuren, zou de pion proberen door de bush
‫te reizen en dat zou kunnen omdat het de minste blokkerende optie nodig heeft, namelijk overlap en
‫het genereert een overlapgebeurtenis waar we in code aan kunnen haken of blauwdruk, terwijl het niet door de bakstenen
‫muur kan en het opnieuw een hit genereert, iets waar we aan kunnen haken in Blueprint
‫of C++.
‫Dus waarom ga ik in al deze diepte?
‫Want wat ik wil doen, is een object plaatsen dat in wezen onzichtbaar is binnen deze muur, waardoor we de waterspuwer
‫hier kunnen plaatsen en we krijgen een gebeurtenis wanneer dat gebeurt.
‫Dus de waterspuwer zal een evenement steunen en zeggen: Hé, ik heb iets overlappend met mij.
‫Dus waarom is dit allemaal belangrijk?
‫Omdat ik een object wil plaatsen dat onzichtbaar is maar zal overlappen met de waterspuwer en ons daarvan op de hoogte
‫wil stellen.
‫We kunnen het dan opvragen vanuit C++ of we kunnen hoe dan ook gebeurtenissen in blauwdrukken krijgen.
‫En de manier waarop we dit gaan doen is om allereerst een blauwdruk te maken van deze kerkermuur.
‫Dus ik ga op de blauwdrukknop in het detailvenster klikken, een
‫nieuwe subklasse maken en deze BP, Underscore Secret Wall noemen, en we gaan op selecteren drukken om deze te maken.
‫En het bracht het naar ons hoofdvenster en er zit een verhuizer op.
‫Wat ik hier ook wil toevoegen, is in wezen een component die een boxbotsing wordt genoemd.
‫Dus als we op een boxbotsing klikken, kun je zien dat deze volledig onzichtbaar is.
‫Het geeft je alleen een aantal box-extensions die we kunnen veranderen.
‫We kunnen ze groter maken zodat overal waar we de waterspuwer in deze doos plaatsen, hij hem zal accepteren.
‫En we kunnen zien dat het hier botsingsopties heeft.
‫We hebben een overlap die allemaal dynamisch is als de standaard, maar als de standaardvoorinstelling.
‫Maar als we op aangepast raken, kun je zien dat we de objecttypen kunnen veranderen en we kunnen veranderen hoe het
‫hier op verschillende dingen reageert.
‫En ik denk dat het belangrijkste is, zoals je kunt zien, dat het is ingesteld om te overlappen met de meeste objecttypen, wat betekent
‫dat zelfs als ze niet zijn ingesteld om te overlappen met de werelddynamiek, het wel zal overlappen.
‫Het blokkeert niets waardoor we de waterspuwer hier kunnen plaatsen.
‫Dus ik ga die component van de scène verwijderen, omdat we een nieuwe component in
‫C ++ willen maken op basis van die boxbotsing.
‫Nu wil ik je gewoon laten zien dat met dit vak, als we het terugzetten naar
‫de standaardvoorinstelling waarop het stond, die volgens mij allemaal dynamisch was en we controleren of zoals al is aangevinkt, daadwerkelijk overlapgebeurtenissen genereren
‫al is aangevinkt.
‫Dan kunnen we naar onze gebeurtenisgrafiek gaan en hier met de rechtermuisknop klikken en naar overlap zoeken.
‫En helemaal bovenaan zie je een add-on-component die begint te overlappen voor de box.
‫Dus als we daarop klikken en de dooscomponent daadwerkelijk hernoemen naar het triggergebied, zoals zo, dan krijgen we in principe, als we het
‫triggergebied overlappen, een lijst met eigenschappen van het ding dat overlapt met ons, zodat we
‫het kunnen nemen.
‫Het overlapt met kinderen.
‫Krijg zijn naam.
‫Dus de weergavenaam is de naam van het knooppunt en dan kunnen we die nemen en de resultaatreeks afdrukken en
‫die aansluiten op de uitvoeringspin en we kunnen doorgaan en op play drukken.
‫En als we naar het gebied lopen, kun je zien dat het zegt dat de pieper het ding is dat het overlapt.
‫Nu kan het de fout niet zien omdat het zo donker is.
‫Dus ik ga gewoon weer naar de geheime muur en een pieptoon en ik ga een spotlichtcomponent toevoegen, die ik in
‫deze kleine nis ga plaatsen, de voorkant naar beneden draaiend en de ruimte verlichtend waar we
‫het voorwerp willen.
‫Nu in de scène kunnen we het heel duidelijk zien.
‫Dus laten we doorgaan en op play drukken en we kunnen naar die nis lopen.
‫Als we het overlappen, staat er dat de pieper-speler overlapt en dat we onze waterspuwer uit
‫deze cel kunnen pakken met onze nieuw geslagen grijper, en we kunnen die waterspuwer nemen en in dit gebied plaatsen.
‫Het lijkt echter geen overlappende gebeurtenissen te genereren, en dat komt omdat, net zoals we nodig hebben, er twee partijen
‫zijn bij de botsing.
‫Er zijn ook twee partijen om overlappende evenementen te genereren.
‫Dus alleen omdat we het hebben ingeschakeld op die dooscomponent, wil nog niet zeggen dat de waterspuwer die erin
‫beweegt ons daadwerkelijk gaat waarschuwen voor een overlapgebeurtenis.
‫Dus wat we moeten doen, is dat we naar de waterspuwer moeten gaan en ook controleren of deze overlapgebeurtenissen genereert.
‫Dus dan zouden de overlappende gebeurtenissen moeten gebeuren.
‫Laten we gaan en de waterspuwer oppakken, hem naar de alkoof brengen en hem erin steken.
‫En nu komt er een evenement aan.
‫Als dat gebeurt, wordt het standbeeld van de Gargoyle inderdaad geregistreerd.
‫Nu wil ik in dit specifieke geval geen blauwdrukgebeurtenissen gebruiken.
‫Dus wat ik wil doen, is onze triggergebiedcomponent nemen en dat in feite veranderen in een C++-component die kan evalueren
‫of het het Gargoyle-beeld heeft dat het wil of er al niet in zit.
‫De manier waarop we dit gaan doen, is dat we naar de ADD-componenten gaan, nieuwe C++-componenten maken.
‫En als bovenliggende klasse, in plaats van ACT-component of scènecomponenten te kiezen, gaan
‫we naar alle klassen en gaan we in plaats daarvan zoeken naar de boxcomponent.
‫En je kunt de vormcomponenten, dooscomponenten zien, degene die we willen en we kunnen doorgaan en de
‫volgende raken.
‫Dus ik wil je uitdagen om dit onderdeel te maken nu ik je heb laten zien hoe je de bovenliggende
‫klasse instelt.
‫Dus je gaat het triggercomponenten noemen en je zult sommige dingen moeten kopiëren van de andere componenten die we hebben
‫gemaakt, omdat het niet op dezelfde manier is ingesteld.
‫Aangezien we van een andere ouder afkomstig zijn, hoeft u de u-klasse-uitlijning niet te kopiëren.
‫Die hele regel is in principe leeg in de triggercomponent terwijl u deze maakt.
‫Kopieer dat dus van uw grijper of uw verhuizer en anders kunt u uw componenten niet toevoegen
‫aan uw blauwdrukken.
‫Dus dan moet je deze nieuwe triggercomponenten gebruiken om onze huidige boxcomponenten te vervangen en iets van Begin Play opnieuw af
‫te drukken.
‫Begin Play wordt niet automatisch voor je ingesteld, dus je zult het headerbestand en het C++-bestand
‫van onze andere componenten moeten kopiëren om het in te stellen.
‫Pauzeer de video en probeer het.
‫Oké.
‫Welkom terug.
‫Dus ik noem het de triggercomponenten, allemaal één woord en druk om klasse te creëren.
‫Dus zoals voorspeld, heeft een nieuwe klassenregel niets tussen haakjes.
‫En als we onze editor gaan bekijken en naar het BP-geheim gaan, zullen we proberen deze componentzoekopdracht voor trigger
‫toe te voegen.
‫Je ziet dat er niets naar boven komt.
‫En de reden hiervoor is dat als we naar ik een punt H pakken en naar de jou-klasseregel moeten kijken,
‫je kunt zien dat hier een stukje staat dat een blauwdruk-spawn van een component zegt.
‫Dus cruciaal, we moeten dit kopiëren.
‫Er is ook een klasgroep.
‫We kunnen net zo goed het hele ding kopiëren, omdat dit ons in staat stelt om deze componenten in blauwdruk
‫te maken, zodat we dit kunnen gaan plakken als de klassenregel voor de triggercomponent.
‫En dan het andere, als we het gaan pakken, kun je zien dat het begint te spelen.
‫Het bevindt zich in een beschermd gedeelte en we kunnen gewoon de definitie van die begin-afspeelfunctie kopiëren,
‫het naar onze triggercomponenten kopiëren en het zoals het was in de grijper plaatsen, net onder het gegenereerde
‫lichaam.
‫Dan kunnen we naar onze CP gaan en zien hoe groot in het spel was gedefinieerd.
‫Hier kun je zien dat het cool is om super te beginnen met spelen dat echt belangrijk is.
‫Dus we gaan dat kopiëren, overgaan in een triggercomponent.
‫CP En we gaan de je grijpt een dubbele punt veranderen in je triggercomponent, beginnen met spelen en dan kunnen we hier
‫een nieuw logboek plaatsen en we gaan gewoon een eenvoudig bericht schrijven, zoals triggercomponent
‫alive.
‫We gaan door en compileren.
‫Dit kan even duren, aangezien we een aantal behoorlijk belangrijke wijzigingen hebben aangebracht in onze hoofdbestand.
‫En als dat eenmaal gedaan is, kunnen we onze geheime muur van BP binnengaan, gaan toevoegen en zoeken naar trigger.
‫En hier kun je zien dat we die triggercomponent hebben.
‫Die kunnen we nu toevoegen.
‫We kunnen ons triggergebied dat we eerder hebben ingesteld, verwijderen.
‫Ga je gang en verwijder dat en vink aan of we het willen verwijderen.
‫Het gaat deze gebeurtenis die we hebben gemaakt in feite ongeldig maken en we kunnen controleren of de botsingen zijn ingesteld zoals
‫we willen op de trigger als we een kijkje gaan nemen.
‫Ja, het is ingesteld om alle dynamiek te overlappen en om overlappende gebeurtenissen te genereren.
‫En tot slot, wat we moeten vervangen, is deze gebeurtenis hier waar we onze
‫trigger-klik met de rechtermuisknop gaan selecteren en gaan om de add-gebeurtenis voor Trigger Collision te ontvouwen en onze eigen component begin overlap toe te voegen.
‫Dat is wat we eerder gebruikten.
‫Sluit de actieve pin aan en haak de executiepin aan om naar het kerkerniveau te gaan.
‫Ga de waterspuwer oppakken, probeer hem in de alkoof te steken en we merken dat dat niet werkt.
‫Dus nu hebben we die trigger ingesteld.
‫Laten we naar de viewport gaan en je kunt zien dat de trigger niet is gemaakt.
‫Het is niet groot genoeg gemaakt.
‫We hebben het niet goed gepositioneerd.
‫Dus laten we het in het midden van de alkoof plaatsen en laten we de eigenschappen van de doosuitbreiding vergroten,
‫zodat we vangen wat we in dit alkoofgebied hebben geplaatst.
‫Het maakt niet uit of het een beetje groter is en ons een veiligheidsmarge geeft, dan kunnen we de kerker in,
‫op play drukken en dan in de alkoof stappen.
‫En ja hoor, het detecteert dat de BP-speler die nis is binnengelopen.
‫Goed spul.
‫In deze lezing hebben we alles geleerd over objecttypes en objecttypereacties, en dat hebben we
‫gebruikt om deze triggercomponent in te stellen.
‫Ik zie je in de volgende lezing.