KeyframeSequence
*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.
Đối tượng này lưu tất cả các Keyframes cho một hoạt hiệu ứng động, xác định có phải hoạt họa đang được lặp lại, và xác định ưu tiên của nó so với các hoạt họa khác.
KeyframeSequencer là gì?
Roblox xây dựng dữ liệu hoạt họa mà nó sử dụng trong quá trình phát hồi của một hoạt hiệu ứng động, tham khảo từ đặt hàng Class.Animation.
Lưu ý, trong hầu hết các trường hợp, bạn không cần phải manipulate KeyframeSequences, as the animation editor covers most animation functionality. However, in some cases you may wish to generate an animation from a Script or build your own plugin. However, only Roblox Studio can use a KeyframeSequences created in such a way. If you wish to use such a KeyframeSequences, you will need to upload it to
Tính chất của hàng đợi
KeyframeSequence.Priority và KeyframeSequence.Loop lưu cài đặt trọng tâm và hoạt họa lặp lại cho chuỗi. Ghi nhớ rằng đặt tính AnimationTrack có thể cuối cùng đổi được các cài đặt này khi chơi lại.
Các khung cổng Keyframe cuối cùng trong chuỗi, có nghĩa là Keyframe với tính năng Keyframe.Time cao nhất, xác định chiều dài của một hiệu ứng động.
Cấu trúc KeyframeStructure
KeyframeSequences là một container đựng Keyframes . Keyframes đại diện cho một khung "chìa khóa" trong hoạt hiệu ứng động, được liên kết giữa trong khi chơi.
Các khung chứa Poses . Class.
Các điểm ảnh được theo một cấu trúc dựa trên cấp độ hiệp nhất. Cha của mỗi điểm Pose được tương ứng với Pose của phần nó được kết nối. Trong thực tế, điều này có nghĩa là các điểm ảnh chi nh
Sử dụng KeyframeSequences khi làm hoạt họa
Bạn phải đầu tiên tải KeyframeSequences lên Roblox trước khi chúng có thể được chơi trong một trải nghiệm. Ở Studio, nhấp chuột phải vào KeyframeSequences và nhấp vào 'Lưu vào Roblox'. Hoặc bạn có thể sử dụng hành động Class.Plugin:SaveSelectedToRoblo
Trong một số trường hợp, bạn có thể muốn xem trước một hoạt họa trước khi tải nó lên trang Roblox. Bạn có thể tạo một ID tạm thời bằng cách sử dụng KeyframeSequenceProvider:RegisterKeyframeSequence() . Điều này sẽ tạo một ID hành tây có thể được sử dụng cho kiểm tra hoạt họa địa phương
Lấy các chuỗi Keyframe
Trong một số trường hợp, bạn có thể muốn tải xuống KeyframeSequencer tương ứng với một Animation đã tải. Bạn có thể sử dụng AnimationClipProvider:GetAnimationClipAsync() để tải một hiệu ứng động.
Mẫu mã
local function getSequenceLength(keyframeSequence)
local length = 0
for _, keyframe in pairs(keyframeSequence:GetKeyframes()) do
if keyframe.Time > length then
length = keyframe.Time
end
end
return length
end
local keyframeSequence = Instance.new("KeyframeSequence")
getSequenceLength(keyframeSequence)
local KeyframeSequenceProvider = game:GetService("KeyframeSequenceProvider")
local function createPreviewAnimation(keyframeSequence)
local hashId = KeyframeSequenceProvider:RegisterKeyframeSequence(keyframeSequence)
local Animation = Instance.new("Animation")
Animation.AnimationId = hashId
return Animation
end
local keyframeSequence = Instance.new("KeyframeSequence")
local animation = createPreviewAnimation(keyframeSequence)
print(animation)
-- create the keyframesequence
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Loop = false
keyframeSequence.Priority = Enum.AnimationPriority.Action
-- create a keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Time = 0
-- create sample poses
local rootPose = Instance.new("Pose")
rootPose.Name = "HumanoidRootPart"
rootPose.Weight = 0
local lowerTorsoPose = Instance.new("Pose")
lowerTorsoPose.Name = "LowerTorso"
lowerTorsoPose.Weight = 1
-- set the sequence hierarchy
rootPose:AddSubPose(lowerTorsoPose) -- lowerTorsoPose.Parent = rootPose
keyframe:AddPose(rootPose) -- rootPose.Parent = keyframe
keyframeSequence:AddKeyframe(keyframe) -- keyframe.Parent = keyframeSequence
-- parent the sequence
keyframeSequence.Parent = workspace
Tóm Tắt
Thuộc Tính
Bao gồm chiều cao Humanoid của KeyframeSequence mà đã được sử dụng để xuất bản này Class.Keyframe.
Xác định liệu hoạt họa được lưu trong điều này AnimationClip có ý định lặp không.
Xác định các cắt nào được ưu tiên khi nhiều hoạt họa được phát sóng cùng một lúc.
Phương Pháp
Thêm một Keyframe vào KeyframeSequence bằng cách gắn nó vào KeyframeSequence .
Đảm bảo một dàn trùng chứa tất cả các Keyframes được đứng trong một dàn trùng KeyframeSequence .
Hàm này xóa một Keyframe từ KeyframeSequence bằng cách đặt cha của nó thành nil.
Thuộc Tính
AuthoredHipHeight
Bao gồm chiều cao giả dối của Humanoid của mô hình đã được sử dụng để xuất bản KeyframeSequence này. Giá trị mặc định là 1,35, vì đây là chiều cao giả dối được thiết lập cho một Character|character R15 tiêu chuẩ
Phương Pháp
AddKeyframe
Hành động này thêm một Keyframe vào KeyframeSequence bằng cách gắn nó vào KeyframeSequence . Nó hoàn toàn tương tự với việc đặt 1> Class.Instance.Parent1> của keyframe vào 4> Class.Key
Lưu ý, hàm này sẽ không bị lỗi khi gọi với một instância khác ngoài một Keyframe như là một tiêu chuẩn keyframe và sẽ làm cho nó thành công.
Tham Số
Lợi Nhuận
Mẫu mã
-- create the keyframesequence
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Loop = false
keyframeSequence.Priority = Enum.AnimationPriority.Action
-- create a keyframe
local keyframe = Instance.new("Keyframe")
keyframe.Time = 0
-- create sample poses
local rootPose = Instance.new("Pose")
rootPose.Name = "HumanoidRootPart"
rootPose.Weight = 0
local lowerTorsoPose = Instance.new("Pose")
lowerTorsoPose.Name = "LowerTorso"
lowerTorsoPose.Weight = 1
-- set the sequence hierarchy
rootPose:AddSubPose(lowerTorsoPose) -- lowerTorsoPose.Parent = rootPose
keyframe:AddPose(rootPose) -- rootPose.Parent = keyframe
keyframeSequence:AddKeyframe(keyframe) -- keyframe.Parent = keyframeSequence
-- parent the sequence
keyframeSequence.Parent = workspace
GetKeyframes
GetKeyframes trả lại một loạt bao gồm tất cả Keyframes đã được thêm vào một loạt KeyframeSequence .
Lợi Nhuận
Một mat阵 của Keyframe .
Mẫu mã
local function getSequenceLength(keyframeSequence)
local length = 0
for _, keyframe in pairs(keyframeSequence:GetKeyframes()) do
if keyframe.Time > length then
length = keyframe.Time
end
end
return length
end
local keyframeSequence = Instance.new("KeyframeSequence")
getSequenceLength(keyframeSequence)
RemoveKeyframe
Hàm này xóa một Keyframe từ KeyframeSequence bằng cách đặt cha nó thành nil. Nó hoàn toàn tương tự với việc đặt cha của hộp kiểm về nil.
Điều này đặt cha của keyframe thành nil, nhưng nó không bị phá hủy. Điều này có nghĩa là, nếu một tham chiếu khác về keyframe được tạo, nó có thể được cha cấp lại sau đó.
Ghi chú, chức năng này sẽ không bị lỗi khi gọi với một Instance khác ngoài một Keyframe như là một Class.Keyframe như cơ sở dữ liệu.
Tham Số
Lợi Nhuận
Mẫu mã
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)