KeyframeSequence
*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
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
Sommario
Proprietà
Contiene l'altezza dell'anca del Humanoid del modello che è stato utilizzato per autorizzare questo KeyframeSequence .
Determina se l'animazione memorizzata in questo AnimationClip è destinata a loop.
Determina quale clip ha la priorità quando più animazioni vengono riprodotte contemporaneamente.
Metodi
Aggiunge un Keyframe a Class.KeyframeSequenza da genitori, che lo rende genitori di KeyframeSequence .
Restituisce un array che contiene tutti Keyframes contenuti in un KeyframeSequence .
Questa funzione rimuove un Keyframe da Class.KeyframeSequenza impostando il suo padre su zero.
Proprietà
AuthoredHipHeight
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
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
Restituzioni
Campioni di codice
-- 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 restituisce un array che contiene tutti Keyframes che sono stati aggiunti a una KeyframeSequence .
Restituzioni
Un array di Keyframe .
Campioni di codice
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 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
Restituzioni
Campioni di codice
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)