KeyframeSequence

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Ten obiekt przechowuje wszystkie Keyframes na animację, określa, czy animacja jest powtarzana, i określa jej priorytet wobec innych animacji.

Co to jest sekwencja kluczowa?

Roblox konstruuje dane animacji, które używa w odtwarzaniu animacji, odwołując się do właściwości Animation.AnimationId z sekwencji kluczowej.Każda animacja odnosi się do sekwencji kluczowych lub do animacji krzywej wewnętrznieChociaż zwykle tworzone przez edytor animacji Roblox, sekwencja kluczowa może być również tworzona przez inne wtyczki lub nawet ręcznie.Po przesłaniu do Roblox Roblox przypisuje ID treści, które używa do odniesienia się do przesłanej sekwencji kluczy.

Pamiętaj, że w większości przypadków nie musisz manipulować sekwencjami kluczowymi, ponieważ edytor animacji pokrywa większość funkcjonalności animacji.Jednak w niektórych przypadkach możesz chcieć wygenerować animację z Script lub stworzyć własny dodatek plug-in.Jednak tylko Roblox Studio może używać sekwencji kluczowych stworzonych w taki sposób.Jeśli chcesz używać takiej sekwencji kluczowych, musisz ją przesłać do Roblox, jak opisano poniżej.

Właściwości kluczowej kolejki sekwencji

KeyframeSequence.Priority i KeyframeSequence.Loop zapisuj priorytetowe i powtarzalne ustawienia animacji dla sekwencji.Zauważ, że właściwości AnimationTrack mogą ostatecznie zastąpić te właściwości podczas odtwarzania.

Ostatni Keyframe w kolejności, oznaczający Keyframe z najwyższą właściwością Keyframe.Time, określa długość animacja.

Struktura kluczowej sekwencji ramy

Sekwencje kluczowe działają jako pojemnik, który przechowuje Keyframes.Kluczowe ramy reprezentują ramę "kluczową" w animacja, które są wstawiane pomiędzy podczas odtwarzania.

Kluczowe ramy zawierają Poses . , specyficzne dla każdego animowanego, zawierające zastosowane do łączenia dwóch części.Pozy pasują do BasePart odpowiadają nazwie i stosują swoje dane do Motor6D z tą samą nazwą części oznaczoną jako Motor6D.P1 .Z tego powodu animacje wymagają odrębnych nazw części, aby poprawnie działać.

Pozy są podporządkowane strukturze opartej na wspólnej hierarchii.Rodzic każdego Pose odpowiada Pose części, do której jest przymocowany.W praktyce oznacza to, że gałąź pozy staje się rozgałęziona z głównej części korzenia.Zobacz poniżej wizualny przykład.

Używanie sekwencji kluczowych podczas tworzenia animacji

Najpierw musisz przesłać sekwencje kluczowe do Roblox, zanim będą mogły zostać odtworzone w doświadczeniu.W Studio kliknij prawym przyciskiem na sekwencję kluczową i kliknij "Zapisz do Roblox".Alternatywnie możesz użyć funkcji Plugin:SaveSelectedToRoblox().Każda z metod wyświetli okno wysyłania animacji i pozwoli Ci przesłać KeyframeSequence jako animacja.

W niektórych przypadkach możesz chcieć zapoznać się z animacją przed przesłaniem jej na stronę Roblox.Możesz wygenerować tymczasowe ID za pomocą KeyframeSequenceProvider:RegisterKeyframeSequence().Spowoduje to wygenerowanie identyfikatora hasha, który można wykorzystać do lokalnych testów animacji.

Zdobywanie sekwencji kluczowych

W niektórych przypadkach możesz chcieć pobrać sekwencję kluczową odpowiadającą istniejącej przesłanej animacji.Możesz użyć AnimationClipProvider:GetAnimationClipAsync() do pobrania animacja.

Przykłady kodu

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

Podsumowanie

Właściwości

  • Ukryte
    Zabezpieczenia dodatku plug-in
    Odczyt równoległy

    Zawiera wysokość bioder modelu, który został użyty do autorowania tego .

Właściwości odziedziczeni z: AnimationClip

Metody

Właściwości

AuthoredHipHeight

Ukryte
Zabezpieczenia dodatku plug-in
Odczyt równoległy

Zawiera wysokość bioder modelu, który został użyty do autorowania tego .Domyślna wartość to 1.35, ponieważ jest to ustawienie wysokości biodła dla standardowego R15 Character|character .

Metody

AddKeyframe

()

Funkcja ta dodaje Keyframe do KeyframeSequence poprzez adoptowanie jej do KeyframeSequence.Jest funkcjonalnie identyczny z ustawieniem kluczowej ramy Instance.Parent do KeyframeSequence.

Uwaga: ta funkcja nie będzie błędna, gdy wezwana z inną instancją niż Keyframe jako parametr kluczowy i z powodzeniem ją rozpocznie.

Parametry

keyframe: Instance

The Keyframe które należy dodać.

Wartość domyślna: ""

Zwroty

()

Przykłady kodu

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 zwraca tablicę, która zawiera wszystkie Keyframes, które zostały dodane do KeyframeSequence.


Zwroty

Instances

Matryca z Keyframe.

Przykłady kodu

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

()

Funkcja ta usuwa Keyframe z KeyframeSequence poprzez ustawienie jej rodzica na nil .Jest funkcjonalnie identyczny z ustawieniem rodzica kluczówki na nil .

To ustawia rodzica kluczówki na nil, ale nie ją niszczy.Oznacza to, że pod warunkiem, że pozostanie inny odniesienie do kluczowej ramy, można ją później ponownie adoptować.

Uwaga: ta funkcja nie będzie błędna, gdy wezwana z innym Instance parametrem niż Keyframe jako parametr kluczowy.

Parametry

keyframe: Instance

The Keyframe do usunięcia.

Wartość domyślna: ""

Zwroty

()

Przykłady kodu

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)

Zdarzenia