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 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

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

Zusammenfassung

Eigenschaften

Eigenschaften von AnimationClip übernommen
  • Parallel lesen

    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

Eigenschaften

AuthoredHipHeight

Verborgen
Parallel lesen
Plugin-Sicherheit

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

void

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

keyframe: Instance

Der Keyframe zum Hinzufügen.


Rückgaben

void

Code-Beispiele

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


Rückgaben

Instances

Ein Array von Keyframe .

Code-Beispiele

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

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

keyframe: Instance

Der Keyframe zum Entfernen.


Rückgaben

void

Code-Beispiele

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