KeyframeSequence
*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 dla animacji, określa, czy animacja jest pętli się i określa jej priorytet wobec innych animacji.
Co to jest KeyframeSequencja?
Roblox konstruuje dane animacji, które używa w odtwarzaniu animacji, o których mowa w właściwości Animation.AnimationId z KeysFrameSequencji. Każda animacja odtwarza animację lub łączy się z interfejsem
Uwaga, w większości przypadków, nie musisz manipulować kolejnościami kluczowymi, ponieważ edytor animacji pokrywa większość funkcji animacji. W niektórych przypadkach możesz jednak chcieć generować animację z Script lub zbudować własny dodatek plug-in. Tylko Roblox Studio może używać takiej kolejności kluczowej, aby
Właściwości kluczowej animacji
KeyframeSequence.Priority i KeyframeSequence.Loop zapisz ustawienia priorytetu i animacji pętli dla sequencji. Uwaga, że AnimationTrack właściwości mogą w końcu przeciągnąć te właściwości podczas odtwarzania.
Ostatni Keyframe w kolejności, co oznacza Keyframe z największą właściwością Keyframe.Time, określa długość animacja.
Struktura KeyframeSequencji
Kwadraty kluczowe działają jako kontener, który zawiera Keyframes . Kwadraty kluczowe reprezentują ramę "klucz" w animacja, która jest interpolowana podczas odtwarzania.
Klatki pancerne zawierają Poses. Poses
Pozy następują w strukturze opartej na wspólnym hierarchizacji. Rodzic każdego Pose odpowiada na Pose jego części do której jest załączony. W praktyce oznacza to, że pozy rozchodzą się od korzenia. Patrz poniżej dla wizualnego przykładu.
Używanie kluczowych animacji sekwencji podczas tworzenia animacji
Musisz najpierw załadować KeyframeSequences na Roblox, aby mogły być odtwarzane w doświadczeniu. W Studio, kliknij prawym przyciskiem na KeyframeSequencer i kliknij 'Zapisz na Roblox'. Alternatywnie możesz użyć funkcji Plugin:SaveSelectedToRoblox().
W niektórych przypadkach możesz chcieć podglądać animację przed jej wysłaniem na stronę Roblox. Możesz generować tymczasowy identyfikator używając KeyframeSequenceProvider:RegisterKeyframeSequence() . Będzie to generować haszowy identyfikator, który można użyć do lokalizowanego testowania animacji.
Uzyskiwanie kluczowych sekwencji
W niektórych przypadkach możesz chcieć zeskanować KeyframeSequencja odpowiadającą istniejącej wcześniej załadowanej animacji. Możesz użyć AnimationClipProvider:GetAnimationClipAsync() aby zeskanować animacja.
Przykłady kodu
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
Podsumowanie
Właściwości
Zawiera wysokość Humanoid modelu, który użyto do autorstwa tego KeyframeSequence.
Określa, czy animacja zapisana w tym AnimationClip ma być pętla.
Określa, która klipy mają priorytet, gdy wiele animacji gra równocześnie.
Metody
Doduje Keyframe do KeyframeSequence przez ustanowienie go jako rodzica dla KeyframeSequence.
Zwraca arkusz, który zawiera wszystkie Keyframes zawarte w KeyframeSequence.
Funkcja ta usuwa Keyframe z KeyframeSequence poprzez ustawienie jej rodzica na nil.
Właściwości
AuthoredHipHeight
Zawiera wysokość Humanoid modelu, którego użyto do autorstwa tego KeyframeSequence . Domyślną wartością jest 1,35, ponieważ jest to wysokość Character|character dla standardowego R15 2>Character|character2>.
Metody
AddKeyframe
Funkcja ta dodaje Keyframe do KeyframeSequence przez ustanowienie jej jako KeyframeSequence . Jest ona funkcjonalnie identyczna z ustawieniem kluczowej 2> Class.Keyframe2> na 5> Class.KeyframeSequencji5> .
Uwaga, ta funkcja nie będzie błędna, gdy zostanie wywołana z instancji innej niż Keyframe jako parametr kluczowy i będzie go prawidłowo podrębnić.
Parametry
Zwroty
Przykłady kodu
-- 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 zwraca arkusz, który zawiera wszystkie Keyframes , które zostały dodane do KeyframeSequence .
Zwroty
Materiały Keyframe .
Przykłady kodu
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 ona funkcjonalnie identyczna z ustawieniem rodzica kluczowego ramy na nil.
To ustawia rodzic keyframe'u na nil, ale nie go niszczy. Oznacza to, że jeśli inny odniesie się do keyframe'u, można go później ponownie rodzic.
Uwaga, ta funkcja nie będzie błędna, gdy będzie wzywana z użyciem Instance innego niż Keyframe jako parametru kluczowego.
Parametry
Zwroty
Przykłady kodu
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)