KeyframeMarker

显示已弃用

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

钥匙帧标记是用于表示最终会触发的事件的实例,当 Keyframe 被击中时。

使用关键帧标记器

钥匙帧标记应始终被父辈到钥匙帧通过设置父辈直接或使用 Keyframe 的 Keyframe:AddMarker() 函数父辈。钥匙框标记也可以直接删除或使用 Keyframe:RemoveMarker() 函数进行检查,以查看哪些标记被附加到特定的钥匙框,使用 Keyframe:GetMarkers()

每当检测到键帧作为动画运行时,都会为每个键帧标记发射事件,该键帧标记属于键帧。这些事件可以通过 KeyframeMarker 的名称进行识别。您可以使用 AnimationTrack.GetKeyframeMarkerReached 函数来检索并听这些事件。可选地,您可以设置 KeyframeMarker 的 KeyframeMarker.Value 属性,以便将发射的事件值传递给下一个值。

它从 Keyframe.Name 继承了属性 Instance 并行为相同。名称用于识别,不需要独一无二。当多个具有相同名称的 KeyFrameMarkers 附加到 KeyFrame 时, 由 AnimationTrack:GetMarkerReachedSignal() 返回的事件将为每个标记发射。

还见:

  • , 保留在特定时间点的动画中应用到节点的
  • AnimationTrack , 控制在 HumanoidAnimationController 上播放动画
  • Animation , 保持对使用 Roblox 动画系统播放自定义动画的角色或其他模型所需的动画数据的引用

代码示例

This example demonstrates the Keyframe:AddMarker() and Keyframe:GetMarkers() functions. After adding two markers, marker1 and marker2 to the keyframe, this example gets and prints the names of the added markers.

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

This LocalScript code waits for the local player's Humanoid object to load, then it creates a new Animation instance with the proper Animation.AnimationId. The animation is then loaded onto the humanoid, creating an AnimationTrack, and the track is played with AnimationTrack:Play(). Following that, the AnimationTrack:GetMarkerReachedSignal() function detects when the "KickEnd" marker is hit.

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() 创建的信号发射时,这个值将传递到连接的函数。

还见:

代码示例

This example demonstrates the Keyframe:AddMarker() and Keyframe:GetMarkers() functions. After adding two markers, marker1 and marker2 to the keyframe, this example gets and prints the names of the added markers.

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

This example demonstrates the Keyframe:AddMarker() and Keyframe:RemoveMarker() functions. Note these are functionally equivalent to parenting and un-parenting the markers.

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

方法

活动