KeyframeMarker
A KeyframeMarker is an instance meant to represent an event that will eventually be fired when a Keyframe is hit.
Using a KeyframeMarker
KeyframeMarkers should always be parented to a Keyframe via setting the parent directly or using the Keyframe:AddMarker() function of Keyframe. KeyframeMarkers can also be removed directly or using the Keyframe:RemoveMarker() function, and polled to check which markers are attached to a specific Keyframe using Keyframe:GetMarkers().
Whenever a Keyframe is detected as an animation is running, there will be an event fired for each KeyframeMarker that is parented to the Keyframe. These events are identifiable by the name of the KeyframeMarker. You can retrieve and listen to these events using the AnimationTrack.GetKeyframeMarkerReached function. Optionally, you may set the KeyframeMarker.Value property of the KeyframeMarker in order to pass along a value with the event being fired.
It inherits the Keyframe.Name property from Instance and behaves identically. Names are used for identification and no not need to be unique. When multiple KeyFrameMarkers with the same name are attached to a KeyFrame, events such as the one returned by AnimationTrack:GetMarkerReachedSignal() will fire for every marker.
See also:
- Animation, holds a reference to animation data required to play custom animations on characters or other models using the Roblox animation system
Code Samples
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
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)
Summary
Properties
A value that is specified for a KeyframeMarker.
Properties
Value
A value that is specified for a KeyframeMarker. Whenever the signal created from AnimationTrack:GetMarkerReachedSignal() gets fired, this value will be passed into the connected function.
See also:
Code Samples
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
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