Pose

Tampilkan yang Tidak Digunakan Lagi

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

Posisi menahan CFrame yang diterapkan ke Motor6D terhubung ke BasePart yang terkait dengannya.Bagian yang dikontrol tergantung pada nama Pose.

Posisi adalah blok bangunan dasar animasi dan, dengan Keyframes, membentuk KeyframeSequences .

Posisi, persambungan, dan hierarki

Meskipun Pose ditugaskan ke oleh nama, objek yang dimanipulasi selama pemutaran animasi sebenarnya terhubung ke bagian ini.Rantai animasi berpindah dari bagian akar model melalui koneksi seperti itu.

Dalam karakter R15, bagian akar adalah HumanoidRootPart.LowerTorso terhubung ke HumanoidRootPart oleh motor bernama 'Root'.Oleh karena itu, CFrame dari Pose bernama 'LowerTorso' di Keyframe akan diterapkan pada motor bernama 'Root', dan bukan Pose LowerTorso itu sendiri.

Posisi diatur dalam Keyframe berdasarkan hierarki bersama.Ini berarti, Pose's CFrame diterapkan ke motor yang menghubungkan bagian yang terkait dengan posisi ke bagian yang terkait dengan orang tua posisi.Lihat di bawah ini untuk contoh visual struktur Posisi pada karakter R15.

Tampilkan CFrame

Sistem animasi Roblox menerapkan ke sistem konversi relatif motor, properti .Nilai asli C0 dan C1 tidak berubah.

Contoh Kode

This sample includes a function that will generate a 'blank' keyframe containing blank poses for all of the model's connected parts in the correct hierarchical order.

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)

This code sample includes a function to reset the CFrame of the Poses in a 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

Rangkuman

Properti

Properti diwarisi dari PoseBase

Metode

Properti

CFrame

Baca Paralel

Ini CFrame berlaku untuk Motor6D yang sesuai dengan Pose ketika Motor6D.Transform diubah.Nilai asli Motor6D.C0 dan Motor6D.C1 tidak berubah.

Pose objek diatur dalam sebuah Keyframe berdasarkan hierarki bersama.Ini berarti, bahwa Pose.CFrame diterapkan ke motor yang menghubungkan bagian yang terkait dengan pose ke bagian yang terkait dengan orang tua posisi.

Metode

AddSubPose

()

Menambahkan sub Pose ke Pose oleh orangtuanya kepadanya. Ini secara fungsional identik dengan menetapkan posisi baru Instance.Parent ke posisi.

Catatan, fungsi ini tidak akan berhasil ketika instansi lain selain Pose diberikan sebagai parameter posisi dan akan membesarkannya dengan sukses.

Parameter

pose: Instance

The Pose untuk ditambahkan.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

This sample demonstrates quickly the Keyframe.AddPose, Keyframe.RemovePose and Pose.AddSubPose and Pose.RemoveSubPose functions. Note these are functionally equivalent to parenting and un-parenting the poses.

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

Kembalikan array yang berisi semua sub Poses yang telah ditambahkan ke Pose .Ini secara fungsional sama dengan menggunakan fungsi Instance:GetChildren() pada Pose.

Catatan: fungsi ini mengembalikan semua anak dari Pose , termasuk non Class.Pose``Class.Instance|Instances jika ada yang hadir.


Memberikan nilai

Instances

Sebuah array sub Poses .

Contoh Kode

This code sample includes a function to reset the CFrame of the Poses in a 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

RemoveSubPose

()

Menghapus sub Pose dari Pose oleh orangtua ke nil .Ini secara fungsional identik dengan menetapkan posisi baru Instance.Parent ke nil.

Catatan: Jika Instance lain dari Pose digunakan sebagai parameter Pose, fungsi ini menghapus itu Instance dan tidak memberikan kesalahan.

Parameter

pose: Instance

The Pose yang harus dihapus.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

This sample demonstrates quickly the Keyframe.AddPose, Keyframe.RemovePose and Pose.AddSubPose and Pose.RemoveSubPose functions. Note these are functionally equivalent to parenting and un-parenting the poses.

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

Acara