‫Hallo en welkom.
‫In deze lezing gaan we een pistool maken en leren we hoe we wapens
‫voor deze game gaan ontwerpen, zodat ze kunnen worden verwisseld, zodat we verschillende eigenschappen van verschillende soorten wapens
‫kunnen hebben.
‫En dat is over het algemeen hoe de architecturen werken in shooters first person of third, laten we erin duiken en kijken hoe
‫het werkt.
‫Oké.
‫We hebben dus al een tijdje niet meer ingecheckt op ons projectplan.
‫We zijn nog niet bij de planbeweging.
‫Het heeft de animatie voor nu gedaan, het is klaar.
‫En het schieten, dat is het volgende waar we ons op gaan focussen.
‫Het is hier een beetje verwarrend omdat onze mesh al een pistool lijkt te hebben, maar eigenlijk willen
‫we dit pistool niet gebruiken.
‫We willen het op een andere manier gebruiken.
‫Omdat je in een schietspel zit, wil je vaak kunnen schakelen tussen wapens of op zijn minst
‫verschillende karakters kunnen hebben, verschillende wapens hebben.
‫En de gemakkelijkste manier om dat te doen is om het pistool als een apart ding voor het personage te ontwerpen, zodat
‫je ze kunt verwisselen, zodat het verantwoordelijk kan zijn voor hoe het schiet.
‫Of het nu een raketwerper is of een jachtgeweer of een geweer, ze gaan dingen op verschillende manieren doen.
‫Nu, je zou kunnen zeggen, oké, laten we een wapencomponent maken en we kunnen die wapencomponenten
‫onder ons gaas steken.
‫Dat zou werken, behalve dat we dan de modulariteit verliezen die ons in staat stelt om meerdere componenten aan het pistool toe
‫te voegen.
‫Dus wat we echt willen doen, is de weg inslaan van het hebben van een acteur voor het pistool dat een kind-ID is voor het personage
‫van de schutter.
‫Dit is iets dat we nog niet eerder zijn tegengekomen, maar het werkt als volgt.
‫Je kunt een shooter-personage en een pistool hebben als kind, en het shooter-personage kan meerdere componenten hebben die
‫kind voor elkaar zijn.
‫Dus je hebt de capsule, we hebben momenteel het gaas als een kind van de capsule,
‫en de componenten van het pistool kunnen daartegen worden afgeschermd.
‫Dus de mesh krijgt de onderliggende ID van de mesh van het personage.
‫En als het nog andere componenten heeft, zoals misschien een deeltjeseffect op de loop van het pistool, kan dat een
‫kind-ID van het gaas zijn.
‫Je kunt dus zien dat deze hiërarchieën een beetje onafhankelijk zijn, dat je de scènecomponenten hebt,
‫degene die aan de rechterkant zijn getransformeerd, en ze kunnen in een bepaalde hiërarchie zijn.
‫En dan volgt de acteurshiërarchie eigenlijk de hiërarchie van de scènecomponenten.
‫De acteurs hebben geen eigen hiërarchie.
‫Dit is het beetje dat een beetje tijd kost om je hoofd rond te krijgen.
‫Het was een aha-moment toen het voor mij klikte.
‫Is dat in feite geen hiërarchie van acteurs, er is alleen een hiërarchie van scènecomponenten.
‫Er zijn acteurs die dezelfde componenten bezitten en dus uiteindelijk een hiërarchie hebben
‫omdat hun scènecomponenten aan elkaar gerelateerd zijn, maar ze hebben niet echt een onderlinge relatie.
‫Dus dat gezegd hebbende, om de context te bepalen, is het eerste dat we willen gaan
‫doen, onszelf een C++-pistoolacteur maken.
‫En in dit geval wordt het geen pion of personage of iets dergelijks.
‫Het wordt gewoon een rechttoe rechtaan acteur omdat we ons niet hoeven te gedragen.
‫U hoeft het niet te bezitten, wij hoeven niets te doen.
‫Het is gewoon een simpele, simpele acteur.
‫Dus laten we doorgaan en dat doen.
‫Eigenlijk een kleine uitdaging voor jou.
‫Ga je gang en creëer die C++-acteur, iets dat je een kleine mini-uitdaging zou moeten kunnen doen, probeer het.
‫Oké, ik ben weer binnen.
‫Ik ga het doen.
‫Nieuwe C++ klasse en we hoeven niet te hebben, laten we eens kijken, acteur.
‫Dat is alles wat we willen kiezen.
‫En we gaan door en noemen dit ene pistool, zo simpel als laten we die klasse creëren.
‫Oké?
‫En als dat eenmaal is gebeurd, verschijnt het in je code-editor.
‫En we hoeven er nog niets mee te doen, want het eerste wat ik wil doen is een
‫blauwdruk-subklasse maken.
‫Dus klik met de rechtermuisknop op je klas in de inhoudsbrowser en in plaats van het Mike te noemen en ik weet niet welke
‫automatische standaardinstellingen dat BP-onderstrepingsgeweer is, ga ik het aan de basis van inhoud vier plaatsen. Nu kunnen we een beetje
‫van reorganiseren zodra we meer klassen hebben.
‫Zoals ik al eerder heb gezegd, gaan we de Blueprint-klasse maken.
‫Zoals je kunt zien, is het helemaal leeg.
‫Het heeft deze standaard scene root.
‫Dat willen we goedmaken.
‫Wat we willen doen is eigenlijk een component in C++ toevoegen, omdat dit een C++-cursus is.
‫Laten we oefenen met het toevoegen van componenten in C++.
‫Het betekent ook dat we vanuit onze C++-code toegang krijgen tot die
‫componenten om onze code te manipuleren en te schrijven. scene componenten en dan
‫een mesh die daar een kind van is.
‫Waarom willen we dat?
‫Omdat we de positie van het gaas ten opzichte van de wortels van het pistool willen kunnen veranderen, zodat we het
‫handvat in principe op verschillende locaties kunnen plaatsen voor verschillende mazen.
‫Dus als we verschillende wapens hebben, kunnen we ervoor zorgen dat ze allemaal de handvatten op dezelfde plek hebben.
‫Dus als we het aan de hand van het personage bevestigen, verschijnt het met het handvat in de hand van het
‫personage.
‫Oké, dus hoe gaan we dat doen?
‫We gaan naar onze Visual Studio-code en ik ga hier een privégedeelte maken waar we de nieuwe
‫eigenschappen gaan opslaan voor de verschillende componenten die we gaan
‫bedenken.
‫Dus ik ga een nieuwe eigenschap maken die overal zichtbaar is.
‫We willen dat onze componenten overal zichtbaar zijn omdat hun point-pointers, we
‫willen de pointers niet kunnen bewerken, maar we willen wel de eigenschappen van die pointers kunnen zien en kunnen.
‫Die.
‫En dat wordt dan het domein van de klas waarnaar we verwijzen.
‫Dat bepaalt dan wat er getoond wordt, wat bewerkbaar is.
‫Dus alles wat we hier willen zeggen, is dat het niet de bedoeling is dat het kan worden bewerkt.
‫Dus daarom toch voor zichtbaar gaan.
‫Hoe dan ook, een kleine herziening daar.
‫Nu willen we dat dit een weergave is, omdat het een component is.
‫Dan is het een scènecomponent die we willen.
‫Als ik het correct kan typen, heb ik componenten gezien en het is een verwijzing ernaar en
‫dit wordt onze rootcomponent.
‫Zoals zo.
‫En dan willen we een nieuw pand.
‫Weer overal zichtbaar.
‫Voor ons net.
‫De klasse voor de mesh zal een paar statische MASH-componenten zijn, omdat dit geen skeletachtige puree is, het is
‫stijf, het heeft geen skelet, geen botten.
‫Dus ik wil dat dat een aanwijzing is en dit gaat de puree gewoon zo afkoelen.
‫Feit, ik denk dat ik hier een beetje voorzichtig moet zijn, omdat ik denk dat de rootcomponent al bestaat
‫in de bovenliggende klasse voor acteur.
‫Dus ik ga gewoon deze route bellen.
‫En dan hebben we al een constructor in C++.
‫We hoeven alleen de juiste hier op te nemen.
‫Nu, een kleine truc als je in Visual Studio-code bent, is om erachter te komen waar een bestand zich kan bevinden.
‫Je gebruikt Control P en je gaat zoeken naar.
‫In dit geval willen we de statische mesh.
‫Dus statische mesh-componenten en we kunnen zien dat de statische mesh-componenten stip h als ik doorga en het open en over het
‫tabblad zweef, je kunt zien dat het zich onder dit lange pad bevindt.
‫Maar het interessante is dat het onder klassen valt, wat we dan kunnen opzoeken
‫van dat het componenten zullen zijn, statische mesh-componenten, dus ik kan dat tabblad sluiten en net daarboven opnemen onder
‫de opname voor een pistool.
‫We gaan een hash-opname doen voor de componenten en vervolgens voor de statische mesh-componenten.
‫Nu herinner ik me net dat de meshes die we om de een of andere reden hebben, niet echt statisch mesh zijn, zoals ik denk
‫dat ze zouden kunnen zijn.
‫Scott The Meshes, je kunt dit ontdekken door naar de activapakketten, schietspelwapens te gaan en deze meshes
‫te bekijken.
‫En ja hoor, als je erover zweeft, kun je zien dat het skeletachtige mazen zijn.
‫Vraag me niet waarom.
‫Om de een of andere reden zijn ze dat.
‫Dus we willen het type veranderen in skeletal mesh in het headerbestand.
‫Dus in plaats van het statische gaas, wordt het in plaats daarvan skeletachtig gaas gebruikt.
‫En hetzelfde geldt voor de include, het wordt het skelet.
‫Mesh component dot h die we willen onthouden.
‫Er is geen jij in de header-bestanden.
‫En ik geloof dat dezelfde componenten hier al standaard zijn opgenomen.
‫Het is dus tijd voor een uitdaging om een eigen mesh-component toe te voegen.
‫We gaan een root-scènecomponenten maken, deze instellen op de root en deze instellen op de root voor de klasse en een mesh-component
‫maken en de bijlage tussen de twee instellen zodat de mesh-component een kind is van die
‫root die wordt gezien componenten, pulseer video en ga aan de slag.
‫Oké, welkom terug.
‫Dus we gaan erheen om eerst en vooral onze wortels vast te stellen.
‫Het wordt een create default sub-object van het type.
‫Je hebt componenten gezien en dan gaan we het een naam geven die bij de tekstmacro hoort, we gaan het
‫de wortels noemen en eindigen met de puntkomma.
‫Dan gaan we het instellen als de root.
‫Dus set root-componenten zal het instellen als de root-component voor de actor.
‫Dus stel root in als de rootcomponent.
‫Goed spul.
‫Dan willen we onze mesh maken.
‫Dus mesh is gelijk aan het maken van een standaard subobject en het is de skeletachtige mesh-component die we willen als de klasse
‫en dan de tekstmacro om het mesh te noemen en een puntkomma toe te voegen.
‫En dan willen we bijlage instellen.
‫Dus het wordt een mesh-pijl die is opgezet.
‫Stel bijlage in en we willen ons aan de root hechten als zulke coole dingen, zodat we dat
‫kunnen opslaan en hopelijk kunnen compileren en bouwen en we zullen naar Unreal gaan en onze
‫kindklasse bekijken.
‫En ja hoor, hier hebben we de wortels, we hebben de sub-mesh, we hebben ook deze standaard scene-root die
‫rondhangt. Ik denk dat we de editor opnieuw moeten starten en kijken of dat gewoon weggaat.
‫Soms kunnen dingen bij het toevoegen van componenten zo blijven hangen en in de cache worden opgeslagen.
‫En ja hoor, als we de blauwdrukken van het BP-pistool opnieuw openen, kun je zien dat we net die twee
‫componenten hebben.
‫We hebben de wortels en de mesh toegevoegd en we willen waarschijnlijk doorgaan en de mesh vervangen door een van
‫de skeletachtige meshes uit de activapakketten van het schietspel.
‫We hebben een geweer, we hebben een lanceerinrichting.
‫Ik ga deze als geweer kiezen.
‫Dus eigenlijk is het een beetje oneerlijk om het een BP-pistool te noemen.
‫Dit zou waarschijnlijk het BP-geweer moeten zijn.
‫Dus laten we doorgaan en dat hernoemen, naar de inhoudbrowser gaan en het hernoemen naar BP Rifle of
‫BP Gun, onderstrepingsgeweer.
‫Verzamel nu het BP-geweer direct als ze gaan.
‫En dat heeft ons een wapen opgeleverd.
‫Dit betekent natuurlijk dat we allerlei eigenschappen tegen deze actor kunnen hebben, zoals de sterkte
‫van het wapen, het bereik, enzovoort, door nieuwe eigenschappen in C++ te creëren.
‫En dat is de kracht van het hebben van deze architectuur is dat de wapens dan een beetje anders kunnen zijn.
‫We kunnen verschillende schietmechanismen hebben voor geweren versus sluipschutters versus RPG en dat soort dingen.
‫Dus dat is geweldig.
‫En we kunnen ook verschillende statistieken hebben.
‫We kunnen dus een sterk geweer en een zwak geweer hebben, afhankelijk van verschillende subklassen van de blauwdruk.
‫Coole dingen.
‫In de volgende lezing gaan we kijken hoe we dit wapen daadwerkelijk gaan produceren als
‫een kind van ons huidige karakter.
‫Ik zal dat zien.