Bouncefunktion als Shader/Materialfunktion. (Tutorial Qicky)

Als Erstes erstellen wir uns für die einfache Handhabe eine neue Materialfunktion. Der Name ist frei wählbar, ich nenne sie halt MF_BounceEffect (MF für Materialfunktion).


Wie folgt sollte inhaltlich folgendes in der Funktion eingefügt werden.


Das erste ist halt die Timenode um eben halt einen permanenten Ablauf zu bekommen.


Der Multiplikator gibt die Richtung vor. Es ist eine Vector3 Konstante. 0, 0, 0.3 Sagt aus, dass dieser Gegenstand, bei Anwendung auf und ab hüpft. Ist einer der beiden anderen Werte größer 0 entspricht das rechts und links, bzw. vor und zurück, hängt natürlich aber davon ab, von welcher Seite der Spieler sich gerade dem Objekt nährt. Zwei oder mehr Werte größer 0 ergeben eine diagonale Bewegung.


Sine, also Sinus, sorgt für die Wellenbewegung. Eben halt die mathematisch bekannte Sinuswelle und erzeugt einen Wert von -1 bis 1. Ändert man in Sine den Wert für die Periode kann man die Geschwindigkeit des Bounceeffektes einstellen, je höher der Wert, desto langsamer die Bewegung. Den Wert auf 1 zu lassen sollte in den meisten Fällen aber OK sein. Das bedeutet 1 Sekunde für eine Auf- und Abbewegung. Also eine Periode dauert dann 1 Sekunde.


Der zweite Multiplikator verstärkt den Bounceeffekt..


ABS-Node, Absolute wird benötigt, um den Negativwert aus Sine zu einem Positivwert zu konvertieren. Wie schon erwähnt erzeugt Sine ja einen Wert von -1 bis +1 und zurück. Materialien können mit negativen Werten allerdings nichts anfangen. 0 ist 0 % und 1 entspricht immer 100 %. ABS sorgt nun dafür, dass alles, was kleiner als 0 ist einen positiven Wert bekommt, alles, was in einem positiven Wertebereich ist, auch positiv bleibt (Deswegen würde die Node OneMinus auch nicht funktionieren). -1 ergibt 1, -0.5 ergibt 0.5, 0.5 ergibt 0.5, 1 ergibt 1 und alles dazwischen selbstverständlich auch.


Und ab in den Funktionsausgang damit.


Einbinden kann man die Funktion wie folgt. Es ist denkbar einfach.


Einfach die Funktion in das gewünschte Material ziehen und mit World Position Offset verbinden. Alles andere oberhalb des Materials kann erhalten bleiben. Es ist also denkbar einfach. Ab jetzt hüpft alles mit diesem Material fröhlich über dem Boden vor sich hin.


Verbesserungen sind möglich. Zum Beispiel die Steuerung der Richtung oder der die Effektverstärkung mit einem weiteren Inputnode in der Funktion flexibler steuerbar machen oder was auch immer.


Aber was ihr da noch so einbauen wollt, das bleibt euch überlassen. Dies ist ja nur ein Grundlagenquicky. ;)


Hier noch mal ein Beispiel:

https://youtu.be/FTZR1AOVa3U

Über den Autor

Mal etwas mehr über mich.


Obwohl ich schon zu Zeiten des C64 mit Assembler angefangen habe, C (ohne ++) weiter gemacht habe und am Ende dann C# für mich entdeckt habe, bin ich nun bei der Unreal Engine und BP gelandet. Trotzdem würde ich mich eher als Anfänger bezeichnen, denn irgendwie lernt man beim Programmieren nie aus. Optimieren kann man immer und ständig jenseits einer "Hello World" - Anwendung.


Bei Artist, nun ja. Anfänger ist eigentlich übertrieben. Leider komme ich bei der Spieleprogrammierung nicht drumherum. Mir fehlt an der Stelle einfach etwas die Kreativität der bildlichen Vorstellungskraft und vor allem der geschickte Umgang mit der Maus in einer 3D-Umgebung.

Tomarr Spender

Kommentare