Meer informatie
Engine-klasse
Keyframe

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.


Samenvatting

Eigenschappen
Overgenomen leden
Codevoorbeelden
Keyframe Genereer Poses
local function generateKeyframe(model)
if not model.PrimaryPart then
warn("Geen primaire deel ingesteld")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Root deel niet gevonden")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- haal alle gewrichten op die aan het deel zijn bevestigd
for _, joint in pairs(part:GetJoints()) do
-- we zijn alleen geïnteresseerd in Motor6Ds
if joint:IsA("Motor6D") then
-- vind het verbonden deel
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- zorg ervoor dat we dit deel nog niet hebben toegevoegd
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- maak een pose aan
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- recursie
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- vul de 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)

API-referentie
Eigenschappen
Time
Parallel lezen
Mogelijkheden: Animation
Keyframe.Time:number
Codevoorbeelden
Krijg de lengte van 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)

Methoden
AddMarker
Mogelijkheden: Animation
Keyframe:AddMarker(marker:Instance):()
Parameters
marker:Instance
Teruggaves
()
Codevoorbeelden
Marker Toevoegen/Marker Verwijderen
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --marker.Parent = keyframe
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil

AddPose
Mogelijkheden: Animation
Keyframe:AddPose(pose:Instance):()
Parameters
Teruggaves
()
Codevoorbeelden
Keyframe Genereer Poses
local function generateKeyframe(model)
if not model.PrimaryPart then
warn("Geen primaire deel ingesteld")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Root deel niet gevonden")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- haal alle gewrichten op die aan het deel zijn bevestigd
for _, joint in pairs(part:GetJoints()) do
-- we zijn alleen geïnteresseerd in Motor6Ds
if joint:IsA("Motor6D") then
-- vind het verbonden deel
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- zorg ervoor dat we dit deel nog niet hebben toegevoegd
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- maak een pose aan
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- recursie
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- vul de 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)
Keyframe Toevoegen/Verwijderen Houding
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
Mogelijkheden: Animation
Keyframe:GetMarkers():{KeyframeMarker}
Teruggaves
Codevoorbeelden
Krijg Keyframe Markers Bevestigd aan een Keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
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
Mogelijkheden: Animation
Keyframe:GetPoses():{Pose}
Teruggaves
Codevoorbeelden
Keyframe Reset Poses
local function resetPoses(parent)
-- beide functies zijn gelijk aan 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()
-- recursief
resetPoses(pose)
end
end
end

RemoveMarker
Mogelijkheden: Animation
Keyframe:RemoveMarker(marker:Instance):()
Parameters
marker:Instance
Teruggaves
()
Codevoorbeelden
Marker Toevoegen/Marker Verwijderen
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --marker.Parent = keyframe
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil

RemovePose
Mogelijkheden: Animation
Keyframe:RemovePose(pose:Instance):()
Parameters
Teruggaves
()
Codevoorbeelden
Keyframe Toevoegen/Verwijderen Houding
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, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.