‫Hallo en welkom.
‫In deze lezing gaan we een vijand meer een bedreiging maken door een schietknooppunt in C++ te implementeren.
‫Laten we erin duiken en kijken hoe we het moeten doen.
‫Dus een stukje functionaliteit dat duidelijk ontbreekt in onze gedragsboom, is de mogelijkheid om te schieten.
‫Wat ik idealiter zou willen doen, is naar de locatie van de speler gaan en dan schieten.
‫Maar we willen eerst een beetje veranderen hoe we de beweging doen.
‫Er zijn een paar dingen die ik wil aanpassen, dus als ik de verplaatsing naar Node selecteer, is een ding dat
‫ik wil veranderen de straal.
‫Ik wil niet dat de vijand recht op me af komt, dus als ik de acceptabele straal verander,
‫stopt hij vijf meter van me af te bewegen.
‫Dus het gaat stoppen.
‫Geef me een mooie vijf meter afstand.
‫Hij komt naar me toe, ze gaan en hij stopt en staart.
‫Het andere dat ik wil doen, is hier beneden in het schoolbordgedeelte, je kunt zien dat er
‫een schoolbordwaarde is.
‫Als we dat niet hebben aangevinkt, laten we eens kijken wat er gebeurt als ik beweeg.
‫Hij eigenlijk en dit was iets duidelijker toen we een kleinere acceptabele straal hadden.
‫Dus laten we dat daar beneden houden tot vijf vier nu.
‫En als ik op play druk, kun je dat zien terwijl ik beweeg.
‫Hij gaat naar mijn laatste locatie en dan komt hij pas als hij die heeft bereikt een update.
‫Dat is niet wat we willen.
‫Wat we willen is dat het constant op ons afkomt.
‫En als je de waargenomen schoolbordwaarde controleert, dan zegt het in wezen dat elke
‫keer dat de speellocatie verandert, we updaten waar we naartoe gaan.
‫Dus als ik doorga en op play en move druk, kun je zien dat hij me continu volgt en zijn pad
‫bijwerkt.
‫Dat is precies wat we willen.
‫Dus nu kunnen we onze acceptatieradius veranderen in 500 en het wordt minder voor de hand liggend.
‫Maar toch is het goed dat we daar onze schoolbordwaarde hebben.
‫En dan is het gedrag dat we willen, dat als hij eenmaal binnen de straal van ons komt, hij gaat stoppen en
‫op ons schieten.
‫Daarvoor hebben we een nieuw soort taken nodig.
‫Gaan we hier een nieuwe C++-taak maken?
‫Het gaat een nieuwe, nieuwe C++-klasse toevoegen.
‫Dan gaan we alle klassen laten zien en zoeken naar de bètataak.
‫Welke willen we nu?
‫Het bètataakknooppunt of de bètataakbordbasis?
‫We hebben eigenlijk geen sleutel nodig, want we gaan gewoon proberen te schieten.
‫Dat is alles wat we gaan doen.
‫We halen de trekker over van ons pistool.
‫Al het richten zal elders in onze gedragsboom worden gedaan.
‫Dus laten we het bètataakknooppunt openen, de basisklasse hier, en we gaan dit Beaty Task noemen.
‫Laag streepje.
‫Schieten.
‫Laten we doorgaan en die klas maken.
‫Dan eindigen we met zoiets als dit.
‫Dus we willen dezelfde opstelling doen.
‫Dus een kleine uitdaging voor ons om dezelfde opstelling te doen als voor ons schoolbord.
‫Duidelijke schoolbordwaarde.
‫We willen een naam hebben.
‫We willen taaknotities uitvoeren, een video pauzeren en dat proberen.
‫Oké.
‫Welkom terug.
‫Dat was dus een mini-opdracht.
‫Ik ga gewoon de handtekeningen kopiëren van mijn heldere schoolbordvallei om te fotograferen, inclusief
‫de openbare en beschermde secties.
‫Ik ga de naam van onze constructor veranderen.
‫Ik ga door en implementeer een constructor.
‫En wat was het dat we moesten doen?
‫We moeten de node-naam gelijk stellen aan shoot.
‫Zo gaan we het noemen.
‫Dan terug naar de koptekst voor de schiettaak en we gaan nu proberen de taak uit te voeren.
‫En we hoeven alleen maar een soort kopie op te roepen uit ons Clear Blackboard Values CP-bestand en dan
‫zijn we klaar om te beginnen met implementeren.
‫Dus het eerste wat we hier moeten doen, laten we wat meer ruimte hebben,
‫is dat we onze pion moeten pakken.
‫Waarom moeten we onze pion te pakken krijgen?
‫Laten we eens kijken naar het schietpersonage, dat een pion is.
‫Herinner je je het shooter-personage nog?
‫Dot H heeft een schietmethode.
‫Dat is wat we in wezen hetzelfde willen noemen als wij als de speler doen.
‫Hij houdt de triggerknop ingedrukt en dat heet deze schietmethode.
‫We willen dat de man hetzelfde kan doen.
‫Als je de schiettaak hebt, houd je de triggerknop ingedrukt of druk je herhaaldelijk op die triggerknop, zodat
‫de uitvoeringstaak de juiste plaats is om dit te doen.
‫We gaan hier waarschijnlijk wat teruggeven, want onthoud, deze actie is slechts een schot.
‫Het is niet continu fotograferen.
‫Wat gaan we doen?
‫We gaan het lege notitieresultaat succes retourneren.
‫Als het ons allemaal gelukt is.
‫Als het ons is gelukt want we hoeven niet continu te bellen vink dan aan.
‫We hebben deze taak niet langer nodig dan een enkel frame.
‫En het andere dat we moeten doen is, zoals ik al zei, die pionnenklasse te pakken krijgen.
‫Wel, wat ik ga doen, is dat ik je ga laten zien hoe je de luchtcontroller te pakken kunt krijgen.
‫En van de luchtcontroller weten we dat we pion ophalen kunnen roepen om de pion te krijgen die werd gecontroleerd.
‫En we weten dat we die gecontroleerde pion naar onze shooter-personageimplementatie kunnen werpen.
‫Dus hoe krijgen we de luchtcontroller hieruit?
‫Wel, we hebben onze gedragsboomcomponent, waarvan we weten dat deze op een luchtcontroller zit.
‫Dus misschien heeft dat iets dat we kunnen gebruiken als we naar de gedragsboomcomponent gaan en hier
‫kijken naar methoden die nuttig kunnen zijn.
‫Er zit veel in, maar als we naar controller zoeken, zien we niets anders dan misschien
‫ergens in een van de basisklassen, omdat de bovenliggende klasse voor de boomcomponent gebruiksgedrag de je-hersencomponent
‫is.
‫We volgen die op om hier naar een controller te zoeken.
‫Je kunt zien dat er een eigenschap voor is.
‫Is er een doorzetter?
‫Ja, er wordt luchteigenaar genoemd en dat zou moeten terugkeren als we eroverheen gaan en ik een aanwijzer bestuur.
‫Dus je zou dat moeten kunnen gebruiken om de pion te pakken te krijgen, deze naar een shooter-personage te werpen
‫en vervolgens de shoot-methode aan te roepen.
‫Dus dat wordt jouw uitdaging.
‫De oproep.
‫De schietmethode, openbaar maken, pion pakken, pion roepen, schieten en dan testen in
‫je gedragsboom.
‫Pauzeer de video en laat hem gaan.
‫Oké.
‫Welkom terug.
‫De eerste stap is dus dat we deze opnamemethode openbaar moeten maken, omdat deze van
‫buiten deze klasse moet worden aangeroepen.
‫Dus we zullen het gewoon schaden, we zullen schieten, er een beetje ruimte aan geven, een
‫beetje ademruimte.
‫Ik hou van witte ruimte helpt me te zien, help me denken.
‫Dan gaan we naar de Beatty taakshoot.
‫We gaan eerst controleren of de controller niet null is.
‫Anders kunnen we de pijl-operator er niet op gebruiken.
‫Gewoon een algemene goede gewoonte om deze nagelcontroles uit te voeren.
‫Dus als deze eigenaar niet gelijk is, is deze gelijk aan nulaanwijzer.
‫We willen vroeg terugkeren met een mislukking.
‫Deze taak zal dus mislukken als we geen luchtcontroller hebben.
‫Dat is vrij eenvoudig.
‫Dus ik kan de resultaten van een leeg knooppunt retourneren.
‫Dikke darm.
‫Colon faalde zo.
‫En dan gaan we de eigenaar doen, de eigenaar van de componenten, we gaan aan de slag.
‫Het is zelfs zo dat we hier misschien een hoofdbestand moeten opnemen.
‫Dus laten we een hash include doen en het wordt het spelframework en de controller en als ik denk, ja, elke controller zou het moeten doen, maar ik
‫denk dat we de luchtcontroller nodig hebben, want dat is het soort punten dat we teruggaan en dan gaan we
‫een pijl doen en we gaan een get -- hier klagen over iets in mijn hoofd,
‫een bestand, misschien heb ik iets niet goed.
‫Dus schuine streep naar voren. Het lijkt erop dat ik het verkeerd heb.
‫Het zit niet echt in het gameframework.
‫Je hebt gewoon een controller om dat op te nemen.
‫Leer me dat ik daar zo blasé over ben.
‫Dus daar gaan we.
‫We kunnen nu de -- van de.
‫En zoals ik al zei, we moeten ook een cast doen.
‫Dus we gaan een cast doen naar welk type we moeten casten naar de A van het shooter-personage.
‫Dus dat is in zijn volledige vorm, een shoot een personage, een shoot, een personage.
‫En we moeten ook het resultaat hiervan controleren.
‫Maar we moeten het karakter van asscheuten opnemen.
‫Dus hash bevat bovenaan het personage van de schutter dacht dat hij dat leuk vond.
‫En we gaan dat opslaan in een aanwijzertype dat schietkarakter nog steeds een personage zal zijn.
‫Dus ik noem het, we zullen het daar opslaan.
‫En eigenlijk moeten we ervoor zorgen dat de get-pion niet terugkeert, omdat de get-pion nul kan retourneren
‫als het oog momenteel geen pion controleert.
‫Of deze cast zou nul kunnen retourneren als het type geen acht-schieter-personage is van zijn controle over een ander
‫type pion.
‫Gelukkig komen deze twee goed samen, dus als je een null-pointer probeert te casten, is het resultaat slechts
‫een null-pointer, en daarom kunnen we dit doen.
‫Deze controles allemaal op één regel.
‫Dan kunnen we een if-teken doen.
‫Is gelijk aan null pointer.
‫Dan willen we weer falen.
‫Dus terug.
‫IBT-knooppuntresultaten.
‫Dikke darm.
‫Colon faalde zo.
‫En tot slot, na al die controles, weten we dat we een schietpersonage hebben.
‫We zouden moeten kunnen bellen, schieten.
‫Dus karakterpijl en schiet zo.
‫Zodat we eindelijk kunnen schieten.
‫Laten we naar onze gedragsboom gaan.
‫En hier willen we naar beneden trekken om een nieuwe knoop te plaatsen en zoeken naar de nieuwe schiettaak die we
‫hier hebben.
‫En ik weet niet zeker of ik gecompileerd heb, dus ik ga er gewoon voor zorgen dat alles opnieuw compileert.
‫En als dat eenmaal gedaan is, kunnen we naar de play-knop gaan en kijken of deze man komt en schiet, oké?
‫Ja, dat doet hij.
‫Helaas schiet hij herhaaldelijk en schiet hij zichzelf in de voet.
‫Er gaat dus iets niet helemaal goed daar.
‫Er gaan dus twee dingen mis.
‫Om te beginnen slaagde hij erin zelfmoord te plegen met twee schoten, en het lijkt ook alsof hij elk frame
‫schiet, wat logisch zou zijn omdat we de speler te zien krijgen, we gaan naar hem toe en
‫dan is schieten de laatste actie we zijn hier, die we herhaaldelijk zullen uitvoeren.
‫Dus wat we willen doen, is dit in een reeks veranderen.
‫Dus ik ga hier een knoop wegslepen, we maken een reeksknoop, en wat we gaan doen is gaan schieten,
‫dan wachten, dan schieten, dan wachten en dat voor onbepaalde tijd herhalen.
‫Dus eerst schieten, even wachten.
‫Dus misschien wachten we, ik weet het niet, op 1/2 tussen opnamen en dan willen we dit herhalen, wat we kunnen
‫doen met een binnenhuisarchitect.
‫Dus als ik met de rechtermuisknop klik op decorator toevoegen en zoek naar de lus-decorateur, dan kun je zien hoe vaak je wilt dat het
‫een lus wordt.
‫Er staat drie keer.
‫We willen het niet drie keer.
‫We willen dat het in principe oneindig doorloopt totdat we moeten verhuizen of we het plan uit het oog moeten verliezen.
‫We moeten op onderzoek uitgaan.
‫Dus we gaan door en druk op play en kijken of dat werkt.
‫Komt op mij af.
‫Schiet, schiet, schiet.
‫Maar hij slaat me niet echt.
‫Je kunt zien dat zijn schoten eigenlijk op hemzelf landen.
‫En we gaan die bug behandelen in een komende lezing.
‫Zie dat?