‫Hallo en welkom.
‫In deze lezing gaan we wat lijntracering opzetten, zodat we op de muren kunnen schieten en
‫deze foutopsporingspunten kunnen zien verschijnen.
‫En we gaan dit doen met een nieuwe functie lijntracering per kanaal.
‫We gaan zien waarom we die lijn gebruiken die is getraceerd op objecttype, wat we eerder hebben gebruikt.
‫Laten we erin duiken en kijken hoe het gedaan is.
‫Dus terug in ons gebouw ontsnapping, gebruikten we lijntraceringen en we gebruikten deze functie hier, de
‫lijntracering op objecttype.
‫En is dit wat we willen gebruiken?
‫Welnu, wat is het verschil tussen lijntracering per objecttype en zijn zeer naaste broer of zus,
‫namelijk een lijntracering per kanaal.
‫Welnu, het objecttype zegt, ik wil door deze regel zoeken en kijken of ik een object vind dat overeenkomt met dit
‫type.
‫Dus ik geloof dat wat we gebruikten bij het bouwen van een ontsnapping zoiets was als het fysieke lichaamsobjecttype en dat is
‫geweldig, het zal fysieke lichamen raken.
‫Maar als je plotseling besluit dat je iets anders een balletje wilt laten slaan, laat dat niet veel ruimte voor
‫opties.
‫Dus kanaal is daar beter voor omdat het ons in staat stelt om onze eigen aangepaste kanalen te definiëren
‫en vervolgens te definiëren welke soorten objecten transparant zijn voor dat kanaal en welke het blokkeren.
‫Dus dat is geweldig, want wat we willen kunnen doen is zeggen, oké, misschien kan een soort Bush geen
‫kogel blokkeren, terwijl een muur een kogel wel blokkeert, maar het zal geen schade oplopen, maar dat kunnen
‫we later afhandelen.
‫Dus kanaliseert de hele route die we gaan afleggen en we kunnen hier de juiste methode vinden door controle uit te voeren.
‫P En tussen haakjes, er is nog een extra leuk stukje dat ik pas onlangs heb
‫geleerd, namelijk dat als je het act-symbool gebruikt, je kunt zoeken naar symbolen in dit bestand en of zelfs in andere bestanden.
‫Maar als je het bestand open hebt, gaat het veel sneller.
‫Dan zou je zoiets als lijntracering kunnen doen en je kunt zien dat er een lijst is met
‫alle symbolen die functies of klassen of variabelen zijn, en we kunnen die lijn, tracering, testlijn, tracering, afzonderlijk per
‫kanaal per objecttype vinden.
‫We willen dit eerste spoor van één regel, een enkel BI-kanaal, dat een out-parameter zal hebben voor
‫wat we raken, de startpunten, de eindpunten, het conflict-traceerkanaal komt daar in een klein beetje en dan
‫een zoekopdracht parameters die een aantal standaardinstellingen hebben, waar we ons eigenlijk geen zorgen over hoeven
‫te maken.
‫Dus alleen die eerste paar dingen, de hit Start en en Trace Channel, waar we ons zorgen over willen maken.
‫Laten we een Trace Channel opzetten.
‫We gaan hiervoor naar instellingen en projectinstellingen.
‫En dan kijken we onder de motor naar het aanrijdingsgebied.
‫En hieronder kun je zien dat we objectkanalen en traceerkanalen hebben.
‫Objectkanalen is eigenlijk gewoon een andere manier om verschillende soorten objecten te zeggen.
‫Dus als je zowel de standaardsets van objecten als pionnen en dat soort dingen wilt hebben, als
‫je een nieuwe categorie objecten wilt, dan zou je de objectkanaalroute kunnen volgen.
‫Maar de sporen stellen je in staat om het andere uiteinde van het spectrum te definiëren, wat is als, weet
‫je, ik heb een kogel, welke objecten kan het raken?
‫Dus we gaan deze route af, voegen een nieuw traceerkanaal toe, en we gaan deze bullet noemen.
‫En de standaardreactie zal zijn.
‫BLOCK Wat in feite betekent dat alle objecttypen gaan.
‫BLOK Tenzij we nu anders specificeren, kunnen we dit accepteren en kunnen we onze presets hier beneden
‫bekijken.
‫En als we dat gewoon uitbreiden, zullen de voorinstellingen je laten zien dat we een heleboel verschillende dingen
‫hebben waarop we kunnen toepassen, dingen die we kunnen zeggen, we willen dat dit een natuurkundige acteur is,
‫in welk geval het objecttype is, wat een vooraf gedefinieerd objectkanaal zal zijn, zal een fysica-lichaam zijn.
‫Maar als we dit uitbreiden, kun je hier zien wat de reactie is op de verschillende soorten sporen.
‫Dus we hebben onze traceertype camera's, onze eigen kogels, zichtbaarheid, het blokkeert al deze en dan hebben
‫we objecttypes.
‫Dus dat is hoe het natuurkundig samenwerkt met andere objecten zoals pionnen en voertuigen, enz. Dat is niet hoe het interageert
‫met lijntracering per object.
‫Dat is enigszins verwarrend en het heeft me eerder in de war gebracht.
‫Dus het traceertype is wat interessant is en we kunnen hier gewoon een kijkje nemen en zien dat er geen botsing moet
‫worden ingesteld om niet te botsen.
‫Dus laten we ervoor zorgen dat onze kogels daar niet ook mee in botsing komen.
‫Dus het negeren van enkele van de voorinstellingen zodat onze opsommingsteken werkt zoals we zouden verwachten, alles overlappen, bijvoorbeeld,
‫zou in principe moeten overlappen met het opsommingsteken.
‫En waarschijnlijk moeten onzichtbare muur en onzichtbare muurdynamiek ook worden genegeerd in het kader van onze
‫opsomming.
‫Zelfde met dynamisch hier.
‫Je kunt zien dat we in feite eindigen met iets dat veel lijkt op een zichtbaar spoor.
‫Maar de reden om het gescheiden te houden is dat we misschien een klein onderscheid willen maken, zoals je kunt zien,
‫je kunt niet door deze struik kijken, maar je kunt er wel doorheen schieten.
‫Door dat soort dingen is het hebben van een eigen traceerkanaal echt heel handig.
‫Nu willen we dit traceerkanaal in code kunnen gebruiken, en het is een beetje funky hoe we dit moeten
‫doen, want er is hier een opsomming, een E-collisiekanaal, en als we F12 naar zijn definitie gaan, kun je zien er is een
‫heleboel voor de vooraf gedefinieerde, wereldstatisch - zichtbaarheid, enz. hier beneden, maar dan zijn
‫er nog een heleboel motortraceerkanalen één, twee en gametraceerkanaal één, twee, drie,
‫enz. voorgedefinieerd.
‫Welke van ons is dit?
‫Weet je, we hebben hier geen kogel.
‫We moeten eigenlijk een van deze game-traceerkanalen gebruiken.
‫Dus het is echt een beetje verwarrend.
‫Welke is het?
‫Dus de manier waarop u dit doet, is door naar uw projectmap te gaan en naar config.
‫En wat we willen is de standaard engine INI en die willen we openen in een tekst.
‫Dus je zou dat in elke gewenste tekst kunnen doen.
‫Ik sleep het graag naar Visual Studio-code.
‫Zodat Visual Studio-code degene is die het opent.
‫En hier willen we in wezen zoeken naar onze kogel en zien waar deze aan is toegewezen.
‫En ik denk dat deze eerste regel ons vertelt dat het kanaal dat het heeft gekregen het spel Trace Channel one
‫is.
‫Fantastisch.
‫Dus dat gaan we gebruiken als we onze lijntracering doen.
‫Dus laten we beginnen om de structuur van dit lijnspoor op zijn plaats te krijgen.
‫Het eerste dat we nodig hebben, is een startpunt.
‫Dat hebben we al.
‫Dat is de locatie van onze viewport.
‫We hebben ook een eindpunt nodig voor onze lijntracering dat iets moeilijker te berekenen is.
‫Dus laten we een F-vector voor ons einde maken, en we gaan dit berekenen door ons stoppunt te gebruiken, plus
‫de rotatie vermenigvuldigd met de hoeveelheid, de afstand die we willen weggaan en niet de rotatie, maar de vector die wijst
‫in de richting van de rotatie.
‫Enigszins verwarrend, maar eigenlijk als je een rotatiepuntvector doet, krijg je een vector die in de richting
‫van deze rotatie wijst.
‫Het doet een beetje het tegenovergestelde van wat we deden in de animatieblauwdruk om een rotatie van de vector te
‫krijgen.
‫Dit gaat de andere kant op.
‫Dus we gaan locatie plus deze rotatievector doen, en dan willen we in wezen een maximaal bereik.
‫Dus ik ga hier een nieuwe eigenschap introduceren, overal een bewerking maken en het wordt een
‫float genaamd Max Range zoals zo.
‫En we kunnen het instellen op een standaardwaarde van ongeveer 10.000 of een maximaal bereik van duizend.
‫Dat wordt ongeveer 100 meter, sorry, ongeveer tien meter.
‫En we gaan over naar een rotatiepuntvector vermenigvuldigd met het maximale bereik.
‫Dus dat wordt de vector die we krijgen van die rotatie en zal een grootte hebben van één.
‫Door het te vermenigvuldigen met het maximale bereik, wordt het een vector van grootte, wat het maximale bereik ook is.
‫En dan voegen we dat toe aan de locatie om ons het eindpunt te geven.
‫Maak je geen zorgen als je die wiskunde niet 100% volgt.
‫Het belangrijkste is dat we zo bij ons eindpunt willen komen.
‫Dan gaat het hier line-in doen om wat lijntracering toe te voegen en ik
‫ga deze draw-debug-camera verwijderen omdat ik hier een andere draw-debug-helper wil doen.
‫Ik wil een debug-punt tekenen dat je hier kunt vinden, de wereld inneemt, een positie en een grootte en
‫een kleur inneemt.
‫En of het nu persistent is of niet, we willen waarschijnlijk dat het persistent is, dat het zichtbaar is.
‫Dus we zouden in staat moeten zijn om iets in deze richting te doen, laten we zeggen debug-punten tekenen en
‫we gaan hier meteen een wereld van maken, en dan beginnen we in plaats daarvan met de locatie van
‫onze viewport, net zoals een test om te zien hoe dit teken-debug-punt werkt, geef het een grootte om het
‫een f-kleur rood te geven en zijn persistent waar te maken.
‫En dan gaan we naar hoofdletter voor de puntkomma en kijken of dit werkt.
‫Laten we compileren in de engine en op play drukken.
‫Dus nu schiet ik en beweeg ik iets naar achteren.
‫Je ziet dat er een punt is.
‫Het is echter heel erg klein en moeilijk te zien.
‫Dus ze gaan dit in plaats daarvan verhogen naar 20.
‫Eens kijken of dat beter is.
‫Compileren en spelen.
‫Ja.
‫En ja hoor, nu zie ik een heel, heel duidelijk punt.
‫Tijd dus voor jouw uitdaging om een lijntracering per kanaal te doen.
‫We hebben het eerder met objecttypen gedaan, dus hopelijk kunnen we dat extrapoleren naar het doen per kanaal.
‫Gebruik dus de locatie en het einde die we al hebben gedefinieerd als het begin en einde.
‫Controleer het succes van het resultaat door een if-statement te maken, dus alleen om de out-parameter goed te krijgen
‫in de out-parameter van het hitresultaat en alleen een debug-punt te tekenen.
‫Als we met succes het punt hebben bereikt en onthouden dat we dat kanaal gebruiken dat we in de punt hebben gevonden,
‫ook elk bestand.
‫Dus pauzeer de video en kijk of je al die parameters en argumenten in
‫de lijntracering kunt sorteren en die debug-punttekening kunt krijgen waar we raken met onze lijntracering.
‫In dit stadium doen we niets slims, zoals het negeren van de speler-acteur.
‫Dus je lijntracering kan uiteindelijk de speler raken en dat is oké voor deze uitdaging.
‫Video pauzeren.
‫Probeer het eens.
‫Oké.
‫Welkom terug.
‫Dus laten we er meteen in duiken.
‫We gaan eerst de wereld pakken en een pijl daarop.
‫We gaan een lijntracering per kanaal doen.
‫Dan hebben we een treffer nodig.
‫Dus bij parameters moeten we eerst onze hitresultaten struct verklaren om het door te geven als een app-parameter.
‫Het zal het hit noemen en ze zullen het hier doorgeven als het eerste argument.
‫Dan hebben we de locatie nodig.
‫En we hebben het einde nodig.
‫En dan wat?
‫Wat komt er hierna?
‫De botsing.
‫Een botsingskanaal.
‫Dus dat wordt een E-botsingskanaal.
‫Dikke darm.
‫En dan zou het e c moeten zijn, wat zeiden we?
‫Laten we eens kijken in de standaard engine.
‫Elk CC-game-traceerkanaal is degene die de standaard heeft geconfigureerd om te vragen.
‫Zijn er hier nog meer argumenten die we nodig hebben?
‫Laten we meegaan.
‫We hebben de botsingsparameters die standaard zijn uitgeschakeld.
‫Dus nee, we hebben hier niets nodig.
‫En wat we dan kunnen doen, is dat we hiervoor een booleaans resultaat nodig hebben.
‫Succes B dus.
‫En het klinkt erg handig, niet?
‫Succes zijn.
‫Laten we zeggen An als B succes.
‫We willen dat debugpunt tekenen.
‫Dus we gaan dit naar beneden verplaatsen.
‫Ik kan dit doen met Alt en dan verplaatst de pijl de lijn zo rond, en dan kan ik hem
‫laten inspringen met een besturingselement en de juiste vierkante haken op je toetsenbord en dat zorgt ervoor dat het er zo uitziet.
‫En nu willen we in plaats van de locatie, die het startpunt is, de hitlocatie.
‫Dus dat wordt zo'n puntlocatie.
‫En het lijkt erop dat ik een puntkomma aan het einde van deze regel mis.
‫Laten we dat bouwen en het proberen.
‫Als dat eenmaal is samengesteld, ga je de wereld in en probeer je op onze muren te schieten.
‫Daar ga je.
‫Je kunt zien dat we een punt op de muur hebben, precies waar ik heb geschoten.
‫Ik kan dit meerdere keren doen.
‫Het lijkt te raken als ik te ver van een muur ga, het raakt helemaal niet omdat ons maximale bereik vrij kort
‫is.
‫En je kunt zien dat als ik eenmaal binnen het maximale bereik kom, het raakt en een punt trekt.
‫Dat is dus een geslaagde uitdaging.
‫We kunnen nu een bepaald punt weergeven en volgen.
‫De volgende stap is om ervoor te zorgen dat er daadwerkelijk wat deeltjeseffecten worden weergegeven, wat veel cooler zal
‫zijn dan alleen maar een foutopsporingspunt daarvoor te tekenen.
‫Ik zie je in de volgende lezing.