‫Hallo en welkom terug.
‫In deze video gaan we het hebben over hoe we onze tank kunnen verplaatsen.
‫Dus om de tank te verplaatsen, moeten we een soort offset en een onwerkelijke motor toevoegen.
‫Als het gaat om het toevoegen van een offset, moeten we de beslissing nemen of we de offset in de lokale ruimte
‫versus de wereldruimte willen maken.
‫Dus laten we het verschil tussen deze twee dingen bespreken.
‫Nu, hier in de editor, heb ik de -- tank geselecteerd, en zodra ik deze heb geselecteerd, zul
‫je merken dat er een gadget is.
‫Zo heet dit ding, een gizmo.
‫Het heeft drie pijlen en ze hebben elk een andere kleur.
‫Nu, als je het nog niet gemerkt hebt, linksonder in het scherm is nog een kleinere gadget.
‫En dit lijkt op de gizmo van de acteur die we selecteren.
‫Dus als ik een acteur selecteer, krijgen we altijd deze gadget.
‫En natuurlijk verandert de gizmo wanneer we van vertalen naar roteren naar schaalmodus gaan.
‫Dus zolang we in vertalen zijn, waartoe we toegang hebben via dit meest linkse pictogram in de rechterbovenhoek
‫van de viewport of met de W-toets, hebben we de mogelijkheid om dingen te verplaatsen of te vertalen door op een van de pijlen
‫op de gadget.
‫En de kleuren komen overeen met de assen rood, aangezien de x-as groen de y-as is en blauw de z-as.
‫Als we nu onze weergave draaien en in een andere richting kijken, zullen we zien dat die gadget nog steeds in dezelfde
‫oorspronkelijke richting wijst.
‫En terwijl we ronddraaien, draait de gizmo linksonder in de viewport omdat de richting
‫van de wereld niet verandert.
‫Tot nu toe, zo goed.
‫Waar we nu naar kijken zijn richtingen in de wereldruimte, maar voor elke acteur in de wereld is er een lokale
‫richting.
‫En we kunnen zien dat door op dit pictogram te klikken dat eruitziet als een wereld en de pop-up zegt cycli,
‫de transformatie-gizmo systemen coördineert tussen wereld en lokale ruimte.
‫Als we hier een wereld zien, betekent dat dat we naar de wereldruimte kijken, maar als we erop
‫klikken, verandert het nu in een kubus en kijken we nu naar de lokale ruimte voor de gegeven acteur die we hebben geselecteerd.
‫De gizmo linksonder in de viewport laat ons nog steeds de wereldruimte zien.
‫Maar als ik deze acteur neem en ik schakel over naar de rotatiemodus en draai hem, en als ik terugga naar
‫de vertaalmodus, zul je zien dat de gizmo nu in een andere richting wijst.
‫De actor zelf heeft zijn eigen lokale x-as.
‫We kunnen de x-as voor de actor beschouwen als zijn voorwaartse vector.
‫Merk nu op dat linksonder in het scherm die gizmo nog steeds in dezelfde richting wijst.
‫Maar deze acteur hier, de piontank, heeft zijn eigen lokale X-richting en wijst in een andere richting.
‫Als ik nu op de kubus klik en hem nu weer in een wereld verander, wordt de gizmo voor de tank op elkaar afgestemd
‫en uitgelijnd met de richting van de wereldas, zodat we kunnen schakelen tussen wereld en lokale ruimte voor een bepaalde
‫acteur om zijn lokale richting versus zijn wereldrichting.
‫Dus we hebben gezien dat elke acteur die we in onze wereld selecteren, zijn eigen lokale richting heeft.
‫En dit kan al dan niet anders zijn dan de wereldrichting zoals aangegeven in deze afbeelding hier.
‫Dit is dus erg belangrijk als het gaat om bewegende objecten in Unreal Engine.
‫Er zijn functies voor bewegende objecten en er is een andere set functies voor bewegen in de wereldruimte
‫versus de lokale ruimte.
‫Laten we zeggen dat onze tank deze kant op is gericht en dat de x-as iets naar links wijst, zoals aangegeven door
‫de pijl die ik hier op de tank heb getekend.
‫Nu kunnen we, op basis van deze gizmo linksonder, zien dat de richting van de wereld x-as naar rechts
‫wijst.
‫Dus de tank is niet uitgelijnd met de richting van de wereldruimte.
‫Stel nu dat we deze tank in de wereldruimte zouden verplaatsen in de positieve X-richting.
‫Ook al wijst de tank naar links, hij zal nog steeds in die wereld x-richting bewegen en het lijkt
‫alsof hij achteruit beweegt.
‫Dat is dus niet wat we willen.
‫Laten we aan de andere kant zeggen dat we een functie gebruiken die is ontworpen om de tank in zijn eigen lokale ruimte te verplaatsen.
‫Dat betekent dat als we de tank in zijn eigen lokale X-richting bewegen, hij vooruit gaat in de richting die je zou
‫verwachten.
‫En dat is het gedrag dat we willen.
‫Nu in Unreal Engine.
‫De functie die dit voor ons kan doen heet Add Actor Local Offset.
‫Deze functie beweegt de acteur in een lokale richting.
‫Nu past het een offset toe, wat een enkele beweging is.
‫In wezen vertellen we het in welke richting het moet bewegen en hoe ver, en het beweegt dat object één keer, wat betekent
‫dat we deze functie elk frame gaan aanroepen dat we de tank willen verplaatsen.
‫Dus we gaan het in kleine stappen verplaatsen sinds we elk frame een functie aanroepen.
‫Betekent dat we het nu veel noemen voor onze tank, zijn eigen lokale X-as is zijn voorwaartse richting.
‫Dit is dus de as die we gaan gebruiken als we een lokale offset toevoegen.
‫Hier is de onwerkelijke documentatie van de engine voor de lokale offset van ADD actor.
‫Je ziet dat het een functie is die bij de actorklasse hoort.
‫Dat is waarom het nu lokale offset voor actoren wordt genoemd omdat het bestaat in de actorklasse.
‫Pionnen zullen deze functie erven, zodat we deze kunnen gebruiken.
‫Nu is hier de syntaxis.
‫Het heeft vier invoerparameters.
‫De eerste is een F-vector die deltalocatie wordt genoemd.
‫We moeten dus een F-vector maken die we kunnen doorgeven aan deze lokale offset-functie voor het toevoegen van actoren.
‫Dus we weten van deze lokale offset van een acteur.
‫En ik wil hier graag mee experimenteren om te zien hoe het werkt, zodat we dit in de tick-functie kunnen doen.
‫Nu overschrijven we de tic-functie hier niet in de tankklasse, maar we hebben het wel in de basispongklasse.
‫Als we hier naar de basisvijver CP gaan, hebben we de tic-functie en doen we hier niets en dit is perfect
‫om wat te experimenteren.
‫Dus wat ik ga doen is typen, toevoegen, acteur, lokale offset zomaar.
‫En ik ga met de rechtermuisknop klikken en ga naar definitie selecteren.
‫Nu hier in het actor CP-bestand hebben we de definitie voor ADD Actor Local Offset.
‫Merk nu iets interessants op.
‫Het controleert of rootcomponent niet null is en als het niet null is, roept het deze functie lokale offset toevoegen
‫aan.
‫Dus wat we eigenlijk doen, is een offset toevoegen aan de rootcomponent.
‫En aangezien alle andere componenten aan de rootcomponent zijn gekoppeld, bewegen ze mee.
‫Het is dus belangrijk op te merken dat wanneer we een lokale offset toevoegen, we de rootcomponent verplaatsen
‫en al het andere beweegt gewoon mee.
‫Als we nu de muisaanwijzer op lokale offset toevoegen, zien we dat alle vier de invoerparameters hier worden vermeld.
‫En afgezien van de eerste, die een F-vector is, hebben de andere standaardwaarden.
‫Let op bool B sweep het zegt is gelijk aan false.
‫De derde en vierde invoerparameters hebben ook deze standaardwaarden.
‫Dit betekent dat als we deze functie aanroepen en geen invoer doorgeven voor de laatste drie invoerparameters, deze standaard
‫op deze waarden worden ingesteld.
‫Nu ga ik actor CP sluiten en hier in de basisvijver tick-functie zou ik elk frame lokale actor-offset
‫willen noemen om te zien hoe het werkt.
‫Nu weten we dat de eerste invoerparameter een F-vector is.
‫Het wordt deltalocatie genoemd.
‫Dit is de hoeveelheid beweging die we zouden willen toevoegen elke keer dat we deze functie aanroepen.
‫Dus ik ga een F-vector maken met de naam delta-locatie.
‫Dus F vector delta locatie.
‫Nu wil ik deze vector op nul zetten.
‫Met andere woorden, zorg ervoor dat het is geïnitialiseerd met allemaal nullen.
‫Nu wil ik een nulvector die ik in nul f kan doorgeven, een x, y en z krijgen allemaal nul f.
‫Dus dit zal mijn doelen prima dienen.
‫Nu ga ik Delta Locatie X nemen en dat ga ik veranderen in twee punt F.
‫Op die manier hebben we een vector met Y en Z op nul, een x op twee.
‫Dus ik ga door en geef de Delta-locatie door aan het toevoegen van actor-lokale offset als een soort experiment.
‫Nu kan ik wegkomen met het aanroepen van de lokale offset van de acteur en gewoon de eerste invoerparameter invoeren, aangezien
‫de andere drie optioneel zijn.
‫Dus ik ga dit compileren en kijken wat er gebeurt.
‫Als we nu doorgaan en op play drukken, let dan op een paar dingen.
‫Kijk eerst eens, de toren beweegt ook.
‫Dat komt omdat we dit in de tick-functie voor de basispion zetten en beide bindingen erven van de basispion.
‫Dus in feite waren al deze vijvers in beweging.
‫En het interessante is dat ze allemaal in hun eigen x-asrichtingen bewegen.
‫Vanuit dit gezichtspunt kunnen we alles tegelijk zien bewegen.
‫Als we op de vervolgkeuzelijst naast spelen klikken en simuleren selecteren, kunnen we het spel spelen zonder
‫vijvers te bezitten.
‫Dus als ik op Simuleren klik, bekijk dit dan eens.
‫Elke vijver beweegt in zijn eigen x-as richting.
‫Dat is eigenlijk best raar en best wel cool.
‫Dit laat ons zien hoe de lokale compensatie van ad actoren werkt.
‫Het beweegt dingen in hun lokale richting.
‫Nu kunnen we de simulatiemodus verlaten door op de vervolgkeuzelijst te klikken en de geselecteerde viewport
‫te selecteren, zodat we in de normale afspeelmodus kunnen spelen.
‫Oké, ik stop hiermee en we kunnen terug naar de basis -- en we kunnen deze experimentele code verwijderen.
‫Ik ga door en verwijder het gewoon uit de vinkfunctie, zodat we nu weten hoe het toevoegen van lokale
‫actor-offset werkt.
‫Dus laten we teruggaan naar Tank CP en hier hebben we de MOVE-functie.
‫We weten dat deze functie elk afzonderlijk frame wordt aangeroepen en we weten dat de waarde gelijk is aan één.
‫Als we op de W-toets drukken en het is een negatieve, als we op de toets drukken en het is nul als we op beide
‫of geen van beide drukken.
‫Dus voor je uitdaging ga je de tank verplaatsen met behulp van lokale offset voor acteurs.
‫Dus in de MOV-functie ga je een F-vector maken die deltalocatie wordt genoemd.
‫Zorg er nu voor dat u X, Y en z op nul zet.
‫U kunt dit op verschillende manieren doen, bijvoorbeeld door een van de verschillende f-vectorconstructors te gebruiken.
‫Als u nu alle componenten op nul hebt gesteld, stelt u de x in op de waarde van de waarde die de invoerparameter
‫in de MOV-functie drijft.
‫Zodra je dit hebt gedaan, ga je gang en roep je de lokale offset van de acteur toevoegen op de delta-locatie.
‫Pauzeer de video en doe dit nu.
‫Oké.
‫Dus ik ben hier weer in het tank CP-bestand.
‫Nu heb ik dit EWI-logboek niet langer nodig, dus ik ga dat eruit halen en ik ga een F-vector maken
‫met de naam Delta-locatie.
‫Nu kan ik een van de F-vectorconstructors gebruiken.
‫Ik heb je al laten zien hoe je een nieuwe vector maakt met allemaal nullen.
‫Ik ga je een andere manier laten zien, namelijk om dit te initialiseren met f vector, nul vector.
‫En dit is precies hoe het klinkt, een vector met nul voor elke component.
‫Dit is alleen om u een alternatieve manier te laten zien.
‫We hebben dus een nulvector.
‫Nu ga ik deltalocatie X nemen en dat gelijk stellen aan waarde.
‫En tot slot kan ik actor lokale offset-passing in delta-locatie noemen.
‫Dus laten we dit compileren en terug hier in de editor, ik neem mijn tank en ik ga hem gewoon oriënteren
‫zodat hij in de X-richting van de wereld staat en dan kan ik op play drukken en nu in de viewport klikken.
‫Als ik op de W-toets druk, ga ik vooruit en als ik op de toets druk, ga ik terug.
‫Als ik op beide druk, heffen ze elkaar op en beweeg ik helemaal niet.
‫En natuurlijk, als ik nergens op druk, beweeg ik ook niet.
‫Dus we hebben nu beweging voor onze tank, maar het is een beetje traag, dus we zullen wat aanpassingen moeten doen.
‫En we gaan het ook hebben over het finetunen van dit bewegingsmechanisme met onze tank.
‫Samenvattend leerden we dus over ADD Actor, lokale offset en het verschil tussen wereldruimte en
‫lokale ruimte.
‫In de volgende video gaan we door met het perfectioneren van dit bewegingsmechanisme met onze tank.
‫Ik zie je snel.