KeyframeSequence
*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 tous les 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 clés?
Roblox construit les données d'animation qu'il utilise dans le playback d'une animations, référencées par la propriété Animation.AnimationId d'un KeyframeSequence. Chaque animation réfère à un KeyframeSequenc
Remarquez que, dans la plupart des cas, vous n'avez pas besoin de manipuler les séquences de clés, car l'éditeur d'animation couvre la plupart des fonctionnalités d'animation. Cependant, dans certains cas, vous voudrez peut-être générer une animation à partir d'un Script ou construire votre propre plugin. Cependant, seuls Roblox Studio et Roblox Studio peuvent utiliser une séquence de clés cré
Propriétés de la séquence de clés
KeyframeSequence.Priority et KeyframeSequence.Loop enregistrent les paramètres de priorité et d'animation en boucle pour la séquence. Remarquez que les propriétés AnimationTrack peuvent finalement écraser ces propriétés au moment de l'exécution.
Le dernier Keyframe dans la séquence, ce qui signifie le Keyframe avec la plus haute propriété Keyframe.Time, détermine la longueur d'une animations.
Structure de la séquence clé
Les séquences de clés agissent comme un conteneur qui contient Keyframes . Les séquences de clés représentent un cadre « clé » dans l'animations, qui sont interpolaires pendant la lecture.
Les keyframes contiennent Poses . Class.Pose|Poses
Les poses suivent une structure basée sur la hiérarchie jointe. Le parent de chaque Pose correspond à la hiérarchie Pose de la partie à laquelle il est associé. Dans la pratique, cela signifie que les poses se déploient à partir de la racine. Voir ci-dessous pour un exemple visuel.
Utiliser les séquences clé lors de l'animation
Vous devez d'abord télécharger les séquences clé pour Roblox avant qu'elles puissent être jouées dans une expérience. Dans Studio, cliquez avec le bouton droit sur la séquence clé et cliquez sur «Enregistrer dans Roblox». Alternativement, vous pouvez utiliser la fonction Plugin:SaveSelectedToRoblox(). Elle ouvrira la fenêtre de téléchargement des animations et vous permettra de télécharger votre séquence clé en tant qu'animation.
Dans certains cas, vous voudrez peut-être 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 identifiant de hachage qui peut être utilisé pour les tests d'animation localisés.
Obtention de séquences de clés
Dans certains cas, vous voudrez peut-être télécharger la séquence de clés correspondant à une animation existante. Vous pouvez utiliser AnimationClipProvider:GetAnimationClipAsync() pour télécharger une animations.
Échantillons de code
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)
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)
-- 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
Contient la hauteur d'hip de la Humanoid du modèle que l'on a utilisée pour autoriser cette KeyframeSequence .
Détermine si l'animation stockée dans ce AnimationClip est destinée à être bouclée.
Détermine la priorité d'une vidéo lorsque plusieurs animations sont jouées simultanément.
Méthodes
Ajoute un Keyframe à la KeyframeSequence par le biais de son parenté à la KeyframeSequence.
Retourne un tableau qui contient tous les Keyframes contenus dans un KeyframeSequence .
Cette fonction supprime un Keyframe du KeyframeSequence en définissant son parent à zéro.
Propriétés
AuthoredHipHeight
Contient la hauteur d'épaule de la Humanoid du modèle que l'on a utilisé pour autoriser cette KeyframeSequence . La valeur par défaut est 1.35, car c'est la hauteur d'épaule standard pour un Character|character.
Méthodes
AddKeyframe
Cette fonction ajoute un Keyframe à la KeyframeSequence par le biais de son parenté à la KeyframeSequence. Elle est fonctionnellement identique à la définition du 2>Class.image-clé2> du parent à la 5>Class.KeyframeSequencer5>.
Remarquez que cette fonction ne se produira pas d'erreur lorsqu'elle est appelée avec une instance autre qu'un Keyframe en tant que paramètre de keyframe et le parent avec succès.
Paramètres
Retours
Échantillons de code
-- 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
GetKeyframes renvoie un tableau qui contient tous les Keyframes qui ont été ajoutés à un KeyframeSequence .
Retours
Un tableau de Keyframe .
Échantillons de code
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 à partir du KeyframeSequence par le définition de son parent à zéro. Il est fonctionnellement identique à définir le parent du Class.image-clé à zéro.
Cela définit le parent du cadre de clé comme nil, mais ne le détruit pas. Cela signifie que, si une autre référence au cadre de clé est fournie, il peut être re-parenté plus tard.
Remarquez que cette fonction ne se produira pas d'erreur lorsqu'elle est appelée avec un Instance autre qu'un Keyframe comme le paramètre de keyframe.
Paramètres
Retours
Échantillons de code
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)