KeyframeSequence
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Bu nesne bir animasyon için tüm Keyframes saklar, animasyonun döngüye alınıp alınmadığını belirler ve diğer animasyonlara karşı önceliğini belirler.
Bir Anahtar Çerçeve Sekansı nedir?
Roblox, bir animasyonun oynatımında kullandığı animasyon verilerini oluşturur, bir Anahtar Çerçeve Sekansı'ndan referans alınan Animation.AnimationId özelliğiyle.Her animasyon, içeride bir Anahtar Çerçeve Sekansına veya bir Eğrisel Animasyona atıfta bulunur.Ancak, genellikle Roblox Animasyon Editörü tarafından oluşturulsa da, Anahtar Çerçeve Sekansı diğer pluginler veya hatta manuel olarak da oluşturulabilir.Roblox'a yüklendikten sonra, Roblox, yüklenen Anahtar ÇerçeveSekansı'na referans vermek için bir İçerik Kimliği atar çektiği mülk için.
Not, çoğu durumda, animasyon editörü çoğu animasyon işlevini kapsadığından, Anahtar Çerçeve Sekanslarını manipüle etmenize gerek yoktur.Ancak, bazı durumlarda bir animasyon oluşturmak veya kendi eklentioluşturmak isteyebilirsiniz Script .Ancak, sadece Roblox Studio böyle bir şekilde oluşturulan bir Anahtar Çerçeve Sekansı kullanabilir.Böyle bir Anahtar Çerçeve Sekansı kullanmak istiyorsanız, aşağıda açıklanan şekilde Roblox'a yüklemeniz gerekecektir.
Anahtar Çerçeve Sekansı Özellikleri
KeyframeSequence.Priority ve KeyframeSequence.Loop sıra için öncelik ve döngü animasyon ayarlarını kaydedin.AnimationTrack özelliklerinin oynatma sırasında sonunda bu özellikleri üzerine yazabileceğini unutmayın.
Dizideki son , en yüksek özellik ile olan bir animasyonun uzunluğunu belirler.
Anahtar Çerçeve Sekansı Yapısı
Anahtar çerçeve sıraları Keyframes tutan bir konteyner olarak davranır.Anahtar kareler, oynatma sırasında aralara serpiştirilen bir 'anahtar' kareyi temsil eder ve animasyonda.
Anahtar kareler Poses. , her birine özel olarak animasyon yapılan her , iki parçayı birbirine bağlayan uygulananı içerir.Pozlar, adına karşılık gelen ile eşleşir ve verilerini bu aynı adı taşıyan parça olarak uygular.Bu nedenle, animasyonlar doğru çalışması için farklı parça isimlerine ihtiyaç duyar.
Pozlar, ortak hierarhiye dayalı bir yapı izler.Her birinin ebeveyni Pose , bağlı olduğu parçanın Pose 'sına karşılır.Pratikte, bu, pozların kök kısmından ayrıldığını ifade eder.Görsel bir örnek için aşağıya bakın.
Animasyon yaparken Anahtar Çerçeve Sekanslarını kullanmak
Deneyimde oynanabilmesi için önce Roblox'a Anahtar Çerçeve Sekansları yüklemeniz gerekir.Studio'da, Anahtar Çerçeve Sekansı'na sağ tıklayın ve 'Roblox'a Kaydet'e tıklayın.Alternatif olarak, Plugin:SaveSelectedToRoblox() işlevini kullanabilirsiniz.Her iki yöntem de animasyon yükleme penceresini açar ve anahtar kare sıralamanızı bir animasyon olarak yüklemenize izin verir.
Bazı durumlarda, Roblox sitesine yüklemeden önce bir Animasyonu önizlemek isteyebilirsiniz.KeyframeSequenceProvider:RegisterKeyframeSequence() kullanarak geçici bir kimlik oluşturabilirsiniz.Bu, yerelleştirilmiş animasyon testi için kullanılabilecek bir hash kimliği oluşturur.
Anahtar Çerçeve Sekanslarını Alma
Bazı durumlarda, mevcut yüklü bir Animasyona karşılık gelen Anahtar Çerçeve Sekansını indirmek isteyebilirsiniz.Bir animasyonu indirmek için AnimationClipProvider:GetAnimationClipAsync() kullanabilirsiniz.
Kod Örnekleri
This sample contains a simple function that will get the length of a KeyframeSequence by finding the Keyframe with the highest Keyframe.Time value.
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)
This code sample contains a simple function to generate an Animation with a generated hash ID to preview a KeyframeSequence locally.
local KeyframeSequenceProvider = game:GetService("KeyframeSequenceProvider")
local function createPreviewAnimation(keyframeSequence)
local hashId = KeyframeSequenceProvider:RegisterKeyframeSequence(keyframeSequence)
local Animation = Instance.new("Animation")
Animation.AnimationId = hashId
return Animation
end
local keyframeSequence = Instance.new("KeyframeSequence")
local animation = createPreviewAnimation(keyframeSequence)
print(animation)
This sample demonstrates how a basic KeyframeSequence can be created.
-- create the keyframesequence
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Loop = false
keyframeSequence.Priority = Enum.AnimationPriority.Action
-- create a keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Time = 0
-- create sample poses
local rootPose = Instance.new("Pose")
rootPose.Name = "HumanoidRootPart"
rootPose.Weight = 0
local lowerTorsoPose = Instance.new("Pose")
lowerTorsoPose.Name = "LowerTorso"
lowerTorsoPose.Weight = 1
-- set the sequence hierarchy
rootPose:AddSubPose(lowerTorsoPose) -- lowerTorsoPose.Parent = rootPose
keyframe:AddPose(rootPose) -- rootPose.Parent = keyframe
keyframeSequence:AddKeyframe(keyframe) -- keyframe.Parent = keyframeSequence
-- parent the sequence
keyframeSequence.Parent = workspace
Özet
Özellikler
Bu, bu KeyframeSequence 'yi yazmak için kullanılan modelin kalça yüksekliğini içerir Humanoid.
Bu AnimationClip içinde saklanan animasyonun döngüye dönüştürülmesi gerektiğini belirler.
Çok sayıda animasyon aynı anda oynarken hangi klip öncelikli olacağını belirler.
Yöntemler
Ebeveynliğini Keyframe 'ye yaptırarak KeyframeSequence 'ye bir KeyframeSequence ekler.
Bir Keyframes içindeki tüm dahil edilen bir dizi döndürür KeyframeSequence .
Bu işlev, ebeveynini Keyframe olarak ayarlayarak KeyframeSequence 'dan bir nil kaldırır.
Özellikler
AuthoredHipHeight
Bu, bu KeyframeSequence 'yi yazmak için kullanılan modelin kalça yüksekliğini içerir Humanoid.Varsayılan değer 1.35'tir, çünkü bu, standart bir R15 için belirlenen kalça yüksekliğidir Character|character.
Yöntemler
AddKeyframe
Bu işlev, onu Keyframe ile Class.KeyframeSequence``Class.KeyframeSequence.Anahtar çerçevenin Instance.Parent 'ini KeyframeSequence 'e ayarlamakla işlevsel olarak aynıdır.
Not, bu işlev, anahtar çerçeve parametri olarak bir Keyframe dışında bir örnek ile çağrıldığında hata vermeyecek ve başarıyla ebeveyn olacak.
Parametreler
Dönüşler
Kod Örnekleri
This sample demonstrates how a basic KeyframeSequence can be created.
-- create the keyframesequence
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Loop = false
keyframeSequence.Priority = Enum.AnimationPriority.Action
-- create a keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Time = 0
-- create sample poses
local rootPose = Instance.new("Pose")
rootPose.Name = "HumanoidRootPart"
rootPose.Weight = 0
local lowerTorsoPose = Instance.new("Pose")
lowerTorsoPose.Name = "LowerTorso"
lowerTorsoPose.Weight = 1
-- set the sequence hierarchy
rootPose:AddSubPose(lowerTorsoPose) -- lowerTorsoPose.Parent = rootPose
keyframe:AddPose(rootPose) -- rootPose.Parent = keyframe
keyframeSequence:AddKeyframe(keyframe) -- keyframe.Parent = keyframeSequence
-- parent the sequence
keyframeSequence.Parent = workspace
GetKeyframes
GetKeyframes bir Keyframes eklendiğinde tüm KeyframeSequence içeren bir dizi döndürür .
Dönüşler
Bir dizi Keyframe.
Kod Örnekleri
This sample contains a simple function that will get the length of a KeyframeSequence by finding the Keyframe with the highest Keyframe.Time value.
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)
RemoveKeyframe
Bu işlev, ebeveynini Keyframe olarak ayarlayarak KeyframeSequence 'dan bir nil kaldırır.Anahtar çerçevenin ebeveynini nil olarak ayarlamakla işlevsel olarak aynıdır.
Bu, anahtar çerçevenin ebeveynini nil olarak ayarlar, ancak onu yok etmez.Yani, anahtar çerçeveye başka bir referans sağlandığı sürece, daha sonra yeniden ebeveyn olabilir.
Not, bu işlev bir anahtar kare parametresi olarak Instance daha farklı bir Keyframe ile çağrıldığında hata vermez.
Parametreler
Dönüşler
Kod Örnekleri
This sample adds a Keyframe to a KeyframeSequence before removing it and adding it again. Note that once a Keyframe is removed it is not destroyed, meaning it can be re-added later.
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)