KeyframeSequence

Visualizza obsoleti

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

Questo oggetto memorizza tutti i Keyframes per un'animazione, determina se l'animazione è looped e determina la sua priorità rispetto alle altre animazioni.

Cos'è una sequenza di chiavi?

Roblox costruisce i dati di animazione che usa nella riproduzione di un'animazioni, riferiti dalla proprietà Animation.AnimationId da un KeyframeSequence. Ogni animazione riferisce a una KeyframeSequenza o a una CurveAnimation interna. Anche se, di

Nota, nella maggior parte dei casi, non è necessario manipolare le sequenze di chiave, poiché l'editor di animazioni copre la maggior parte della funzionalità di animazione. Tuttavia, in alcuni casi potrebbe essere necessario generare un'animazione da un Script o creare il tuo Collegare. Tuttavia, solo Roblox Studio può utilizzare una sequenza di chiave creata in questo modo. Se desideri utilizzare una tale

Property di KeyframeSequenza

KeyframeSequence.Priority e KeyframeSequence.Loop salvat le impostazioni di priorità e animazione in loop per la sequenza. Nota che le proprietà AnimationTrack possono eventualmente sovrascrivere queste proprietà al momento dell'esecuzione.

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

Structure di keyframe

I KeyframeSequences sono container che contengono Keyframes . I Keyframe rappresentano un'immagine 'chiave' nell'animazioni, che sono interpolati durante il playback.

I keyframe contengono Poses . Class.Pose|Poses

Le posizioni seguono una struttura basata sulla gerarchia congiunta. Il padre di ciascuna Pose corrisponde alla Pose di parte a cui è allegata. In pratica, questo significa che le posizioni si sviluppano dalla parte radice. Vedi sotto per un esempio visivo.

Uso delle sequenze chiave quando si creano animazioni

Devi prima caricare le sequenze di chiave su Roblox prima che possano essere visualizzate in un'esperienza. In Studio, fai clic con il pulsante destro del mouse sulla sequenza di chiave e fai clic su 'Salva su Roblox'. In alternativa, puoi utilizzare la funzione Plugin:SaveSelectedToRoblox() .

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

Ottenere sequenze chiave

In alcuni casi potresti voler scaricare la KeyframeSequenza corrispondente a un'animazione caricata esistente. Puoi usare AnimationClipProvider:GetAnimationClipAsync() per scaricare un'animazioni.

Campioni di codice

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

Sommario

Proprietà

Proprietà provenienti da AnimationClip

Metodi

Proprietà

AuthoredHipHeight

Nascosto
Lettura Parallela
Sicurezza Plugin

Contiene l'altezza delle spalle del Humanoid della modello che è stato utilizzato per autorizzare questo KeyframeSequence . Il valore predefinito è 1,35 poiché è l'altezza delle spalle standard per un Character|character standard.

Metodi

AddKeyframe

void

Questa funzione aggiunge un Keyframe a Class.KeyframeSequenza da padre in padre in Class.Keyframe. È funzionalmente identico all'impostazione del Fotogramma chiave's KeyframeSequence al Class.KeyframeSequenza .

Nota, questa funzione non si verrà mai errore quando viene chiamata con un'istanza al di fuori di un Keyframe come il parametro keyframe e lo genere in modo sicuro.

Parametri

keyframe: Instance

Il Keyframe da aggiungere.


Restituzioni

void

Campioni di codice

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 tutti Keyframes che sono stati aggiunti a una KeyframeSequence .


Restituzioni

Instances

Un array di Keyframe .

Campioni di codice

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

Questa funzione rimuove un Keyframe dalla KeyframeSequence impostando il suo padre su null. È funzionalmente identico all'impostazione del padre del Class.Fotogramma chiave su null.

Questo imposta il padre del Fotogramma chiavesu nil , ma non lo distrugge. Ciò significa che, se un'altra riferimento al keyframe rimane, può essere ri-genitore più tardi.

Nota, questa funzione non si verrà mai errore quando viene chiamata con un Instance al di fuori di un Keyframe come il parametro keyframe.

Parametri

keyframe: Instance

Il Keyframe da rimuovere.


Restituzioni

void

Campioni di codice

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