KeyframeSequence
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Este objeto almacena todos los Keyframes para una animación, determina si la animación es repetida y determina su prioridad contra otras animaciones.
¿Qué es una secuencia de claves?
Roblox construye los datos de animación que usa en la reproducción de una animaciones, referenciados por la propiedad Animation.AnimationId de una KeyframeSequencia. Cada animación se refiere a una KeyframeSequencia o a una CurveAnimation internamente. Aunque, generalmente c
Nota, en la mayoría de los casos, no es necesario manipular las secuencias de clave, ya que el editor de animación cubre la mayoría de la funcionalidad de animación. Sin embargo, en algunos casos, puede que desee generar una animación desde un Script o construir su propio complemento. Sin embargo, solo Roblox Studio puede usar una secuencia de clave generada de esta manera. Si desea usar una secuencia de clave, deberá subirla
Propiedades de la secuencia de claves
KeyframeSequence.Priority y KeyframeSequence.Loop> guardan las configuraciones de prioridad y animación en bucle para la secuencia. Tenga en cuenta que las propiedades AnimationTrack pueden eventualmente sobrescribir estas propiedades en el tiempo de reproducción.
El último Keyframe en la secuencia, que significa el Keyframe con la propiedad de tiempo más alta, determina la duración de una animaciones.
Estructura de secuencia de marco de llave
Las secuencias de marco de clave actúan como un contenedor que contiene Keyframes . Las secuencias de marco de clave representan un marco de 'clave' en la animaciones, que se interpola durante la reproducción.
Las Keyframes contienen Poses . Class.Pose|Poses
Las poses siguen una estructura basada en la jerarquía compartida. El padre de cada Pose coincide con el Pose de la parte a la que se adhiere. En la práctica, esto significa que las poses se ramifican desde la parte raíz. Vea a continuación un ejemplo visual.
Usando KeyframeSequences cuando se hacen animaciones
Primero debes subir KeyframeSequences a Roblox antes de que se puedan reproducir en una experiencia. En Studio, haz clic con el botón derecho en el KeyframeSequences y haz clic en 'Guardar en Roblox'. Alternativamente, puedes usar la función Plugin:SaveSelectedToRoblox() .
En algunos casos, puede que desee previsualizar una Animación antes de subirla al sitio web de Roblox. Puedes generar un ID de tiempo de prueba usando KeyframeSequenceProvider:RegisterKeyframeSequence() . Esto generará un ID de hashes que se puede usar para probar la animación localizada.
Obtener secuencias de clave
En algunos casos, puede que desee descargar la KeyframeSequencia que coincida con una animación existente subida. Puede usar AnimationClipProvider:GetAnimationClipAsync() para descargar una animaciones.
Amostras de código
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
Resumo
Propriedades
Contiene la altura del hueso de la Humanoid del modelo que se usó para autorizar este KeyframeSequence .
Determina se a animação armazenada neste AnimationClip está destinada a ser looped.
Determina qual clipe tem prioridade quando várias animações estão sendo executadas simultaneamente.
Métodos
Añade un Keyframe a la KeyframeSequence por padres, que se añade a la KeyframeSequence .
Devuelve un arreglo que contiene todos los Keyframes contenidos en un KeyframeSequence .
Esta función elimina un Keyframe de la KeyframeSequence al establecer su padre en nulo.
Propriedades
AuthoredHipHeight
Contiene la altura del hueso de la Humanoid del modelo que se utilizó para autorizar este KeyframeSequence . El valor predeterminado es 1.35, ya que es la altura del hueso establecida para un R15 estándar Character|character .
Métodos
AddKeyframe
Esta función agrega un Keyframe a la KeyframeSequence por medio de la cual se asigna el padre a la KeyframeSequence. Es funcionalmente idéntico a establecer el padre del marco de claves del 2>Class.fotograma clave2> a la 5>Class.KeyframeSequencia5> .
Nota, esta función no se equivocará cuando se llame con una instancia que no sea un Keyframe como parámetro de la instancia y lo padecerá con éxito.
Parâmetros
Devolução
Amostras de código
-- 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 返回一个包含所有 Keyframes que se han agregado a un KeyframeSequence 的阵列。
Devolução
Un arreglo de Keyframe .
Amostras de código
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
Esta función elimina un Keyframe del KeyframeSequence al establecer su padre en nulo. Es funcionalmente idéntico a establecer el padre del marco de fotograma claveen nulo.
Esto establece el padre del marco de claves a nil , pero no lo destruye. Esto significa que, si se proporciona otra referencia al marco de claves, se puede re-padre más tarde.
Nota, esta función no se equivocará cuando se llame con un Instance más que un Keyframe como parámetro de keyframe.
Parâmetros
Devolução
Amostras de código
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)