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 depolarını saklar, animasyonun tekrarlandığını belirler ve diğer animasyonlarla önceliğini belirler.
KeyframeSequencer nedir?
Roblox, bir animasyonun oynatılmasında kullandığı animasyon verilerini oluşturur, Animation.AnimationId özelliğinden bir KeyframeSequencer'ın içine işaret edilir. Her animasy
Not, çoğu durumda, KeyframeSequencer'ı manipüle etmeniz gerekmez, çünkü animasyon editörü çoğu animasyon işlevini kapsar. Ancak, bazı durumlarda, bir Script 'den animasyon oluşturmak veya kendi eklenti'inizi oluşturmak isteyebilirsiniz. Ancak, bu tür bir KeyframeSequencer'ı
Özellikleri
KeyframeSequence.Priority ve KeyframeSequence.Loop animasyonunun önceliğini ve tekrar animasyonunu kaydet. İncelemenin oynatma sırasında AnimationTrack özelliklerinin üstesinden gelmesi için lütfen etkili animasyon ayarlarınızı yeniden ayarlayın.
animasyonuzunluğunu belirlemek için en son Keyframe , serideki son Keyframe ile eşdeğerdir.
Kilit Çerçevesi Yapısı
KeyframeSequencer, Keyframes ı tutan bir konteyner olarak davranır. Keyframe, oynatma sırasında arasında geçişle temsil edilen bir 'anahtar' görüntüsüdür.
Kлюç çerçevelerinde Poses vardır.
Oluşlar ortak bir yapıya dayanan bir yapıyı takip eder. Her Pose ın ebeveyni, bağlandığı bölümün Pose ına eşdeğerdir. Aslında, bu, pozların dalını kök bölümünden ayrılır. Aşağıda bir görsel örneği görün.
Animasyon yaparken KeyframeSequencer'ı kullanıyor
Roblox'ta bir deneyimde oynanmadan önce KeyframeSequencer'ı ilk olarak Roblox'a yüklemelisiniz. Studio'da, KeyframeSequencer'ı sağ tıklayın ve "Save to Roblox"'i tıklayın. Alternatif olarak, Plugin:SaveSelectedToRoblox() işlevini kullanabilirsiniz. Bu, animasyon yükleme penceresini açar ve KeyframeSequencer'ı
Roblox sitesine yüklemeden önce bir Animasyon'u önizlemek isteyebilirsiniz. KeyframeSequenceProvider:RegisterKeyframeSequence() kullanarak geçici bir kimlik oluşturabilirsiniz. Bu, yerelleşik animasyon testleri için bir hach şeklinde oluşturulur.
KeyframeSequencer'ı Alın
Bazı durumlarda mevcut bir Animasyon'a eşdeğer olan KeyframeSequencer'ı indirmek isteyebilirsiniz. animasyonindirmek için AnimationClipProvider:GetAnimationClipAsync() kullanabilirsiniz.
Kod Örnekleri
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)
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)
-- 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 Humanoid modelinin oluşturulduğu KeyframeSequence içindeki orta yüksekliği içerir.
Bu AnimationClip animasyonunun döngüye ihtiyacı olup olmadığını belirler.
Çok sayıda animasyon aynı anda oynanırken hangi klipin önceliğini belirler.
Yöntemler
Class.Keyframe ebeveynine bağlı olarak KeyframeSequence ile bir KeyframeSequence ekler.
Class.Keyframe|Keyframes içinde bulunan tüm KeyframeSequence içeren bir matrisi iade eder.
Bu işlev, ebeveynini nol olarak ayarlayarak Keyframe kaldırır.
Özellikler
AuthoredHipHeight
Bu Humanoid modelinin oluşturulduğu standart R15 KeyframeSequence ile kullanıldığındaki ortalama yüksekliği içerir.Varsayılan değer 1.35'tir, çünkü bu standart R15 ile kullanılan Character|character için kullanılan ortalama yüksekliğidir.
Yöntemler
AddKeyframe
Bu işlev, Keyframe ın ebeveyni olarak KeyframeSequence ile birleştirilmesiyle KeyframeSequence ı ekler. Bu işlevsel olarak anahtar çerçevenin 2> Class.Keyframe2> ına ayarlanmasına eşdeğerdir.
Not, bu işlev bir Keyframe olmayan bir instans ile çağrıldığında hata vermez ve anahtar çerçevesi parametresi olarak başarıyla ebeveyni olur.
Parametreler
Dönüşler
Kod Örnekleri
-- 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 ile, bir Keyframes ile eklenen tüm şeyleri içeren bir matrisi içerir.
Dönüşler
Bir Keyframe matrisi.
Kod Örnekleri
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, Keyframe'i KeyframeSequence 'ine ayarlayarak kaldırır. Aynı işlevi, Class.Keyframe'in ebeveynini nil olarak ayarlamak ile aynıdır.
Bu, anahtar çerçevenin ebeveynini nil olarak ayarlar, ancak onu yok eder. Bu, bir başka referansa sahip olarak anahtar çerçevenin yeniden ebeveyn edilebilir olmasını sağlar.
Not, bu işlev bir Instance dışında bir Keyframe ile çağrıldığında hata yapmaz.
Parametreler
Dönüşler
Kod Örnekleri
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)