一個 Keyframe Marker 是一個用於代表會在 Keyframe 被擊中時發生的事件的實例。
使用鑰匙框標記器
鑰匙框標記應該總是與鑰匙框聯絡,以便直接設定親級或使用 Keyframe:AddMarker() 的鑰匙框功能。鑰匙框標記也可以直接移除,或使用 Keyframe:RemoveMarker() 功能,以查看哪些標記附在特定 Keyframe 上
當發現鑰匙框是作為動畫執行時發生時,會有一個事件發生在每個鑰匙框Marker 上,它是鑰匙框的父級。這些事件可以使用 AnimationTrack.GetKeyframeMarkerReached 函數來取回並聆聽。您可以使用
它継承了 Keyframe.Name 屬性來自 Instance ,並且以相同的方式行為。名稱是用於識別的,因此不需要是唯一的。當多個 KeyFrameMarkers 使用相同的名稱時, Class.AnimationTrack:GetMarkerReachedSignal() 的事件會在每個 Marker 上發生。
也看:
- 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