您可以在时间线范围内定义动画 事件标记 ,并使用GetMarkerReachedSignal()来检测这些标记在动画运行时。
显示事件
默认情况下,事件跟踪不会显示。要显示事件跟踪:
导航到 时间线 的右侧,然后单击 装备 标志。弹出菜单显示。
选择 显示动画事件 。这将打开 动画事件 栏位,直接放置在媒体和播放控控制下。
您现在可以创建、检测和复制事件。
创建事件
事件标记是指示动画事件开始的视觉指示。 在创建事件标记后,您可以将其移动到时间线上的任何位置。
要创建一个新的事件标记:
导航到 时间轴 ,然后单击-拖动 清除器 到框架位置, где该事件应该发生。
导航到 事件跟踪 ,然后单击 编辑动画事件 按钮。显示 编辑动画事件 对话框。
在<a href=\"#编辑动画事件\">编辑动画事件</a>对话框中,单击<a href=\"#+ 添加事件\">添加事件</a>,然后输入一个事件名称。
(可选) 在 参数 字段中,输入事件的参数串。
点击 保存 按钮。在时间线内的事件栏中,新的标记符号显示在框架位置。
检测事件
要在 LocalScript 中检测动画事件,请将函数连接到 GetMarkerReachedSignal() 函数。例如:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- 创建新的“动画”实例
local walkAnim = Instance.new("Animation")
-- 将其“AnimationId”设置为对应的动画资产ID
walkAnim.AnimationId = "rbxassetid://5432167890"
-- 在动画师上加载动画
local walkAnimTrack = animator:LoadAnimation(walkAnim)
-- 将“获取标记关键帧”事件连接到特定名称的 keyframe
walkAnimTrack:GetMarkerReachedSignal("FootStep"):Connect(function(paramString)
print(paramString)
end)
复制事件
当您创建事件时,它们可以在整个动画中使用,不仅在您创建它们的原始位置。例实例,您可以在角色的 左 脚下使用一个 "足迹" 事件标记,然后在角色的 右 脚下使用相同的事件。
要复制一个事件:
导航到 时间轴 ,然后在 事件栏 中单击一个 事件标记 。
按下 Ctrl C ( ⌘ C 在 Mac 上)。
单击并拖动 scrapber 到您想要复制事件的框架位置。
按下 CtrlV ( ⌘V 在 Mac 上)。
如果原始事件使用参数,但重复事件使用修改的参数,请执行以下步骤:
- 右击复制的事件标记。弹出菜单显示。
- 选择 编辑动画 事件。显示 编辑动画事件 对话框。
- 作出您的更改,然后单击 保存 按钮。