KeyframeSequence

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Cet objet stocke tout le Keyframes pour une animation, détermine si l'animation est en boucle et détermine sa priorité par rapport à d'autres animations.

Qu'est-ce qu'une séquence de cadre clé ?

Roblox construit les données d'animation qu'il utilise dans la lecture d'une animations, référencées par la propriété Animation.AnimationId de séquence clé.Chaque animation fait référence à une séquence clé ou à une animation de courbe internement.Bien que généralement créé par l'éditeur d'animation Roblox, KeyframeSequence peut également être créé par d'autres plugins ou même manuellement.Une fois téléchargé sur Roblox, Roblox attribue un ID de contenu que Animations utilise pour la propriété Animation.AnimationId référencer la séquence clé téléchargée.

Remarque, dans la plupart des cas, vous n'avez pas besoin de manipuler les séquences de cadre clé, car l'éditeur d'animation couvre la plupart des fonctionnalités d'animation.Cependant, dans certains cas, vous pouvez souhaiter générer une animation à partir d'un Script ou construire votre propre plugin.Cependant, seul Roblox Studio peut utiliser une séquence clé créée de cette manière.Si vous souhaitez utiliser une telle séquence de cadre clé, vous devrez la télécharger sur Roblox comme décrit ci-dessous.

Propriétés de la séquence de cadre clé

KeyframeSequence.Priority et KeyframeSequence.Loop sauvegardent les paramètres d'animation en boucle et de priorité pour la séquence.Notez que les propriétés AnimationTrack peuvent éventuellement écraser ces propriétés au moment de la lecture.

Le dernier Keyframe dans la séquence, ce qui signifie que le Keyframe avec la propriété la plus élevée Keyframe.Time détermine la longueur d'une animations.

Structure de la séquence de cadre clé

Les séquences de cadre clé agissent comme un conteneur qui contient Keyframes.Les cadres clés représentent un cadre « clé » dans l'animations, qui sont interpolés entre pendant la lecture.

Les cadres clés contiennent Poses .Poses , spécifique à chaque BasePart étant animé, contient le CFrame appliqué au Motor6D connectant deux parties.Les poses correspondent au BasePart qu'elles correspondent par leur nom et appliquent leurs données à la Motor6D avec cette partie de même nom identifiée comme Motor6D.P1 .Pour cette raison, les animations nécessitent des noms de parties distincts pour jouer correctement.

Les poses suivent une structure basée sur une hiérarchie commune.Le parent de chacun Pose correspond au Pose de la partie à laquelle il est attaché.En pratique, cela signifie que la branche des poses se détache de la partie racine.Voir ci-dessous pour un exemple visuel.

Utiliser les séquences de cadre clé lors de la création d'animations

Vous devez d'abord télécharger KeyframeSequences sur Roblox avant qu'elles puissent être jouées dans une expérience.Dans Studio, faites un clic droit sur la séquence clé-cadre et cliquez sur « Enregistrer dans Roblox ».Alternativement, vous pouvez utiliser la fonction Plugin:SaveSelectedToRoblox().L'une ou l'autre méthode ouvrira la fenêtre de téléchargement d'animation et vous permettra de télécharger votre séquence clé comme une animations.

Dans certains cas, vous pouvez vouloir prévisualiser une animation avant de la télécharger sur le site Roblox.Vous pouvez générer un identifiant temporaire en utilisant KeyframeSequenceProvider:RegisterKeyframeSequence().Cela générera un ID de hachage qui peut être utilisé pour les tests d'animation localisés.

Obtention de séquences de cadre clé

Dans certains cas, vous pouvez souhaiter télécharger la séquence clé correspondant à une animation existante téléchargée.Vous pouvez utiliser AnimationClipProvider:GetAnimationClipAsync() pour télécharger une animations.

Échantillons de code

This sample contains a simple function that will get the length of a KeyframeSequence by finding the Keyframe with the highest Keyframe.Time value.

Get KeyframeSequence Length

local function getSequenceLength(keyframeSequence)
local length = 0
for _, keyframe in pairs(keyframeSequence:GetKeyframes()) do
if keyframe.Time > length then
length = keyframe.Time
end
end
return length
end
local keyframeSequence = Instance.new("KeyframeSequence")
getSequenceLength(keyframeSequence)

This code sample contains a simple function to generate an Animation with a generated hash ID to preview a KeyframeSequence locally.

Create temporary animation

local KeyframeSequenceProvider = game:GetService("KeyframeSequenceProvider")
local function createPreviewAnimation(keyframeSequence)
local hashId = KeyframeSequenceProvider:RegisterKeyframeSequence(keyframeSequence)
local Animation = Instance.new("Animation")
Animation.AnimationId = hashId
return Animation
end
local keyframeSequence = Instance.new("KeyframeSequence")
local animation = createPreviewAnimation(keyframeSequence)
print(animation)

This sample demonstrates how a basic KeyframeSequence can be created.

KeyframeSequence Instantiation

-- create the keyframesequence
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Loop = false
keyframeSequence.Priority = Enum.AnimationPriority.Action
-- create a keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Time = 0
-- create sample poses
local rootPose = Instance.new("Pose")
rootPose.Name = "HumanoidRootPart"
rootPose.Weight = 0
local lowerTorsoPose = Instance.new("Pose")
lowerTorsoPose.Name = "LowerTorso"
lowerTorsoPose.Weight = 1
-- set the sequence hierarchy
rootPose:AddSubPose(lowerTorsoPose) -- lowerTorsoPose.Parent = rootPose
keyframe:AddPose(rootPose) -- rootPose.Parent = keyframe
keyframeSequence:AddKeyframe(keyframe) -- keyframe.Parent = keyframeSequence
-- parent the sequence
keyframeSequence.Parent = workspace

Résumé

Propriétés

Propriétés hérités de AnimationClip

Méthodes

Propriétés

AuthoredHipHeight

Caché
Sécurité des plugins
Lecture parallèle

Contient la hauteur de la hanche de la Humanoid du modèle qui a été utilisée pour rédiger ce KeyframeSequence .La valeur par défaut est de 1,35 puisque c'est la hauteur de la hanche définie pour un R15 standard Character|character .

Méthodes

AddKeyframe

()

Cette fonction ajoute un Keyframe à la KeyframeSequence en l'associant à la KeyframeSequence .Il est fonctionnellement identique à définir le image-cléInstance.Parent à la valeur KeyframeSequence.

Remarque, cette fonction ne rencontrera pas d'erreur lorsqu'elle sera appelée avec une instance autre que un Keyframe comme paramètre de cadre clé et la parentera avec succès.

Paramètres

keyframe: Instance

Le Keyframe à ajouter.

Valeur par défaut : ""

Retours

()

Échantillons de code

This sample demonstrates how a basic KeyframeSequence can be created.

KeyframeSequence Instantiation

-- create the keyframesequence
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Loop = false
keyframeSequence.Priority = Enum.AnimationPriority.Action
-- create a keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Time = 0
-- create sample poses
local rootPose = Instance.new("Pose")
rootPose.Name = "HumanoidRootPart"
rootPose.Weight = 0
local lowerTorsoPose = Instance.new("Pose")
lowerTorsoPose.Name = "LowerTorso"
lowerTorsoPose.Weight = 1
-- set the sequence hierarchy
rootPose:AddSubPose(lowerTorsoPose) -- lowerTorsoPose.Parent = rootPose
keyframe:AddPose(rootPose) -- rootPose.Parent = keyframe
keyframeSequence:AddKeyframe(keyframe) -- keyframe.Parent = keyframeSequence
-- parent the sequence
keyframeSequence.Parent = workspace

GetKeyframes

Instances

GetKeyframes renvoie un tableau qui contient tout Keyframes qui a été ajouté à un KeyframeSequence.


Retours

Instances

Un ensemble de Keyframe .

Échantillons de code

This sample contains a simple function that will get the length of a KeyframeSequence by finding the Keyframe with the highest Keyframe.Time value.

Get KeyframeSequence Length

local function getSequenceLength(keyframeSequence)
local length = 0
for _, keyframe in pairs(keyframeSequence:GetKeyframes()) do
if keyframe.Time > length then
length = keyframe.Time
end
end
return length
end
local keyframeSequence = Instance.new("KeyframeSequence")
getSequenceLength(keyframeSequence)

RemoveKeyframe

()

Cette fonction supprime un Keyframe de la KeyframeSequence en設置 son parent à nil .Il est fonctionnellement identique à définir le parent du image-cléà nil .

Cela définit le parent du cadre image-cléà nil, mais ne le détruit pas.Cela signifie que, à condition qu'une autre référence au keyframe reste, elle peut être ré-parentée plus tard.

Remarque, cette fonction ne rencontrera pas d'erreur lorsqu'elle sera appelée avec un Instance autre qu'un Keyframe comme paramètre de cadre clé.

Paramètres

keyframe: Instance

Le Keyframe à être supprimé.

Valeur par défaut : ""

Retours

()

Échantillons de code

This sample adds a Keyframe to a KeyframeSequence before removing it and adding it again. Note that once a Keyframe is removed it is not destroyed, meaning it can be re-added later.

KeyframeSequence RemoveKeyframe

local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)

Évènements