Pose

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Một Pose giữ CFrame được ứng dụng vào Class.Motor6D được kết nối với Class.BasePart của nó. Phần được điều khiển phụ thuộc vào tên Pose.

Đối tượng là các khối xây dựng cơ bản của hoạt họa và, với Keyframes, tạo thành KeyframeSequences .

Các điểm, liên kết và thẩm quyền

Mặc dù một Pose được gán cho một BasePart bằng tên, nhưng thực tế đối tượng được quản lý trong lúc chơi hoạt họa là Motor6D được kết nối với phần này. Các cấu hình kết nối ra từ phần rễ của mô hình qua các

Trong một R15 character rig, the root part is the HumanoidRootPart. The LowerTorso được kết nối với the HumanoidRootPart bằng cách động cơ có tên là 'Root'. Do đó, CFrame của một Pose có tên là Keyframe trong một Class.Keyframe sẽ được áp

Các khối được sắp xếp thành một Keyframe dựa trên lớp thượng thể. Điều này có nghĩa là Pose của Pose CFrame được ứng dụng cho motor kết nối với phần liên quan đến phần của poses đến phần liên qu

Pose CFrame

Hệ thống hoạt họa Roblox áp dụng Pose.CFrame vào tương ứng tương ứng của motor, Motor6D bằng cách điều khiển biến đổi tương ứ

Mẫu mã

Keyframe Generate Poses

local function generateKeyframe(model)
if not model.PrimaryPart then
warn("No primary part set")
return
end
local rootPart = model.PrimaryPart:GetRootPart()
if not rootPart then
warn("Root part not found")
return
end
local partsAdded = {}
partsAdded[rootPart] = true
local function addPoses(part, parentPose)
-- get all of the joints attached to the part
for _, joint in pairs(part:GetJoints()) do
-- we're only interested in Motor6Ds
if joint:IsA("Motor6D") then
-- find the connected part
local connectedPart = nil
if joint.Part0 == part then
connectedPart = joint.Part1
elseif joint.Part1 == part then
connectedPart = joint.Part0
end
if connectedPart then
-- make sure we haven't already added this part
if not partsAdded[connectedPart] then
partsAdded[connectedPart] = true
-- create a pose
local pose = Instance.new("Pose")
pose.Name = connectedPart.Name
parentPose:AddSubPose(pose)
-- recurse
addPoses(connectedPart, pose)
end
end
end
end
end
local keyframe = Instance.new("Keyframe")
-- populate the 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 Reset Poses

local function resetPoses(parent)
-- both functions are equivalent to 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()
-- recurse
resetPoses(pose)
end
end
end

Tóm Tắt

Thuộc Tính

  • Đọc Song Song

    Điều này CFrame áp dụng cho Class.Motor6D</Class.Motor6D> tương ứng với Class.Pose</Class.Motor6D> khi Class.Motor6D</Class.Motor6D> được thay đổi.

Thuộc Tính kế thừa từ PoseBase

Phương Pháp

Thuộc Tính

CFrame

Đọc Song Song

Điều này CFrame áp dụng cho Class.Motor6D được tương ứng với Class.Pose khi Class.Motor6D.Transform được thay đổi. Các giá trị gốc

Pose đối tượng được sắp xếp thành một Keyframe dựa trên lớp thượng thể. Điều này có nghĩa là, Pose.CFrame được ứng dụng vào motor kết nối với phần liên quan đến phần của poses đến phần của

Phương Pháp

AddSubPose

void

Thêm một sub Pose vào Pose bằng cách gắn nó vào nó. Nó hoạt động như nhau cho việc đặt mới đầu tượng Instance.Parent vào tượng.

Lưu ý, hành động này sẽ không bị lỗi khi một instância khác ngoài một Pose được đưa làm tham số hình ảnh và sẽ nuôi dưỡng nó thành công.

Tham Số

pose: Instance

Các Pose để được thêm.


Lợi Nhuận

void

Mẫu mã

Keyframe Add/Remove Pose

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

Instances

Đảm bảo một dàn trùm chứa tất cả các sub Poses đã được thêm vào một Pose . Đây là hoạt động tương tự như sử dụng chức năng Instance:GetChildren() trên 1> Class.Pose1> .

Ghi chú: chức năng này trả lại tất cả các con của Pose , bao gồm cả những con con Pose không đang hiện diện.


Lợi Nhuận

Instances

Một mat阵 của sub Poses .

Mẫu mã

Keyframe Reset Poses

local function resetPoses(parent)
-- both functions are equivalent to 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()
-- recurse
resetPoses(pose)
end
end
end

RemoveSubPose

void

Loại bỏ một sub Pose từ Class.Pose bằng cách gắn nó với nil. Điều này hoàn toàn tương tự với việc đặt mới Pose của nó vào nil.

Ghi chú: Nếu một Class.Instance khác ngoài Class.Pose được sử dụng như một Pose 参数, hàm này sẽ loại bỏ Class.Instance đó và không cung cấp lỗi.

Tham Số

pose: Instance

Các Pose để bị xóa.


Lợi Nhuận

void

Mẫu mã

Keyframe Add/Remove Pose

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

Sự Kiện