이 개체는 모든 Keyframes 애니메이션에 대해 저장하고, 애니메이션이 루프되는지 여부를 결정하고, 다른 애니메이션에 대해 우선 순위를 결정합니다.
KeyframeSequencer란 무엇입니까?
Roblox는 애니메이션 플레이백에 사용하는 애니메이션 데이터를 생성하지만, Animation.AnimationId 속성에서 참조하는 키 프레임 시퀀스를 참조합
대부분의 경우 KeyframeSequences를 조작할 필요 없습니다, 동작 편집기가 대부분의 동작 기능을 커버하기 때문에. 하지만, 일부 경우 Script에서 동작을 생성하거나 자신의 플러그인을 빌드하는 것이 좋습니다. 만약 이런 식으로 Key
키프레임 시퀀스 속성
KeyframeSequence.Priority 및 KeyframeSequence.Loop 순서의 우선 순위 및 루프 애니메이션 설정을 저장합니다. AnimationTrack 속성은 플레이백 시 이러한 속성을 재정의할 수 있습니다.
시퀀스의 마지막 Keyframe 는 가장 높은 Keyframe 속성을 가진 Keyframe.Time 의 길이를 결정합니다.
키프레임 시퀀스 구조
KeyframeSequences는 Keyframes 을 담는 컨테이너입니다. Keyframes는 애니메이션중에 중간에 삽입된 '키' 프레임을 나타냅니다.
키 프레임에는 Poses 가 포함되어 있습니
포즈는 공동 계층 구조를 기반으로 구조를 따릅니다. 각 Pose의 부모는 부모가 부모인 Pose 에 부모가 됩니다. 실제로, 이것은 포즈 브랜치가 루트 부모에서 나가게 합니다. 아래에서 시각적 예를 참조하십시오.
애니메이션 작성 시 키 프레임 시퀀스 사용
경험에서 재생될 수 있도록 먼저 Roblox에 키 프레임 시퀀스를 업로드해야 합니다. Studio에서 키 프레임 시퀀스를 마우스 오른쪽 버튼으로 클릭하고 Plugin:SaveSelectedToRoblox()를 클릭하거나 애니메이션으로 업로드할 수 있습니다. 또는 Class.Plugin:SaveSelectedToRoblox()
Roblox 사이트에 업로드하기 전에 애니메이션 미리보기를 원할 수 있습니다. KeyframeSequenceProvider:RegisterKeyframeSequence() 를 사용하여 임시 ID를 생성하여 로컬 애니메이션 테스트에 사용할 수 있는 해시 ID를 생성합니다.
키 프레임 시퀀스 생성
일부 경우 기존 업로드된 애니메이션과 일치하는 KeyframeSequencer를 다운로드하는 것이 좋습니다. 애니메이션을 다운로드하려면 AnimationClipProvider:GetAnimationClipAsync()를 사용할 수 있습니다.
코드 샘플
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
요약
속성
이 Humanoid의 모델의 경우 이 모델이 사용한 모델의 내부 높이를 포함합니다.
이 AnimationClip 에 저장된 애니메이션이 루프되어야 하는지 여부를 결정합니다.
여러 애니메이션이 동시에 재생될 때 우선 순위가 어느 클립이 가질 지 결정합니다.
메서드
Class.Keyframe를 KeyframeSequence 에 부모로 지정하여 순서대로 KeyframeSequence 를 추가합니다.
Class.Keyframe|Keyframes 내 KeyframeSequence 에 포함된 모든 배열을 반환합니다.
이 함수는 부모를 없애면 Keyframe를 더미에서 제거합니다.
속성
AuthoredHipHeight
이 Humanoid의 모델의 기준 높이에 대한 하이핏 높이를 포함합니다. 기본값은 1.35입니다, 왜냐하면 이것은 일반적인 R15 KeyframeSequence 의 기준 높이입니다.
메서드
AddKeyframe
이 함수는 부모인 Keyframe 에 추가하기 위해 KeyframeSequence 에 부모를 지정하여 KeyframeSequence 에 기능적으로 동일합니다. 2>Class.Keyframe2> 의 부모를 설정하는 것과 동일합니다.
참고, 이 함수는 Keyframe 키 프레임 매개 변수로 호출할 때 오류가 발생하지 않으며 부모가 성공적으로 지정됩니다.
매개 변수
반환
코드 샘플
-- 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
키 프레임 가져오기 는 키 프레임을 모두 포함하는 배열을 반환합니다. 이는 키 프레임 순서를 포함하는 키 프레임 배열입니다.
반환
Class.Keyframe|Keyframe 배열.
코드 샘플
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
이 함수는 키 프레임의 부모를 널로 설정하여 Keyframe를 제거합니다. 키 프레임의 부모를 널로 설정하는 것과 기능적으로 동일합니다.
이렇게 하면 키 프레임의 부모가 nil 이지만, 파괴하지는 않습니다. 즉, 다른 키 프레임 참조를 제공하면 나중에 다시 부모가 될 수 있습니다.
참고, 이 함수는 Instance 외의 키프레임 매개 변수로 호출할 때 오류가 발생하지 않습니다.
매개 변수
반환
코드 샘플
local keyframeSequence = Instance.new("KeyframeSequence")
keyframeSequence.Parent = workspace
local keyframe = Instance.new("Keyframe")
keyframeSequence:AddKeyframe(keyframe)
task.wait(2)
keyframeSequence:AddKeyframe(keyframe)