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 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

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)
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)
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
  • Lecture parallèle

    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

Propriétés

AuthoredHipHeight

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

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

void

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

keyframe: Instance

Le Keyframe à ajouter.


Retours

void

Échantillons de code

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 tous les Keyframes qui ont été ajoutés à un KeyframeSequence .


Retours

Instances

Un tableau de Keyframe .

Échantillons de code

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

void

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

keyframe: Instance

Le Keyframe à supprimer.


Retours

void

Échantillons de code

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