Pengantar Mesin Negara di Unity

Mesin negara adalah konsep dasar dalam pengembangan game, dan Unity menyediakan seperangkat alat canggih untuk mengimplementasikannya. Mesin negara adalah model komputasi yang terdiri dari sekumpulan keadaan, transisi antara keadaan tersebut, dan tindakan yang terkait dengan setiap keadaan atau transisi. Di Unity, sistem mesin status biasanya digunakan untuk mengontrol perilaku karakter game, mengelola animasi, menangani input pengguna, mengelola status UI, dan banyak lagi.

Apa itu Mesin Negara

Pada core, mesin status terdiri dari dua elemen kunci: status dan transisi.

Status mewakili kondisi atau perilaku tertentu yang dapat dialami suatu objek atau sistem pada waktu tertentu. Misalnya, dalam mesin status karakter permainan, mungkin terdapat status seperti diam, berjalan, berlari, melompat, atau menyerang. Setiap negara bagian mendefinisikan serangkaian tindakan atau perilaku yang terkait dengannya.

public enum CharacterState
{
    Idle,
    Walking,
    Running,
    Jumping,
    Attacking
}

public CharacterState currentState;

Transisi Mesin Negara

Transisi, di sisi lain, menggambarkan kondisi di mana mesin negara berpindah dari satu keadaan ke keadaan lainnya. Kondisi ini dapat dipicu oleh input pengguna, peristiwa tertentu yang terjadi dalam game, atau kriteria tertentu yang terpenuhi. Misalnya, transisi dari keadaan diam ke keadaan berjalan mungkin terpicu ketika pemain menekan tombol gerakan.

Pembuat animasi

Di Unity, fungsionalitas mesin status sering kali diimplementasikan menggunakan komponen Animator, yang menyediakan antarmuka untuk membuat dan mengelola status dan transisi. Pengontrol Animator memungkinkan pengembang menentukan klip animasi untuk setiap keadaan dan menentukan kondisi transisi, seperti nilai parameter atau peristiwa pemicu.

Mesin Negara di Unity

Jendela Animator Persatuan

Untuk menggunakan mesin status di Unity, ikuti langkah-langkah berikut:

Buat Pengontrol Animator

Aset Pengontrol Animator di Unity Editor

  • Aset ini bertindak sebagai container untuk mesin negara. Itu dapat dibuat dengan mengklik kanan di jendela Proyek, memilih "Create," dan memilih "Animator Controller."
Animator animator;

Negara Desain

  • Di dalam Pengontrol Animator, status dapat ditentukan yang mewakili perilaku atau kondisi berbeda. Setiap negara bagian dapat memiliki klip animasi terkait, variabel, atau parameter yang mengontrol perilaku negara bagian.
animator = GetComponent<Animator>();
animator.SetFloat("Speed", moveSpeed); // Set the "Speed" parameter to control animation speed

Definisikan Transisi

  • Tentukan kondisi di mana mesin negara bertransisi dari satu keadaan ke keadaan lainnya. Kondisi ini dapat didasarkan pada nilai parameter, peristiwa trigger, atau logika berbasis skrip.
animator.SetBool("IsJumping", true); // Set the "IsJumping" parameter to trigger the jumping animation

Menerapkan Tindakan

  • Lampirkan skrip ke objek game yang menangani tindakan yang terkait dengan setiap status atau transisi. Skrip ini dapat mengubah variabel, mengontrol animasi, melakukan tindakan gameplay, dan banyak lagi.
void Update()
{
    // Check for player input and transition to the appropriate state
    if (Input.GetKey(KeyCode.W))
    {
        currentState = CharacterState.Walking;
        animator.SetBool("IsWalking", true);
    }
    else if (Input.GetKey(KeyCode.Space))
    {
        currentState = CharacterState.Jumping;
        animator.SetBool("IsJumping", true);
    }
    else
    {
        // Default state
        currentState = CharacterState.Idle;
        animator.SetBool("IsWalking", false);
        animator.SetBool("IsJumping", false);
    }
}

Uji dan Ulangi

Mainkan game dan amati bagaimana mesin status bertransisi antar status berdasarkan kondisi yang ditentukan. Sesuaikan transisi, tindakan, dan parameter sesuai kebutuhan untuk mencapai perilaku yang diinginkan.

Kesimpulan

Mesin negara menyediakan pendekatan modular dan terorganisir untuk mengelola perilaku kompleks dalam game Unity. Dengan menentukan status, transisi, dan tindakan terkait, pengembang dapat menciptakan sistem dinamis dan responsif yang beradaptasi dengan masukan pemain, peristiwa game, dan kondisi lainnya. Baik seseorang membuat animasi karakter, perilaku AI, interaksi UI, atau sistem game lainnya, memahami dan memanfaatkan mesin status di Unity dapat sangat meningkatkan alur kerja pengembangan game seseorang.