Les composants sont des blocs de construction de base qui utilisent des données et de la logique pour créer votre jeu. Le composant de mouvement associé à une image-clé est un moyen d'ajouter des images-clés d'animation à des entités et de les faire se déplacer en douceur dans votre niveau dans des paramètres spécifiés.
Dans l'UEFN, vous pouvez déplacer des objets avec le code Verse en utilisant des fonctions comme TeleportTo() ou MoveTo() pour changer leurs positions dans le monde. Cependant, il peut être difficile d'obtenir un mouvement fluide et continu à l'aide de ces fonctions, car le code Verse de ces fonctions doit être évalué à chaque mise à jour de la simulation. Au lieu de déplacer des objets en manipulant leur position, vous pouvez utiliser des animations. Le composant keyframed_movement_component permet d'obtenir des animations fluides, car l'objet se déplace entre des images-clés définies, ce qui évite les retards entre le serveur et le client. Imaginez un chariot de mine se déplaçant en douceur sur des rails ; un composant de mouvement associé à une image-clé serait une excellente solution pour obtenir ce type de déplacement.
Pour ajouter un composant à votre entité, consultez Utiliser des entités et des composants. Le composant est répertorié en tant que keyframed_movement_component, ce qui correspond à la classe Verse pour le composant de mouvement associé à une image-clé. Pour plus d'informations sur l'API Verse pour le composant, consultez le module de référence de l'API keyframed_movement_component.
La référence au module KeyframedMovement dans votre code vous donne accès aux opérations que vous pouvez effectuer sur l'entité sélectionnée. L'exemple suivant illustre l'utilisation de @editable et de keyframe_movement_delta pour déplacer l'entité.
Exemple
Pour déplacer une entité entre un ensemble d'images-clés :
Créez une entité dans votre projet. Si vous faites cela pour la première fois, consultez Utiliser des entités et des composants.
Cliquez sur + Composant et ajoutez un mesh_component. Sélectionnez le maillage du cube.
Ajoutez un composant KeyframedMovement.
Cliquez à nouveau sur + Composant et choisissez Nouveau composant Verse.
Nommez-le
move_cycle_componentet cliquez sur Créer.Dans Visual Studio Code, spécifiez le module
KeyframedMovementen ajoutantusing { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }.Pour que la
transformationfonctionne, assurez-vous de spécifierusing { /Verse.org/SpatialMath }.En haut de la classe
move_cycle_component, ajoutez une matriceeditabledekeyframed_movement_deltanomméeKeyframes. En exposant une matrice dekeyframed_movement_deltaà l'éditeur, vous pouvez créer des images-clés directement à partir du panneau Détails et définir latransformation, laduréeet l'accélérationpour chaque image-clé de l'animation.
# 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{}Après avoir créé du code Verse, les images-clés apparaîtront dans l'éditeur sous move_cycle_component. Ajoutez 2 éléments de matrice en cliquant sur l'icône +.
Vous pouvez désormais modifier la transformation, la durée et l'adoucissement pour chaque élément de la matrice. Chaque élément de la matrice est l'équivalent d'une image-clé.
Sur le premier élément, développez Transformation et définissez Avant sur 500. Sur le deuxième élément, définissez Gauche sur -500. Pour les deux éléments, définissez la durée sur 2,0 (secondes) et l'adoucissement sur cubic_bezier_easing_function.
Il est important de noter que la valeur de chaque nouvelle image-clé que vous définissez est relative à l'image-clé précédente, tout comme la première image clé est relative à la position du maillage dans le monde.
Notez que les valeurs de transformation qui étaient auparavant appelées X, Y et Z sont désormais Avant, Droite et Haut. Désormais, lorsque vous spécifiez une fonction de transformation, vous devez utiliser Avant, Droite et Haut dans votre code pour éviter les erreurs du compilateur. Pour en savoir plus, consultez Système de coordonnées FRU dans l'UEFN.
Lorsque vous enregistrez et lancez une session, vous devriez voir votre cube se déplacer entre les images clés que vous avez définies :
Création d'images-clés dans Verse
Vous pouvez également créer des images-clés à l'aide du code Verse :
Récupérez le
keyframed_movement_component.Créez votre première image-clé
Key0en appelant la fonctionkeyframed_movement_deltaet en spécifiantTransformation,DuréeetAdoucissement. Répétez le processus pour la deuxième image-cléKey1.Définissez l'animation. Ici, vous pouvez également déterminer le mode de lecture. Dans cet exemple, l'animation sera
pingpong.Lisez l'animation. Reportez-vous au code ci-dessous pour la syntaxe correcte.
# 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]
Code complet
Voici une version complète du code pour cet exemple, prête à être copiée-collée :
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):