KeyframeSequence
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Dieses Objekt speichert alle Keyframes für eine Animation, bestimmt, ob die Animation in der Loop ist, und bestimmt seine Priorität gegen andere Animationen.
Was ist eine KeyframeSequenz?
Roblox konstruiert die Animationendaten, die es in der Wiedergabe einer Animation verwendet, auf die sich bezieht die Animation.AnimationId -Eigenschaft aus einer KeyframeSequenz. Jede Animation bezieht sich auf eine KeyframeSequenz oder intern auf eine CurveAnimation
Beachten Sie, dass in den meisten Fällen keine Notwendigkeit besteht, KeyframeSequences zu manipulieren, da der Animations-Editor die meisten Animationsfunktionen abdeckt. In einigen Fällen können Sie jedoch eine Animation aus einem Script oder Ihrem eigenen Plug-inerstellen. Wenn Sie jedoch eine solche Animation erstellen möchten, müssen Sie sie nur in Roblox hochladen, wie in der Beschreibung unten beschrieben. Wenn Sie eine sol
Eigenschaften für Keyframe-Animationen
KeyframeSequence.Priority und KeyframeSequence.Loop speichern die Prioritäts- und Loop-Animationseinstellungen für die Sequenz. Beachten Sie, dass AnimationTrack -Eigenschaften letztendlich diese Eigenschaften bei der Wiedergabezeit überschreiben können.
Das letzte Keyframe in der Reihenfolge, was das Keyframe mit der höchsten Keyframe.Time Eigenschaftenbedeutet, bedeutet die Länge einer Animationen.
KeyframeSequenzstruktur
KeyframeSequences act as a container that hold Keyframes . Keyframes represent a 'Schlüssel' frame in the Animationen, that are interpolated between during playback.
Keyframes enthalten Poses . Class.Pose|Poses
Posen folgen einer Struktur basierend auf gemeinsamer Hierarchie. Der Elternteil jedes Pose folgt dem Pose der zugeordneten Partei. In der Praxis bedeutet dies, dass die Posen vom Stammpunkt ausgehen. Siehe unten für ein visuelles Beispiel.
Verwendung von KeyframeSequences beim Erstellen von Animationen
Du musst zuerst KeyframeSequences auf Roblox hochladen, bevor sie in einem Erlebnis abgespielt werden können. In Studio klickst du mit der rechten Maustaste auf die Animation und klickst auf "Speichern in Roblox". Alternativ kannst du die Class.Plugin:SaveSelectedToRoblox() -Funktion verwenden. Either method will bring up the Animation upload window and allow you to upload your KeyframeSequences als Animationen.
In einigen Fällen möchten Sie eine Animation vor dem Hochladen auf die Roblox-Website vorab prüfen. Sie können eine temporäre ID erzeugen, die mit KeyframeSequenceProvider:RegisterKeyframeSequence() verwendet wird. Dies wird eine Hashes-ID erzeugen, die für lokalisierte Animationstests verwendet werden kann.
Keyframe-Sequenzen erhalten
In einigen Fällen möchten Sie die KeyframeSequenz herunterladen, die einer bestehenden hochgeladenen Animation entspricht. Sie können AnimationClipProvider:GetAnimationClipAsync() verwenden, um eine Animationenherunterzuladen.
Code-Beispiele
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
Zusammenfassung
Eigenschaften
Enthält die Hüftehöhe des Humanoid des Modells, das verwendet wurde, um diesen KeyframeSequence zu autorisieren.
Bestimmt, ob die Animation, die in diesem AnimationClip gespeichert ist, in der Loop ist.
Bestimmt, welcher Clip die Priorität hat, wenn mehrere Animationen gleichzeitig abgespielt werden.
Methoden
Fügt eine Keyframe zu der KeyframeSequence durch Eltern-Verknüpfung hinzu.
Rückgibt ein Array, das alle Keyframes enthält, die in einer KeyframeSequence enthalten sind.
Diese Funktion entfernt einen Keyframe aus der KeyframeSequence durch Setzen seines Elternteils auf null.
Eigenschaften
AuthoredHipHeight
Enthält die Hüftehöhe des Humanoid des Modells, das verwendet wurde, um diesen KeyframeSequence zu autorisieren. Der Standardwert beträgt 1,35, da dies die Hüftehöhe für einen Standard-R15 Character|character ist.
Methoden
AddKeyframe
Diese Funktion fügt Keyframe zu KeyframeSequence durch das Eltern-Element KeyframeSequence hinzu. Sie ist funktional identisch, um den Keyframe's 2>Class.Instance.Parent2> auf das Eltern-Element 5>Class.Keyframe5> zu setzen.
Beachten Sie, dass diese Funktion nicht fehlerhaft ist, wenn sie mit einer Instanz andere als einem Keyframe als Keyframe-Parameter aufgerufen wird, und wird sie erfolgreich übergeordnet.
Parameter
Rückgaben
Code-Beispiele
-- 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 gibt eine Matrix zurück, die alle Keyframes enthält, die zu einer KeyframeSequence hinzugefügt wurden.
Rückgaben
Ein Array von Keyframe .
Code-Beispiele
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 einen Keyframe aus der KeyframeSequence, indem sie seinen Elternteil auf null setzt. Es ist funktional identisch, den Elternteil des Keyboards auf null zu setzen.
Dies setzt den Elternteil des Keyboards auf nil, aber zerstört es nicht. Dies bedeutet, dass, wenn eine andere Verweisung auf das Keyboard verbleiben, später wieder Elternteile werden kann.
Beachten Sie, dass diese Funktion nicht fehlerhaft ist, wenn sie mit einem Instance andere als einem Keyframe als Keyframe-Parameter aufgerufen wird.
Parameter
Rückgaben
Code-Beispiele
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)