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 KeyframeMarker instance với cùng tên được gắn vào một Keyframe, sự kiện như sự kiện được trả về bởi AnimationTrack:GetMarkerReachedSignal() sẽ bắn cho mỗi thẻ.
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ã
Ví dụ này minh họa các chức năng Keyframe:AddMarker() và Keyframe:GetMarkers() .Sau khi thêm hai thẻ, marker1 và marker2 vào khung chìa khóa, ví dụ này nhận và in tên của các thẻ được thêm.
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 = khung chìa khóa
keyframe:AddMarker(marker2) --marker.Parent = khung chìa khóa
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ã
Ví dụ này minh họa các chức năng Keyframe:AddMarker() và Keyframe:GetMarkers() .Sau khi thêm hai thẻ, marker1 và marker2 vào khung chìa khóa, ví dụ này nhận và in tên của các thẻ được thêm.
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 = khung chìa khóa
keyframe:AddMarker(marker2) --marker.Parent = khung chìa khóa
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
Ví dụ này minh họa các chức năng Keyframe:AddMarker() và Keyframe:RemoveMarker() .Lưu ý những thứ này có chức năng tương đương với parenting và không chăm sóc các nhãn.
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --marker.Parent = khung chìa khóa
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil