Komponenty to podstawowe bloki konstrukcyjne, które wykorzystują dane i logikę do tworzenia gry. Komponent ruchu z klatkami kluczowymi to sposób na dodawanie klatek kluczowych animacji do jednostek i płynne poruszanie się nimi w poziomie w granicach określonych parametrów.
W UEFN można przesuwać obiekty za pomocą kodu Verse, używając funkcji takich jak TeleportTo() lub MoveTo(), do zmiany ich pozycji w świecie. Jednak uzyskanie płynnego, ciągłego ruchu przy użyciu tych funkcji może być trudne, ponieważ kod Verse tych funkcji musi być oceniany przy każdej aktualizacji symulacji. Zamiast przesuwania obiektów poprzez manipulowanie ich położeniem, możesz użyć animacji. Komponent keyframed_movement_component może zapewniać płynne animacje, ponieważ Obiekt porusza się między Zestawem klatek kluczowych, bez opóźnień Serwer-Klient. Wyobraź sobie wózek kopalniany, który płynnie zjeżdża po szynach; komponent ruchu z klatkami kluczowymi byłby dobrym rozwiązaniem.
Aby dodać komponent do swojej jednostki, patrz Praca z jednostkami i komponentami. Komponent zostanie wyświetlony jako keyframed_movement_component, co jest zgodne z klasą Verse dla komponentu ruchu z kluczowymi klatkami. Więcej informacji na temat interfejsu API Verse dla komponentu można znaleźć w module informacji o interfejsie API keyframed_movement_component.
Odwołanie się do modułu KeyframedMovement w kodzie daje dostęp do operacji, które możesz wykonać na wybranej jednostce. Poniższy przykład demonstruje użycie @editable i keyframe_movement_delta do przeniesienia jednostki.
Przykład
Aby sprawić, by jednostka poruszała się między zestawem klatek kluczowych:
Utwórz jednostkę w swoim projekcie. Jeśli robisz to po raz pierwszy, patrz Praca z jednostkami i komponentami.
Kliknij + komponent i dodaj mesh_komponent. Wybierz siatkę sześcienną .
Dodaj komponent KeyframedMovement.
Ponownie kliknij + komponent i wybierz New Verse komponent.
Nadaj mu nazwę
move_cycle_componenti kliknij opcję Utwórz.W Visual Studio Code określ moduł
KeyframedMovement, dodającprzy użyciu { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }.Aby
przekształceniedziałało, pamiętaj, aby użyć{ /Verse.org/SpatialMath }.W górnej części klasy
move_cycle_component dodajedytowalną tablicękeyframed_movement_deltao nazwieKlatki kluczowe. Uwidaczniając tablicękeyframed_movement_deltaw Edytorze, możesz tworzyć klatki kluczowe bezpośrednio z Panelu Details oraz ustawiaćPrzekształć,czas trwaniaikrzywą krzywiznydla każdej klatki kluczowej animacji.
# 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{}Gdy skompilujesz kod Verse, klatki kluczowe będą widoczne w edytorze w kategorii move_cycle_component. Dodaj 2 elementy tablicy, klikając ikonę +.
Możesz teraz zmodyfikować wartości Przekształcenie, Czas trwania oraz Wartość dynamiki dla każdego elementu tablicy. Każdy element tablicy jest odpowiednikiem klatki kluczowej.
W pierwszym elemencie rozwiń Przekształć i ustaw Forward na 500. W drugim elemencie ustaw Left na -500. Dla obu elementów, zestaw czas trwania na 2.0 (sekundy), a tempo dynamiki na cubic_bezier_easing_function.
Należy pamiętać, że wartość każdej nowej klatki kluczowej jest względna w stosunku do poprzedniej klatki kluczowej, podobnie jak pierwsza klatka kluczowa jest względna do pozycji siatki w świecie.
Zwróć uwagę, że wartości Przekształć, które wcześniej były nazywane X, Y i Z,to teraz Do przodu, W prawo i W górę. Od tej chwili, gdy określasz funkcję Przekształć, musisz używać w kodzie znaków Forward, Right i Up, aby uniknąć błędów kompilatora. Aby dowiedzieć się więcej, patrz Układ współrzędnych FRU w UEFN.
Gdy zapisujesz i uruchamiasz sesję, zobaczysz sześcian poruszający się między Zestawem klatek kluczowych:
Budowanie klatek kluczowych w Verse
Klatki kluczowe możesz też tworzyć przy użyciu kodu Verse:
Pobierz
keyframed_movement_component.Utwórz pierwszą klatkę kluczową
Key0, wywołując funkcjękeyframed_movement_delta, definiując opcjeTransform,DurationorazEasing. Powtórz proces dla drugiej klatki kluczowejKey1.Ustaw animację. W tym miejscu można również określić tryb odtwarzania. W tym przykładzie animacją będzie
pingpong.Odtwórz animację. Sprawdź poniższy kod, aby sprawdzić poprawną składnię.
# 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]
Complete Code
Poniżej znajduje się wersja kompletnego kodu z tego przykładu, którą można kopiować i wklejać:
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):