一个钥匙框标记是一个用于表示将在最终 Keyframe 被触发时发生的事件的实例。
使用钥匙框标记
键框标记总是应该通过设置父级或使用“Class.Keyframe:AddMarker()”函数的父级来指定为键框标记。 键框标记还可以通过使用“Class.Keyframe:GetMarkers()”函数的父级来移除直接或使用“Class.Keyframe:RemoveMarker()”函数的父级来移除附加到特定键框标记的标记。 键框标记还可以通过使用
当检测到键框动画正在运行时,键框标记器的每个键框标记器都会触发一个事件。这些事件通过键框标记器的名称来标识。您可以使用 AnimationTrack.GetKeyframeMarkerReached 函数来检索并恢复此类事件。 选项ally,您可以通过 Class.KeyframeMarker.Value
它继承了 Keyframe.Name 属性从 Instance ,并且保持相同的名称。名称用于识别,不需要它们是独特的。当多个 KeyFrame 标记具有相同的名称时, AnimationTrack:GetMarkerReachedSignal() 的事件将为每个标记发射。
还请参阅:
- Animation,持有要使用 Roblox 动画系统在角色或其他模型上播放自定义动画所需的参考数据
代码示例
Get Keyframe Markers Attached to a Keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
marker2.Value = 100
keyframe:AddMarker(marker1) --marker.Parent = keyframe
keyframe:AddMarker(marker2) --marker.Parent = keyframe
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
Listening to Keyframe Markers
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.Character:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Create new "Animation" instance
local kickAnimation = Instance.new("Animation")
-- Set its "AnimationId" to the corresponding animation asset ID
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Load animation onto the humanoid
local kickAnimationTrack = humanoid:LoadAnimation(kickAnimation)
-- Play animation track
kickAnimationTrack:Play()
-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
概要
属性
Value
指定一个 KeyframeMarker 的值。每当从 AnimationTrack:GetMarkerReachedSignal() 创建的信号被发射,这个值都会被传递到连接的函数。
还请参阅:
代码示例
Get Keyframe Markers Attached to a Keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
marker2.Value = 100
keyframe:AddMarker(marker1) --marker.Parent = keyframe
keyframe:AddMarker(marker2) --marker.Parent = keyframe
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
Add Marker/Remove Marker
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --marker.Parent = keyframe
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil