Komponenten sind grundlegende Bausteine, die Daten und Logik verwenden, um dein Spiel aufzubauen. Die Keyframed-Bewegungs-Komponente ist eine Möglichkeit, Animations-keyframes zu Entitäten hinzuzufügen und sie sich innerhalb bestimmter Parameter reibungslos in Ihrem Level bewegen zu lassen.
In UEFN kannst du Objekte mit Verse-Code bewegen, indem du Funktionen wie TeleportTo() oder MoveTo() verwendest, um ihre Positionen in der Welt zu ändern. Es kann jedoch schwierig sein, mit diesen Funktionen eine gleichmäßige, kontinuierliche Bewegung zu erzielen, da der Verse-Code für diese Funktionen bei jeder Aktualisierung der Simulation ausgewertet werden muss. Anstatt Objekte durch Manipulation ihrer Position zu bewegen, kannst du stattdessen Animationen verwenden. Die keyframed_movement_component kann für reibungslose Animationen liefern, da sich das Objekt zwischen den festgelegten Keyframes bewegt, ohne dass es zu Verzögerungen zwischen Server und Client kommt. Stell dir ein Minenfahrzeug vor, das sich sanft über eine Reihe von Schienen bewegt; eine Bewegungskomponente mit Keyframes wäre eine gute Lösung, um dies zu erreichen.
Wie du eine Komponente zu deiner Entität hinzufügst, findest du unter Working with Entities and Components. Die Komponente wird als keyframed_movement_Komponente aufgeführt, was mit der Verse-Klasse für die Keyframed Bewegungskomponente übereinstimmt. Weitere Informationen über die Verse-API für die Komponente findest du im Modul keyframed_movement_component API Referenz.
Wenn du das Modul KeyframedMovement in deinem Code referenzierst, erhältst du Zugang auf die Operationen, die du mit der ausgewählten Entität durchführen kannst. Das folgende Beispiel demonstriert die Verwendung von @editable und keyframe_movement_delta, um die Entität zu verschieben.
Beispiel
Um eine Entität zwischen einer Reihe von Keyframes zu verschieben:
Erstelle eine Entität in deinem Projekt. Wenn du dies zum ersten Mal machst, findest Du Informationen unter Working with Entities and Components.
Klicke auf + Komponente und füge eine mesh_component hinzu. Wähle das Würfel -Mesh aus.
Füge eine KeyframedMovement-Komponente hinzu.
Klicke erneut auf + Komponente und wähle Neue Verse-Komponente.
Nenne sie
move_cycle_componentund klick auf Erstellen.Gib in Visual Studio Code das Modul
KeyframedMovementan, indem duusing { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }hinzufügst.Damit
transformfunktioniert, musst du sicherstellen, dass duusing { /Verse.org/SpatialMath }angibst.Füge am Anfang der Klasse
move_cycle_componenteineditableArray vonkeyframed_movement_deltamit dem NamenKeyframeshinzu. Indem du dem Editor ein Array vonkeyframed_movement_deltazur Verfügung stellst, kannst du Keyframes direkt im Details Panel erstellen undTransform,DurationundEasingfür jeden Keyframe in der Animation festlegen.
# A Verse-authored component that can be added to entities
move_cycle_component<public> := class<final_super>(component):
@editable
var Keyframes:[]keyframed_movement_delta = array{}Nachdem du Verse-Code erstellst, werden im Editor Keyframes unter move_cycle_component angezeigt. Füge 2 Array-Elemente hinzu, indem du auf das Symbol + klickst.
Du kannst nun die Transform, Duration und Easing für jedes Array-Element ändern. Jedes Array-Element ist das Äquivalent eines Keyframes.
Beim ersten Element erweitere Transformieren und vorwärts, auf 500. Setze beim zweiten Element Links auf -500. Setze für beide Elemente die Dauer auf 2,0 (Sekunden) und das Easing auf cubic_bezier_easing_function.
Es ist wichtig zu beachten, dass der Wert jedes neuen Keyframes, den du setzt, relativ zum vorherigen Keyframe ist, so wie der erste Keyframe relativ zur Position des Meshs in der Welt ist.
Beachte, dass die Transformierenwerte, die zuvor als X, Y und Z bezeichnet wurden, nun Forward, Rechts und Aufwärts sind. Von nun an musst du, wenn du eine Transformationsfunktion angibst, Vorwärts, Rechts und Aufwärts in deinem Code verwenden, um Compilerfehler zu vermeiden. Weitere Informationen findest du unter FRU Coordinate System in UEFN.
Wenn du eine Sitzung speicherst und startest, solltest du sehen, wie sich dein Würfel zwischen den von dir festgelegten Keyframes bewegt:
Erstellen von Keyframes in Verse
Du kannst auch Keyframes mit Verse-Code erstellen:
Rufe die
keyframed_movement_componentab.Erstelle deinen ersten Keyframe
Key0indem du die Funktionkeyframed_movement_deltaaufrufst undTransform,DurationundEasingangibst. Wiederhole den Vorgang für den zweiten KeyframeKey1.Lege die Animation fest. Hier kannst du auch den Wiedergabemodus bestimmen. In diesem Beispiel ist die Animation
pingpong.Gib die Animation wieder. Die korrekte Syntax findest du im folgenden Code.
# Runs when the component should start simulating in a running game.
# Can be suspended throughout the lifetime of the component. Suspensions
# will be automatically canceled when the component is disposed of or the game ends.
OnSimulate<override>()<suspends>:void =
# TODO: Place simple suspends logic to run for this component here
Print("OnSimulate")
if:
KFM:keyframed_movement_component = Entity.GetComponent[keyframed_movement_component]
Vollständiger Code
Nachstehend findet sich eine Version zum Kopieren und Einfügen Version des vollständigen Codes für dieses Beispiel:
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /Verse.org/SpatialMath }
using { /UnrealEngine.com/Temporary/SceneGraph }
using { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }
# A Verse-authored component that can be added to entities
move_cycle_component<public> := class<final_super>(component):