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

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

Podsumowanie

Właściwości

Właściwości odziedziczeni z: AnimationClip

Metody

Właściwości

AuthoredHipHeight

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

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

void

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

keyframe: Instance

The Keyframe to be added.


Zwroty

void

Przykłady kodu

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 arkusz, który zawiera wszystkie Keyframes , które zostały dodane do KeyframeSequence .


Zwroty

Instances

Materiały Keyframe .

Przykłady kodu

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

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

keyframe: Instance

The Keyframe to be removed.


Zwroty

void

Przykłady kodu

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