Editor Grafik Animasi

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

Editor Grafik Animasi adalah alat berbasis node visual yang memberdayakan seniman teknis dan animator untuk membangun logika animasi yang kompleks langsung di dalam Roblox Studio. Dengan menyediakan antarmuka yang disederhanakan untuk membuat perilaku seperti pohon campuran, alat ini menghilangkan ketergantungan tradisional pada scripting manual untuk gerakan karakter.

Sistem ini bekerja bersamaan dengan alur kerja animasi yang sudah ada:

  • Editor Animasi: Terus gunakan Editor Animasi sebagai alat utama Anda untuk membuat klip individu dan menyempurnakan keyframe dan kurva.
  • Editor Grafik Animasi: Gunakan alat ini untuk mengambil klip tersebut dan mengorganisasikannya ke dalam pohon logika untuk menggerakkan perilaku permainan yang canggih.

Dirancang untuk meningkatkan kolaborasi, grafik visual memungkinkan pengembang untuk dengan cepat memeriksa, memperbaiki, dan memahami logika yang dibuat oleh animator. Sementara seniman fokus pada penyempurnaan gerakan interaktif, pengembang masih dapat mengakses node grafik animasi secara programatis untuk kontrol langsung atas animasi dan status yang dicampur.

Membangun grafik


Untuk memulai membangun logika untuk karakter yang dapat dianimasikan, akses editor Grafik Animasi melalui tab Avatar di pita Studio. Langkah-langkah berikut menunjukkan cara menginisialisasi rig dan membangun jaringan node dasar menggunakan animasi berjalan dan melambai default.

Untuk penjelasan lebih dalam tentang aplikasi praktis, Anda dapat menjelajahi File Referensi Grafik Animasi, yang berisi contoh implementasi dasar dan kompleks.

Untuk membuat grafik animasi Anda sendiri, mirip dengan contoh dasar yang diberikan dalam referensi, gunakan langkah-langkah berikut:

  1. Di Studio, tambahkan rig yang dapat dianimasikan dengan menavigasi ke tab Avatar dan memilih KarakterAvatar Saya.

    Tombol Karakter disorot di toolbar Studio.
  2. Buka Editor Grafik Animasi dengan menavigasi ke Editor Grafik di tab Avatar.

    Editor Grafik Animasi ditunjukkan di toolbar Studio.
  3. Pilih rig yang dapat dianimasikan di viewport 3D dan pilih Buat Grafik.

  4. Di Editor Grafik, klik kanan dan pilih Klip.

    Daftar node dalam menu klik kanan
  5. Di node Klip baru, atur ID Animasi.

    1. Pilih dropdown ID Animasi.

    2. Untuk mengirimkan ID aset animasi tertentu, klik Impor.

      Menunjukkan bidang pada modul impor animasi untuk menambahkan ID Animasi
    3. Di bidang ID Animasi, tambahkan animasi Berjalan default: 507777826.

    4. Pilih Impor.

  6. Tambahkan node klip lain dengan mengulangi langkah 4-5 menggunakan animasi Melambai default: 507770239.

    Dua node klip dengan ID Animasi yang terisi
  7. Di Editor Grafik, klik kanan dan pilih Tambahkan.

    Tambahkan node
  8. Sambungkan node Klip ke node Tambah dengan menyeret konektor output kanan atas ke port yang sesuai:

    1. Sambungkan node Klip dengan animasi Berjalan ke port Dasar.
    2. Sambungkan node Klip dengan animasi Melambai ke port Additive.
    Kedua node klip terhubung ke node tambah
  9. Dari node Tambah, sambungkan konektor output kanan atas ke port Pose Output Grafik.

    Semua node terhubung ke node output akhir
  10. OPSIONAL
    Tetapkan parameter ke variabel Kecepatan Anda.

    1. Klik dan seret port Kecepatan hijau ke area kosong. Node parameter baru ditampilkan.

      Mengklik dan menyeret konektor dari port Kecepatan node Klip.
    2. Di kiri atas editor grafik, gunakan panel parameter untuk dengan cepat memodifikasi parameter di node Anda. Anda juga dapat mengakses ini secara programatis.

      Panel parameter, node parameter, dan node klip menunjukkan nilai yang dibagikan.
  11. Uji animasi dengan menekan tombol putar.

    Ikon tombol putar untuk pratinjau animasi
  12. Cobalah menguji berbagai bobot, kecepatan, mode putar, dan animasi lainnya. Untuk informasi lebih lanjut tentang node individu, lihat Referensi Node.

Integrasi API

Membuat dan menerapkan Grafik Animasi mengikuti jalur animasi standar Roblox. Setelah memilih rig di Editor Grafik Animasi, aset AnimationGraphDefinition baru dibuat. Aset ini berfungsi sebagai wadah untuk node, koneksi, dan parameter Anda. Setelah logika Anda selesai, Anda menerbitkan grafik untuk menerima ID Aset standar.

Dalam skrip Anda, Anda berinteraksi dengan grafik ini dengan memuatnya ke dalam Animator seperti yang Anda lakukan dengan animasi tradisional. Untuk menggerakkan logika internal grafik, gunakan AnimationTrack:SetParameter() untuk mengirimkan nilai waktu nyata—seperti kecepatan gerakan atau boolean status—langsung ke variabel grafik.

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- ID Grafik Anda yang Diterbitkan
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- Pembaruan parameter dinamis melalui RunService
game:GetService("RunService").Stepped:Connect(function(_, dt)
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
animationTrack:SetParameter("humanoidSpeed", currentSpeed)
end)

Referensi Node

Setiap node grafik animasi berfungsi sebagai gerbang logika atau sumber data yang memproses data animasi sebelum mencapai rig karakter. Bagian ini memberikan rincian teknis tentang blok fungsional dalam Editor Grafik Animasi. Semua node saat ini menghasilkan pose animasi.

Setiap bagian node mencakup:

  • Definisi – Ringkasan tujuan node dan perannya dalam grafik.
  • Input – Aliran data yang masuk ke node. Beberapa input diwakili sebagai Input1, Input2, ..., InputN.
  • Properti Input – Pengaturan yang terkait langsung dengan input tertentu (input Idle yang ditugaskan ke Posisi 0.5 pada node Blend1D).
  • Data Acara – Acara yang dipancarkan atau dikonsumsi oleh node untuk memicu logika grafik internal atau skrip Luau eksternal. Perilaku ini mungkin berubah selama pengembangan beta.

Aturan acara global

Untuk semua node dan transisi, aturan berikut berlaku secara default:

  • Acara menyebar ke atas dari node sumber mereka melalui grafik. Setiap acara membawa bobot yang mewakili pengaruh sumbernya dalam campuran akhir. Jika bobot mencapai nol pada titik mana pun, acara tersebut dibungkam.
  • Node tanpa logika acara khusus meneruskan semua acara tanpa perubahan; node yang mencampur atau memilih antara input mungkin mengubah bobot atau memblokir acara dari input non-primer (lihat bagian Acara per-node).
  • Acara penanda yang mencapai bagian atas grafik dapat diamati melalui AnimationTrack:GetMarkerReachedSignal().

Klip

Node Klip

Referensi ke aset AnimationClip. Ini berfungsi sebagai node daun dalam grafik, menghasilkan data animasi mentah yang memberi makan ke node lain untuk pencampuran, pemilihan, atau modifikasi.

Input
  • Tidak ada
Properti
PropertiTipeDeskripsi
AnimationIdStringAset animasi yang akan diputar (misalnya rbxassetid://12345).
PlayModeEnum.AnimationNodePlayMode

Menentukan perilaku klip setelah mencapai akhir durasinya.

  • Loop (default): Secara otomatis memulai ulang dari awal setelah klip selesai.
  • PingPong: Memutar dari awal hingga akhir, kemudian segera memutar mundur dari akhir ke awal.
  • OnceAndHold: Memutar sekali dan mempertahankan pose akhir setelah selesai.
  • OnceAndReset: Memutar sekali dan kembali ke pose awal setelah selesai.
ReverseBooleanMengontrol arah pemutaran.
SpeedNumberPengali untuk laju pemutaran. 0.0 menghentikan grafik, 1.0 adalah kecepatan normal, dan 2.0 adalah kecepatan dua kali lipat.
TrimBooleanMenyalakan atau mematikan apakah durasi klip harus dipangkas.
TrimStartNumberTimestamp absolut (dalam detik) di mana pemutaran harus dimulai.
TrimEndNumberTimestamp absolut (dalam detik) di mana pemutaran harus dihentikan.
Data acara
  • Penanganan Acara: Tidak ada. Ini adalah node daun tanpa anak.
  • Emisi Acara: Membaca penanda khusus yang tertanam dalam klip animasi (misalnya, "Jejak Kaki", "Ayunan Senjata") dan memancarkannya sebagai acara bernama pada bingkai tepat di mana mereka terjadi. Jika klip dipangkas, hanya penanda dalam interval yang ditentukan [TrimStart, TrimEnd] (inklusif) yang dipancarkan.

Pilih

Node Pilih

Memilih antara sejumlah input melalui properti Pemilihan. Setiap kali pemilihan saat ini berubah, itu memicu transisi baru.

Input
  • Input1...InputN
Properti
PropertiTipeDeskripsi
SelectionStringID unik dari input yang akan dipilih, yang cocok dengan nama koneksi input (misalnya, "Berjalan").
Data acara
  • Penanganan Acara: Acara dari input yang saat ini dipilih diteruskan dengan bobot mereka tidak berubah.
  • Emisi Acara: Meneruskan semua acara dari input yang saat ini dipilih saja. Selama transisi, emisi acara mengikuti aturan acara global.

PrioritasPilih

Node Prioritas Pilih

Mengevaluasi daftar input yang terhubung dari atas ke bawah dan memutar yang pertama yang kondisinya dievaluasi sebagai benar. Ini memungkinkan pemilihan animasi hierarkis berdasarkan logika tertentu. Setiap kali pemilihan saat ini berubah, itu memicu transisi baru.

Input
  • Input1...InputN
    • Trigger (Boolean): Kondisi logis yang harus benar agar input ini diaktifkan. Dalam versi saat ini, ini terhubung ke parameter boolean.
    • TransitionOverrideInterruptible (Enum.AnimationNodeInterruptible): Menentukan aturan kapan animasi aktif ini dapat terganggu oleh input prioritas lebih tinggi. Mengganti pengaturan DefaultInterruptible tingkat node.
      • Selalu (default): Input dapat terganggu kapan saja oleh kondisi prioritas lebih tinggi.
      • Selesai: Animasi saat ini harus menyelesaikan pemutaran sebelum input prioritas lebih tinggi dapat mengambil alih.
      • Trigger: Input hanya dapat terganggu ketika InterruptibleTrigger diatur ke true.
    • InterruptibleTrigger (Boolean): Hanya tersedia jika TransitionOverrideInterruptible diatur ke Trigger. Input dapat terganggu ketika ekspresi spesifik ini benar.
Properti
PropertiTipeDeskripsi
DefaultInterruptibleEnum.AnimationNodeInterruptibleAturan interupsi dasar yang diterapkan pada semua input. Setiap input dapat mengganti ini dengan properti input TransitionOverrideInterruptible mereka sendiri.
Data acara
  • Penanganan Acara: Acara dari input yang saat ini dipilih diteruskan dengan bobot mereka tidak berubah.
  • Emisi Acara: Meneruskan semua acara dari input yang saat ini dipilih saja. Selama transisi, emisi acara mengikuti aturan acara global.

Urutan

Node Urutan

Mengaktifkan input yang terhubung dalam urutan tertentu berdasarkan kondisi tunggu yang ditentukan. Setiap kali pemilihan saat ini berubah, itu memicu transisi baru.

Input
  • Input1...InputN
    • TransitionOverrideWaitFor (Enum.AnimationNodeWaitFor): Menentukan kondisi yang harus dipenuhi sebelum urutan maju ke input berikutnya. Mengganti pengaturan DefaultWaitFor tingkat node.
      • Selesai (default): Maju ke input berikutnya ketika input saat ini menyelesaikan siklus. Perilaku kemajuan tergantung pada input yang terhubung:
        • Klip putar sekali: Maju ketika klip selesai.
        • Klip looping: Maju setelah satu loop penuh selesai.
        • Urutan dengan loop tak terbatas: Maju setelah satu siklus penuh melalui semua input.
        • Urutan dengan loop terbatas: Maju setelah semua loop selesai.
      • Trigger: Mengaktifkan input berikutnya ketika ekspresi logis khusus dievaluasi sebagai benar.
    • WaitForTrigger (Boolean): Hanya tersedia ketika TransitionOverrideWaitFor diatur ke Trigger.
Properti
PropertiTipeDeskripsi
LoopCountNumberJumlah kali untuk berputar melalui seluruh urutan. Nilai 0 (default) menunjukkan loop tak terbatas. Setelah hitungan tercapai, node menghormati pengaturan looping atau hold dari input terakhir.
DefaultWaitForEnum.AnimationNodeWaitForAturan tunggu dasar yang diterapkan pada semua input. Setiap input dapat mengganti ini dengan properti input TransitionOverrideWaitFor mereka sendiri.
Data acara
  • Penanganan Acara: Acara dari input yang saat ini aktif diteruskan dengan bobot mereka tidak berubah.
  • Emisi Acara: Meneruskan semua acara dari input yang saat ini aktif dalam urutan saja. Selama transisi, emisi acara mengikuti aturan acara global.

UrutanAcak

Node Urutan Acak

Memilih dan memutar salah satu input yang terhubung secara acak. Ketika animasi yang saat ini dipilih selesai, node secara acak memilih input lain untuk diputar. Tetapkan setiap input bobot tertentu untuk mempengaruhi probabilitasnya dipilih. Setiap kali pemilihan saat ini berubah, itu memicu transisi baru.

Input
  • Input1...InputN
    • Weight (Number): Menentukan probabilitas input ini dipilih; bobot yang lebih tinggi meningkatkan kemungkinan pemilihan.
Properti
PropertiTipeDeskripsi
PlayCountNumberJumlah input yang akan diputar node sebelum berhenti. Setelah tercapai, node menghormati pengaturan looping atau hold dari input terakhir. Default adalah 0 untuk tak terbatas
SeedNumberNilai yang digunakan untuk menginisialisasi Penghasil Angka Acak (RNG), memastikan urutan tetap konsisten di berbagai klien. Default adalah -1 untuk Seed acak.
Data acara
  • Penanganan Acara: Acara dari input yang saat ini aktif diteruskan dengan bobot mereka tidak berubah.
  • Emisi Acara: Meneruskan semua acara dari input yang saat ini aktif dalam urutan saja. Selama transisi, emisi acara mengikuti aturan acara global.

Lebih

Node Lebih

Menumpuk pose Lebih di atas pose Dasar. Ketika digabungkan dengan node Mask, sendi yang dimasker dalam pose Lebih sepenuhnya mengungkapkan pose Dasar, menciptakan efek overlay transparan.

Input
  • Dasar: Latar belakang atau lapisan bawah, biasanya animasi tubuh penuh seperti locomotion atau keadaan diam.
  • Lebih: Lapisan depan atau lapisan atas yang akan diterapkan di atas dasar, seperti gerakan tangan atau animasi penggunaan alat.
Properti
PropertiTipeDeskripsi
WeightNumberBobot campuran yang digunakan untuk mengurangi pose Lebih. Default adalah 1.0 (penggantian penuh) dan tidak dibatasi.
Data acara
  • Penanganan Acara:
    • Node mendengarkan acara dari kedua input Dasar dan Lebih.
  • Emisi Acara:
    • Acara Dasar: Semua acara dari input Dasar diteruskan tanpa modifikasi.
    • Acara Lebih: Acara dari input Lebih diskalakan oleh properti Bobot.
      • Pada Bobot 0.5, acara Lebih menyebar dengan bobot setengah
      • Pada Bobot 0, mereka dibungkam.

Tambah

Node Tambah

Menambahkan pose Additive ke pose Dasar, dikurangi oleh Weight tertentu (tidak dibatasi).

Input
  • Dasar: Pose animasi utama.
  • Additive: Pose yang akan dilapisi di atas dasar.
Properti
PropertiTipeDeskripsi
WeightNumberMenentukan kekuatan pose aditif yang diterapkan pada dasar.
Data acara
  • Penanganan Acara: Node mendengarkan acara dari kedua input Dasar dan Additive.
  • Emisi Acara: Semua acara dari kedua input Dasar dan Additive diteruskan tanpa modifikasi.

Kurangi

Node Kurangi

Mengubah animasi menjadi pose aditif dengan mengurangi pose dasar relatif dari pose target (AWeight×BA - \text{Weight} \times B). Weight mengubah skala pose B sebelum pengurangan (tidak dibatasi).

Input
  • A: Pose animasi target.
  • B: Pose dasar relatif yang akan dikurangi.
Properti
PropertiTipeDeskripsi
WeightNumberMengubah skala pose B sebelum dikurangi dari A. Pada 1.0 (default), B sepenuhnya dikurangi; pada 0.0, tidak ada pengurangan yang terjadi.
Data acara
  • Penanganan Acara: Node mendengarkan acara dari kedua Input A dan Input B.
  • Emisi Acara: Semua acara dari kedua Input A dan Input B diteruskan tanpa modifikasi.

Blend1D

Node Blend1D

Menginterpolasi secara linier antara dua pose animasi terdekat dengan posisi input saat ini pada satu sumbu.

Input
  • Input1...InputN
    • Position (Number): Koordinat spesifik untuk setiap input berikutnya pada sumbu campuran.
Properti
PropertiTipeDeskripsi
PositionNumberNilai aktif saat ini pada sumbu campuran yang digunakan untuk mengambil sampel animasi. Jika Position berada di luar rentang posisi input yang ditentukan, node memperkirakan menggunakan dua input terdekat.
PhaseSyncEnum.AnimationNodePhaseSync

Mengonfigurasi apakah waktu dari input anak harus disinkronkan.

  • Disinkronkan (default): Sinkronisasi normal. Node menghitung "durasi virtual" berdasarkan rata-rata tertimbang dari input aktif. Setiap langkah waktu node input disesuaikan sehingga semua anak berkumpul pada fase yang sama, menjaga animasi dengan panjang berbeda tetap sinkron.
  • Tidak disinkronkan: Pencampuran standar di mana klip maju secara independen dengan laju pemutaran mereka sendiri.
Data acara
  • Penanganan Acara: Node mendengarkan acara dari semua node anak yang saat ini aktif.
  • Emisi Acara: Hanya acara dari input aktif dengan bobot tertinggi yang menyebar, diskalakan oleh bobot campurannya. Acara dari input sekunder dibungkam.

Blend2D

Node Blend2D

Mencampur beberapa pose animasi bersama berdasarkan dua parameter input dalam ruang koordinat 2D. Ini menggeneralisasi node Blend1D untuk menangani skenario kompleks, seperti mencampur berdasarkan arah gerakan dan kecepatan secara bersamaan.

Input
  • Input1...InputN
    • X (Number): Koordinat X untuk setiap input berikutnya.
    • Y (Number): Koordinat Y untuk setiap input berikutnya.
Properti
PropertiTipeDeskripsi
InputModeEnum.AnimationNodeBlend2DInputMode

Menentukan sistem koordinat yang digunakan untuk mengevaluasi ruang campuran:

  • Kartesian (default): Menggunakan koordinat grid 2D standar. X dan Y mewakili posisi saat ini dalam ruang campuran.
  • Polar: Menggunakan nilai sudut dan magnitudo. X mewakili arah dalam radian, sementara Y mewakili magnitudo atau kekuatan gerakan. Arah lebih berat daripada magnitudo, sehingga input pada sudut yang serupa tetapi magnitudo berbeda lebih halus dalam pencampuran daripada input pada sudut yang berbeda.
XNumberKoordinat X saat ini (Kartesian) atau Arah dalam radian (Polar).
YNumberKoordinat Y saat ini (Kartesian) atau Magnitudo (Polar).
PhaseSyncEnum.AnimationNodePhaseSync

Mengonfigurasi apakah waktu dari input anak harus disinkronkan.

  • Disinkronkan (default): Sinkronisasi normal. Node menghitung "durasi virtual" berdasarkan rata-rata tertimbang dari input aktif. Setiap langkah waktu node input disesuaikan sehingga semua anak berkumpul pada fase yang sama, menjaga animasi dengan panjang berbeda tetap sinkron.
  • Tidak disinkronkan: Pencampuran standar di mana klip maju secara independen dengan laju pemutaran mereka sendiri.
Data acara
  • Penanganan Acara: Node mendengarkan acara dari semua node anak yang saat ini aktif.
  • Emisi Acara: Hanya acara dari input aktif dengan bobot tertinggi yang menyebar, diskalakan oleh bobot campurannya. Acara dari input sekunder dibungkam.

Masker

Node Masker

Menerapkan masker yang telah ditentukan sebelumnya ke Pose input. Sebuah masker didefinisikan oleh bobot per objek (misalnya, sendi) dalam hierarki rig, memungkinkan kontrol yang tepat atau "feathering" dari animasi.

Input
  • Pose: Pose animasi yang akan dimasker.
Properti
PropertiTipeDeskripsi
MaskObjectValue

Sebuah ObjectValue (dibuat sebagai anak langsung dari Definisi Node Animasi Mask) yang mendefinisikan bobot masker. Ini dapat berfungsi dengan dua cara:

  • Langsung: ObjectValue itu sendiri berisi atribut yang memetakan nama objek rig ke nilai bobot tertentu.
  • Dengan Referensi: ObjectValue merujuk ke Instance lain yang berisi atribut pemetaan. Ini memungkinkan penggunaan masker yang sama di berbagai node dalam grafik.

Saat membuat masker, Anda dapat memilih skema rig (HumanoidRigDescription atau Pemilih) untuk mengisi hierarki.

  • HumanoidRigDescription: Menstandarkan masker untuk karakter humanoid.
  • Pemilih: Memungkinkan pengguna untuk memilih rig tertentu di workspace untuk mengisi hierarki masker.
InvertBooleanKetika benar, menerapkan nilai bobot sebagai 1 - bobot. Ini memungkinkan penggunaan masker secara terbalik tanpa membuat aset baru.
Data acara
  • Penanganan Acara: Node mendengarkan semua acara dari input Pose.
  • Emisi Acara: Semua acara dari input Pose diteruskan tanpa modifikasi.

Kecepatan

Node Kecepatan

Mengubah laju pemutaran dari pose animasi yang masuk.

Input
  • Pose: Pose animasi atau subgraf yang kecepatan pemutarannya akan diubah.
Properti
PropertiTipeDeskripsi
SpeedNumberPengali yang diterapkan pada delta waktu (dtdt). 0.0 menghentikan grafik, 1.0 adalah kecepatan normal, dan 2.0 adalah kecepatan dua kali lipat.
Data acara
  • Penanganan Acara: Node mendengarkan acara dari input Pose.
  • Emisi Acara: Semua acara dari input Pose diteruskan tanpa modifikasi. Perhatikan bahwa meskipun kecepatan pemutaran visual berubah, waktu acara yang dipancarkan (seperti penanda) akan diskalakan sesuai dengan laju pemutaran yang dimodifikasi.

OutputGrafik

Node OutputGrafik

Mewakili pose akhir yang dievaluasi dari grafik. Node ini secara otomatis disertakan dalam semua grafik baru di Editor Grafik Animasi. Kehadirannya memastikan bahwa grafik selalu valid dan secara konsisten menghasilkan pose animasi.

Input
  • Pose: Data animasi yang diproses akhir untuk diterapkan pada rig.
Properti
  • Tidak ada
Data acara
  • Penanganan Acara: Node mendengarkan semua acara yang diteruskan melalui input yang terhubung terakhir.
  • Emisi Acara: Node ini berfungsi sebagai titik keluar untuk jalur animasi dan tidak memancarkan sinyal kembali ke grafik.

Transisi

Beberapa node dalam Grafik Animasi (seperti Pilih, Prioritas Pilih, Urutan, dan Urutan Acak) mengelola bagaimana animasi bercampur saat beralih antara input aktif. Untuk mencegah redundansi dalam referensi node, perilaku ini didefinisikan oleh kelompok properti transisi standar.

Transisi default

Transisi Default

Perilaku pencampuran dasar yang diterapkan pada node setiap kali beralih ke input aktif baru.

Override transisi

Properti tautan spesifik input yang menggantikan transisi default. Ini diterapkan ketika node bertransisi ke input tertentu tersebut.

Replikasi

Parameter grafik animasi dan status node internal direplikasi secara otomatis. Mode replikasi ditentukan oleh Workspace.AuthorityMode pada saat skrip Animate dibuat:

Skrip Animate Contoh

Untuk menghasilkan skrip contoh untuk menggerakkan grafik animasi untuk sebuah rig, gunakan Grafik -> Buat skrip Animate di Editor Grafik Animasi. Ini menghasilkan hierarki skrip yang ditempatkan di bawah StarterCharacterScripts (untuk karakter pemain) atau langsung pada rig (untuk NPC):

Animate (ModuleScript)
├── RunClient (LocalScript)
└── RunServer (Script, RunContext = Legacy)

Skrip Animate ModuleScript berisi logika pemuatan grafik. Skrip RunClient dan RunServer memanggilnya dalam konteks yang sesuai. Skrip mana yang disertakan tergantung pada kasus penggunaan:

Kasus PenggunaanSkrip yang DisertakanPerilaku
NPC (mode apa pun)RunServerServer memuat dan memutar grafik. Status direplikasi ke semua klien secara otomatis.
Pemain + Enum.AuthorityMode.ServerRunServer + RunClientServer menggerakkan grafik secara otoritatif. Klien yang memiliki mengaktifkan Enum.PredictionMode untuk prediksi lokal berbasis rollback.
Pemain + Enum.AuthorityMode.AutomaticRunClientKlien yang memiliki memuat dan memutar grafik. Parameter direplikasi secara otomatis ke server dan klien lainnya.

Atribut berikut disimpan pada skrip Animate dan mengonfigurasi perilakunya:

AtributTipeDeskripsi
GraphNameStringNama aset grafik animasi.
CharacterNameStringNama rig yang menjadi target grafik.
SourceAssetIdStringID Aset yang diterbitkan dari grafik. Digunakan saat runtime di game yang diterbitkan.
IsServerAuthorityBooleanApakah skrip dibuat dengan Workspace.AuthorityMode diatur ke Server. Menentukan strategi replikasi.
PreviewInStudioBooleanKetika benar (default), pengujian di Studio memuat grafik yang belum diterbitkan secara lokal sehingga Anda dapat iterasi tanpa menerbitkan. Atur ke false untuk menguji aset yang diterbitkan di Studio. Perhatikan bahwa ini saat ini tidak didukung dalam Enum.AuthorityMode.Server.

Replikasi parameter dalam mode Otomatis

Ketika Workspace.AuthorityMode adalah Otomatis:

  • klien yang memiliki menggerakkan grafik karakter pemain; server menggerakkan grafik NPC.
  • Parameter yang diatur melalui AnimationTrack:SetParameter() secara otomatis direplikasi ke rekan-rekan lainnya. Beberapa panggilan SetParameter dalam satu frame digabungkan (penulis terakhir menang).
  • Tidak ada scripting tambahan yang diperlukan untuk transportasi parameter — mesin menangani replikasi secara internal.
  • Klien lain melihat pembaruan parameter dengan sedikit penundaan (satu interval kirim ditambah latensi jaringan).

Otoritas server

Ketika Workspace.AuthorityMode adalah Server:

  • server berwenang untuk semua grafik — ia menjalankan simulasi dan mereplikasi status grafik penuh.
  • Apa yang direplikasi: Baik parameter maupun status node internal, termasuk waktu yang berlalu, pilihan saat ini, kemajuan transisi, hitungan loop, dan biji RNG. Ini memastikan semua klien melihat perilaku animasi yang identik.
  • Karakter pemain: Server menggerakkan grafik. Skrip RunClient klien yang memiliki secara otomatis mengaktifkan Enum.PredictionMode pada Animator, sehingga pemain lokal melihat animasi yang halus dan diprediksi yang disesuaikan dengan server pada ketidakcocokan.
  • NPC: Server menggerakkan grafik secara eksklusif; klien mengamati status yang direplikasi tanpa simulasi lokal.

Menggerakkan parameter

Gunakan AnimationTrack:SetParameter() dari setiap skrip yang menjalankan grafik:

  • NPC (mode apa pun): Panggil SetParameter dari RunServer (atau skrip server Script mana pun yang memiliki akses ke AnimationTrack).
  • Karakter pemain dalam Enum.AuthorityMode.Server: Panggil SetParameter dari baik RunServer dan RunClient. Server membutuhkan parameter untuk menggerakkan simulasi otoritatif, dan klien yang memiliki membutuhkan parameter yang sama untuk menggerakkan prediksi lokalnya.
  • Karakter pemain dalam Enum.AuthorityMode.Automatic: Panggil SetParameter dari RunClient (atau skrip lokal klien LocalScript mana pun yang memiliki akses ke AnimationTrack).

Skrip Animate yang dihasilkan menyertakan blok SetParameter yang dikomentari sebagai titik awal. Hapus komentar dan modifikasi untuk menggerakkan parameter dari status gameplay (kecepatan gerakan, status humanoid, arah input, dll.).

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.