KeyframeSequence

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Este objeto armazena todo o Keyframes para uma animação, determina se a animação está em loop e determina sua prioridade contra outras animações.

O que é uma sequência de quadros-chave?

O Roblox constrói os dados de animação que usa na reprodução de uma animações, referenciados pela propriedade Animation.AnimationId de uma Sequência de Chave.Cada animação se refere a uma Sequência de Quadros-Chave ou a uma Animação de Curva internamente.Embora, geralmente criada pelo Editor de Animação do Roblox, a Sequência de Quadros-Chave também pode ser criada por outros plugins ou até mesmo manualmente.Uma vez carregada no Roblox, o Roblox atribui um ID de Conteúdo que Animations use para a propriedade Animation.AnimationId para se referir à Sequência de Chave carregada.

Observe, na maioria dos casos, você não precisa manipular Sequências de Quadros-Chave, pois o editor de animação cobre a maioria da funcionalidade de animação.No entanto, em alguns casos, você pode desejar gerar uma animação a partir de um Script ou construir seu próprio plugin.No entanto, apenas o Roblox Studio pode usar uma sequência de quadros-chave criada dessa maneira.Se você deseja usar uma Sequência de Quadros-Chave assim, precisará carregá-la no Roblox como descrito abaixo.

Propriedades da Sequência de Quadros-Chave

KeyframeSequence.Priority e KeyframeSequence.Loop salva as configurações de prioridade e de animação em loop para a sequência.Observe que AnimationTrack propriedades podem eventualmente substituir essas propriedades no momento de reprodução.

O último Keyframe na sequência, significa que o Keyframe com a propriedade mais alta Keyframe.Time determina a duração de uma animações.

Estrutura da Sequência de Quadros-Chave

Sequências de Quadro-Chave atuam como um contêiner que mantém Keyframes .Os quadros-chave representam um quadro-chave na animações, que são interpolados entre durante a reprodução.

Os quadros-chave contêm Poses .Poses , específico para cada BasePart sendo animado, contém o CFrame aplicado ao Motor6D conectando duas partes.Poses correspondem à BasePart que eles correspondem por nome e aplicam seus dados à Motor6D com esta parte de mesmo nome identificada como Motor6D.P1 .Por esse motivo, as animações requerem nomes de partes distintas para tocar corretamente.

Poses seguem uma estrutura baseada em hierarquia conjunta.O pai de cada Pose corresponde ao Pose da peça a que está anexado.Na prática, isso significa que o ramo de poses se ramifica a partir da parte raiz.Veja abaixo um exemplo visual.

Usando Sequências de Quadros-Chave ao fazer animações

Você deve primeiro carregar Sequências-Chave na Roblox antes que possam ser reproduzidas em uma experiência.No Studio, clique com o botão direito na Sequência de Chave e clique em 'Salvar no Roblox'.Alternativamente, você pode usar a função Plugin:SaveSelectedToRoblox().Qualquer um dos métodos abrirá a janela de carregamento de animação e permitirá que você carregue sua KeyframeSequence como uma animações.

Em alguns casos, você pode querer pré-visualizar uma Animação antes de enviá-la ao site do Roblox.Você pode gerar um ID temporário usando KeyframeSequenceProvider:RegisterKeyframeSequence().Isso gerará um ID de hash que pode ser usado para testes de animação localizados.

Obtendo Sequências de Quadros-Chave

Em alguns casos, você pode desejar baixar o KeyframeSequência correspondente a uma Animação carregada existente.Você pode usar AnimationClipProvider:GetAnimationClipAsync() para baixar uma animações.

Amostras de código

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

Resumo

Propriedades

Propriedades herdados de AnimationClip

Métodos

Propriedades

AuthoredHipHeight

Oculto
Segurança do plugin
Ler Parallel

Contém a altura da cintura do Humanoid do modelo que foi usado para autorizar este KeyframeSequence .O valor padrão é 1.35 desde que esse é o comprimento da cintura definido para um padrão R15 Character|character .

Métodos

AddKeyframe

()

Essa função adiciona um Keyframe a o KeyframeSequence por meio de parentalização para o KeyframeSequence.É funcionalmente idêntico a definir o keyframe's Instance.Parent para o KeyframeSequence.

Observe, essa função não irá falhar ao ser chamada com uma instância diferente de uma Keyframe como o parâmetro keyframe e a encaminhará com sucesso.

Parâmetros

keyframe: Instance

O Keyframe a ser adicionado.

Valor Padrão: ""

Devolução

()

Amostras de código

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

Obter quadros-chave retorna um array que contém tudo Keyframes que foi adicionado a um KeyframeSequence .


Devolução

Instances

Um array de Keyframe .

Amostras de código

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

()

Essa função remove um Keyframe de seu pai para KeyframeSequence definindo seu pai para nil.É funcionalmente idêntico a definir o pai do quadro de chave para nil .

Isso define o pai do quadro de chave para nil, mas não o destrói.Isso significa, desde que outra referência ao quadro-chave permaneça, ela pode ser re-parentada mais tarde.

Observe, essa função não dará erro ao ser chamada com um Instance diferente de um Keyframe como o parâmetro keyframe.

Parâmetros

keyframe: Instance

O Keyframe a ser removido.

Valor Padrão: ""

Devolução

()

Amostras de código

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)

Eventos