Mål: At kunne lave et script I C++ som skal kunne bevæge en bestemt Actor, I en retning og med en hastighed. I Scriptet skal der benyttes Unreal Engine’s Reflection System.
Måden jeg får lavet og kommer I mål med dette projekt, er at jeg har fundet en YouTube Video. Derefter prøver jeg at lave det selv på min egen måde, uden at kigge på videoen. Så jeg starter med at vælge den type C++ class som jeg vil lave, da der er mange forskellige slags.

Jeg går derfor med denne Scene Component, da den kan tilføjes på alle Actors, og den også er en del af det component hierarki som alle Actors har.

Efter oprettelsen af dette component, åbner jeg det I Visual Studio, og implementere den logik der skal til for at få lavet dette.
Når man opretter et component bliver den opdelt I to filer da det er C++ er der nærmest altid en header file og en cpp file. Hvilket vil sige i mit tilfælde så har jeg MoveComponent.h og MoveComponenet.cpp. Det betyder at inde I min header file altså MoveComponent.h har jeg alle mine variabel deklarationer, klasser, funktioner osv, og I min MoveComponent.cpp har jeg implementationen af funktionerne osv.

Her I min header file benytter den disse macros fra Unreal Engine Reflection System, blandt andet I toppen er der en macro som hedder UCLASS som egentlig bare fortæller Unreal Engine at denne klasse skal ses som en Unreal Engine Class så den kan tilføjes på Actors. UCLASS har nogle parametre som man kan bruge, som f.eks. denne ClassGroup, hvor du selv skriver hvordan din klasse skal inddeles i grupper.
Derudover så har jeg selv tilføjet to private variabler, som er MoveDirection & MoveSpeed. Her benytter jeg en macro som er UPROPERTY, som gør at hvis man tilføjer EditAnywhere, kan man få lov til at redigere værdierne I variablerne I editoren.

Her I min MoveComponent.cpp implementere jeg logikken for at kunne bevæge min Actor. Måden det bliver gjort er at man skal skrive det I funktionen TickComponent, da den funktion bliver “Once per frame”. For at ændre lokationen på vorec Actor, kan vi benytte den indbyggede funktion SetRelativeLocation(FVector location), som går ind og ændre lokationen på vores Actor for hver gang der er gået et frame. Derfra tilføjer jeg min logik for at få den til at bevæge sig I en retning og med en hastighed. Til sidste ganger jeg med DeltaTime, for at sikre mig at hastigheden er den samme om man så kører spillet i 60 fps eller 240 fps.

Jeg har til sidst lavet mit eget Blueprint hvor jeg tilføjer mit MoveComponent jeg lige har implementeret, og tilføjer en StaticMesh som er vores skulptur til venstre under vores MoveComponent, for at vores StaticMesh også bevæger sig med vores MoveComponent. Man kan desuden se i højre side at vores variabler er synlige, Move Direction & Move Speed. Når jeg kører spillet vil man se skulpturen bevæge sig i den indtastede retning & hastighed.
Kilde:
