AnimationTrack

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat

Mengontrol pemutaran animasi di AnimationController . Objek ini tidak dapat dibuat, tetapi dikembalikan oleh metode Animator:LoadAnimation().

Rangkuman

Properti

  • Hanya Baca
    Tidak Direplikasi
    Baca Paralel

    Objek Animation yang digunakan untuk membuat AnimationTrack ini.

  • Hanya Baca
    Tidak Direplikasi
    Baca Paralel

    Properti baca yang hanya mengembalikan benar saat AnimationTrack bermain.

  • Hanya Baca
    Tidak Direplikasi
    Baca Paralel

    Properti baca saja yang mengembalikan panjang (dalam detik) dari AnimationTrack . Ini akan mengembalikan 0 sampai animasi telah dimuat sepenuhnya dan dapat mungkin tidak tersedia segera.

  • Baca Paralel

    Tetapkan apakah animasi akan diulang setelah selesai. Jika diubah saat bermain hasil akan berlaku setelah animasi berakhir.

  • Tetapkan prioritas dari AnimationTrack . Tergantung pada apa yang ditetapkan ini, bermain banyak animasi sekaligus akan mencari kepada properti ini untuk menentukan mana Class.Keyframe``Class.Pose|Poses harus dimainkan satu sama lain.

  • Hanya Baca
    Tidak Direplikasi
    Baca Paralel

    Kecepatan sebuah AnimationTrack adalah propperti baca hanya yang memberikan kecepatan playback saat ini dari AnimationTrack . Ini memiliki nilai default 1. Saat kecepatan sama dengan 1, jumlah waktu yang dibutuhkan untuk menyelesaikan adalah sama dengan AnimationTrack.Length (dalam detik).

  • Tidak Direplikasi
    Baca Paralel

    Mengembalikan posisi tepat waktu dalam detik bahwa AnimationTrack melalui bermain animasi sumbernya. Dapat diatur untuk membuat lompat lintas ke momen tertentu dalam animasi.

  • Hanya Baca
    Tidak Direplikasi
    Baca Paralel

    Properti baca saja yang memberikan bobot saat ini dari AnimationTrack . Ini memiliki nilai default 1.

  • Hanya Baca
    Tidak Direplikasi
    Baca Paralel

    Properti baca saja yang memberikan bobot saat ini dari AnimationTrack .

Metode

Acara

Properti

Animation

Hanya Baca
Tidak Direplikasi
Baca Paralel

Objek Animation yang digunakan untuk membuat AnimationTrack ini. Untuk membuat AnimationTrack, Anda harus memuat objek 1>Class.Animation1> ke dalam 4>Class.AnimationContainer4> menggunakan metode 7>Class.Animator:LoadAnimation()7>.

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti baca yang hanya mengembalikan benar saat AnimationTrack bermain.

Properti ini dapat digunakan oleh pengembang untuk memeriksa apakah animasi sudah dimainkan sebelum memainkannya (karena itu akan menyebabkan mulai ulang). Jika pengembang ingin mendapatkan semua bermain AnimationTracks di pemain Humanoid atau Class.AnimationController

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti baca saja yang mengembalikan panjang (dalam detik) dari AnimationTrack . Ini akan mengembalikan 0 sampai animasi telah dimuat sepenuhnya dan dapat mungkin tidak tersedia segera.

Ketika AnimationTrack.Speed dari AnimationTrack sama dengan 1, animasi akan memakan waktu AnimationTrack.Length (dalam detik) untuk menyelesaikan.

Contoh Kode

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

Baca Paralel

Item ini menentukan apakah animasi akan diulang setelah selesai. Jika diubah saat bermain hasil akan berlaku setelah animasi berakhir.

Properti Looped untuk AnimationTrack default menyetel cara itu diatur di editor animasi. Namun, properti ini dapat diubah, memungkinkan kontrol atas AnimationTrack saat game berjalan. Looped juga dengan benar menangani animasi yang dimainkan terbalik (AnimationTrack.Speed negatif). Setelah seti

Item ini memungkinkan pengembang untuk memiliki varian berulang dan non-berulang dari animasi yang sama, tanpa perlu mengunggah dua versi ke Roblox.

Contoh Kode

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)
Baca Paralel

Properti ini menetapkan prioritas dari AnimationTrack . Tergantung pada apa yang ditetapkan ini, bermain banyak animasi sekaligus akan mencari kepada properti ini untuk menentukan mana Class.Keyframe``Class.Pose|Poses yang harus dimainkan satu sama lain.

Proprioritas propperti untuk AnimationTrack default menyetel dan diterbitkan dari Studio's Editor Animasi . Menggunakan Enum.AnimationPriority yang memiliki 7 tingkat prioritas:

  1. Tindakan 4 (prioritas tertinggi)
  2. Tindakan3
  3. Tindakan2
  4. Tindakan
  5. Gerakan
  6. Menganggur
  7. Inti (prioritas terendah)

Tetapkan prioritas animasi dengan benar, baik melalui editor atau melalui property ini, memungkinkan banyak animasi untuk dimainkan tanpa mereka bertabrakan. Di mana dua animasi bermain mengarahkan target untuk bergerak dengan cara yang sama, AnimationTrack dengan prioritas tertinggi akan tampilkan. Jika kedua animasi memiliki prioritas yang sama, maka bobot track akan

Item ini juga memungkinkan pengembang untuk memainkan animasi yang sama di prioritas yang berbeda, tanpa perlu mengunggah versi tambahan ke Roblox.

Speed

Hanya Baca
Tidak Direplikasi
Baca Paralel

Kecepatan sebuah AnimationTrack adalah propperti baca hanya yang memberikan kecepatan playback saat ini dari AnimationTrack . Ini memiliki nilai default 1. Saat kecepatan sama dengan 1, jumlah waktu yang dibutuhkan untuk menyelesaikan adalah sama dengan AnimationTrack.Length (dalam detik).

Jika kecepatan di sesuaikan, maka waktu yang sebenarnya yang dibutuhkan untuk memutar lagu dapat dihitung dengan membagi panjang dengan kecepatan. Kecepatan adalah jumlah yang tidak berubah.

Kecepatan dapat digunakan untuk menautkan panjang animasi ke berbagai acara game (seperti mengisi ulang kemampuan) tanpa harus mengunggah berbagai varian animasi yang sama.

Properti ini hanya dibaca, dan Anda dapat mengubahnya menggunakan AnimationTrack:AdjustSpeed() .

Contoh Kode

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

Tidak Direplikasi
Baca Paralel

Mengembalikan posisi tepat waktu dalam detik bahwa AnimationTrack melalui bermain animasi sumbernya. Dapat diatur untuk membuat lompat lintas ke momen tertentu dalam animasi.

TimePosition dapat diatur untuk pergi ke titik tertentu dalam animasi, tetapi AnimationTrack harus bermain untuk melakukannya. Ini juga dapat digunakan dalam kombinasi dengan AnimationTrack:AdjustSpeed() untuk mengefalkan animasi di titik yang diinginkan (dengan menetapkan kecepatan sebagai 0).

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Ketika berat ditetapkan dalam AnimationTrack itu tidak berubah secara instan tetapi pindah dari WeightCurrent ke AnimationTrack.WeightTarget . Waktu yang dibutuhkan untuk melakukan ini ditentukan oleh parameter fadeTime yang diberikan ketika animasi dimainkan, atau berat disesuaikan.

WeightCurrent dapat diperiksa terhadap AnimationTrack.WeightTarget untuk melihat apakah berat yang diinginkan telah dicapai. Catat bahwa nilai ini seharusnya tidak diperiksa untuk kesamaan dengan operator ==, karena kedua nilai ini adalah float. Untuk melihat apakah WeightCurrent mencapai target berat, disarankan untuk melihat apakah jarak antara kedua nilai ini cukup ke

Sistem penghitungan animasi digunakan untuk menentukan bagaimana AnimationTracks bermain dengan prioritas yang sama akan bercampur bersama. DefaultWeight adalah

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

AnimationTrack.WeightTarget adalah property baca-hanya yang memberikan bobot saat ini dari AnimationTrack . Ini memiliki nilai default 1

WeightCurrent dapat diperiksa terhadap AnimationTrack.WeightTarget untuk melihat apakah berat yang diinginkan telah dicapai. Catat bahwa nilai ini seharusnya tidak diperiksa untuk kesamaan dengan operator ==, karena kedua nilai ini adalah float. Untuk melihat apakah WeightCurrent mencapai target berat, disarankan untuk melihat apakah jarak antara kedua nilai ini cukup ke

Sistem penghitungan animasi digunakan untuk menentukan bagaimana AnimationTracks bermain dengan prioritas yang sama akan bercampur bersama. DefaultWeight adalah

Contoh Kode

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

Metode

AdjustSpeed

void

Fungsi ini mengubah AnimationTrack.Speed animasi. Sebuah nilai positif untuk kecepatan bermain animasi ke depan, dan negatif bermain ke belakang, dan 0 menyusunnya.

Kecepatan awal AnimasiDream ditetapkan sebagai parameter dalam AnimationTrack:Play(). Namun, kecepatan sebuah lagu dapat diubah selama playback, menggunakan AdjustSpeed. Saat kecepatan sama dengan 1, jumlah waktu yang dibutuhkan untuk menyelesaikan animasi sama dengan AnimationTrack.Length (dalam detik).

Ketika disesuaikan, maka waktu yang sebenarnya yang dibutuhkan untuk memutar lagu dapat dihitung dengan membagi panjangnya dengan kecepatan. Kecepatan adalah jumlah tak terbatas.

Kecepatan dapat digunakan untuk menautkan panjang animasi ke berbagai acara gameplay (seperti mengisi ulang kemampuan) tanpa harus mengunggah berbagai varian animasi yang sama.

Parameter

speed: number

Kecepatan putar animasi yang akan diubah.

Nilai Default: 1

Memberikan nilai

void

Contoh Kode

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

Mengubah bobot animasi, dengan parameter fadeTime opsional menentukan berapa lama waktu untuk AnimationTrack.WeightCurrent untuk mencapai AnimationTrack.WeightTarget .

Ketika berat ditetapkan dalam AnimationTrack itu tidak berubah secara instan tetapi pindah dari WeightCurrent ke AnimationTrack.WeightTarget . Waktu yang dibutuhkan untuk melakukan ini ditentukan oleh parameter fadeTime yang diberikan ketika animasi dimainkan, atau berat disesuaikan.

WeightCurrent dapat diperiksa terhadap AnimationTrack.WeightTarget untuk melihat apakah berat yang diinginkan telah dicapai. Catat bahwa nilai ini seharusnya tidak diperiksa untuk kesamaan dengan operator ==, karena kedua nilai ini adalah float. Untuk melihat apakah WeightCurrent mencapai target berat, disarankan untuk melihat apakah jarak antara kedua nilai ini cukup ke

Sistem penghitungan animasi digunakan untuk menentukan bagaimana AnimationTracks bermain dengan prioritas yang sama akan d

Parameter

weight: number

Berat animasi yang akan diubah.

Nilai Default: 1
fadeTime: number

Durasi waktu yang animasi akan memudar antara lama berat dan lama berat untuk.

Nilai Default: 0.100000001

Memberikan nilai

void

Contoh Kode

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

Fungsi ini mengembalikan event yang mirip dengan acara AnimationTrack.KeyframeReached , kecuali itu hanya diaktifkan ketika KeyframeMarker tertentu telah dihantam dalam 1> Class.Animation|animation . Perbedaan ini memungkinkan lebih banyak kontrol tent

Untuk mempelajari lebih lanjut tentang menggunakan fungsi ini, lihat Acara Animasi di artikel Edit Animasi.

Lebih Banyak Tentang Keyframes

Keyframe nama dapat ditetapkan di Roblox Editor Animasi ketika membuat atau mengedit animasi. Mereka tidak dapat, bagaimanapun, ditetapkan oleh Class.Script di animasi yang sudah ada sebelum memainkannya.

Keyframe nama tidak perlu unik. Misalnya, jika Animation memiliki tiga keyframe bernama "EmitParticles", acara yang terhubung oleh fungsi ini akan mengecualikan setiap kali salah satu dari keyframe ini diakses.

Lihat juga:

Parameter

name: string

Nama dari KeyFrameMarker kemungkinan signal dibuat untuk.


Memberikan nilai

Sinyal yang dibuat dan diaktifkan saat animasi mencapai KeyFrameMarker yang dibuat.

Contoh Kode

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

Mengembalikan posisi waktu dari Class.Keyframe pertama dari nama yang diberikan dalam Class.AnimationTrack . Jika beberapa Class.Keyframe|Keyframes berbagi nama yang sama, itu akan mengembalikan yang pertama dalam animasi.

Fungsi ini akan mengembalikan kesalahan jika digunakan dengan nama keyframe yang tidak valid (salah satu yang tidak ada untuk contoh) atau jika Animation pendekatan yang mendasar belum dimuat. Untuk menangani ini pastikan hanya nama keyframe yang benar yang digunakan dan animasi telah dimuat sebelum mengecek fungsi ini.

Untuk memeriksa apakah animasi telah dimuat, verifikasi bahwa AnimationTrack.Length lebih besar dari nol.

Parameter

keyframeName: string

Nama yang terkait dengan Keyframe untuk ditemukan.


Memberikan nilai

Waktu, dalam detik, Keyframe terjadi pada kecepatan pemutaran normal.

Contoh Kode

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

Ketika AnimationTrack:Play() dipanggil, animasi lintas akan dimainkan dan bobot animasi akan meningkat dari 0 ke bobot yang ditentukan (default menjadi 1) pada waktu pudar yang ditentukan (default menjadi 0.1).

Kecepatan yang dihasilkan oleh AnimationTrack adalah ditentukan oleh parameter kecepatan (default adalah 1). Saat kecepatan sama dengan 1, jumlah detik yang dibutuhkan untuk menyelesaikan jalur sama dengan kepemilikan properti AnimationTrack.Length jalur. Misalnya, kecepatan 2 akan menyebabkan jalur berputar du

Animasi juga dapat diubah setelah animasi dimulai bermain dengan menggunakan metode AnimationTrack:AdjustWeight() dan AnimationTrack:AdjustSpeed().

Jika pengembang ingin memulai animasi pada titik tertentu menggunakan AnimationTrack.TimePosition, penting animasi dimainkan sebelum ini dilakukan.

Parameter

fadeTime: number

Durasi waktu yang berat animasi harusnya memudar dalam.

Nilai Default: 0.100000001
weight: number

Berat animasi akan dimainkan di.

Nilai Default: 1
speed: number

Kecepatan putar animasi.

Nilai Default: 1

Memberikan nilai

void

Contoh Kode

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

Menghentikan AnimationTrack . Setelah panggilan playback dari AnimationTrack akan berhenti dan berat animasi akan bergerak menuju nol selama waktu yang ditentukan oleh parameter fadeTime opsional.

Misalnya, jika Stop di panggil dengan fadeTime 2 detik, akan memakan waktu dua detik untuk mencapai nol dan efeknya akhiri. Harap perhatikan ini akan menjadi kasus terlepas dari bobot animasi.

Tidak disarankan menggunakan waktu pudar 0 detik untuk mencoba mengalahkan efek ini dan mengakhiri animasi segera seperti saat ini, ini menyebabkan posisi AnimationTrack yang dibekukan.

Parameter

fadeTime: number

Waktu, dalam detik, untuk animasi berat yang akan dihapus.

Nilai Default: 0.100000001

Memberikan nilai

void

Contoh Kode

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)

Acara

DidLoop

Acara ini diaktifkan setiap kali AnimationTrack berulang selesai, pada updateberikutnya.

Saat ini, itu juga dapat menembak di akhir tepat dari lintas animasi non-loop tetapi perilaku ini seharusnya tidak diandalkan.


Contoh Kode

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

Dibakar saat AnimationTrack selesai pindahkan apa pun di dunia. Animasi telah selesai bermain, "fade out" selesai, dan subjek dalam posisi netral.

Anda dapat menggunakan ini untuk mengambil tindakan ketika subjek lintas animasi kembali dalam posisi netral yang tidak terpengaruh oleh AnimationTrack atau untuk membersihkan AnimationTrack . atau koneksi apa pun yang terkait.


Contoh Kode

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

Memutar setiap kali pemutaran AnimationTrack mencapai Keyframe yang tidak memiliki nama default - "Keyframe."

Acara ini memungkinkan seorang pengembang untuk mengeksekusan kode pada poin-poin tertentu dalam animasi (ditentukan oleh nama Keyframe ). Ini memungkinkan fungsionalitas default Roblox animasi untuk diperluas dengan menambahkan Sounds atau ParticleEffects di berbagai poin dalam animasi.

Keyframe nama tidak perlu unik. Misalnya, jika Animasi memiliki tiga keyframe bernama "Particles" KeyframeReached akan mengecualikan setiap kali salah satu dari keyframe ini diakses.

Keyframe nama dapat ditetapkan di Roblox Animation Editor saat membuat atau mengedit animasi. Mereka tidak dapat namun ditetapkan oleh Class.Script di animasi yang sudah ada sebelum dimainkan.

Parameter

keyframeName: string

Nama dari Keyframe đã di capai.


Stopped

Menembak setiap kali AnimationTrack selesai bermain.

Acara ini memiliki beberapa penggunaan. Ini dapat digunakan untuk menunggu sampai AnimationTrack telah berhenti sebelum melanjutkan (misalnya, jika menggabungkan serangkaian animasi untuk dimainkan setelah satu sama lain). Ini juga dapat digunakan untuk membersihkan setiap Instances yang dibuat selama playback animasi.


Contoh Kode

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)