您可以在时间线范围内定义动画事件标记,并使用 GetMarkerReachedSignal() 在动画运行时检测这些标记。
默认情况下,事件轨道不可见。要显示事件轨道:
导航到时间线的右侧,点击设置图标。弹出菜单会显示。

选择显示动画事件。这会在媒体和播放控制下方打开动画事件栏。

创建事件
事件标记是动画事件开始的可视指示器。创建事件标记后,您可以将其移动到时间线上的任何帧位置。
要创建新的事件标记:
导航到时间线,然后点击并拖动刮板到事件应发生的帧位置。
导航到事件轨道,然后单击编辑动画事件按钮。

在对话框中,点击**+ 添加事件**,然后输入事件名称。
- 可选在参数字段中,为事件输入参数字符串。
点击保存按钮。在时间线内的事件栏中,会在帧位置显示一个新的标记符号。

检测事件
要在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")
-- 创建新的 "Animation" 实例
local walkAnim = Instance.new("Animation")
-- 将其 "AnimationId" 设置为相应的动画资产 ID
walkAnim.AnimationId = "rbxassetid://5432167890"
-- 将动画加载到动画器上
local walkAnimTrack = animator:LoadAnimation(walkAnim)
-- 将 "GetMarkerReachedSignal" 事件连接到特定的命名关键帧
walkAnimTrack:GetMarkerReachedSignal("FootStep"):Connect(function(paramString)
print(paramString)
end)
复制事件
当您创建事件时,它们在整个动画中可用,不仅仅是在您最初创建它们的帧位置。例如,您可以在角色的左脚接触地面时创建一个FootStep事件标记,然后在角色的右脚接触地面时时使用相同的事件。
要复制事件:
右键单击事件栏中的事件标记,然后从上下文菜单中选择复制选中。

在时间线的另一处右键单击并选择粘贴事件。复制的事件会插入到最接近您点击的时间位置。
- 可选如果原始事件使用了参数但复制的事件应该使用修改过的参数,请执行以下步骤:
- 右键单击复制的事件标记,从上下文菜单中选择编辑动画事件。将显示编辑动画事件对话框。
- 做出更改并点击保存按钮。