學習
引擎類別
Pose

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡


概要
方法
GetSubPoses():Instances
繼承成員
範例程式碼
關鍵幀生成姿勢
local function generateKeyframe(model)
if not model.PrimaryPart then
\
warn("沒有設定主要部件")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
\
if not rootPart then
warn("找不到根部件")
return
end
\
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part,\
\ parentPose)
-- 獲取所有附加到部件的關節
for _, joint\
\ in pairs(part:GetJoints()) do
-- 我們只對 Motor6D 感興趣
\
if joint:IsA("Motor6D") then
-- 找到連接的部件
\
local connectedPart = nil
if joint.Part0 == part then
connectedPart\
\ = joint.Part1
elseif joint.Part1 == part then
connectedPart\
\ = joint.Part0
end
if connectedPart then
-- 確保我們還沒有添加這個部件
if not partsAdded[connectedPart]\
\ then
partsAdded[connectedPart] = true
-- 創建姿勢
local pose = Instance.new("Pose")
pose.Name\
\ = connectedPart.Name
parentPose:AddSubPose(pose)
\
\-- 重複呼叫
addPoses(connectedPart, pose)
end
\
end
end
end
end
local keyframe = Instance.new("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)
關鍵幀重置姿勢
local function resetPoses(parent)
-- 兩個函數等價於 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()
-- 递归
resetPoses(pose)
end
end
end

API 參考
屬性
CFrame
平行讀取
功能: Animation
Pose.CFrame:CFrame

MaskWeight
已棄用

方法
AddSubPose
功能: Animation
Pose:AddSubPose(pose:Instance):()
參數
返回
()
範例程式碼
關鍵幀添加/移除姿勢
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

GetSubPoses
功能: Animation
Pose:GetSubPoses():Instances
返回
Instances
範例程式碼
關鍵幀重置姿勢
local function resetPoses(parent)
-- 兩個函數等價於 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()
-- 递归
resetPoses(pose)
end
end
end

RemoveSubPose
功能: Animation
Pose:RemoveSubPose(pose:Instance):()
參數
返回
()
範例程式碼
關鍵幀添加/移除姿勢
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、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。