Sebuah mesin status menggabungkan node animasi menjadi status yang dinamai, seperti Diam, Berjalan, Berlari, dan Melompat. Mesin ini memainkan status aktif dan bertransisi ke status lain ketika kondisi transisi dievaluasi menjadi true. Gunakan mesin status untuk mendefinisikan animasi mana yang dapat mengikuti satu sama lain tanpa menulis logika transisi dalam Luau.
Setiap status terhubung ke input pada mesin status. Sebuah status dapat berupa klip, node campuran, atau mesin status lainnya. Mesin status mengeluarkan pose animasi aktif atau campuran antara dua pose jika bertransisi, yang Anda hubungkan ke node berikutnya dalam grafik.
Prasyarat
Sebelum Anda membuat mesin status, kenali diri Anda dengan Editor Grafik Animasi, termasuk cara membukanya dan membuat grafik animasi.
Buat mesin status
Contoh berikut menggunakan tiga status dari JumpFallLandRunExample: Lokomosi, Jatuh, dan LandIdle. Karakter bergerak normal, beralih ke animasi jatuh saat berada di udara, dan memainkan animasi pendaratan sebelum kembali ke lokomosi. Langkah-langkah ini fokus pada mesin status; mulai dengan node animasi untuk lokomosi, jatuh, dan pendaratan.
Di Editor Grafik, klik kanan dan pilih Sisipkan Node ⟩ Mesin Status.

Pada node mesin status, klik Buka. Di tampilan Mesin Status, gunakan Buat Status untuk menambahkan tiga status bernama Lokomosi, Jatuh, dan LandIdle.

Klik Kembali ke Grafik dan hubungkan node animasi Anda ke input mesin status yang sesuai:
- Lokomosi: Hubungkan animasi lokomosi Anda. Grafik referensi menggunakan Blend1DNode bernama IdleRunBlend untuk mencampur animasi diam dan berlari berdasarkan Speed.
- Jatuh: Hubungkan klip jatuh ClipNode dan atur Mode Putar ke Enum.AnimationNodePlayMode|OnceAndHold, sehingga ia mempertahankan pose akhirnya sampai karakter mendarat.
- LandIdle: Hubungkan klip pendaratan dan atur Mode Putar ke Enum.AnimationNodePlayMode|OnceAndHold, sehingga ia dapat menyelesaikan dan bertransisi kembali ke lokomosi.
Hubungkan output mesin status ke input Pose dari Output Grafik.

Buka tampilan Mesin Status lagi dan seret transisi dari (Entry) ke Lokomosi. Mesin status mulai dalam status ini saat grafik dimulai.

Tambahkan parameter grafik Boolean bernama Grounded dan atur ke true. Parameter ini menunjukkan apakah karakter berada di tanah.
Tambahkan transisi berikut dengan menyeret koneksi dari status sumber ke status tujuan, lalu konfigurasikan setiap transisi:
- Lokomosi ke Jatuh: Atur Tunggu Untuk ke Ekspresi, Ekspresi ke not Grounded, dan Panjang ke 0.2 detik. Animasi jatuh dimulai ketika karakter meninggalkan tanah.
- Jatuh ke LandIdle: Atur Tunggu Untuk ke Ekspresi, Ekspresi ke Grounded, dan Panjang ke 0.1 detik. Animasi pendaratan dimulai ketika karakter menyentuh tanah.
- LandIdle ke Lokomosi: Atur Tunggu Untuk ke Selesai, Ketika ke Enum.AnimationNodeTransitionWhen|BeforeFinished, dan Panjang ke 0.2 detik. Mesin status mulai mencampur kembali ke lokomosi selama 0.2 detik terakhir dari animasi pendaratan.

Biarkan Kurva sebagai default (Linear) untuk ketiga transisi. Prabaca grafik dan ubah Grounded ke false untuk masuk ke Jatuh, lalu kembali ke true untuk memainkan LandIdle dan kembali ke Lokomosi.
Perbarui Grounded dari kode permainan Anda saat karakter meninggalkan dan menyentuh tanah. Jika campuran lokomosi Anda menggunakan Speed, perbarui parameter itu saat karakter bergerak. Untuk alur kerja parameter, lihat integrasi API.
Perluas mesin status dengan melompat dan status pendaratan tambahan untuk membuat grafik gerakan penuh. JumpFallLandRunExample mencakup lompatan terpisah untuk berdiri dan berlari, ditambah pendaratan yang berbeda berdasarkan gerakan dan kecepatan jatuh.
Properti mesin status
Properti node mesin status
- Input
- State1...StateN: Node animasi yang mendefinisikan setiap status. Nama status harus cocok dengan nama input ke node mesin status.
- Properti
Properti Jenis Deskripsi EntryState ObjectValue Sebuah ObjectValue yang Value mengarah ke AnimationNodeDefinition untuk status yang aktif saat grafik dimulai. - Data acara
- Penanganan Acara: Acara dari status aktif diteruskan dengan bobot mereka tidak berubah.
- Emisi Acara: Hanya meneruskan acara dari status aktif. Selama transisi, emisi acara mengikuti aturan acara global.
Properti transisi
Sebuah transisi memiliki satu atau lebih status sumber, sebuah status tujuan, dan sebuah kondisi. Ketika status aktif cocok dengan status sumber, mesin status memeriksa kondisi. Ia mencampur ke status tujuan ketika kondisi dievaluasi menjadi true.
Tunggu Untuk menentukan UI kondisi transisi. Pilih Ekspresi (Enum.AnimationNodeWaitFor|Trigger) untuk menampilkan kotak Ekspresi. Sebuah Ekspresi dapat merujuk parameter grafik boolean secara langsung, seperti ShouldJump, atau mengevaluasi sebuah kondisi, seperti Speed >= 12. Pilih Selesai (Enum.AnimationNodeWaitFor|Finished) untuk menampilkan dropdown Ketika.
Jika lebih dari satu transisi memiliki Ekspresi yang benar, mesin status mengevaluasi transisi dengan nilai Prioritas tertinggi terlebih dahulu. Ketika prioritas sama, ia memilih satu transisi secara acak. Tetapkan prioritas yang berbeda untuk transisi yang bersaing agar hasilnya dapat diprediksi.
| Properti | Jenis | Deskripsi |
|---|---|---|
| Dari | ObjectValue | Sebuah ObjectValue yang Value mengarah ke AnimationNodeDefinition untuk status yang dapat memulai transisi. Biarkan properti ini tidak diatur untuk transisi (Any). |
| Ke | ObjectValue | Sebuah ObjectValue yang Value mengarah ke AnimationNodeDefinition untuk status tujuan. |
| TungguUntuk | Enum.AnimationNodeWaitFor | Menentukan UI kondisi transisi mana yang muncul. Enum.AnimationNodeWaitFor|Trigger menampilkan kotak Ekspresi. Enum.AnimationNodeWaitFor|Finished menampilkan dropdown Ketika. |
| Ketika | Enum.AnimationNodeTransitionWhen | Tersedia ketika Tunggu Untuk adalah Selesai. Pilih Enum.AnimationNodeTransitionWhen|Finished untuk memulai setelah status sumber selesai, atau Enum.AnimationNodeTransitionWhen|BeforeFinished untuk memulai pencampuran satu Durasi sebelum status sumber selesai. |
| Ekspresi | String | Tersedia ketika Tunggu Untuk adalah Ekspresi. Sebuah parameter grafik boolean atau ekspresi yang, ketika dievaluasi menjadi true, memulai transisi. Lihat Ekspresi untuk apa yang didukung. |
| Prioritas | Number | Urutan yang digunakan ketika lebih dari satu Ekspresi benar. Nilai yang lebih tinggi memiliki prioritas. Nilai yang valid berkisar dari 0 hingga 65.535. |
| Durasi | Number | Waktu, dalam detik, untuk mencampur ke status tujuan. Defaultnya adalah 0.15 detik. |
| Kurva | Enum.PoseEasingStyle | Pemudahan yang digunakan selama pencampuran. Hanya Linear dan CubicV2 yang didukung. Defaultnya adalah Linear. |