‫Hallo en welkom.
‫In deze lezing gaan we de dingen bekijken vanuit het oogpunt van de speler.
‫We zullen de viewport van de speler, de locatie en rotatie van de camera in handen krijgen,
‫in wezen, zodat wanneer we op de triggerknop drukken, we een foutopsporingscamera kunnen tekenen.
‫Deze kleine rode kerels hier, deze kleine rode boxy camera's die ons laten zien waar die kijkpoort is.
‫En dat kunnen we bevestigen.
‫Dat kunnen we later gebruiken voor raytracing voor het pistool.
‫Laten we erin duiken en dat allemaal in actie zien.
‫Laat ik deze lezing beginnen met een vraag.
‫Dus als je op deze manier door je kijkvenster richt en je probeert het midden van je scherm uit te
‫lijnen met dat D op D-commandocentrum of nul-commandocentrum, wat dat ook mag zijn.
‫En ik mik waar zou ik naar streven?
‫Wat zou ik verwachten te raken?
‫Je zou kunnen zeggen, nou, ik zou verwachten dat het dat nulbedrag zou halen.
‫Dat lijkt het voor de hand liggende antwoord.
‫Nou, dat is niet per se wat je gaat raken, afhankelijk van hoe je dingen doet, hoe je
‫je herschikking doet.
‫Laten we dus eens kijken naar de strategieën die we hebben om de meest voor de hand liggende te herschikken.
‫Zoals je zegt, nou, we schieten uit het geweer, dus we gaan de loop van het geweer herschikken.
‫Oh, tussen haakjes, deze opzet, die heel, heel primitief is, is eigenlijk een opzet van een derde persoon.
‫We hebben hier een camera.
‫We hebben het karakter, we hebben het pistool.
‫En hij probeert hier op een ander doelwit te schieten.
‫Dus, ten eerste, we herschikten ons uit het geweer zoals die leerling.
‫Misschien mist het omdat onze camera niet wijst waar het pistool wijst, niet noodzakelijk.
‫Ook al wijzen ze in dezelfde richting, ze zijn enigszins verschoven van elkaar,
‫dus ze zullen niet noodzakelijk dezelfde dingen raken.
‫In plaats daarvan kunt u ervoor kiezen om vanaf de camera opnieuw te casten.
‫Dat betekent dat waar de camera ook naar kijkt, het ding zal zijn dat geraakt wordt en dat voelt over
‫het algemeen natuurlijker aan in games van derden.
‫Als je in first-person games zit, komen de dingen een beetje dichterbij, omdat je vaak heel dicht bij het vat
‫zit.
‫Maar zelfs in first-person games is deze regel meestal het geval.
‫U wilt zich niet verplaatsen waar het richtpunt zich op het scherm bevindt.
‫Je hebt meestal een klein stukje gebruikersinterface dat zich hier in het midden van je scherm bevindt, en dat is waar
‫je naar beneden gaat richten.
‫En daarom hebben we de neiging om onze herschikking te doen met goed geworpen wapens in deze kijkpoort.
‫Gelukkig is er een manier voor ons om deze viewport te krijgen en we doen het eigenlijk vanaf de controller, we krijgen
‫de viewport van de controller.
‫Dus dat vereist dat we naar het personage gaan, de controller van het personage zoeken en vervolgens de locatie
‫en rotatie van de viewport vinden.
‫En wat we in deze lezing gaan doen, is proberen te visualiseren en te bevestigen dat die kijkvensterlocatie en
‫-rotatie is wat we zouden verwachten.
‫En dat gaan we doen door enkele debug-helpers te tekenen.
‫Nu bevinden de debug-helpers zich in een header-bestand en de naam van de kop van de bestanden is add debug.
‫Help ons.
‫Grappig genoeg geloof ik of teken, teken, debug hulp.
‫Dat is hem.
‫En als we deze F 12 gaan bekijken om naar een header-bestand te navigeren als
‫je het al in je omvat, gaan we op zoek naar een camera die debug-camera wordt genoemd.
‫En dit tekent iets dat een beetje lijkt op mijn diagram hier, een beetje een driehoek
‫of een ophef die we kunnen gebruiken.
‫Dus wat is er nodig?
‫En het zal een locatie van die camera in de wereld opnemen, een rotatie voor die camera.
‫Dus locatie, rotatie, gezichtsveld zal het maken.
‫We zullen dat waarschijnlijk instellen op een standaard zoals 90 graden als schaal, als kleurstandaard.
‫Deze zijn allemaal standaard ingesteld.
‫Dus we kunnen die standaardwaarden gewoon gebruiken.
‫Dus laten we proberen een camera hier beneden in mijn pistool te debuggen en we zullen het in de pool trigger-methode plaatsen, want dat is waarom
‫we ons werk doen.
‫Het moet eerst en vooral, wat was het?
‫Het was een nieuwe wereld.
‫Dus we krijgen onze wereld.
‫We moeten naar binnen trekken.
‫Het volgende zou een locatie zijn.
‫Laten we voorlopig de acteurslocatie pakken en ook een acteursrotatie maken.
‫En wat het laatste was dat we nodig hadden, was een gezichtsveld.
‫Laten we gewoon gaan voor een gezichtsveld van 90 graden, wat daar gewoon een willekeurig iets is, en we kunnen doorgaan en
‫compileren en zien of dit verschijnt.
‫En laten we dan op play drukken en op de.
‫Trigger knop.
‫Ik zie hier niets.
‫Laten we een F8 doen en kijken of we dichterbij kunnen komen.
‫Hmmmm.
‫Ik laat hier nog steeds geen camera zien.
‫Ik vraag me af of het echt heel klein is.
‫Dus een van de andere opties hier is dat we misschien aanhoudende lijnen willen hebben.
‫En dat betekent dat we alles in C++ moeten specificeren, zodat we onze schaal op één kunnen zetten.
‫We zouden het zelfs kunnen verhogen tot een schaal van twee, voor het geval dat de grootte een probleem is dat we kunnen
‫kiezen.
‫Een kleur die beter zichtbaar is, kan rood zijn.
‫Dus f calico lange dubbele punt rood.
‫En dan kunnen we proberen om hardnekkige regels waar te maken en die uit te proberen.
‫Benadrukken.
‫Dus nog een keer compileren.
‫En in het spel springen.
‫En daar gaan we.
‫We slaan.
‫De trekker, en je kunt zien dat hier een kleine cameradoos verschijnt waar we de trekker indrukken
‫en de rotatie en locatie worden bepaald door de wapens, locatie en rotatie.
‫Dus nu willen we in plaats daarvan proberen de viewport te krijgen.
‫Dus zoals ik al zei, dit komt op onze controller.
‫Laten we dus nog eens naar controller punt H kijken.
‫We willen die in het gameframework en we gaan hier naar een viewport zoeken.
‫Sorry?
‫Eigenlijk is gezichtspunt het woord dat we zoeken.
‫En er zijn er hier een paar.
‫Krijg acteursogen, gezichtspunten die door de ogen van de acteur zouden kijken.
‫Maar we willen eigenlijk het gezichtspunt krijgen, dat voor een luchtcontroller hun ogen zal gebruiken.
‫Maar voor een speler gebruiken we de camera van de speler.
‫Dus dat is wat we willen.
‫We willen het gezichtspunt van de speler.
‫Maar eerst en vooral moeten we die controller in handen krijgen.
‫En de manier om dat te doen, is dat we allereerst onze eigenaar moeten laten onthouden dat toen we ons schietpersonage
‫open moesten houden en we naar beneden of naar boven gingen om te beginnen met spelen.
‫Je kunt zien dat we de wapenbezitter instellen als het personage.
‫Dat betekent dat we in het geweer de andere kant op kunnen.
‫We kunnen zeggen dat we de eigenaar krijgen en dat zal ons het shooter-personage opleveren.
‫Nu zal het niet weten dat het een shooter-personage is.
‫Het enige wat het weet is dat het een acteur is.
‫Dus we zullen hier een cast moeten doen.
‫Dus doen we een cast naar het A Shooter-personage.
‫En eigenlijk hoeven we niet eens zoveel te weten als het feit dat het een schietpersonage is.
‫Het is voldoende om te weten dat het een pion is, en elke pion kan dit wapen bezitten, zelfs als het
‫geen schutter-personage is.
‫Probeer dus zo niet-specifiek mogelijk te zijn.
‫Maar waarom moet het een pion zijn?
‫Het moet een pion zijn omdat we een controller nodig hebben en alleen pionnen kunnen door controllers worden bezeten.
‫Dus laten we dit in een variabele zetten.
‫Het wordt een -- ster en dan wordt de pion van de eigenaar de naam van de variabele.
‫Dan moeten we controleren of dit niet nul is.
‫En ik ga dit gewoon doen met een one-liner die zegt dat als het nu is, we vroeg
‫terugkomen van Apple Trigger, zodat we geen enkel risico lopen om iets te koelen met een nul-aanwijzer.
‫Dus dan kunnen we een controller voor een eigenaar krijgen en die willen we opslaan in de A controller store.
‫En dit kan de eigenaar-controller zijn.
‫Zoals zo.
‫En nogmaals, we willen gewoon controleren of dit niet null is, omdat
‫we daarop een methode gaan aanroepen en we kunnen geen methoden aanroepen op null-pointers.
‫Het maakt onwerkelijk, ongelukkig en crasht.
‫Dus dit is waar we nu onze eigen controller kunnen doen.
‫En we zouden in staat moeten zijn om een standpunt in te nemen.
‫Dus hier komt de uitdaging voor jou om die locatie en rotatie in te stellen met behulp van die nieuwe functie.
‫U kunt de handtekening weer voor ons zien.
‫We gaan naar Controller Dot H, hadden een bestand en bekijken dat om een standpunt te spelen.
‫Probeer aan de hand van deze handtekening uit te vinden hoe je deze kunt gebruiken om die locatie en rotatie te
‫krijgen die we willen doorgeven aan onze draw-debug-helper.
‫En je gaat je dus herinneren dat dit out-parameters gebruikt.
‫Dus herzie uw app-parameters, teken de debug-camera met behulp van dat fragment dat we zojuist hebben geschreven en test het
‫in de viewport.
‫Ga en klik een paar keer op de triggerknop op verschillende locaties en kijk waar die camera
‫eindigt met pauzevideo en probeer het.
‫Oké.
‫Welkom terug.
‫Dus krijg plan view point.
‫Ik ga de naam van de methode kopiëren en hierheen brengen omdat het een out-parameter is.
‫Ik moet eerst de variabelen declareren waarin ik wil dat die waarden op de vectorlocatie gaan.
‫We hebben een F, een rotator, een rotatie.
‫En die willen we doorgeven als argumenten.
‫Laat me mijn inkeping daar een beetje opknappen.
‫En we gaan voorbij aan de locatie, de rotatie.
‫En we weten dat, omdat het hier zojuist is verklaard toen we dit lezen, we kunnen raden dat dit
‫nu onze parameters zijn, ook al is er in dat opzicht geen syntaxishulp van C++.
‫En dan kunnen we deze locatie doorgeven in plaats van de acteurslocatie, en we
‫kunnen deze rotatie doorgeven in plaats van de actieve rotatie in onze draw a debug camera en we kunnen die compilatie bouwen en uitproberen
‫in de editor.
‫Het lijkt erop dat het compileren voltooid is.
‫Laten we gaan spelen.
‫En toen ik op Trigger drukte, zag je een camera recht boven mijn gezichtspunt verschijnen.
‫Dat is een goed teken.
‫Ik stap een beetje achteruit.
‫Je kan zien.
‫Daar ga je.
‫We hebben camera's die precies in de goede richting wijzen vanaf waar ik net keek.
‫Dus je kunt je voorstellen hoe we een straal uit die camera aan het einde van de camera kunnen
‫schieten en proberen daar iets te raken waar ik op dat moment naar aan het kijken was.
‫En dat gaan we de volgende lezing doen.
‫Zie je daar.