KeyframeMarker
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Một Thẻ Khung Chìa khóa là một ví dụ dùng để đại diện cho một sự kiện sẽ cuối cùng bị kích hoạt khi một Keyframe được đánh.
Sử dụng một KeyframeMarker
Các thẻ khung chìa khóa luôn phải được gán cho một khung chìa khóa thông qua việc thiết lập trực tiếp cha hoặc sử dụng chức năng Keyframe:AddMarker() của khung chìa khóa.Các thẻ khung chìa khóa cũng có thể được xóa trực tiếp hoặc sử dụng chức năng Keyframe:RemoveMarker() , và được kiểm tra xem các thẻ khung nào được gắn vào một Keyframe cụ thể bằng cách sử dụng Keyframe:GetMarkers() .
Mỗi khi một Keyframe được phát hiện là một hoạt hình đang chạy, sẽ có một sự kiện bị kích hoạt cho mỗi KeyframeMarker là cha của Keyframe.Các sự kiện này có thể được xác định bởi tên của KeyframeMarker.Bạn có thể truy xuất và lắng nghe các sự kiện này bằng chức năng AnimationTrack.GetKeyframeMarkerReached.Tùy chọn, bạn có thể đặt thuộc tính KeyframeMarker.Value của KeyframeMarker để truyền một giá trị với sự kiện được kích hoạt.
Nó thừa hưởng tính chất Keyframe.Name từ Instance và hành xử giống nhau.Các tên được sử dụng để xác định và không cần phải duy nhất.Khi nhiều KeyFrameMarkers có cùng tên được gắn vào một KeyFrame, các sự kiện như một trong những sự kiện được trả lại bởi AnimationTrack:GetMarkerReachedSignal() sẽ bắn cho mỗi marker.
Xem thêm:
- , giữ áp dụng cho các khớp ở một điểm thời gian nhất định trong một hoạt hiệu ứng động
- Animation , giữ một tham chiếu đến dữ liệu hoạt hình cần thiết để chơi hoạt hình tùy chỉnh trên nhân vật hoặc mô hình khác bằng cách sử dụng hệ thống hoạt hình Roblox
Mẫu mã
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.
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.
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)
Tóm Tắt
Thuộc Tính
Một giá trị được định cho một KeyframeMarker .
Thuộc Tính
Value
Một giá trị được định cho một KeyframeMarker .Mỗi khi tín hiệu được tạo từ AnimationTrack:GetMarkerReachedSignal() được kích hoạt, giá trị này sẽ được chuyển vào chức năng kết nối.
Xem thêm:
- , giữ áp dụng cho các khớp ở một điểm thời gian nhất định trong một hoạt hiệu ứng động
Mẫu mã
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.
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.
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