Impara
Classe motore
Keyframe

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.


Sommario
Proprietà
Membri ereditati
Campioni di codice
Genera Posi per Keyframe
local function generateKeyframe(model)
if not model.PrimaryPart then
warn("Nessuna parte primaria impostata")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Parte radice non trovata")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- ottieni tutte le giunture attaccate alla parte
for _, joint in pairs(part:GetJoints()) do
-- ci interessano solo i Motor6D
if joint:IsA("Motor6D") then
-- trova la parte connessa
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- assicurati di non aver già aggiunto questa parte
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- crea una posa
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- ricorsione
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- popola il 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)

Riferimento API
Proprietà
Time
Lettura Parallela
Capacità: Animation
Keyframe.Time:number
Campioni di codice
Ottieni la lunghezza di 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)

Metodi
AddMarker
Capacità: Animation
Keyframe:AddMarker(marker:Instance):()
Parametri
marker:Instance
Restituzioni
()
Campioni di codice
Aggiungi Marker/Rimuovi Marker
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
Capacità: Animation
Keyframe:AddPose(pose:Instance):()
Parametri
Restituzioni
()
Campioni di codice
Genera Posi per Keyframe
local function generateKeyframe(model)
if not model.PrimaryPart then
warn("Nessuna parte primaria impostata")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Parte radice non trovata")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- ottieni tutte le giunture attaccate alla parte
for _, joint in pairs(part:GetJoints()) do
-- ci interessano solo i Motor6D
if joint:IsA("Motor6D") then
-- trova la parte connessa
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- assicurati di non aver già aggiunto questa parte
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- crea una posa
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- ricorsione
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- popola il 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)
Aggiungi/Rimuovi 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
Capacità: Animation
Keyframe:GetMarkers():{KeyframeMarker}
Restituzioni
Campioni di codice
Ottieni i Marker dei Keyframe Allegati a un 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
Capacità: Animation
Keyframe:GetPoses():{Pose}
Restituzioni
Campioni di codice
Ripristina Posizioni del Keyframe
local function resetPoses(parent)
-- entrambe le funzioni sono equivalenti a 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()
-- ricorsione
resetPoses(pose)
end
end
end

RemoveMarker
Capacità: Animation
Keyframe:RemoveMarker(marker:Instance):()
Parametri
marker:Instance
Restituzioni
()
Campioni di codice
Aggiungi Marker/Rimuovi Marker
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
Capacità: Animation
Keyframe:RemovePose(pose:Instance):()
Parametri
Restituzioni
()
Campioni di codice
Aggiungi/Rimuovi 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, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.