2016-06-12 9 views
-1

Okay, also lerne ich gerade eine Unreal Engine programming tutorial. Hier ist der Code Ich bin verwirrt mit:Unreal Engine Anfänger FMath :: Sin

void AFloatingActor::Tick(float DeltaTime) 
{ 
    Super::Tick(DeltaTime); 
    FVector NewLocation = GetActorLocation(); 
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime)); 
    NewLocation.Z += DeltaHeight * 20.0f; // Scale our height by a factor of 20 
    RunningTime += DeltaTime; 
    SetActorLocation(NewLocation); 
} 

Ich verstehe nicht, den Teil, wo es heißt dies:

void AFloatingActor::Tick(float DeltaTime) 
{ 
    Super::Tick(DeltaTime); 

und dieser Teil:

float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime)); 
    NewLocation.Z += DeltaHeight * 20.0f; // Scale our height by a factor of 20 

Was sie tut, machen? Wie macht es das? Was ist FMath :: Sünde? Es ist so verwirrend.

Das war's! Danke für deine Zeit (und hoffentlich, Hilfe)!

+1

"* Ich verstehe nicht *" ist keine gute Beschreibung dessen, was das Problem ist. Das könnte alles bedeuten, C++ nicht zu verstehen, nicht zu verstehen, was '::', usw. – PaulMcKenzie

Antwort

1

FMath wird in der UE4 API für viele mathematische Kernfunktionen verwendet. FMath :: Abs gibt Ihnen das Aboslute (psotive Wert zum Beispiel)

FMath :: Sin bedeutet, dass Sie eine sin-Funktion aus der FMath-Klasse verwenden. :: bedeutet "erben von" oder "kommen von" so denken Sie daran wie "FMath hat eine Funktion im Aufruf namens Sin"

Super :: Tick (DeltaTime); bedeutet nur, dass Ihre Aktorklasse innerhalb der Tick-Funktion tickt (jeden Frame ausführt).

0

Super::Tick(DeltaTime); ruft die Methode Tick der übergeordneten Klasse mit dem Schlüsselwort Super auf.

DeltaTime ist die Menge an Zeit, die zwischen in jedem Rahmen im Motor, ein sehr häufiges und notwendiges Konzept in der Spielentwicklung geführt wird, dass Sie mehr über here lernen können.

kann nun sehen:

float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - 
    FMath::Sin(RunningTime)); 
    NewLocation.Z += DeltaHeight * 20.0f; // Scale our height by a factor of 20 

float DeltaHeight erstellt ein neues float Variable auf dem Stapel

= (FMath::Sin(RunningTime + DeltaTime) - 
    FMath::Sin(RunningTime)); 

die FMath::SinSin Methode der FMath Klasse verwendet eine grundlegende sin Berechnung zu tun. Sie können eine einfache tutorial on sin and cosine here

tun und lässt schließlich sehen

NewLocation.Z += DeltaHeight * 20.0f; 

NewLocation ist ein FVector, die Unreal-Version eines Vektors ist. All diese Zeile tut, ist fügen Sie die zuvor berechnete float genannt DeltaHeight zum Z Wert von NewLocation sowie Skalierung diesen Wert um 20.

Um mehr über grundlegende Vektor Mathe lernen würde ich The Nature of Code von Daniel Shiffman empfehlen.

Verwandte Themen