KeyframeSequence
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
วัตถุนี้เก็บทุกสิ่ง Keyframes แอนิเมชัน
KeyframeSequencer คืออะไร?
Roblox สร้างข้อมูลอนิเมชันที่ใช้ในการเล่นอนิเมชันที่อ้างอิงจากค่า Class.Animation.AnimationId ของโครงส
หมายเหตุในกรณีส่วนใหญ่คุณไม่จำเป็นต้องจัดการ KeyframeSequences เนื่องจากเครื่องมือเรนเดอร์ส่วนใหญ่ใช้งานได้หลากหลายสำหรับการเคลื่อนไหว อย่างไ
สมบัติรหัส
KeyframeSequence.Priority และ KeyframeSequence.Loop บันทึกการตั้งค่าความเป็นลำดับและการเคลื่อนไหวของอนิเมชั่นสำหรับสายการเรียกในตอนเล่น โปรดทราบว่า โปรไฟล์ AnimationTrack สามาร
The last Keyframe ในลำดับต่อไปหมายถึง Keyframe ด้วยค่าสมบัติ Keyframe.Time สูงสุด กำหนดความยาวของอนิเมชัน
โครงสร้าง KeyframeSequencer
KeyframeSequences ประกอบด้วยคอนเทนเนอร์ที่มี Keyframes อยู่ คอนเทนเนอร์ Keyframes เป็นรูปโค้ง 'คีย์' แอนิเมชัน
ตัวแสดงผล Keyframes มี Poses .
ตําแหน่งติดตามโครงสร้างที่ขึ้นอยู่บนระดับเหลี่ยมของผู้ปกครอง พ่อของแต่ละ Pose ตรงกับ Pose ของส่วนที่มันแนบมา ในการฝึกซ้อม นี่หมายความว่าตําแห
ใช้ KeyframeSequences เมื่อสร้างอนิเมชัน
คุณต้องอัปโหลด KeyframeSequences ไปยัง Roblox ก่อนที่จะสามารถเล่นในประสบการณ์ได้ ใน Studio คลิกที่ KeyframeSequences แล้วคลิก 'บันทึกไปยัง Roblox' หรือใช้ฟังก์ชัน Plugin:SaveSelectedToRoblox() เพ
ในบางกรณีคุณอาจต้องการดูตัวอย่างอนิเมชั่นก่อนอัปโหลดไปยังเว็บไซต์ Roblox คุณสามารถสร้างรหัสชื่อเวลาชั่วคราวโดยใช้ KeyframeSequenceProvider:RegisterKeyframeSequence() นี้จะสร้างรหัสชื่อที่สามารถใช้สำหรั
การรับ KeyframeSequences
ในบางกรณีคุณอาจต้องการดาวน์โหลด KeyframeSequencer ที่ตรงกับการอัปโหลดแอนิเมชันที่มีอยู่ คุณสามารถใช้ AnimationClipProvider:GetAnimationClipAsync() เพื่อดาวน์โหลดอนิเมชัน
ตัวอย่างโค้ด
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
สรุป
คุณสมบัติ
มีความสูงของหิมะของ Humanoid ของโมเดลที่ใช้เพื่อเขียนรหัสนี้ KeyframeSequence
กำหนดว่าวิดีโอที่เก็บไว้ในนี้ AnimationClip มีไว้เพื่อหลอมรวมหรือไม่
กำหนดว่าเลื่อนใดจะได้รับความสามารถในการเล่นเมื่อเล่นอนิเมชั่นหลายอันพร้อมกัน
วิธีการ
เพิ่ม Keyframe ใน KeyframeSequence โดยการเป็นลูกของมันให้กับ KeyframeSequence
กลับรายการที่มีขนาดใหญ่ที่สุดใน Keyframes ที่อยู่ใน KeyframeSequence
ฟังก์ชันนี้ลบ Keyframe ออกจาก KeyframeSequence โดยการตั้งค่าพ่อของมันให้เป็น zero
คุณสมบัติ
AuthoredHipHeight
รวมถึงความสูงของกระดูกสะโพกของ Humanoid ของแบบจำลองที่ใช้เพื่อเขียน KeyframeSequence นี้ ค่าเริ่มต้นคือ 1.35 เนื่องจากเป็นค่าสูงสุดสำหรับกระดูกสะโพกสำ
วิธีการ
AddKeyframe
ฟังก์ชันนี้เพิ่ม <a href="/reference/engine/databases">เครื่องมือ</a> ให้กับ <a href="/reference/engine/databases">Class.Keyframe</a> โดยการประกอบมันเป็น <a href="/reference/engine/databases">Class.Keyframe</a> โดยการตั้งค่า <a href="/reference/engine/
หมายเหตุ, ฟังก์ชันนี้จะไม่ผิดพลาดเมื่อเรียกด้วยคําสั่งอื่นนอกจาก Keyframe เป็นตัวประกาศและจะประสบความสําเร็จในการเป็นพ่อ
พารามิเตอร์
Class.Keyframe ที่จะเพิ่ม
ส่งค่ากลับ
ตัวอย่างโค้ด
-- 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 กลับรายการที่ประกอบด้วยทุก Keyframes ที่เพิ่มไปยัง KeyframeSequence
ส่งค่ากลับ
Class.Keyframe|Keyframe รายการ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้ลบ Keyframe จาก KeyframeSequence โดยการตั้งค่าพ่อของมันเป็นโมฆะ มันเหมือนกันในทางการใช้งานกับการตั้งค่าพ่อของ keyframe เป็นโมฆะ
นี้ตั้งผู้ปกครองของ keyframe เป็น nil แต่ไม่ทำลายมัน นี่หมายถึงว่า, ให้อ้างอิงอื่น ๆ ของ keyframe เหลืออยู่, มันสามารถเป็นพ่อของมันได้ในภายหลัง
หมายเหตุ, ฟังก์ชันนี้จะไม่ผิดพลาดเมื่อเรียกด้วย Instance นอกจาก Keyframe เป็นตัวประกาศเวลา
พารามิเตอร์
Class.Keyframe ที่จะถูกลบออก
ส่งค่ากลับ
ตัวอย่างโค้ด
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)