Animator

显示已弃用

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

主要负责播放和复制 Animations 。所有复制播放 AnimationTracks 的复制都由 Animator 实例处理。

还请参阅动画编辑器使用动画,了解如何在游戏中创建和添加预制或自定义动画。

概要

属性

方法

活动

属性

EvaluationThrottled

只读
未复制
不可浏览
写入并联

PreferLodEnabled

读取并联

RootMotion

只读
未复制
不可浏览
写入并联

RootMotionWeight

只读
未复制
不可浏览
写入并联

方法

ApplyJointVelocities

void

考虑到现有的 AnimationTracks 播放,以及其当前时间和播放速度,在零件之间计算相对速度,并将其应用到Motor6D.Part1(Animator 考虑的 “子” 部分)。这些相对速度计算和分配在提交的顺序。

此方法不适用于给定的关节,如果其中的两个部分现在都是相同的装配,例如,如果它们仍然通过电机或焊接直接或间接地连接在一起。

此方法不会为您禁用或移除关节。您必须禁用或者否则从装配中移除刚性关节才能调用此方法。

给出的 Motor6Ds 不需要是 DataModel 的后代。移除从 DataModel 之前的关节是支持此方法的。

参数

motors: Variant

返回

void

GetPlayingAnimationTracks

返回当前播放列表AnimationTracks


返回

LoadAnimation

此函数将指定的 Animation 加载到此 Animator 上,返回一个可玩的 AnimationTrack。 当客户端有网络所有者时,调用 2>Class.Animator2> 内的一个 5>Class.AnimationTrack5> 也会加载此功能。

您应该使用这个函数直接而不是类似命名的 Humanoid:LoadAnimation()AnimationController:LoadAnimation() 函数。这些都是此函数的过时代理,也会创建一个 Animator 如果不存在;这可能会导致复制问题,如果您不小心。

在客户机或服务器上加载动画

为了正确地复制 AnimationTracks,重要是要知道它们在客户端或服务器上何时加载:

  • 如果 Animator 是一个子 HumanoidAnimationController 在玩家的 2>Class.Player.Character2> 上,玩家的客户端上的动画将被复制到服务器和其他客户端。

  • 如果 Animator 是玩家角色的后代,其动画必须在服务器上加载并开始才能复制。

Class.Animator 对象必须在服务器上初始创建,然后复制到客户端以便在全部个复制动画时使用。如果 Animator 是本地创建的,那么 AnimationTracks 就会 Load入那个 1>Class.Animator1> 并复制。

参数

animation: Animation

将要使用的 Animation


返回

RegisterEvaluationParallelCallback

void

参数

callback: function

返回

void

StepAnimations

void
插件安全性

增加 AnimationTrack.TimePosition 的所有播放 AnimationTracks 上的时间位置,并将其应用到 Animator 上,使用 1> Class.Animator1> 的 Offset 来模型联系到 4> Class.Animator4> 。仅在命令栏或通过插件使用。

DeltaTime 参数确定要在动画进度上增加的秒数。通常,此函数会在循环中调用,以预览动画长度(请参阅示例)。

注意,当动画停止播放时,模型的关节将需要手动重置到其原始位置(请参阅示例)。

此功能用于模拟游戏不运行时的 Animations 的播放。这允许动画在运行游戏时无需进行预览,例如脚本执行。如果函数在游戏运行时或通过 ScriptsLocalScripts 调用,它将返回一个错误。

设计自己的自定义动画编辑器的开发人员建议使用此功能来预览动画,因为它是 Roblox 官方动画编辑器插件使用的方法。

参数

deltaTime: number

秒计时动画播放的时间量将被增加。


返回

void

代码示例

Preview Animation in Studio

local RunService = game:GetService("RunService")
local function studioPreviewAnimation(model, animation)
-- find the AnimationController and Animator
local animationController = model:FindFirstChildOfClass("Humanoid")
or model:FindFirstChildOfClass("AnimationController")
local animator = animationController and animationController:FindFirstChildOfClass("Animator")
if not animationController or not animator then
return
end
-- load the Animation to create an AnimationTrack
local track = animationController:LoadAnimation(animation)
track:Play()
-- preview the animation
local startTime = tick()
while (tick() - startTime) < track.Length do
local step = RunService.Heartbeat:wait()
animator:StepAnimations(step)
end
-- stop the animation
track:Stop(0)
animator:StepAnimations(0)
-- reset the joints
for _, descendant in pairs(model:GetDescendants()) do
if descendant:IsA("Motor6D") then
local joint = descendant
joint.CurrentAngle = 0
joint.Transform = CFrame.new()
end
end
end
local character = script.Parent
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
studioPreviewAnimation(character, animation)

活动

AnimationPlayed

对所有 AnimationTrack:Play() 调用创建和拥有 AnimationTracks 的动画师的火焰。

参数

animationTrack: AnimationTrack