‫Oké.
‫Dus ons doel voor deze video is om de dood voor onze Pons te implementeren.
‫Dus als ik een paar keer geraakt word vanuit onze toren, zul je zien dat ik verdwenen ben omdat mijn tank dood
‫is.
‫En als ik bekwaam genoeg ben, als ik door kan gaan en een van hen kan vernietigen, zul je zien dat het
‫ook verdwijnt.
‫Dus we gaan de dood voor deze pionnen implementeren in deze video.
‫Hallo en welkom terug.
‫Nu brengen we al schade toe aan de pionnen als ze worden geraakt door projectielen.
‫We moeten nu uitzoeken hoe we na de dood zullen omgaan.
‫Dit betekent dat we een soort functie nodig hebben om de vernietiging van een bepaalde acteur aan te pakken.
‫Dus we gaan een handvatvernietigingsfunctie maken.
‫We hebben ook een acteur-sterf nodig om te functioneren, waardoor de spelmodus kan omgaan met wat er gebeurt als
‫een acteur in onze wereld sterft en we gaan deze acteur-dood-functie noemen wanneer de gezondheidswaarde nul bereikt
‫voor een bepaalde pion.
‫Dus laten we het hebben over een stappenplan voor hoe we dit systeem gaan implementeren.
‫We weten dat we een projectiel hebben en het roept schade toe en dit resulteert in de schadeopnamefunctie
‫die reageert op de uitzending van de afgevaardigde in de gezondheidscomponent.
‫Dus we moeten uitzoeken wat we vanaf daar moeten doen.
‫Welnu, onze spelmodus kan een functie hebben die moet worden afgehandeld wanneer een acteur sterft.
‫Dus bij opgelopen schade kunnen we controleren of de gezondheid nul bereikt.
‫En op dat moment kunnen we de acteur stierf-functie noemen in de spelmodus en van daaruit kan onze pion
‫zijn vernietiging aan.
‫Dus uiteindelijk is het aan de spelmodus om de functie voor het vernietigen van het handvat op de overleden acteur aan te
‫roepen.
‫Dus we hebben een beetje een spelplan, dus laten we de stappen schetsen die we moeten nemen om dit te implementeren.
‫Eerst gaan we de functie voor het vernietigen van het handvat maken en we gaan dit in de basispionklasse
‫plaatsen om de functionaliteit af te handelen die zou moeten gebeuren als een van onze pionnen sterft.
‫En we zullen dit ook implementeren in de tank- en de torenklassen, aangezien ze elk hun
‫eigen unieke functionaliteit hebben wanneer ze dood gaan, dan zullen we een acteur stierf-functie maken en deze in
‫de spelmodusklasse plaatsen zodat we kunnen call handvat vernietiging vanaf daar.
‫Daarna noemen we handvatvernietiging in de acteur stierf-functie in de spelmodus en dan kunnen we
‫acteur dood noemen door de gezondheidscomponent wanneer de gezondheid nul bereikt.
‫Dus laten we beginnen met onze eerste stap, het creëren van de functie voor het vernietigen van het handvat.
‫Dus ik ben hier in Base Pond H en ik zou deze handgreepvernietigingsfunctie willen toevoegen.
‫Nu ben ik van plan om dit vanuit de spelmodus aan te roepen, wat betekent dat het een openbare
‫functie moet zijn, zodat ik deze functie hier in de openbare sectie kan plaatsen.
‫Het zal nietig zijn en ik noem het de vernietiging van het handvat.
‫Nu hoeft het geen invoerparameters meer te hebben.
‫Het gaat gewoon de vernietiging van deze specifieke pion afhandelen.
‫Dus laten we deze functie in het basispion CP-bestand implementeren en ik ga het hier onder de
‫constructor plaatsen.
‫Dus ik heb de vernietiging van de hand en ik ga de naam van een basispionklasse hier net voor de functienaam
‫plaatsen.
‫Dit zullen dingen zijn die gebeuren als een van de pionnen op basis van de basispion sterft.
‫Dus ik ga hier een taak plaatsen die zegt wat we gaan doen in de functie voor het vernietigen van het handvat.
‫Ik wil hier alle visuele en geluidseffecten afhandelen die te maken hebben met het sterven van de pion.
‫Dus ik zeg alleen visuele slash-geluidseffecten en we laten het daarbij en we zullen eraan denken dit
‫te implementeren wanneer we bij de speciale effecten en geluiden komen in dit gedeelte van de
‫cursus.
‫Nu hebben we hier handvatvernietiging, maar ik zou ook een handvatvernietigingsfunctie in zowel de tank- als torenklassen
‫willen plaatsen om af te handelen wat er gebeurt als die pionnen sterven.
‫En de meest eenvoudige implementatie van vernietiging zal misschien voor onze toren zijn.
‫Dus laten we naar Toren H gaan en we voegen hier een openbare functie toe die de vernietiging van het handvat wordt genoemd.
‫Dus ik ga zeggen void handvat vernietiging en ik ga dit implementeren en toren CP net onder de
‫tick-functie.
‫Dus vink hier de vernietiging van het handvat aan en ik ga de functienaam zomaar voorafgaan aan een
‫toren.
‫Nu in de handvatvernietigingsfunctie voor de toren, zou ik de superversie willen aanroepen, zodat handvatvernietiging in de
‫basispion wordt genoemd en we die visuele en geluidseffecten krijgen wanneer een toren sterft.
‫Dus ik ga zeggen: Super Handling Destructie, gewoon om ervoor te zorgen dat dat wordt genoemd.
‫En daarna ga ik gewoon de toren vernietigen.
‫Nu hebben we gezien hoe dit werkt.
‫We noemen gewoon de vernietigingsfunctie, en dat zal de vernietiging van de toren afhandelen.
‫Dus ik kan dit opslaan en de toren- en CP-bestanden afsluiten en nu kan ik een handvatvernietigingsfunctie
‫in de tankklasse plaatsen.
‫Dus ik ga naar de tank en verklaar hier een openbare functie onder de vinkfunctie
‫genaamd 'handvatvernietiging'.
‫En ik ga naar Tank CP en implementeer dit hier net onder tic, en vergeet niet om de functienaam vooraf
‫te laten gaan aan een tank.
‫Nu, net als in de torenklasse, zouden we superhandvatvernietiging willen noemen.
‫En op die manier krijgen we die visuele en geluidseffecten.
‫Voor de tank gaan we iets anders doen.
‫Ik zou de tank liever verbergen dan vernietigen.
‫En dan kunnen we zijn TIC-functionaliteit uitschakelen, zodat het nog steeds in de wereld zal bestaan en we het nog steeds zullen bezitten.
‫Dus dat beeld krijgen we nog steeds van de camera.
‫Alleen kunnen we het niet zien of verplaatsen.
‫Dus om de tank te verbergen, kunnen we een functie genaamd set actor hidden in game aanroepen en hiervoor is een boolean nodig.
‫En als we de waarheid passeren, zullen we de tank effectief verbergen.
‫Nu wil ik ook graag ticking uitschakelen en daar is ook een functie voor.
‫Het heet set actor tic ingeschakeld.
‫En hiervoor ga ik vals doorgeven, waardoor het tikken voor de tank wordt uitgeschakeld.
‫Dus dat zorgt voor onze handvatvernietigingsfunctie.
‫Dus we hebben onze handvatvernietigingsfunctie.
‫Onze volgende stap is het creëren van een acteur stierf-functie in de spelmodus.
‫Laten we dat dus implementeren.
‫Dus ik ben hier in de spelmodus Tune Tanks en hier kan ik de functie 'Actor stierf' maken, nu ben ik van plan 'Actor
‫stierf' te noemen uit de klasse 'Gezondheidscomponent', wat betekent dat dit ook een openbare functie moet zijn.
‫Dus ik ga een openbare sectie toevoegen en de functie 'Actor stierf' maken.
‫Dit zal nietig zijn en ik noem het acteur overleden.
‫En dit kan eenvoudigweg een acteur-aanwijzer genaamd Dead Actor nemen en nu kunnen we acteur stierf implementeren in de
‫spelmodus Tune Tanks.
‫CP Dus ik ga het hier plaatsen en de naam voorafgaan met een tune tanks-spelmodus en nu hebben we
‫een acteur stierf-functie.
‫Nu zou ik willen controleren of de dode acteur de tank is, wat betekent dat ik een variabele voor de
‫tank nodig heb.
‫Dus terug in tune tanks game mode.
‫Ik ga een privégedeelte maken en ik ga een tankvariabele toevoegen die ik naar voren ga
‫declareren.
‫En het is van type A tankaanwijzer en ik ga deze tank gewoon noemen en ik moet dit initialiseren met
‫het adres van de tankvijver, en ik kan dat doen en beginnen met spelen.
‫Nu hebben we gezien dat beginnen met spelen een beveiligde functie is en we gaan het hier in de spelmodus
‫beschermd houden, zodat we kunnen overschrijven, beginnen, spelen.
‫Dus ik ga zeggen virtuele leegte, begin, speel, override, en ik kan het hier implementeren in tune tanks, game
‫mode.
‫Ja.
‫Dus het wordt ongeldig om te beginnen met spelen en ik ga de melodietanks, de klassenaam van de gamemodus gebruiken.
‫En het eerste wat ik ga doen, is super beginnen met spelen.
‫Op die manier krijgen we ouderfunctionaliteit en kan ik de spelerpion krijgen met behulp van gameplay-statistieken.
‫Dus ik ga eerst gameplay-statistieken opnemen en dat is in kismet slash-gameplay-statistieken, zoals we al
‫hebben gezien.
‫En hier kan ik Tank nemen en het de waarde van jeugdgameplay-statistieken toewijzen.
‫Gitarist palm.
‫Dit vereist een wereldcontext-object waarvoor we dit kunnen gebruiken, en ik ga nul gebruiken als de
‫spelersindex omdat onze tank altijd speler nul zal zijn.
‫Nu weten we dat jet player -- geeft een A terug -- pointer en tank is van het type A tank, een kindklasse.
‫En we hebben gezien dat we daar een tankklasse naar moeten casten als we dit resultaat willen opslaan in een
‫A-tankaanwijzer.
‫Dus eerst ga ik de tankkop opnemen.
‫Dus ik ga zeggen tank H erbij en dan ga ik naar een tank werpen.
‫Dus ik ga zeggen cast naar een tank en ik cast de waarde die wordt geretourneerd door get player --.
‫Dus ik ga dat hier tussen haakjes plaatsen.
‫En nu hebben we een aanwijzer naar de speler -- in de vorm van een A-tankaanwijzer.
‫Dus nu we de tank hebben, kunnen we controleren of onze dode acteur de tank is.
‫Dus we kunnen zeggen dat als dode acteur dubbel gelijk is aan tank nu tank nul kan zijn.
‫En dat is oké, want als Tank nul is en de dode acteur verwijst naar de tank zelf, dan zal de if-controle niet doorstaan
‫en we zullen niet echt proberen toegang te krijgen tot een nulaanwijzer omdat we de binnenkant hiervan
‫niet zullen halen.
‫Nu, als de dode acteur in feite de tank is, dan zou ik de vernietigingsfunctie van de tankhandvat willen noemen.
‫Dus we gaan tankhandvat vernietiging noemen.
‫Nu, nadat ik de functie voor vernietiging van het handvat heb aangeroepen, wil ik ook de invoer voor de
‫tankpod uitschakelen, zodat ik de tank kan krijgen en de ingebouwde functie kan aanroepen die de tank erft, de invoer uitschakelen.
‫Voor het uitschakelen van invoer is nu een A-spelercontroller vereist.
‫Nu weten we dat de tankklasse, als we hier in tank H komen, deze spelercontroller ref-variabele heeft, wat een
‫verwijzing is naar een spelercontroller, daarom begin ik te denken dat ref een erg slechte naam is
‫voor deze variabele .
‫Omdat het geen referentie is, is het een pointer.
‫Ik zou het bijna liever tank player controller noemen.
‫Dus in feite, waarom gaan we niet verder en hernoemen dit?
‫Dit is iets dat ontwikkelaars vaak doen als ze zich realiseren dat ze een variabele een slechte naam hebben gegeven.
‫Dus deze code heeft een manier om dit gemakkelijk te doen.
‫Ik kan deze variabele markeren en op de toets F twee drukken en hij vraagt me om de naam ervan te wijzigen.
‫Ik ga deze tank player controller noemen.
‫Bekijk dit nu eens.
‫Het heet hier Tank Player Controller.
‫Als ik naar Tank CP ga, zal ik zien dat het hier ook hernoemd is.
‫Dus ik hoefde niet naar binnen te gaan en ernaar te zoeken en elke instantie van speler, controller, ref te vinden.
‫Ik kan zoeken naar tankplayer-controller en zien dat het overal is veranderd waar het hier wordt gebruikt.
‫Dus dat is een mooie refactoring-vaardigheid om te hebben.
‫Dus hoe dan ook, hier in de spelmodus Tune Tanks, moet ik de invoer voor de tank uitschakelen en hiervoor
‫is een spelercontroller vereist.
‫Dus ik ga eerst controleren of de spelercontroller van de tank geldig is door te zeggen of tank en ik
‫toegang moeten krijgen tot die spelercontroller.
‫Maar onthoud dat in tank onze spelercontrollervariabele privé is.
‫Nu kunnen we dit blootleggen en openbaar maken, of we kunnen een openbare getterfunctie voor deze variabele maken.
‫Ik zou liever een openbare getter maken, want dat is een betere programmeerpraktijk.
‫Dus hier in het openbare gedeelte, ga ik een openbare getter maken voor tankspelercontroller.
‫Nu gaat het een A-speler-controller-aanwijzer retourneren en deze functie wordt get tank
‫player genoemd.
‫Controller getters zijn meestal de naam van de variabele met get vooraan, en ze worden ook meestal tegen kostprijs
‫gemaakt, omdat deze functie niet is ontworpen om iets in deze klasse te veranderen, het gaat alleen de
‫spelercontroller retourneren.
‫Dus we gaan zeggen tank player controller terug te geven en dat is alles wat het gaat doen.
‫Dus nu we een openbare getterfunctie hebben voor de tankspelercontroller, hebben we hier vanuit
‫de spelmodus toegang tot de spelercontroller.
‫Dus we gaan zeggen dat als tank een tank player-controller krijgt en die functie hier oproept.
‫En als we de binnenkant van deze if-verklaring bereiken, dan is de spelercontroller geldig,
‫dus we kunnen deze oproep naar de tank-uitschakelinvoer hier verplaatsen en we gaan over naar de uitgeschakelde invoer van
‫de tankspeler-controller.
‫Dus we noemen hier ook tank get player controller.
‫Nu, terwijl we toegang hebben tot de spelercontroller, zou ik ook willen dat
‫de spelercontrollers de muiscursor Boolean member-variabele tonen en dit op false zetten.
‫Dus we schakelen invoer uit en we zorgen er ook voor dat de muiscursor niet wordt weergegeven.
‫Dus dat zorgt voor het afhandelen van de functionaliteit voor wanneer de tank sterft.
‫Nu, in het geval dat de dode acteur niet de tank is, wil ik dan graag controleren of het een instantie
‫van de torenklasse is.
‫Dus ik ga hier nog een toevoegen.
‫Dus wat zal de voorwaarde zijn voor deze elseif hier?
‫Ik zou graag willen zien of een dode acteur naar een A-toren kan worden geworpen, wat betekent dat ik de
‫torenklasse moet opnemen.
‫Dus inclusief toren.
‫En dan ga ik proberen te casten.
‫Dus ik ga zeggen cast, waarvoor punthaken en haakjes nodig zijn.
‫En wat we ook gieten is een toren en wat we gieten is dood.
‫Acteur zal proberen de dode acteur te casten.
‫Nu kunnen we het resultaat van deze cast nemen en het toewijzen en een lokale variabele maken.
‫Hier in de voorwaardelijke kunnen we een torenaanwijzer zeggen en we kunnen deze vernietigde toren noemen en de waarde toewijzen die door
‫deze cast wordt geretourneerd.
‫En als we dat doen, hebben we toegang tot deze vernietigde acteur, onze dode acteur die in een toren is
‫gegoten.
‫Als dit lukt, komen we bij de binnenkant van de elseif.
‫En dan kunnen we onze vernietigde meenemen.
‫Tower en we kunnen gewoon de vernietiging van het handvat noemen.
‫Dus nu hebben we een acteur-dood-functie hier in de spelmodus die de vernietiging aanroept en ook wat
‫meer aan de dood gerelateerde functionaliteit voor de tank afhandelt.
‫Dus dat zorgt voor stap twee.
‫Het creëren van een acteur stierf-functie en terwijl we toch bezig waren, noemden we ook handvatvernietiging in
‫de acteur stierf-functie.
‫Dus onze laatste stap is om de acteur overleden te noemen wanneer de gezondheid nul bereikt.
‫Om deze functie in de spelmodus aan te roepen, heeft onze gezondheidscomponent een variabele nodig
‫die het adres van de spelmodus opslaat.
‫Dus laten we naar onze gezondheidscomponent gaan.
‫Hier zijn gezondheidscomponenten, en ik ga hier onderaan een privévariabele toevoegen.
‫En dit zal van het type A tune tanks game mode pointer zijn en we zullen deze tune tanks game mode noemen.
‫Nu ga ik dit naar voren verklaren, zodat ik het headerbestand hier niet hoef op te nemen en dan moeten we
‫toegang krijgen tot de spelmodus.
‫Dus laten we naar gezondheidscomponent CP gaan en als ik naar boven scrol, zie ik hier de start play-functie en dat is de
‫perfecte plek om de spelmodus te pakken te krijgen.
‫Nogmaals, het is te vroeg om het in de constructor te plaatsen.
‫We moeten ervoor zorgen dat de spelmodus is gemaakt en bestaat voordat we er toegang toe proberen te krijgen.
‫Nu is hier een handige functie voor spelstatistieken genaamd Get Game Mode en er staat dat de huidige spelmodusbasis of
‫nul wordt geretourneerd als deze niet kan worden opgehaald, zoals op de client.
‫Nu op de client heeft het te maken met multiplayer-programmering en daar hoeven we ons geen zorgen over te maken.
‫We draaien op de enige echte machine voor onze game, dus laten we naar beneden scrollen en we zullen
‫zien dat een gamemodusbasis een wereldcontextobject nodig heeft.
‫Dit is slechts een object in de wereld en we hebben gezien hoe we met wereldcontextobjecten moeten omgaan.
‫Dus dit bestaat in gameplay static h, dus laten we dat opnemen.
‫En hier in gezondheidscomponenten, plakt CP onze include voor gameplay-statistieken en dan bellen we hier de game-modus
‫en beginnen we met spelen.
‫Dus we gaan zeggen: tune tanks, game mode.
‫En stel dat in op de waarde van jou.
‫Gameplay-statistieken krijgen de gamemodus en voor het wereldcontextobject.
‫Ik ga hierin slagen en nu hebben we de spelmodus.
‫Maar natuurlijk krijg je de spelmodus, geeft een spelmodusbasis terug en we proberen het op te
‫slaan in de kinderklasse, een spelmodus voor melodietanks, wat betekent dat we moeten casten.
‫Klopt.
‫Dus we moeten zeggen cast to a tune tanks game mode en we casten het resultaat vanuit get game mode.
‫Dus ik ga dat tussen haakjes daar plaatsen.
‫En we gebruiken de spelmodus Tune Tanks.
‫Dus ik ga dat header-bestand bovenaan opnemen.
‫Dus ik ga zeggen opnemen.
‫Tune Tanks-spelmodus.
‫Dus we hebben de spelmodus hier in de gezondheidscomponent.
‫We zijn klaar om hier de opgelopen schade te bekijken en te kijken of onze gezondheid nul bereikt.
‫En in dat geval kunnen we onze aanwijzer voor de spelmodus van tune tanks gebruiken om de functie acteur stierf op te
‫roepen die stierf in de acteur die stierf en dit wordt jouw uitdaging, dus in de gezondheidscomponentklasse in opgelopen schade ga
‫je controleren om te zien als de waarde van gezondheid nul heeft bereikt of onder nul is gegaan.
‫Als dat het geval is, bel dan acteur die is overleden met behulp van de spelmodus.
‫Aangezien we een verwijzing naar de spelmodus hebben, vergeet niet eerst te controleren of deze aanwijzer niet null
‫is.
‫En als je acteur dood noemt, moet je een acteur doorgeven.
‫Je gaat de acteur doorgeven die stierf.
‫Dus pauzeer de video en implementeer dit nu in de functie voor opgelopen schade.
‫Oké.
‫We hebben dus al schade van gezondheid afgetrokken.
‫We zijn nu klaar om te controleren of die gezondheidswaarde nul heeft bereikt.
‫Dus ik ga zeggen dat als gezondheid kleiner is dan of gelijk is aan nul F en als dat het geval is, dan is het gepast om
‫te bellen.
‫Acteur is nu overleden omdat we moeten controleren of de spelmodus geldig is.
‫Ik kan hier een advertentie plaatsen als check en check om te zien of tune tanks game mode geldig is.
‫Als het null is, zal het hier false retourneren en zullen we de binnenkant van het if-statement niet bereiken.
‫Dus als we de binnenkant van de if-verklaring bereiken, is de spelmodus tune tanks geldig en heeft de gezondheid nul
‫bereikt.
‫Dus we kunnen zeggen tune tanks, game mode.
‫En we kunnen acteur dood noemen.
‫En hier is een acteur voor nodig en we weten dat de acteur die stierf de beschadigde acteur zal zijn.
‫Dus we gaan over in een beschadigde acteur.
‫En nu kunnen we dit samenstellen en daar naar kijken.
‫We hebben een succesvolle compilatie.
‫Dus laten we teruggaan naar de editor.
‫En hier in de editor, waarom gaan we niet door en testen de dood?
‫Eens kijken of ik enkele van deze tanks kan vernietigen voordat ik zelf vernietigd word.
‫Dat wordt een beetje een uitdaging.
‫O, er is er een.
‫Ik heb er een vermoord en ik heb de tweede.
‫O, en ik stierf.
‫Je kunt dus zien dat dit spel een stuk leuker is nu we dood en verderf aan onze vijvers hebben toegevoegd.
‫Dit is dus geweldig.
‫Oké, dus wat ik wil dat je doet, is jezelf een enorm schouderklopje geven, want in deze video hebben
‫we Actor Death behandeld, wat nogal wat interactie tussen deze klassen in onze game met zich meebrengt.
‫De manier waarop de dood nu wordt geïmplementeerd, is dat de vijver gewoon verdwijnt, wat betekent dat we nog een paar dingen
‫nodig hebben.
‫We hebben win-verliesvoorwaarden nodig.
‫We hebben een manier nodig om de speler te laten zien dat ze de wedstrijd hebben gewonnen of verloren.
‫En die speciale effecten hebben we ook nodig.
‫We hebben wat geluiden nodig, we hebben wat explosies nodig.
‫Die dingen gaan heel, heel snel komen.
‫Gefeliciteerd dus.
‫Je hebt al een lange weg afgelegd en er zijn nog maar een paar stappen te gaan.
‫Ik zie je in de volgende video.