KeyframeSequence

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Dieses Objekt speichert alles Keyframes für eine Animation, bestimmt, ob die Animation geschleift wird, und legt ihre Priorität gegenüber anderen Animationen fest.

Was ist eine Schlüsselframensequenz?

Roblox erstellt die Animationen-Daten, die es für die Wiedergabe einer Animation verwendet, durch die Eigenschaft Animation.AnimationId von einer Schlüsselframensequenz referenziert.Jede Animation bezieht sich auf eine Schlüsselfrahmsequenz oder eine Kurvanaimation intern.Obwohl, normalerweise erstellt vom Roblox-Animationsbearbeiter, kann auch KeyframeSequenz von anderen Plugins oder sogar manuell erstellt werden.Sobald sie auf Roblox hochgeladen wurde, weist Roblox eine Inhalts-ID zu, die Animations für die Animation.AnimationId Eigenschaft verwendet wird, um sich auf die hochgeladene Schlüsselrahmensequenz zu beziehen.

Beachten Sie, in den meisten Fällen müssen Sie keine Schlüsselframe-Sequenzen manipulieren, da der Animations-Editor die meisten Animationsfunktionen abdeckt.In einigen Fällen möchten Sie jedoch möglicherweise eine Animation von einem Script generieren oder Ihr eigenes Plug-inerstellen.Allerdings kann nur Roblox Studio eine Keyframe-Sequenz verwenden, die auf diese Weise erstellt wurde.Wenn du eine solche Schlüsselframensequenz verwenden möchtest, musst du sie wie unten beschrieben auf Roblox hochladen.

Eigenschaften der Schlüsselfrahmensequenz

KeyframeSequence.Priority und KeyframeSequence.Loop speichern die Prioritäts- und Schleifenanimationseinstellungen für die Sequenz.Beachten Sie, dass AnimationTrack Eigenschaften diese Eigenschaften am Spielzeitpunkt möglicherweise überschreiben können.

Das letzte Keyframe in der Sequenz, das heißt der Keyframe mit der höchsten Keyframe.Time Eigenschaften, bestimmt die Länge einer Animationen.

Schlüsselfrahmen-Sequenzstruktur

Keyframe-Sequenzen funktionieren als Container, der Keyframes enthält.Keyframes repräsentieren einen "Schlüssel"-Frame in der Animationen, der während der Wiedergabe interpoliert wird.

Schlüsselframes enthalten Poses. Poses , spezifisch für jede BasePart , die animiert wird, enthält die CFrame , die auf die Motor6D angewendet wird, um zwei Teile zu verbinden.Posen entsprechen der BasePart sie entsprechen durch ihren Namen und wenden ihre Daten auf die Motor6D mit diesem gleichen Namen benannte Teil an, die als Motor6D.P1 identifiziert wird.Aus diesem Grund benötigen Animationen unterschiedliche Teilnamen, um richtig abzuspielen.

Posen folgen einer Struktur, die auf gemeinsamer Hierarchie basiert.Der Elternteil von jedem Pose entspricht dem Pose des Teils, an dem es angehängt ist.In der Praxis bedeutet dies, dass sich die Posen vom Wurzelteil abspalten.Siehe unten für ein visuelles Beispiel.

Verwendung von Schlüsselfrahmensequenzen beim Erstellen von Animationen

Du musst zuerst Keyframe-Sequenzen auf Roblox hochladen, bevor sie in einem Erlebnis abgespielt werden können.In Studio klicken Sie mit der rechten Maustaste auf die Schlüsselfrahmensequenz und klicken Sie auf "Speichern in Roblox".Alternativ kannst du die Plugin:SaveSelectedToRoblox()-Funktion verwenden.Entweder Methode wird das Animations-Upload-Fenster einblenden und es Ihnen ermöglichen, Ihre Schlüsselframensequenz als Animationenhochzuladen.

In einigen Fällen möchten Sie vielleicht eine Animation vor dem Hochladen auf die Roblox-Website vorab anzeigen.Du kannst eine temporäre ID mit KeyframeSequenceProvider:RegisterKeyframeSequence() erzeugen.Dies erzeugt eine Hash-ID, die für lokalisierte Animations-Tests verwendet werden kann.

Keyframe-Sequenzen erhalten

In einigen Fällen möchten Sie möglicherweise die Keyframe-Sequenz herunterladen, die einer vorhandenen hochgeladenen Animation entspricht.Du kannst AnimationClipProvider:GetAnimationClipAsync() verwenden, um eine Animationenherunterzuladen.

Code-Beispiele

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

Zusammenfassung

Eigenschaften

Eigenschaften von AnimationClip übernommen

Methoden

Eigenschaften

AuthoredHipHeight

Verborgen
Plugin-Sicherheit
Parallel lesen

Enthält die Hüfthöhe des Humanoid des Modells, das verwendet wurde, um diesen KeyframeSequence zu verfassen.Der Standardwert ist 1.35, da dies die Hüfthöhe für einen Standard-R15 Character|character ist.

Methoden

AddKeyframe

()

Diese Funktion fügt einem Keyframe einen KeyframeSequence durch das Elternschaft hinzu, indem sie es zum KeyframeSequence macht.Es ist funktional identisch mit der Festlegung des Schlüsselfrahmens Instance.Parent auf die KeyframeSequence .

Beachten Sie, dass diese Funktion bei Aufruf mit einer Instanz außer einem Keyframe als Schlüsselparameter keine Fehler auftreten wird und sie erfolgreich verknüpfen wird.

Parameter

keyframe: Instance

Das Keyframe wird hinzugefügt.

Standardwert: ""

Rückgaben

()

Code-Beispiele

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 gibt eine Liste zurück, die alle Keyframes enthält, die zu einem KeyframeSequence hinzugefügt wurden.


Rückgaben

Instances

Ein Array von Keyframe.

Code-Beispiele

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

()

Diese Funktion entfernt ein Keyframe von der KeyframeSequence durch die Festlegung des Eltern auf nil.Es ist funktional identisch mit der Einstellung des Elternrahmens des Keyframeauf nil.

Dies legt den Elternrahmen des Keyframeauf nil fest, zerstört ihn aber nicht.Das bedeutet, dass, solange ein weiterer Verweis auf den Schlüsselfrahmen besteht, er später wieder adoptiert werden kann.

Beachten Sie, dass diese Funktion bei Aufruf mit einem Instance anderen als einem Keyframe als Schlüsselrahmen参数 keinen Fehler macht.

Parameter

keyframe: Instance

Die Keyframe zu entfernen.

Standardwert: ""

Rückgaben

()

Code-Beispiele

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)

Ereignisse