AnimationTrack

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.

Không Thể Tạo

Điều khiển việc phát lại của một hoạt họa trên một AnimationController . Đối tượng này không thể được tạo, thay vào đó nó được trả lại bởi phương pháp Animator:LoadAnimation() .

Tóm Tắt

Thuộc Tính

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Đối tượng Animation đã được sử dụng để tạo ra điều này AnimationTrack .

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Một tính chất đọc chỉ được trả lại true khi AnimationTrack đang chơi.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Một tính chất đọc chỉ để trả lại chiều dài (trong giây) của một AnimationTrack . Điều này sẽ trả lại 0 cho đến khi hoạt họa được tải hoàn toàn và do đó có thể không ngay lập tức có sẵn.

  • Đọc Song Song

    Đặt whether hoạt họa sẽ lặp lại sau khi kết thúc. Nếu nó được thay đổi trong khi chơi kết quả sẽ có hiệu lực sau khi hoạt họa kết thúc.

  • Đặt trọng tâm của một AnimationTrack . Tùy thuộc vào những gì được đặt này, chơi nhiều hoạt họa cùng một lúc sẽ tìm đến thuộc tính này để tìm ra các Keyframe , Poses nào được chơi trên

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Tốc độ của một AnimationTrack là một tính chất đọc chỉ được cho phép để đưa ra tốc độ phát hiện hiện tại của AnimationTrack . Điều này có giá trị mặc định là 1. Khi tốc độ được bằng 1, số

  • Không Sao Chép
    Đọc Song Song

    Quay vị trí trong thời gian trong vài giây mà một AnimationTrack đang qua chơi hoạt hiệu ứng độngnguồn của nó. Có thể được cài đặt để làm cho dòng nhảy dòng nhảy của nó vào một giây cụ thể trong hoạt hiệu ứng động.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Đọc chỉnh sửa thuộc tính, mà hiện tại trọng lượng của AnimationTrack . Nó có giá trị mặc định là 1.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Đọc chỉ định tính của riêng tư mà không được đọc để lấy cân nặng hiện tại của AnimationTrack .

Phương Pháp

Sự Kiện

Thuộc Tính

Animation

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Đối tượng Animation đã được sử dụng để tạo ra AnimationTrack . Để tạo ra một AnimationTrack, bạn phải tải một 1> Class.Animation1> đối tượng lên một

Mẫu mã

Listen For New Animations

local function listenForNewAnimations(humanoid)
humanoid.AnimationPlayed:Connect(function(animationTrack)
local animationName = animationTrack.Animation.Name
print("Animation playing " .. animationName)
end)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
listenForNewAnimations(humanoid)

IsPlaying

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Một tính chất đọc chỉ được trả lại true khi AnimationTrack đang chơi.

Thuộc tính này có thể được sử dụng bởi các nhà phát triển để kiểm tra xem hoạt họa đang chơi trước khi chơi nó (vì điều này sẽ khiến nó khởi động lại). Nếu một nhà phát triển muố

Mẫu mã

AnimationTrack IsPlaying

local function playOrAdjust(animationTrack, fadeTime, weight, speed)
if not animationTrack.IsPlaying then
animationTrack:Play(fadeTime, weight, speed)
else
animationTrack:AdjustSpeed(speed)
animationTrack:AdjustWeight(weight, fadeTime)
end
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playOrAdjust(animationTrack, 1, 0.6, 1)

Length

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Một tính chất đọc chỉ để trả lại chiều dài (trong giây) của một AnimationTrack . Điều này sẽ trả lại 0 cho đến khi hoạt họa được tải hoàn toàn và do đó có thể không ngay lập tức có sẵn.

Khi AnimationTrack.Speed của một AnimationTrack bằng 1, hoạt họa sẽ mất AnimationTrack.Length (in seconds) để hoàn thành.

Mẫu mã

Playing Animation for a Specific Duration

local function playAnimationForDuration(animationTrack, duration)
local speed = animationTrack.Length / duration
animationTrack:Play()
animationTrack:AdjustSpeed(speed)
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765000"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playAnimationForDuration(animationTrack, 3)

Looped

Đọc Song Song

Đặt tính này để quyết định có phải lặp lại hoạt họa sau khi kết thúc hay không. Nếu được thay đổi trong khi chơi kết quả sẽ có hiệu lực sau khi hoạt họa kết thúc.

Loại tính chất AnimationTrack vòng lặp mặc định được cài đặt trong trình biên tập hoạt họa. Tuy nhiên, loại tính chất này có thể được thay đổi, cho phép kiểm soát trên AnimationTrack trong khi game

Tính năng này cho phép nhà phát triển có một biến thể lặp lại và không lặp lại cùng một hoạt hiệu ứng động, mà không cần phải tải hai phiên bản lên Roblox.

Mẫu mã

Animation Looping

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
while not localPlayer.Character do
task.wait()
end
local character = localPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507770453"
local animationTrack = animator:LoadAnimation(animation)
animationTrack.Looped = false
task.wait(3)
animationTrack:Play()
task.wait(4)
animationTrack.Looped = true
animationTrack:Play()
Play AnimationTrack for a Number of Loops

local function playForNumberLoops(animationTrack, number)
animationTrack.Looped = true
animationTrack:Play()
local numberOfLoops = 0
local connection = nil
connection = animationTrack.DidLoop:Connect(function()
numberOfLoops = numberOfLoops + 1
print("loop: ", numberOfLoops)
if numberOfLoops >= number then
animationTrack:Stop()
connection:Disconnect() -- it's important to disconnect connections when they are no longer needed
end
end)
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playForNumberLoops(animationTrack, 5)
Đọc Song Song

Đặc tính này đặt trọng tấm của một AnimationTrack . Tùy thuộc vào những gì được đặt để, chơi nhiều hoạt họa cùng một lúc sẽ xem đến đặc tính này để tìm ra những Class.Keyframe``Class.Pose|Poses

Đặc tính Tiên ưu cho AnimationTrack mặc định là cách nó được cài đặt và phát sóng từ Studio's Editor Animation . Nó sử dụng Enum.AnimationPriority which có 7 cấp độ tiên ưu:

  1. Action4 (ưu tiên cao nhất)
  2. Hành động3
  3. Hành động2
  4. Hành động
  5. Di chuyển
  6. Nhàn rỗi
  7. Nhân bản (ưu tiên thấp nhất)

Cài đặt ưu tiên hoạt họa một cách phù hợp, thông qua trình chỉnh hoặc qua đặt này, cho phép nhiều hoạt họa được chơi mà không bị va chạm. Khi hai hoạt họa chơi trực tiếp hướng đến cùng một cánh tay trong các cách khác n

Đặc tính này cũng cho phép nhà phát triển chơi cùng một hoạt họa ở các ưu tiên khác nhau, mà không cần phải tải thêm phiên bản lên Roblox.

Speed

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Tốc độ của một AnimationTrack là một tính chất đọc chỉ được cho phép để đưa ra tốc độ phát hiện hiện tại của AnimationTrack . Điều này có giá trị mặc định là 1. Khi tốc độ được bằng 1, số

Nếu tốc độ được điều chỉnh, thì thời gian thực tế mà một đường đua để chơi có thể được tính bằng cách chia chiều dài bằng tốc độ. Tốc độ là một量 không đo lường.

Tốc độ có thể được sử dụng để kết nối chiều dài của một hoạt họa với các sự kiện trò chơi khác nhau (ví dụ như tải lại một kĩ năng) mà không cần phải tải các biến thể khác nhau của cùng một hiệu ứng động.

Đặt tính này chỉ đọc, và bạn có thể thay đổi nó bằng cách sử dụng AnimationTrack:AdjustSpeed() .

Mẫu mã

Animation Speed

local ContentProvider = game:GetService("ContentProvider")
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
while not localPlayer.Character do
task.wait()
end
local character = localPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507770453"
ContentProvider:PreloadAsync({ animation })
local animationTrack = animator:LoadAnimation(animation)
local normalSpeedTime = animationTrack.Length / animationTrack.Speed
animationTrack:AdjustSpeed(3)
local fastSpeedTime = animationTrack.Length / animationTrack.Speed
print("At normal speed the animation will play for", normalSpeedTime, "seconds")
print("At 3x speed the animation will play for", fastSpeedTime, "seconds")
Playing Animation for a Specific Duration

local function playAnimationForDuration(animationTrack, duration)
local speed = animationTrack.Length / duration
animationTrack:Play()
animationTrack:AdjustSpeed(speed)
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765000"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playAnimationForDuration(animationTrack, 3)

TimePosition

Không Sao Chép
Đọc Song Song

Quay vị trí trong thời gian trong vài giây mà một AnimationTrack đang qua chơi hoạt hiệu ứng độngnguồn của nó. Có thể được cài đặt để làm cho dòng nhảy dòng nhảy của nó vào một giây cụ thể trong hoạt hiệu ứng động.

TimePosition có thể được set để đến một điểm cụ thể trong hoạt hiệu ứng động, nhưng AnimationTrack phải đang chơi để làm điều đó. Nó cũng có thể được sử dụng kết hợp với AnimationTrack:AdjustSpeed() để đóng băng hoạt họa ở một điểm mong muố

Mẫu mã

Freeze Animation at Position

function freezeAnimationAtTime(animationTrack, timePosition)
if not animationTrack.IsPlaying then
-- Play the animation if it is not playing
animationTrack:Play()
end
-- Set the speed to 0 to freeze the animation
animationTrack:AdjustSpeed(0)
-- Jump to the desired TimePosition
animationTrack.TimePosition = timePosition
end
function freezeAnimationAtPercent(animationTrack, percentagePosition)
if not animationTrack.IsPlaying then
-- Play the animation if it is not playing
animationTrack:Play()
end
-- Set the speed to 0 to freeze the animation
animationTrack:AdjustSpeed(0)
-- Jump to the desired TimePosition
animationTrack.TimePosition = (percentagePosition / 100) * animationTrack.Length
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
freezeAnimationAtTime(animationTrack, 0.5)
freezeAnimationAtPercent(animationTrack, 50)

WeightCurrent

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Khi trọng lượng được đặt trong một AnimationTrack nó không thay đổi ngay lập tức nhưng di chuyển từ WeightCurrent đến AnimationTrack.WeightTarget . Thời gian mà nó mất để làm điều này được xác định bởi thời gian màu tranh giữa khi hoạt họa đ

WeightCurrent có thể được kiểm tra chống lại AnimationTrack.WeightTarget để xem có phù hợp với trọng lượng mong muốn không. Lưu ý rằng các giá trị này không nên được kiểm tra cho sự bình đồng với oper作tor ==, vì cả hai giá trị này đều là những ng

Hệ thống đánh giá trọng tài được sử dụng để xác định how AnimationTracks playing at the same priority are blended

Mẫu mã

WeightCurrent and WeightTarget

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
while not localPlayer.Character do
task.wait()
end
local character = localPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animation1 = Instance.new("Animation")
animation1.AnimationId = "rbxassetid://507770453"
local animation2 = Instance.new("Animation")
animation2.AnimationId = "rbxassetid://507771019"
task.wait(3) -- arbitrary wait time to allow the character to fall into place
local animationTrack1 = animator:LoadAnimation(animation1)
local animationTrack2 = animator:LoadAnimation(animation2)
animationTrack1.Priority = Enum.AnimationPriority.Movement
animationTrack2.Priority = Enum.AnimationPriority.Action
animationTrack1:Play(0.1, 5, 1)
animationTrack2:Play(10, 3, 1)
local done = false
while not done and task.wait(0.1) do
if math.abs(animationTrack2.WeightCurrent - animationTrack2.WeightTarget) < 0.001 then
print("got there")
done = true
end
end

WeightTarget

Chỉ Đọc
Không Sao Chép
Đọc Song Song

AnimationTrack.WeightTarget là một trong những giá trị đọc chỉ định để cung cấp trọng lượng hiệ

WeightCurrent có thể được kiểm tra chống lại AnimationTrack.WeightTarget để xem có phù hợp với trọng lượng mong muốn không. Lưu ý rằng các giá trị này không nên được kiểm tra cho sự bình đồng với oper作tor ==, vì cả hai giá trị này đều là những ng

Hệ thống đánh giá trọng tài được sử dụng để xác định how AnimationTracks playing at the same priority are blended

Mẫu mã

WeightCurrent and WeightTarget

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
while not localPlayer.Character do
task.wait()
end
local character = localPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animation1 = Instance.new("Animation")
animation1.AnimationId = "rbxassetid://507770453"
local animation2 = Instance.new("Animation")
animation2.AnimationId = "rbxassetid://507771019"
task.wait(3) -- arbitrary wait time to allow the character to fall into place
local animationTrack1 = animator:LoadAnimation(animation1)
local animationTrack2 = animator:LoadAnimation(animation2)
animationTrack1.Priority = Enum.AnimationPriority.Movement
animationTrack2.Priority = Enum.AnimationPriority.Action
animationTrack1:Play(0.1, 5, 1)
animationTrack2:Play(10, 3, 1)
local done = false
while not done and task.wait(0.1) do
if math.abs(animationTrack2.WeightCurrent - animationTrack2.WeightTarget) < 0.001 then
print("got there")
done = true
end
end

Phương Pháp

AdjustSpeed

void

Hàm này thay đổi AnimationTrack.Speed của một hiệu ứng động. Một giá trị dương cho tốc độ chơi hoạt họa về phía trước, một giá trị âm để chơi hoạt họa về phía sau và 0 đình chỉ nó.

Tốc độ ban đầu của một AnimationTrack được đặt là một tham số trong AnimationTrack:Play() . Tuy nhiên, tốc độ của một đường dẫn có thể được thay đổi trong khi chơi, bằng cách sử dụng AdjustSpeed. Khi tốc độ là bằng nhau 1, số thời

Khi được điều chỉnh, thời gian thực tế mà nó sẽ mất để chơi một bản được tính bằng cách chia dài bằng tốc độ. Tốc độ là một lượng không đo lường.

Tốc độ có thể được sử dụng để kết nối chiều dài của một hoạt họa với các sự kiện gameplay khác nhau (ví dụ như kết nối lại một kĩ năng) mà không cần phải tải các biến thể khác nhau của cùng một hiệu ứng động.

Tham Số

speed: number

Tốc độ phát lại hoạt họa được thay đổi.

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

Lợi Nhuận

void

Mẫu mã

Playing Animation for a Specific Duration

local function playAnimationForDuration(animationTrack, duration)
local speed = animationTrack.Length / duration
animationTrack:Play()
animationTrack:AdjustSpeed(speed)
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765000"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playAnimationForDuration(animationTrack, 3)
Animation Speed

local ContentProvider = game:GetService("ContentProvider")
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
while not localPlayer.Character do
task.wait()
end
local character = localPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507770453"
ContentProvider:PreloadAsync({ animation })
local animationTrack = animator:LoadAnimation(animation)
local normalSpeedTime = animationTrack.Length / animationTrack.Speed
animationTrack:AdjustSpeed(3)
local fastSpeedTime = animationTrack.Length / animationTrack.Speed
print("At normal speed the animation will play for", normalSpeedTime, "seconds")
print("At 3x speed the animation will play for", fastSpeedTime, "seconds")

AdjustWeight

void

Đổi trọng lượng của một hiệu ứng động, với tham số fadeTime tùy chọn xác định thời gian bao lâu để đạt được AnimationTrack.WeightCurrent để đạt được AnimationTrack.WeightTarget .

Khi trọng lượng được đặt trong một AnimationTrack nó không thay đổi ngay lập tức nhưng di chuyển từ WeightCurrent đến AnimationTrack.WeightTarget . Thời gian mà nó mất để làm điều này được xác định bởi thời gian màu tranh giữa khi hoạt họa đ

WeightCurrent có thể được kiểm tra chống lại AnimationTrack.WeightTarget để xem có phù hợp với trọng lượng mong muốn không. Lưu ý rằng các giá trị này không nên được kiểm tra cho sự bình đồng với oper作tor ==, vì cả hai giá trị này đều là những ng

Hệ thống đánh giá trọng tài được sử dụng để xác định cách Class.AnimationTrack|Animation

Tham Số

weight: number

Cân nặng hoạt họa được thay đổi để.

Giá Trị Mặc Định: 1
fadeTime: number

Thời gian bền vững của hoạt họa sẽ biến mất giữa các cân nặng cũ và mới cho.

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

Lợi Nhuận

void

Mẫu mã

AnimationTrack Change Weight

local function changeWeight(animationTrack, weight, fadeTime)
animationTrack:AdjustWeight(weight, fadeTime)
local startTime = tick()
while math.abs(animationTrack.WeightCurrent - weight) > 0.001 do
task.wait()
end
print("Time taken to change weight " .. tostring(tick() - startTime))
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
changeWeight(animationTrack, 0.6, 1)

GetMarkerReachedSignal

Hàm này trả lại một event tương tự như sự kiện AnimationTrack.KeyframeReached, ngoại trừ nó chỉ được kích hoạt khi một KeyframeMarker được đánh trúng trong một 1> Class.Animation|

Để tìm hiểu thêm về việc sử dụng chức năng này, xem Sự kiện Hoạt Hình trong bài Chỉnh Sửa Hoạt Hình .

Thêm về Keyframes

Keyframe tên có thể được thiết lập trong Roblox Editor Animation khi tạo hoặc chỉnh sửa một hoạt hiệu ứng động. Họ không thể, tuy nhiên, được thiết lập bởi một Script trên một hoạt họa hiện có trước khi chơi nó.

Keyframe tên không cần phải độc nhất. Ví dụ, nếu một Animation có ba khung khóa khí tên "EmissionParticles", sự kiện kết nối này sẽ bắt lửa mỗi khi một trong những khung khí này được đạt được.

Xem thêm:

Tham Số

name: string

Tên của dấu hiệu KeyFrameMarker đang được tạo cho.


Lợi Nhuận

Tín hiệu được tạo và bắn khi hoạt họa đạt đến KeyFrameMarker đã tạo.

Mẫu mã

Listening to Keyframe Markers

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)

GetTimeOfKeyframe

Trả về vị trí thời gian của Class.Keyframe đầu tiên trong danh sách được cho tên đó trong một Class.AnimationTrack . Nếu có nhiều Class.Keyframe|Keyframes share cùng một tên, nó sẽ trả về Class.AnimationTrack đầu tiên trong hoạt hiệu ứng động.

Hàm này sẽ trả lại một lỗi nếu nó được sử dụng với một tên khung chính xác (nhưng không tồn tại ví dụ) hoặc nếu Animation nền tảng đã không tải. Để đối phó với điều này, hãy đảm bảo tất cả các tên khung đều được sử dụng

Để kiểm tra có phải hoạt họa đã được tải, hãy xác nhận rằng AnimationTrack.Length lớn hơn 0.

Tham Số

keyframeName: string

Tên được liên kết với Keyframe để tìm.


Lợi Nhuận

Thời gian, trong giây, Keyframe xảy ra ở tốc độ phát chuẩn bình thường.

Mẫu mã

Jump To Keyframe

local function jumpToKeyframe(animationTrack, keyframeName)
local timePosition = animationTrack:GetTimeOfKeyframe(keyframeName)
if not animationTrack.IsPlaying then
animationTrack:Play()
end
animationTrack.TimePosition = timePosition
end
local ANIMATION_ID = 0
local KEYFRAME_NAME = "Test"
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://" .. ANIMATION_ID
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
jumpToKeyframe(animationTrack, KEYFRAME_NAME)

Play

void

Khi AnimationTrack:Play() được gọi, hoạt họa của đường đua sẽ bắt đầu chơi và trọng lượng của hoạt họa sẽ tăng từ 0 đến trọng lượng được quy định (mặc định là 1) trong thời gian mờ dần (mặc định là 0.1).

Tốc độ mà AnimationTrack sẽ chơi được xác định bởi cơ sở dữ liệu tốc độ (mặc định là 1). Khi tốc độ bằng nhau với 1, số giây mà con đường sẽ hoàn thành bằng giá trị AnimationTrack.Length của con đ

Cân nặng và tốc độ hoạt họa cũng có thể được thay đổi sau khi hoạt họa bắt đầu chơi bằng cách sử dụng các phương pháp AnimationTrack:AdjustWeight()AnimationTrack:AdjustSpeed().

Nếu nhà phát triển muốn bắt đầu hoạt họa ở một điểm cụ thể bằng cách sử dụng AnimationTrack.TimePosition , thì quan trọng là hoạt họa đó được chơi trước khi điều này được thực hiện.

Tham Số

fadeTime: number

Thời gian bền của hoạt hiệu ứng độngnên biến mất trong.

Giá Trị Mặc Định: 0.100000001
weight: number

Cân nặng mà hoạt họa được chơi tại.

Giá Trị Mặc Định: 1
speed: number

Tốc độ phát lại của hoạt hiệu ứng động.

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

Lợi Nhuận

void

Mẫu mã

Playing Animation for a Specific Duration

local function playAnimationForDuration(animationTrack, duration)
local speed = animationTrack.Length / duration
animationTrack:Play()
animationTrack:AdjustSpeed(speed)
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765000"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playAnimationForDuration(animationTrack, 3)
Freeze Animation at Position

function freezeAnimationAtTime(animationTrack, timePosition)
if not animationTrack.IsPlaying then
-- Play the animation if it is not playing
animationTrack:Play()
end
-- Set the speed to 0 to freeze the animation
animationTrack:AdjustSpeed(0)
-- Jump to the desired TimePosition
animationTrack.TimePosition = timePosition
end
function freezeAnimationAtPercent(animationTrack, percentagePosition)
if not animationTrack.IsPlaying then
-- Play the animation if it is not playing
animationTrack:Play()
end
-- Set the speed to 0 to freeze the animation
animationTrack:AdjustSpeed(0)
-- Jump to the desired TimePosition
animationTrack.TimePosition = (percentagePosition / 100) * animationTrack.Length
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
freezeAnimationAtTime(animationTrack, 0.5)
freezeAnimationAtPercent(animationTrack, 50)

Stop

void

Ngăn chặn AnimationTrack . Sau khi gọi playback của AnimationTrack sẽ dừng lại và trọng lượng của hoạt họa sẽ di chuyển đến zero trong một thời gian được xác định bởi thời gian mờ dần bằng cách sử dụng tham số fadeTime bắt buộc.

Ví dụ, nếu Stop được gọi với một fadeTime của 2 giây, nó sẽ mất hai giây để trọng lượng của Class.AnimationTrack đạt đến zero và các hiệu ứng của nó kết thúc hoàn toàn. Lưu ý rằng điều này sẽ được xảy ra bất kể trọng lượng ban đầu của hoạt hiệu ứng động.

Không được khuyến nghị sử dụng một thời gian mờ dần của 0 giây để cố gắng vượt qua hiệu ứng này và kết thúc hoạt họa ngay lập tức như hiện tại, này gây ra các đối tượng AnimationTrack hiện tại để đóng băng.

Tham Số

fadeTime: number

Thời gian, trong giây, cho đếm trọng lượng hoạt họa sẽ biến mất.

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

Lợi Nhuận

void

Mẫu mã

AnimationTrack Stop

local function fadeOut(animationTrack, fadeTime)
animationTrack:Stop(fadeTime)
local startTime = tick()
while animationTrack.WeightCurrent > 0 do
task.wait()
end
local timeTaken = tick() - startTime
print("Time taken for weight to reset: " .. tostring(timeTaken))
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
fadeOut(animationTrack, 1)

Sự Kiện

DidLoop

Sự kiện này bắt đầu mỗi khi một vòng lặp AnimationTrack hoàn tất một vòng lặp, trong cập nhật tiếp theo.

Hiện tại nó cũng có thể bắn ở cuối chính xác của một bản đồ hoạt họa không lặp nhưng hành vi này không nên được tin cậy.


Mẫu mã

Play AnimationTrack for a Number of Loops

local function playForNumberLoops(animationTrack, number)
animationTrack.Looped = true
animationTrack:Play()
local numberOfLoops = 0
local connection = nil
connection = animationTrack.DidLoop:Connect(function()
numberOfLoops = numberOfLoops + 1
print("loop: ", numberOfLoops)
if numberOfLoops >= number then
animationTrack:Stop()
connection:Disconnect() -- it's important to disconnect connections when they are no longer needed
end
end)
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
playForNumberLoops(animationTrack, 5)

Ended

Lửa khi AnimationTrack đã hoàn toàn xong việc di chuyển bất cứ thứ gì trên thế giới. Hoạt họa đã kết thúc, "fade out" đã hoàn thành, và chủ đề đã ở trong tư thế trung tín.

Bạn có thể sử dụng nó để thực hiện hành động khi đường dẫn hoạt họa của chủ đề được trở lại trong tư thế trung tính mà không bị ảnh hưởng bởi AnimationTrack hoặc để làm sạch AnimationTrack . hoặc bất kỳ kết nối liên quan nào.


Mẫu mã

AnimationTrack Ended

local InsertService = game:GetService("InsertService")
local Players = game:GetService("Players")
-- Create an NPC model to animate.
local npcModel = Players:CreateHumanoidModelFromUserId(129687796)
npcModel.Name = "JoeNPC"
npcModel.Parent = workspace
npcModel:MoveTo(Vector3.new(0, 15, 4))
local humanoid = npcModel:WaitForChild("Humanoid")
-- Load an animation.
local animationModel = InsertService:LoadAsset(2510238627)
local animation = animationModel:FindFirstChildWhichIsA("Animation", true)
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
-- Connect to Stopped event. This fires when animation stops of
-- it's own accord, or we explicitly call Stop.
animationTrack.Stopped:Connect(function()
print("Animation stopped")
end)
-- Connect to Ended event. This fires when when animation is completely
-- finished affecting the world. In this case it will fire 3 seconds
-- after we call animationTrack:Stop because we pass in a 3
-- second fadeOut.
animationTrack.Ended:Connect(function()
print("Animation ended")
animationTrack:Destroy()
end)
-- Run, give it a bit to play, then stop.
print("Calling Play")
animationTrack:Play()
task.wait(10)
print("Calling Stop")
animationTrack:Stop(3)

KeyframeReached

Làm tròn mỗi lần chơi lại của một AnimationTrack đạt đến một Keyframe mà không có tên mặc định - "Keyframe."

Sự kiện này cho phép một nhà phát triển chạy mã tại các điểm đã định trong một hoạt họa (được đặt bởi tên Keyframe ) . Điều này cho phép các chức năng mặc định của hoạt họa Roblox được mở rộng bằng cách thêm

Keyframe tên không cần phải độc nhất. Ví dụ, nếu một hoạt họa có ba khung khóa không có tên "Particles" thì sự kiện KeyframeReached sẽ kích hoạt mỗi lần một trong những khung khóa này được đạt đến.

Keyframe tên có thể được thiết lập trong Roblox Animation Editor khi tạo hoặc chỉnh sửa một hiệu ứng động. Tuy nhiên, chúng không thể được thiết lập bởi một Script trên một hoạt họa hiện có trước khi chơi nó.

Tham Số

keyframeName: string

Tên của Class.Keyframe đã đạt được.


Stopped

Lửa ngay khi AnimationTrack kết thúc chơi.

Sự kiện này có một loạt các lần dùng. Nó có thể được sử dụng để chờ đợi cho đến khi một AnimationTrack đã dừng trước khi tiếp tục (ví dụ, nếu kết nối một loạt các hoạt họa để chơi sau nhau). Nó cũng có thể được s


Mẫu mã

AnimationTrack Stopped

local function yieldPlayAnimation(animationTrack, fadeTime, weight, speed)
animationTrack:Play(fadeTime, weight, speed)
animationTrack.Stopped:Wait()
print("Animation has stopped")
end
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
local humanoid = script.Parent:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local animationTrack = animator:LoadAnimation(animation)
yieldPlayAnimation(animationTrack, 1, 0.6, 1)