Pose

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir Pose, bağlı olduğu CFrame ile bağlantılı Motor6D 'ye uygulanan BasePart 'i tutar.Kontrol edilen parça, Pose'un adına bağlıdır.

Pozlar, animasyonların temel yapı bloklarıdır ve Keyframes ile KeyframeSequences oluşturur.

Pozlar, eklemler ve hiyerarşi

Bir poz bir adla bir BasePart 'ye atanmış olsa da, animasyon oynatımı sırasında manipüle edilen nesne aslında bu parçaya bağlı Motor6D 'dir.Animasyon kolları, bu bağlantılar aracılığıyla modelin kök kısmından ayrılır.

Bir R15 karakter ekipmanında, kök parça HumanoidRootPart'tir.AşağıTorso, 'Kök' adında bir motor tarafından insansız kök parçasına bağlanır.Bu nedenle, 'LowerTorso' adlı bir pozun 'ı 'Root' adlı motoruna uygulanacak ve aynı adı taşıyan 'LowerTorso' kendisi değil.

Pozlar, ortak bir hierarhiye dayalı olarak Keyframe bir araya getirilir.Bu, Pose'un CFrame 'sinin pozla ilişkili parçayı pozla ilişkili parçanın ebeveyniyle bağlayan motoruna uygulandığını gösterir.R15 karakterindeki pozların yapısının görsel bir örneğini aşağıda görün.

Pose CFrame'ı

Roblox animasyon sistemi, motorunuzun ve Motor6D mutlak dönüşümünü manipüle ederek eşdeğer Motor6D.Transform üzerine Pose.CFrame.Orijinal C0 ve C1 değerleri değiştirilmez.

Kod Örnekleri

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

Özet

Özellikler

  • Paralel oku

    Bu değiştirildiğinde eşleşen ile ilgilidir, değiştirildiğinde.

Şuradan alınan Özellikler: PoseBase

Yöntemler

Özellikler

CFrame

Paralel oku

Bu değiştirildiğinde eşleşen ile ilgilidir, değiştirildiğinde.Orijinal Motor6D.C0 ve Motor6D.C1 değerleri değiştirilmez.

Pose nesneleri ortak bir hiyerarhiye dayalı olarak Keyframe düzenlenir.Bu, parçayla pozla bağlantılı motoru pozun ebeveyni ile bağlayan motorun Pose.CFrame uygulanması demektir.

Yöntemler

AddSubPose

()

Onu ebeveynleştirerek Pose 'a bir alt ekler Pose . Yeni pozun Instance.Parent 'unu pozuna ayarlamakla işlevsel olarak aynıdır.

Not, bu işlev bir Pose örneği poz parametresi olarak verildiğinde hata yapmayacak ve başarıyla ebeveyn olacaktır.

Parametreler

pose: Instance

Eklenecek Pose .

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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

Bir Poses içine eklenen tüm alt düzeyleri içeren bir dizi döndürür Pose .Bu, işlevsel olarak Pose üzerindeki Instance:GetChildren() işlevini kullanmakla aynıdır.

Not: bu işlev tüm çocukları Pose , dahil olmak üzere geri döndürür Class.Pose``Class.Instance|Instances , eğer herhangi biri varsa.


Dönüşler

Instances

Altında bir dizi Poses .

Kod Örnekleri

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

()

Bir alt Pose 'yi ebeveynleştirerek Pose 'den kaldırır ve bunu nil 'a yönlendirir.Bu, yeni pozun Instance.Parent 'ini nil 'e ayarlamakla işlevsel olarak aynıdır.

Not: Eğer Class.Instance``Class.Pose dışında başka bir şey kullanılırsa Pose parametre olarak, bu işlev o Instance kaldırır ve bir hata sağlamaz.

Parametreler

pose: Instance

Kaldırılması gereken Pose .

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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

Etkinlikler