Componenti sono blocchi di costruzione di base che utilizzano dati e logica per costruire il tuo gioco. Il componente Movimento con keyframe è un modo per aggiungere keyframe di animazione alle entità e farle muovere senza intoppi nel livello entro parametri specificati.
In UEFN, puoi spostare gli oggetti con il codice Verse utilizzando funzioni come TeleportTo() o MoveTo() per modificarne la posizione nel mondo. Tuttavia, può essere difficile ottenere un movimento fluido e continuo utilizzando queste funzioni poiché il codice Verse per queste funzioni deve essere valutato a ogni ciclo di simulazione. Invece di spostare gli oggetti manipolando la loro posizione, puoi utilizzare le animazioni. Il keyframed_movement_component può fornire animazioni fluide poiché l'oggetto si muove tra i keyframe impostati e lo fa senza incorrere in ritardi server-client. Pensa a un carrello da miniera che si muove dolcemente lungo una serie di binari; un componente Movimento con keyframe sarebbe una buona soluzione per ottenere questo risultato.
Per aggiungere un componente all'entità, vedi Utilizzo di entità e componenti. Il componente è elencato come keyframed_movement_component, che corrisponde alla classe Verse per il componente Movimento con keyframe. Per maggiori informazioni sull'API Verse per il componente, consulta il modulo di riferimento API keyframed_movement_component.
Fare riferimento al modulo KeyframedMovement nel codice ti dà accesso alle operazioni che puoi eseguire sull'entità selezionata. L'esempio seguente mostra l'utilizzo di @editable e keyframe_movement_delta per spostare l'entità.
Esempio
Per far muovere un'entità tra un set di keyframe:
Crea un'entità nel tuo progetto. Se è la prima volta che esegui questa operazione, vedi Utilizzo di entità e componenti.
Fai clic su + Componente e aggiungi un mesh_component. Seleziona la mesh del cubo.
Aggiungi un componente KeyframedMovement.
Fai di nuovo clic su + Componente e scegli Nuovo componente Verse.
Denominalo
move_cycle_componente fai clic su Crea.In Visual Studio Code, specifica il modulo
KeyframedMovementaggiungendousing { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }.Affinché la
trasformazionefunzioni, assicurati di specificareusing { /Verse.org/SpatialMath }.All'inizio della classe
move_cycle_component, aggiungi un arraymodificabiledikeyframed_movement_deltadenominatoKeyframes. Esponendo un array dikeyframed_movement_deltaall'editor, puoi creare keyframe direttamente dal pannello Dettagli e impostareTrasformazione,DurataeAlleggerimentoper ogni keyframe dell'animazione.
# 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{}Dopo aver compilato il codice Verse, i keyframe vengono visualizzati nell'editor in move_cycle_component. Aggiungi 2 elementi dell'array facendo clic sull'icona +.
Ora puoi modificare Trasformazione, Durata e Alleggerimento per ogni elemento dell'array. Ogni elemento dell'array è l'equivalente di un keyframe.
Sul primo elemento, espandi Trasformazione e imposta Avanti su 500. Sul secondo elemento, imposta Sinistra su -500. Per entrambi gli elementi, imposta la Durata su 2.0 (secondi) e l'Alleggerimento su cubic_bezier_easing_function.
È importante notare che il valore di ogni nuovo keyframe impostato è relativo al keyframe precedente, proprio come il primo keyframe è relativo alla posizione della mesh nel mondo.
Tieni presente che i valori di trasformazione che prima venivano indicati come X, Y e Z sono ora Avanti, Destra e Su. D'ora in poi, quando si specifica una funzione di trasformazione, è necessario utilizzare Avanti, Destra e Su nel codice per evitare errori del compilatore. Per maggiori informazioni, vedi Sistema di coordinate FRU in UEFN.
Quando salvi e avvii una sessione, devi vedere il tuo cubo muoversi tra i keyframe che hai impostato:
Compilazione di keyframe in Verse
Puoi anche compilare keyframe utilizzando il codice Verse:
Ottieni
keyframed_movement_component.Crea il tuo primo keyframe
Key0chiamando la funzionekeyframed_movement_deltae specificandotrasformazione,durataealleggerimento. Ripeti il procedimento per il secondo keyframeKey1.Imposta l'animazione. Qui puoi anche determinare la modalità di riproduzione. In questo esempio, l'animazione sarà
pingpong.Riproduci l'animazione. Fai riferimento al codice seguente per la sintassi corretta.
# 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]
Codice completo
Di seguito è riportata una versione copia-incolla del codice completo per questo esempio:
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):