KeyframeSequence

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

此對象存儲所有 Keyframes 以便為動畫執行程序,確認動畫是否為重複程序,並確定優先權在其他動畫之前。

什麼是 KeyframeSequencer?

Roblox 在播放動畫時使用的動畫資料,參考 Animation.AnimationId 屬性,從鑰匙動畫編輯器逼順序中。 每個動畫都參考 Class.Animation.

注意,在大多數情況下,您不需要操作 KeyframeSequences,因為動畫編輯器涵蓋大多數動畫功能。但在一些情況下,您可能需要從 Script 生成動畫或從自己的外掛程式生成動畫。 但只有 Roblox Studio 才能使用這樣的 KeyframeSequences。如果您想要

鑰匙框順序屬性

KeyframeSequence.PriorityKeyframeSequence.Loop 儲存順序的優先權和重複動畫設定。注意,AnimationTrack 屬性可能會在播放時寫入此屬性。

最後一個 Keyframe 在順序中,意味著 Keyframe 與最高 Keyframe.Time 屬性,決定動畫的長度。

鑰匙框結構

鑰匙順序作為一個容器,可以容納 Keyframes。 Keyframe 代表動畫中的「鑰鍵」框,在播放時會在間隔中。

鑰匙框包含 Poses 。 Class

位置跟隨共同的階層結構。 Pose 的父親與零件它附加到的零件的 Pose 對應。 在實際上,這意味著位置從根部分分支。 請參閱下面的視覺示例。

使用 Keyframe Sequences 製作動畫

您必須先將 Roblox 上傳 KeyframeSequences 才能在體驗中播放。在 Studio 中,右鍵單擊 KeyframeSequences 並按一下「儲存到 Roblox」。或者,您可以使用 Plugin:SaveSelectedToRoblox() 函數。 兩者都會帶出動畫上傳窗口,允許您上傳您的 KeyframeSequences 作為一個動畫。

在某些情況下,您可能想要預覽動畫,然後上傳到 Roblox 網站。您可以使用 KeyframeSequenceProvider:RegisterKeyframeSequence() 來生成暫時 id,用於本地化動畫測試。

取得鑰匙順序列

在某些情況下您可能想要下載相關的預製動畫。您可以使用 AnimationClipProvider:GetAnimationClipAsync() 來下載一個動畫。

範例程式碼

Get KeyframeSequence Length

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)
Create temporary animation

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)
KeyframeSequence Instantiation

-- 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

概要

屬性

屬性 繼承自 AnimationClip

方法

屬性

AuthoredHipHeight

隱藏
外掛程式安全性
平行讀取

包含 Humanoid 模型的預設高度。預設值為 1.35,因為這是標準 R15 KeyframeSequence 的預設高度。

方法

AddKeyframe

void

此功能在 KeyframeKeyframeSequence 的父關鍵格添加一個 KeyframeSequence 。它與設置 2>Class.Keyframe2> 的 5>Class.Instance.Parent5> 相功能相同。

注意,此功能在 Keyframe 以外的實例上呼叫時不會發生錯誤,並且將成功作為父級。

參數

keyframe: Instance

要新增的 Keyframe


返回

void

範例程式碼

KeyframeSequence Instantiation

-- 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

Instances

取得鑰匙框架 返回包含所有 Keyframes 和已添加到 KeyframeSequence 的鑰匙框架。


返回

Instances

Class.Keyframe|Keyframe 的陣列。

範例程式碼

Get KeyframeSequence Length

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

void

此功能將 KeyframeKeyframeSequence 中移除,設定其父親為零。它與設置關鍵格的父親為零相同。

這將關鍵格的父親設為 nil,但不會將它摧毀。這表示,如果提供另一個鍵框的參考,它可以稍後重新父親。

注意,此功能在使用 Instance 以外的 Keyframe 作為鑰匙框參數時不會發生錯誤。

參數

keyframe: Instance

要移除的 Keyframe


返回

void

範例程式碼

KeyframeSequence RemoveKeyframe

local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)

活動