KeyframeSequence

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

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.

Muestras de código

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

Resumen

Propiedades

Propiedades heredados de AnimationClip

Métodos

Propiedades

AuthoredHipHeight

Oculto
Leer paralelo
Seguridad del plugin

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

void

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

keyframe: Instance

El Keyframe para agregar.


Devuelve

void

Muestras de código

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 返回一个包含所有 Keyframes que se han agregado a un KeyframeSequence 的阵列。


Devuelve

Instances

Un arreglo de Keyframe .

Muestras de código

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

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

keyframe: Instance

El Keyframe para eliminar.


Devuelve

void

Muestras de código

KeyframeSequence RemoveKeyframe

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

Eventos