KeyframeSequence

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

此对象存储所有 Keyframes 为了动画,确定动画是否循环,并且对其他动画进行优先级。

什么是 KeyframeSequencer?

Roblox 在播放动画时使用它在键盘框列中参考的 Animation.AnimationId 属性。 每个动画都会引用 Animations 或内部的 CurveAnimation 。 虽然通常由 Roblo

注意,在大多数情况下,您不需要操作 KeyframeSequences,因为动画编辑器覆盖了大多数动画功能。 但在某些情况下,您可能需要从 Script 生成一个动画或构建您自己的插件。 但只有 Roblox Studio 才能使用这样的 KeyframeSequences。 如果您想使用此 KeyframeSequences,您需要将其上传到 Roblox

键框顺序属性

KeyframeSequence.PriorityKeyframeSequence.Loop 保存顺序的优先级和循环动画设置。请注意,AnimationTrack 属性可以在播放时覆盖这些属性。

上一 Keyframe 在顺序中,意味着 Keyframe 拥有最高 Keyframe.Time 属性,确定动画的长度。

键框顺序结构

键框顺序作为一个容器,可以容纳 Keyframes 。键框在动画中代表一个“钥匙”框,在播放时间之间是相互独立的。

键框包含 Poses 。 Class.Pose|Poses</

体位跟随结构基于共同层级。 父 的 每个 Pose 跟随父 的 每个 Pose 的零件。 在实践中,这意味着体位分支从根部。 请参阅下面的视觉示例。

使用 Keyframe Sequences 制作动画时使用

您必须先将 KeyframeSequences 上传到 Roblox 才能在体验中播放。在 Studio 中,右击 KeyframeSequences 并单击“保存到 Roblox”。或者,您可以使用 Plugin:SaveSelectedToRoblox() 函数。 您可以使用 Studio 中的“动画上传”功能来上传您的 KeyframeSequences 作为动画。

在某些情况下,您可能需要预览 Animation 再将其上传到 Roblox 网站。您可以使用 KeyframeSequenceProvider:RegisterKeyframeSequence() 生成一个临时 id 来使用本地化动画测试。

获得键框顺序

在某些情况下,您可能需要下载与现有上传的动画相对应的 KeyframeSequencer。您可以使用 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

此函数将 Keyframe 添加到 KeyframeSequence 通过将其作为父级设置到 KeyframeSequence 。它与设置关键帧的 2>Class.Instance.Parent2> 相同功能。

注意,此函数在调用一个实例以外的 Keyframe 作为钥匙框参数时不会发生错误,它将成功地父级。

参数

keyframe: Instance

将添加。 Class.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 设置为零,以此移除它的父级。它与设置 k关键帧yframe 的父级为零相同。

这将关键帧的父级设置为 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)

活动