KeyframeSequence

Hiển Thị Bản Đã Lỗi Thời

*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.

Vật này lưu tất cả các Keyframes cho một hoạt hiệu ứng động, xác định xem hoạt hình có bị lặp lại hay không, và xác định ưu tiên của nó so với các hoạt hình khác.

KeyframeSequence là gì?

Roblox xây dựng dữ liệu hoạt hình mà nó sử dụng trong phát lại của một hiệu ứng động, được tham chiếu bởi thuộc tính Animation.AnimationId từ một KeyframeSequence.Mỗi hoạt hình đề cập đến một KeyframeSequence hoặc một CurveAnimation bên trong.Mặc dù, thường được tạo bởi Trình chỉnh sửa hoạt hình Roblox, KeyframeSequence cũng có thể được tạo bởi các plugin khác hoặc thậm chí thủ công.Một khi được tải lên Roblox, Roblox gán một ID Nội dung mà Animations sử dụng cho thuộc tính Animation.AnimationId để tham chiếu đến KeyframeSequence đã tải lên.

Lưu ý, trong hầu hết các trường hợp, bạn không cần phải thao tác với KeyframeSequences, vì trình chỉnh sửa hoạt hình bao gồm hầu hết chức năng hoạt hình.Tuy nhiên, trong một số trường hợp, bạn có thể muốn tạo một hoạt hình từ một Script hoặc xây dựng plugin riêng của mình.Tuy nhiên, chỉ Roblox Studio có thể sử dụng một KeyframeSequence được tạo theo cách như vậy.Nếu bạn muốn sử dụng một KeyframeSequence như vậy, bạn sẽ cần phải tải nó lên Roblox như mô tả dưới đây.

Thuộc tính Chuỗi Khung Chính

KeyframeSequence.PriorityKeyframeSequence.Loop lưu các cài đặt ưu tiên và hoạt hình lặp lại cho chuỗi.Lưu ý rằng các thuộc tính AnimationTrack cuối cùng có thể ghi đè lên các thuộc tính này khi phát lại.

Cuối cùng Keyframe trong chuỗi, có nghĩa là Keyframe với chỉ số Keyframe.Time cao nhất, xác định chiều dài của một hiệu ứng động.

Cấu trúc KeyframeSequence

Các khung chìa khóa hoạt động như một thùng chứa giữ Keyframes .Khung chìa khóa đại diện cho một khung 'chìa khóa' trong hoạt hiệu ứng động, được xác định giữa trong lúc phát lại.

Khung chìa khóa bao gồm Poses .Poses , cụ thể cho mỗi BasePart được hoạt hình, bao gồm CFrame được áp dụng cho Motor6D kết nối hai phần.Các tư thế phù hợp với BasePart họ phù hợp với tên và áp dụng dữ liệu của họ vào Motor6D với phần có tên tương tự được xác định là Motor6D.P1 .Vì lý do này, các hoạt hình cần các tên phần riêng biệt để chơi đúng cách.

Các tư thế tuân theo một cấu trúc dựa trên cấp bậc chung.Cha của mỗi Pose tương ứng với Pose của phần nó được gắn vào.Trong thực tế, điều này có nghĩa là các cánh hoa nhánh ra từ phần gốc.Xem phía dưới để có một ví dụ hình ảnh.

Sử dụng KeyframeSequences khi tạo hoạt hình

Bạn phải đầu tiên tải lên KeyframeSequences vào Roblox trước khi chúng có thể được chơi trong một trải nghiệm.Trong Studio, nhấp chuột phải vào KeyframeSequence và nhấp vào 'Lưu vào Roblox'.Ngoài ra, bạn có thể sử dụng chức năng Plugin:SaveSelectedToRoblox().Bất kỳ phương pháp nào cũng sẽ mở cửa sổ tải lên hoạt hình và cho phép bạn tải lên KeyframeSequence của mình như một hiệu ứng động.

Trong một số trường hợp, bạn có thể muốn xem trước một hoạt hình trước khi tải lên trang web 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 ra một ID băng chéo có thể được sử dụng cho kiểm tra hoạt họa địa phương.

Nhận được chuỗi khung chìa khóa

Trong một số trường hợp, bạn có thể muốn tải xuống KeyframeSequence tương ứng với một Animation đã tải lên hiện có.Bạn có thể sử dụng AnimationClipProvider:GetAnimationClipAsync() để tải xuống một hoạt hiệu ứng động.

Mẫu mã

This sample contains a simple function that will get the length of a KeyframeSequence by finding the Keyframe with the highest Keyframe.Time value.

Get KeyframeSequence Length

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)

This code sample contains a simple function to generate an Animation with a generated hash ID to preview a KeyframeSequence locally.

Create temporary animation

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)

This sample demonstrates how a basic KeyframeSequence can be created.

KeyframeSequence Instantiation

-- 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

Thuộc Tính kế thừa từ AnimationClip
  • Đọc Song Song

    Xác định xem liệu hoạt hình được lưu trong đoạn này AnimationClip có ý định lặp lại hay không.

  • Xác định đoạn nào có ưu tiên khi nhiều hoạt hình đang chơi cùng lúc.

Phương Pháp

Thuộc Tính

AuthoredHipHeight

Ẩn
Bảo Mật Plugin
Đọc Song Song

Bao gồm chiều cao đùi của Humanoid của mô hình đã được sử dụng để soạn thảo điều này KeyframeSequence .Giá trị mặc định là 1.35 vì đó là chiều cao được đặt cho một tiêu chuẩn R15 Character|character .

Phương Pháp

AddKeyframe

()

Chức năng này thêm một Keyframe vào KeyframeSequence bằng cách nuôi nó lên KeyframeSequence .Nó có chức năng tương tự với việc đặt keyframe's Instance.Parent đến KeyframeSequence .

Lưu ý, chức năng này sẽ không xảy ra lỗi khi gọi với một ví dụ khác ngoài một Keyframe như tham số keyframe và sẽ nuôi nó thành công.

Tham Số

keyframe: Instance

Các Keyframe được thêm vào.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

This sample demonstrates how a basic KeyframeSequence can be created.

KeyframeSequence Instantiation

-- 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

Instances

Nhận khung chìa khóa trả về một array chứa tất cả Keyframes đã được thêm vào một KeyframeSequence .


Lợi Nhuận

Instances

Một mảng của Keyframe .

Mẫu mã

This sample contains a simple function that will get the length of a KeyframeSequence by finding the Keyframe with the highest Keyframe.Time value.

Get KeyframeSequence Length

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

()

Chức năng này xóa một Keyframe từ KeyframeSequence bằng cách đặt cha của nó thành nil .Nó có chức năng tương tự như việc đặt cha của khung chìa khóa thành nil .

Điều này đặt cha của khung chìa khóa thành nil , nhưng không phá hủy nó.Điều này có nghĩa là, miễn là vẫn còn một tham chiếu khác đến keyframe, nó có thể được nuôi dưỡng lại sau.

Lưu ý, chức năng này sẽ không xảy ra lỗi khi gọi với một Instance khác ngoài một Keyframe như tham số keyframe.

Tham Số

keyframe: Instance

Các Keyframe để được xóa bỏ.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

This sample adds a Keyframe to a KeyframeSequence before removing it and adding it again. Note that once a Keyframe is removed it is not destroyed, meaning it can be re-added later.

KeyframeSequence RemoveKeyframe

local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)

Sự Kiện