Pelajari
Kelas Engine
Keyframe

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


Rangkuman
Properti
Anggota yang Diwariskan
Contoh Kode
Menghasilkan Posisi Keyframe
local function generateKeyframe(model)
if not model.PrimaryPart then
warn("Tidak ada bagian utama yang ditetapkan")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Bagian akar tidak ditemukan")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- ambil semua sambungan yang terpasang pada bagian ini
for _, joint in pairs(part:GetJoints()) do
-- kita hanya tertarik pada Motor6D
if joint:IsA("Motor6D") then
-- temukan bagian yang terhubung
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- pastikan kita belum menambahkan bagian ini
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- buat sebuah posisi
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- rekursi
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- mengisi keyframe
local rootPose = Instance.new("Pose")
rootPose.Name = rootPart.Name
addPoses(rootPart, rootPose)
keyframe:AddPose(rootPose)
return keyframe
end
local character = script.Parent
local keyframe = generateKeyframe(character)
print(keyframe)

Referensi API
Properti
Time
Baca Paralel
Kemampuan: Animation
Keyframe.Time:number
Contoh Kode
Mendapatkan Panjang KeyframeSequence
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)

Metode
AddMarker
Kemampuan: Animation
Keyframe:AddMarker(marker:Instance):()
Parameter
marker:Instance
Memberikan nilai
()
Contoh Kode
Tambahkan Penanda/Hapus Penanda
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --penanda.Parent = keyframe
task.wait(2)
keyframe:RemoveMarker(marker) --penanda.Parent = nil

AddPose
Kemampuan: Animation
Keyframe:AddPose(pose:Instance):()
Parameter
Memberikan nilai
()
Contoh Kode
Menghasilkan Posisi Keyframe
local function generateKeyframe(model)
if not model.PrimaryPart then
warn("Tidak ada bagian utama yang ditetapkan")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Bagian akar tidak ditemukan")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- ambil semua sambungan yang terpasang pada bagian ini
for _, joint in pairs(part:GetJoints()) do
-- kita hanya tertarik pada Motor6D
if joint:IsA("Motor6D") then
-- temukan bagian yang terhubung
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- pastikan kita belum menambahkan bagian ini
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- buat sebuah posisi
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- rekursi
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- mengisi keyframe
local rootPose = Instance.new("Pose")
rootPose.Name = rootPart.Name
addPoses(rootPart, rootPose)
keyframe:AddPose(rootPose)
return keyframe
end
local character = script.Parent
local keyframe = generateKeyframe(character)
print(keyframe)
Tambahkan/Hapus Pose Keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local pose = Instance.new("Pose")
pose.EasingStyle = Enum.PoseEasingStyle.Cubic
pose.EasingDirection = Enum.PoseEasingDirection.Out
local pose2 = Instance.new("Pose")
pose2.EasingStyle = Enum.PoseEasingStyle.Cubic
pose2.EasingDirection = Enum.PoseEasingDirection.Out
keyframe:AddPose(pose) -- pose.Parent = keyframe
task.wait(2)
keyframe:RemovePose(pose) -- pose.Parent = nil
task.wait(2)
keyframe:AddPose(pose) -- pose.Parent = keyframe
task.wait(2)
pose:AddSubPose(pose2) -- pose2.Parent = pose
task.wait(2)
pose:RemoveSubPose(pose2) -- pose2.Parent = nil

GetMarkers
Kemampuan: Animation
Keyframe:GetMarkers():{KeyframeMarker}
Memberikan nilai
Contoh Kode
Ambil Penanda Kunci yang Terpasang pada Kunci
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "JejakKaki"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Gelombang"
marker2.Value = 100
keyframe:AddMarker(marker1) --marker.Parent = keyframe
keyframe:AddMarker(marker2) --marker.Parent = keyframe
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end

GetPoses
Kemampuan: Animation
Keyframe:GetPoses():{Pose}
Memberikan nilai
Contoh Kode
Pengaturan Ulang Pose Kunci
local function resetPoses(parent)
-- kedua fungsi adalah setara dengan GetChildren
local poses = parent:IsA("Keyframe") and parent:GetPoses() or parent:IsA("Pose") and parent:GetSubPoses()
for _, pose in pairs(poses) do
if pose:IsA("Pose") then
pose.CFrame = CFrame.new()
-- rekursif
resetPoses(pose)
end
end
end

RemoveMarker
Kemampuan: Animation
Keyframe:RemoveMarker(marker:Instance):()
Parameter
marker:Instance
Memberikan nilai
()
Contoh Kode
Tambahkan Penanda/Hapus Penanda
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --penanda.Parent = keyframe
task.wait(2)
keyframe:RemoveMarker(marker) --penanda.Parent = nil

RemovePose
Kemampuan: Animation
Keyframe:RemovePose(pose:Instance):()
Parameter
Memberikan nilai
()
Contoh Kode
Tambahkan/Hapus Pose Keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local pose = Instance.new("Pose")
pose.EasingStyle = Enum.PoseEasingStyle.Cubic
pose.EasingDirection = Enum.PoseEasingDirection.Out
local pose2 = Instance.new("Pose")
pose2.EasingStyle = Enum.PoseEasingStyle.Cubic
pose2.EasingDirection = Enum.PoseEasingDirection.Out
keyframe:AddPose(pose) -- pose.Parent = keyframe
task.wait(2)
keyframe:RemovePose(pose) -- pose.Parent = nil
task.wait(2)
keyframe:AddPose(pose) -- pose.Parent = keyframe
task.wait(2)
pose:AddSubPose(pose2) -- pose2.Parent = pose
task.wait(2)
pose:RemoveSubPose(pose2) -- pose2.Parent = nil

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.