KeyframeSequence

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Objek ini menyimpan semua Keyframes untuk animasi, menentukan apakah animasi itu berulang, dan menentukan prioritasnya terhadap animasi lainnya.

Apa itu KeyframeSequencer?

Roblox mengkonstruksi data animasi yang digunakannya dalam playback animasi, yang dianggap oleh property Animation.AnimationId dari KeyframeSequencer. Setiap animasi mengacu pada KeyframeSequencer atau internally CurveAnimation

Catatan, dalam kebanyakan kasus, Anda tidak perlu menipu KeyframeSequences, karena editor animasi menutangi kebanyakan fungsi animasi. Namun, dalam beberapa kasus, Anda mungkin ingin menghasilkan animasi dari Class.Script atau membangun plugin Anda sendiri. Namun, hanya Roblox Studio yang dapat menggunakan KeyframeSequences yang dibuat sepert

Properti KeyframeSequencer

KeyframeSequence.Priority dan KeyframeSequence.Loop menyimpan pengaturan prioritas dan animasi berulang untuk urutan. Catat bahwa AnimationTrack properti dapat pada akhirnya mengewakasi pengaturan ini saat waktu pemutaran.

The last Keyframe in the sequence, meaning the Keyframe with the highest Keyframe.Time property, determines the length of an animasi.

Struktur Keyframe Sequence

KeyframeSequences berperan sebagai wadah yang menampung Keyframes . Keyframe mewakili sebuah frame 'unit' dalam animasi, yang diinterpolasi selama pemutaran.

Keyframes berisi Poses . Class.Pose|Poses</

Poses mengikuti struktur berdasarkan hierarki bersama. Orang tua setiap Pose sesuai dengan Pose dari bagian yang ditaut. Dalam praktek, ini berarti poses cabang dari bagian akar. Lihat di bawah untuk contoh visual.

Menggunakan KeyframeSequences saat membuat animasi

Anda harus pertama mengunggah KeyframeSequences ke Roblox sebelum mereka dapat dimainkan dalam pengalaman. Di Studio, klik kanan pada KeyframeSequences dan klik 'Simpan ke Roblox'. Alternatifnya, Anda dapat menggunakan fungsi Plugin:SaveSelectedToRoblox() .

Dalam beberapa kasus, Anda mungkin ingin meninjau Animasi sebelum mengunggahnya ke situs Roblox. Anda dapat menghasilkan id sementara menggunakan KeyframeSequenceProvider:RegisterKeyframeSequence() . Ini akan menghasilkan id hasil yang dapat digunakan untuk tes animasi lokal.

Mengambil KeyframeSequences

Dalam beberapa kasus, Anda mungkin ingin mengunduh KeyframeSequencer yang sesuai dengan Animasi yang diunggah sebelumnya. Anda dapat menggunakan AnimationClipProvider:GetAnimationClipAsync() untuk mengunduh animasi.

Contoh Kode

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

Rangkuman

Properti

Properti diwarisi dari AnimationClip

Metode

Properti

AuthoredHipHeight

Tersembunyi
Keamanan Plugin
Baca Paralel

Berisi ketinggian pinggul dari Humanoid model yang digunakan untuk menulis KeyframeSequence ini.Nilai default adalah 1,35 karena itu adalah ketinggian pinggul set untuk R15 standar Character|character.

Metode

AddKeyframe

void

Fungsi ini menambahkan Keyframe ke KeyframeSequence dengan menambahkannya ke KeyframeSequence . Ini secara fungsional sama dengan menetapkan keyframe's 1> Class.Instance.Parent1> ke 4> Class.KeyframeSequencer4> .

Catatan, fungsi ini tidak akan mengalami kesalahan saat dipanggil dengan instansi selain Keyframe sebagai parameter keyframe dan akan menjadi orang tua dengan sukses.

Parameter

keyframe: Instance

Class.Keyframe yang akan ditambahkan.


Memberikan nilai

void

Contoh Kode

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 mengembalikan array yang berisi semua Keyframes yang telah ditambahkan ke KeyframeSequence .


Memberikan nilai

Instances

Sebuah matriksi dari Keyframe .

Contoh Kode

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

void

Fungsi ini menghapus Keyframe dari KeyframeSequence dengan menetapkan nilai parent-nya. Ini secara fungsional sama dengan menetapkan nilai parent keyframe.

Ini menetapkan orang tua keyframe ke nil , tetapi tidak menghancurkannya. Ini berarti, selama referensi lain ke keyframe tetap, itu dapat di-父親再生稍后。

Catatan, fungsi ini tidak akan berhasil ketika dipanggil dengan Instance selain dari Keyframe sebagai parameter keyframe.

Parameter

keyframe: Instance

Class.Keyframe yang akan dihapus.


Memberikan nilai

void

Contoh Kode

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)

Acara