Membuat Clip Animasi pada Unity

Pembelajaran lengkap dari pembuatan game menggunakan Unity dapat anda pelajari lebih mendalam di Dicoding Academy Belajar Membangun Game 2D dan 3D dengan Unity :  https://www.dicoding.com/academies/39

Pada tutorial kali ini, kita akan membahas mengenai cara membuat animasi pada Unity. Animasi merupakan salah satu elemen penting dari game untuk memberikan efek visual yang enak dipandang mata dan Unity memiliki tools untuk membantu kita membuat animasi dengan mudah. Sebelum memulai, silahkan unduh sprite yang akan digunakan terlebih dahulu di link berikut ini.


Membuat Animasi Karakter

Ada dua cara untuk memberikan animasi pada objek berbentuk 2 Dimensi, yang pertama adalah menggunakan metode skeletal atau bone-based animation dan yang kedua adalah spriting. Pada metode skeletal, kita akan menggerakan tiap objek dari karakter yang ingin dianimasikan frame per frame. Sedangkan untuk metode spriting, animasi dilakukan dengan mengganti gambar untuk tiap frame. Untuk kali ini, kita akan belajar menggunakan metode skeleton.

Konsep pertama yang akan kita pelajari adalah Animator. Animator adalah game component yang berfungsi untuk mengendalikan state dari objek yang ingin kita animasikan. State ini contohnya dari state diam, jalan, melompat, dan seterusnya.

Cara untuk membuat animator adalah dengan klik “Add Component” pada tab inspector dari GameObject Karakter -> Miscelanous -> Animator. Kemudian klik kanan di tab project (di dalam folder animation agar lebih rapih. Bahkan kalau perlu buat sub folder lagi yakni character untuk memisahkan animasi tiap karakter) -> klik Create -> Animator Controller. Rename Animator Controller tersebut menjadi Karakter Controller.

07

Untuk bisa memodifikasi animator dan menambahkan clip animasi, kita perlu menambahkan tab baru. Tab tersebut bernama tab Animator dan tab Animation. Jika pada layar kita belum terdapat tab tersebut, kita bisa tambahkan dengan pada menu bar, klik Windows -> Animator dan klik Windows -> Animator. Maka akan muncul dua tab baru yang dapat digunakan untuk mengatur state animasi dan juga membuat clip animasi.

Jika kita klik di tab animator, kita akan melihat ada beberapa tampilan yang muncul di layar. Sistem animasi di dalam Unity biasa juga disebut dengan istilah Mecanim. Dengan sistem tersebut, kita bisa membuat animasi dengan work flow yang mudah.

Basis animasi dalam Unity adalah dengan konsep Animation Clips. Di dalam clip, terdapat informasi perubahan yang terjadi dari sebuah objek, bisa posisi, rotasi, dan properti lainnya. Sebuah clip bisa juga dianggap sebagai sebuah rekaman dari pergerakan objek. Kita bisa membuat clip sendiri di dalam Unity atau bisa juga export dari aplikasi lain seperti Max atau Maya atau dari penggunaany perangkat Motion Capture.


Membuat Animation Clip

Sekarang kita akan membuat animation clip. Ada banyak properti yang bisa kita manipulasi untuk membuat animasi yang menarik. Kita bisa menganimasikan posisi dari komponen objek yang ingin dianimasikan, bisa juga mengganti warna, volume suara, hingga menambah fungsi pada sebuah frame di dalam animasi.

Untuk memulai membuat animation clip, kita bisa memilih GameObject yang sudah terdapat Animator Controller di dalam component-nya. Setelah itu, kita bisa klik di tab animation untuk membuat clip baru. Klik create lalu beri nama clip yang ingin kita buat. Animation clip pertama yang akan kita buat adalah Idle.

08-add-animator-controller-to-object

Pada tab animation, kita akan melihat ada tombol add property yang bisa digunakan untuk menentukan komponen dari objek yang ingin diubah nilainya. Kemudian di sisi kanan terdapat sebuah time line yang merepresentasikan kondisi di tiap frame. Ketika masuk di mode ini, maka setiap perubahan yang kita lakukan pada GameObject karakter kita akan terekam. Bisa dilihat tombol play di bagian atas Unity menjadi berwarna merah.

Kita bisa klik titik 0:00 pada timeline dan menggerakkan sedikit objek body dari karakter kita untuk memasukan property transform position dari body. lalu kita bisa klik di detik berikutnya dari timeline untuk menambahkan keyframe baru. Di keyframe tersebut, kita bisa mengubah property dari objek, semisal kita pindahkan posisinya lebih ke atas. Jika kita tekan play di tab Animation, akan akan terlihat animasi badan dari karakter utama kita yang bergerak naik.

09-making-clip-1

Untuk membuat loop animasi yang lebih halus, kita berikan posisi akhir dari timeline animasi kita menjadi posisi awal dari objek kita pada frame 0:00. Untuk mengambil informasi seluruh property di awal frame cukup mudah, kita bisa langsung copy-paste dari frame paling awal ke frame paling akhir. Jika kita tekan play di tab animation, maka animasi badan naik turun akan lebih halus.

10-making-clip

Kita bisa membuat clip baru dengan menekan kotak yang bertuliskan clip yang saat ini kita sedang modifikasi (idle) lalu akan muncul menu drop down kemudian kita bisa klik Create New Clip.

12-create-new-clip

Sekarang kita akan coba membuat clip untuk berjalan yang diberi nama Walk. Proses pembuatan animation clip dari Walk pun mirip dengan clip Idle. Kita bisa menggerakan kaki dan berbagai objek lainnya untuk menjadikan karakter bergerak seperti sedang berjalan.

13-char-jalan

Selain animation clip Walk, kita juga perlu membuat animation clip untuk Jump dan juga Dead.

16-create-animation-clip-jump-and-dead


Mengatur Animasi Dengan Animation Controller

Dengan menggunakan animation controller, kita bisa mengatur berbagai clip animasi yang kita miliki untuk menggerakan karakter kita. Kita bisa mengelola animation clip yang kita miliki dengan menggunakan sejenis state machine atau bisa juga disebut flow chart yang secara visual mudah untuk digunakan.

Setiap animation clip yang kita buat, akan memiliki representasi dalam bentuk kotak bertuliskan nama clip yang kita buat. Ada dua kotak yang by default sudah ada yakni Entry dan juga Any States. Entry untuk menunjukan kondisi awal dari animasi ketika game dijalankan. Any States menunjukan bahwa transisi bisa dilakukan dalam state apapun.

Dalam animasi karakter utama, kita ingin kondisi default adalah karakter dalam state Idle. Dari state tersebut, karakter bisa melompat atau bisa berjalan. Dengan klik kanan di kotak state, kita bisa mengatur relasi antar state. Tanda panah menunjukan bahwa dari state awal bisa transisi ke state tujuan. Tanda panah dari state idle ke jump dan jump ke idle menunjukan bahwa kondisi transisi state berlaku dua arah. Dengan semakin banyak state, maka kita harus merancang flow yang lebih baik agar animasi bisa berjalan dengan baik. Lalu untuk state Dead, akan kita sambungkan transisinya dari Any State ke Dead.

14-state

screen-shot-2017-03-28-at-1-28-38-am

Lalu kita akan membuat parameter untuk penanda perpindahan dari satu state ke state lainnya. Dengan menekan tanda panah di tab parameter, maka akan muncul opsi Float, Int, Bool, dan Trigger. Float atau Int artinya untuk trigger dari satu state ke state lain, kita bisa melihat berdasarkan sebuah variabel misalkan speed dari karakter misalkan dari state idle akan pindah ke state walk apabila kecepatan player lebih besar dari 0.1. Yang paling sederhana adalah menggunakan parameter Trigger dimana kita hanya perlu memanggil trigger tersebut apabila ingin berganti state. Untuk itu kita akan buat parameter Jump, Walk, Idle, dan Dead.

screen-shot-2017-03-28-at-1-29-21-am

Paramater berupa Trigger tersebut akan kita masukan ke dalam transisi antar state. Kita hanya perlu memilih panah transisi dari state yang ingin diberikan Trigger. Sebagai contoh, pada klip Idle menuju Jump, kita bisa tambahkan condition berupa Trigger “Jump.”

screen-shot-2017-03-28-at-1-43-45-am

screen-shot-2017-03-28-at-1-44-19-am

Lalu dari state Walk menuju Jump juga bisa kita berikan Trigger “Jump.” Namun dari state Jump tidak memungkinkan untuk Walk sehingga kita tidak berikan garis transisi dari Jump ke Walk. Sedangkan dari Any States kita berikan condition berupa Trigger “Dead.”

18-set-trigger-state-animation-clip

Dengan kita menyelesaikan pengaturan relasi antar animation clip serta conditions untuk transisi dari satu state ke state lain, maka selesai sudah proses setup animasi dari karakter yang akan kita gunakan. Jika kita play proyek ini, maka defaultnya akan ditampilkan karakter dalam kondisi idle. Untuk bisa berpindah state, kita perlu mengirimkan trigger dari dalam kode game kita.

Yang perlu kita lakukan adalah membuat sebuah script yang kita beri nama Hero.cs ke dalam komponen dari Gameobject hero lalu kita isi scriptnya dengan kode di bawah ini.

Variabel _animator digunakan untuk menyimpan Animator yang sudah kita buat (Karakter Animator) yang di dalamnya terdapat clip clip animasi dari karakter. Lalu pada bagian Update, kita berikan trigger untuk memanggil clip yang ingin ditampilkan. Trigger ini nantinya dapat kita masukan ke dalam permainan sesuai dengan state di dalam game.

Masih banyak pembahasan menarik di Dicoding Academy Belajar Membangun Game 2D dan 3D dengan Unity yang belum kita bahas di sini, untuk pembahasan lebih jauh silakan kunjungi Academy Belajar Membangun Game 2D dan 3D dengan Unity (https://www.dicoding.com/academies/39). Jika ada pertanyaan, saran atau masukan jangan sungkan untuk menuliskannya di kolom komentar.

Selamat belajar, semoga bermanfaat, dan nantikan tutorial pembuatan game menggunakan Unity selanjutnya.

Belajar mengembangkan aplikasi atau game dengan kurikulum yang telah divalidasi langsung oleh industri dengan Dicoding Academy.

Belajar di Dicoding Sekarang →
Share this:

Leave a comment