KeyframeSequence

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Questo oggetto memorizza tutto il Keyframes per un'animazione, determina se l'animazione è ripetuta e determina la sua priorità rispetto ad altre animazioni.

Cos'è una sequenza di keyframe?

Roblox costruisce i dati di animazione che utilizza nel riproduzione di un'animazioni, referenziati dalla proprietà Animation.AnimationId da una sequenza di chiave.Ogni animazione si riferisce a una KeyframeSequence o a un'Animazione di curva internamente.Anche se, di solito creato dall'Editor di Animazione Roblox, KeyframeSequence può essere creato anche da altri plugin o persino manualmente.Una volta caricato su Roblox, Roblox assegna un ID contenuto che Animations utilizza per la proprietà Animation.AnimationId per fare riferimento alla sequenza di chiave caricata.

Nota, nella maggior parte dei casi, non è necessario manipolare le sequenze di chiave, poiché l'editor di animazione copre la maggior parte della funzionalità di animazione.Tuttavia, in alcuni casi potresti voler generare un'animazione da un Script o costruire il tuo Collegare.Tuttavia, solo Roblox Studio può utilizzare una sequenza di chiave creata in tal modo.Se desideri utilizzare una sequenza di Keyframe come questa, dovrai caricarla su Roblox come descritto qui sotto.

Proprietà di KeyframeSequenza

KeyframeSequence.Priority e KeyframeSequence.Loop salva le impostazioni di priorità e di animazione in loop per la sequenza.Nota che le proprietà AnimationTrack possono alla fine sovrascrivere queste proprietà al momento del riproduzione.

L'ultimo Keyframe nella sequenza, che significa il Keyframe con la ProprietàKeyframe.Time più alta, determina la lunghezza di un'animazioni.

Struttura di KeyframeSequence

Le sequenze di keyframe agiscono come container che contengono Keyframes .I fotogrammi rappresentano un fotogramma "chiave" nell'animazioni, che vengono interpolati tra durante il riproduzione.

I fotogrammi contengono Poses .Poses , specifico per ogni BasePart animato, contiene il CFrame applicato al Motor6D che connette due parti.Le posizioni corrispondono alla BasePart che corrispondono con il nome e applicano i loro dati alla Motor6D con questa parte con lo stesso nome identificata come Motor6D.P1 .Per questo motivo, le animazioni richiedono nomi di parti distinti per giocare correttamente.

Le pose seguono una struttura basata sulla gerarchia congiunta.Il genitore di ciascuno Pose corrisponde al Pose della parte a cui è allegato.In pratica, questo significa che il ramo delle pose si ramifica dalla parte radice.Vedi qui sotto per un esempio visivo.

Utilizzo di KeyframeSequenze quando si creano animazioni

Devi prima caricare KeyframeSequenze su Roblox prima che possano essere riprodotti in un'esperienza.In Studio, fai clic con il pulsante destro del mouse sulla sequenza di chiave e clicca su 'Salva su Roblox'.In alternativa, puoi utilizzare la funzione Plugin:SaveSelectedToRoblox().Qualunque metodo farà apparire la finestra di caricamento dell'animazione e ti consentirà di caricare la tua KeyframeSequence come animazioni.

In alcuni casi, potresti voler visualizzare un'Animazione prima di caricarla sul sito Roblox.Puoi generare un ID temporaneo utilizzando KeyframeSequenceProvider:RegisterKeyframeSequence() .Questo genererà un ID hash che può essere utilizzato per i test di animazione localizzati.

Ottenere sequenze di keyframe

In alcuni casi potresti voler scaricare la sequenza di Keyframe corrispondente a un'esistente Animazione caricata.Puoi usare AnimationClipProvider:GetAnimationClipAsync() per scaricare un'animazioni.

Campioni di codice

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

Sommario

Proprietà

Proprietà provenienti da AnimationClip
  • Lettura Parallela

    Determina se l'animazione memorizzata in questo AnimationClip è destinata a essere ripetuta in loop.

  • Determina quale clip ha la priorità quando più animazioni sono in riproduzione contemporaneamente.

Metodi

Proprietà

AuthoredHipHeight

Nascosto
Sicurezza Plugin
Lettura Parallela

Contiene l'altezza della coscia del Humanoid del modello che è stato utilizzato per autorizzare questo KeyframeSequence .Il valore predefinito è 1.35 poiché è l'altezza dell'anca impostata per uno standard R15 Character|character .

Metodi

AddKeyframe

()

Questa funzione aggiunge un Keyframe alla KeyframeSequence da genitore, parentandola al KeyframeSequence .È funzionalmente identico a impostare il Fotogramma chiavedi Instance.Parent a KeyframeSequence.

Nota, questa funzione non darà errore quando viene chiamata con un'istanza diversa da una Keyframe come parametro keyframe e la renderà con successo.

Parametri

keyframe: Instance

Il Keyframe da aggiungere.

Valore predefinito: ""

Restituzioni

()

Campioni di codice

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

GetKeyframes restituisce un array che contiene tutte le Keyframes che sono state aggiunte a un KeyframeSequence .


Restituzioni

Instances

Un array di Keyframe .

Campioni di codice

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

()

Questa funzione rimuove un Keyframe da KeyframeSequence impostando il suo genitore a nil .È funzionalmente identico a impostare il genitore del Fotogramma chiavea nil .

Questo imposta il genitore del Fotogramma chiavea nil, ma non lo distrugge.Questo significa, a patto che rimanga un'altra referenza al keyframe, può essere ri-genitore più tardi.

Nota, questa funzione non darà errore quando viene chiamata con un Instance diverso da un Keyframe come parametro keyframe.

Parametri

keyframe: Instance

Il Keyframe da rimuovere.

Valore predefinito: ""

Restituzioni

()

Campioni di codice

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)

Eventi