Cara Membuat Kontrol Karakter Pada Unity Untuk Game Android dan Desktop

Cara Membuat Kontrol Karakter Pada Unity Untuk Game Android dan Desktop

Cara membuat kontrol karakter pada unity untuk game android dan desktop – Hai hai sobat, selamat datang di beelancah.com tutorial. Pada tutorial ini kita akan belajar membuat kontrol untuk menggerakan karakter 2D agar dapat berjalan dan melompat seperti game Super Mario.



Oh iya sobat, sesuai dengan judul. Nantinya kontrol yang telah kita buat ini dapat kita build dan dijalankan pada Android atau Desktop.

Jadi untuk kontrol Android nanti kita akan menggunakan beberapa button sebagai media input sedangkan untuk Desktop tentu kita akan menggunakan keyboard atau joystick sebagai media inputnya.

NOTE :
Untuk mengikuti tutorial ini, sobat harus paham dan mengerti dulu bagaimana membuat project baru, membuat script baru dan menambahkan atau mengedit script dan mengatur sprites game pada unity.

Kalau masih belum paham saya sarankan untuk membaca tutorial saya sebelumnya tentang basic unity.

Baiklah, sekarang kita mulai terlebih dahulu dengan membuat project baru sobat. Setelah itu kita import semua assets / sprites yang kita butuhkan seperti karakter, ground (pijakan) dan juga UI button yang akan kita gunakan sebagai media input di android. Untuk sprites yang saya gunakan dapat sobat download di bawah ini.

Cara Membuat Kontrol Karakter Pada Unity Untuk Game Android
Selanjutnya kalau sobat menggunakan sprites yang saya sediakan di atas, sobat harus mengatur dan slice sprite tersebut agar sprite dapat terpisah – pisah sesuai dengan yang kita butuhkan.

Drag and drop karakter yang akan kita gunakan sebagai Player ke dalam Scene / Hierarchy dan tambahkan beberapa komponen seperti Box Collider 2D dan Rigidbody 2D. 


Kemudian kita drag and drop juga sprite yang akan kita jadikan ground / sebagai pijakan bagi Player. Jangan lupa atur ukurannya agar sesuai dengan Player kita dan tambahkan juga komponen Box Collider 2D serta atur juga Layer Mask dari Default menjadi Ground.


Berikut ss dari unity saya setelah melakukan beberapa langkah di atas.

Screenshoot yang menunjukan keadaan Player
Screenshoot yang menunjukan keadaan Ground
Sekarang kita buat satu script baru agar Player dapat kita gerakkan dengan menggunakan Keyboard, disini saya berinama script tersebut dengan nama PlayerControlDesktop. 

Kemudia kita buka PlayerControlDesktop pada kode editor kita dan tambahkan beberapa baris kode program berikut :

NOTE : Saya harap sobat menulis ulang kode program ini, pokoknya jangan hanya di copy paste aja deh.


Oke sekarang akan saya jelaskan apa aja sih maksud dari kode program yang baru aja kita tulis tersebut.

Pertama kita mulai dari variabel – variabel berikut :


Variabel playerSpeed adalah variabel yang kita gunakan untuk mengatur kecepatan saat Player bergerak, semakin tinggi nilainya maka akan semakin cepat pula Player kita bergerak. Pada variabel ini hak aksesnya kita buat public agar nanti kita bisa mudah mengatur nilainya pada Inspector.

Untuk variabel playerDir (Player Direction) ini kita gunakan sebagai flag atau penanda yang menampung nilai yang di inputkan dari user, yaitu nilai dari input Horizontal.


Jadi ketika nilai dari variabel postif (+) maka player akan bergerak ke arah kanan sedangkan ketika variabel bernilai negatif (-) maka player akan bergerak ke arah kiri dan ketika playerDir nilainya nol (0) maka Player tidak akan bergerak / diam.

Perlu diingat ketika kita menggunakan Input.GetAxisRaw maka nilai dari inputan ini hanya terdiri dari -1 dan 1. Untuk lebih jelasnya tentang Inputan ini sobat bisa baca artikel saya sebelumnya tentang perbedaan Input.GetAxis dan Input.GetAxisRaw.

Sedangkan untuk variabel jumpForce kita gunakan untuk mengatur ketinggian Player kita saat melompat, semakin tinggi nilainya tentu Player akan dapat melompat dengan sangat tinggi.

Jadi variabel jumpForce ini kita gunakan pada fungsi PlayerJump() yang dapat sobat lihat di bawah. Pada fungsi tersebut diterangkan bahwa ketika kita menekan tombol Spasi dan varibel isGrounded bernilai true maka barulah Player dapat melompat lebih tinggi xD.


Loh memang isGrounded itu apa?  Kok Player hanya bisa melompat jika isGrounded bernilai true.

Jadi begini sobat, variabel isGrounded ini kita buat dengan tipe boolean untuk membatasi Player agar hanya dapat melompat ketika Player menginjak / di atas platform dengan layer Ground. Nanti akan saya jelaskan lagi lebih detailnya bagaimana isGrounded ini nilainya bisa berubah – ubah dari false ke true.

Tapi sebelum itu, kita lanjutkan lagi dengan variabel rb / Rigidbody2D


Nah sobat pastinya sobat sudah tahu dong, apa fungsi dari komponen Rigidbody2D itu? Yeps bener, komponen Rigidbody2D ini adalah komponen yang kita gunakan untuk mengontrol fisik dari Player, seperti adanya pengaruh gravitasi atau juga berat masa dari Player itu sendiri.

Setelah kita deklarasikan variabel tentu kita harus menginisialisasinya, disini saya inisialisasikan pada fungsi Start(), hal ini dilakukan agar script kita mudah mengenali komponen Rigidbody2D yang ada pada Player.


Variabel selanjutnya yaitu variabel facingRight


Variabel ini kita gunakan sebagai penanda bahwa ketika facingRight bernilai true maka Player kita akan menghadap ke kanan sedang jika false maka akan sebaliknya.

facingRight ini kita gunakan pada fungsi FlipPlayer, yaitu fungsi yang berisi untuk mengecek keadaan Player saat bergerak ke kanan dan menghadap ke kanan atau sebaliknya.


Jadi ketika kondisinya terpenuhi maka kita merubah nilai transform.localScale agar Player dapat mengahap ke kanan atau ke kiri.

Kita teruskan lagi dengan beberapa varibael terakhir yaitu :


Kalau variabel isGrounded sudah tahu dong digunakan untuk apa, jadi saya akan langsung aja ke varibel di bawahnya.

Variabel whatIsGround dengan tipe LayerMask ini kita gunakan mendeteksi game object manakah yang di beri layer dengan Ground. Sobat tentu masih ingetkan bahwa kita sudah mengatur layer game object yang kita jadikan sebagai pijakan menjadi Ground.

Tranform feetPos adalah variabel yang kita gunakan untuk menandakan posisi dari kaki Player kita atau lebih tepatnya sebagai object yang diumpamakan sebagai dasar dari kaki Player kita.

Yang terakhir yaitu variabel circleRadius yang digunakan sebagai radius dari kaki Player yang akan selalu dikalkulasikan dengan game object ground kita.

Terus selanjutnya dengan menggunakan fungsi OverLapCircle() yang ada pada class Physics2D kita tampung value ya di variabel isGrounded. 


Jadi variabel isGrounded ini nanti nilainya akan selalu true ketika Player kita berada di atas game object dengan layer yang bernama Ground.

Oke sekarang kita simpan script yang telah kita tulis, kemudian kita kembali kembali lagi di unity.
Nah kalau proses compile sudah selesai, lanjutkan dengan drag and drop script ke dalam Player.


Pada bagian What Is Ground, kita pilih Ground dan isikan nilai 0.1 pada bagian Circle Radiusnya.


Untuk bagian Feet Pos ya itukan masih kosong, jadi kita buat dulu game object kosong yang kita child kan pada Player dan juga kita posisikan tepat di bawah Player. Caranya kita klik kanan pada  Player lalu pilih Create Empty.


Maka pada Player kita akan bertambah satu game object baru. Kita ubah namanya dari GameObject menjadi FeetPos. Lalu drag and drop FeetPos tepat di bawah objek Player.


Terakhir sebelum kita coba Play untuk melihat hasilnya, kita drag and drop object FeetPos kita ke dalam Feet Pos yang ada di script yang telah kita letakkan di dalam Player.


Sekarang baru deh kita Play dan lihat hasilnya. Maka ketika kita menekan tombol A maka Player akan berjalan ke arah kiri sebaliknya ketika menekan tombol D maka Player akan berjalan ke arah kanan.

Sedangkan ketika kita menekan tombol Spasi maka Player akan melompat.
Jadi kurang lebih seperti itu caranya membuat kontrol karakter berjalan dan melompat untuk game Desktop.

Terus tanpa berlama – lama lagi kita lanjutkan dengan membuat kontrol karakter / Player untuk game Android atau Smartphone.

Cara membuat kontrol karakter untuk game Android

Tentu agar lebih mudahnya, kita buat lagi satu buah script dengan nama PlayerControlAndroid.
Buka script tersebut dan tuliskan beberapa baris kode program berikut :

Saya rasa saya tidak perlu menjelaskan secara detail dari script di atas, karena scriptnya hampir sama dengan script PlayerControlDesktop yang kita buat sebelumnya. Bedanya hanya terletak pada beberapa fungsi untuk mengatur value dari variabel playerDir.

Jangan lupa simpan script PlayerControllerAndroid dan kembali ke unity. Agar lebih mudah untuk di pahami bagaimana scriptnya bekerja, kita remove terlebih dahulu script PlayerControllerDesktop yang ada pada Player dan kita ganti dengan script PlayerControllerAndroid yang baru saja kita buat dan atur valuenya sama seperti sebelumnya.


Oke sekarang kita buat button untuk memanggil fungsi – fungsi yang telah kita buat agar Player dapat berjalan dan melompat.

Saya sarankan untuk sobat yang belum terlalu paham bagaimana caranya menambahkan komponen UI seperti button di unity sobat bisa menyimak tutorial sebelumnya tentang cara menambahkan komponen UI.

Pada tahapan selanjutnya ini saya buatkan langkah – langkahnya dalam bentuk video Karena saya rasa tutorialnya sudah cukup panjang kali lebar sobat (alesan)

Jadi sobat tinggal perhatikan dan praktekkan langkah – langkahnya berikut :



Saya rasa tutorial ini cukup sampai disini dulu, semoga apa tutorialnya dapat dipahami dan dipraktekkan dengan baik.

Juga jika sobat punya pendapat yang lain pada tutorial kali ini, yuk kita bahas lewat kolom komentar atau hubungi saya langsung juga enggak apa – apa. Saya welcome kok :D

Saya ucapkan terimakasih telah membaca dan jangan lupa untuk mempraktekkannya.

Karena lebih baik mempraktekkannya walaupun hanya satu kali daripada kita membacanya berulang – ulang sampai seribu kali. CMIIW

Subscribe to receive free email updates:

27 Responses to "Cara Membuat Kontrol Karakter Pada Unity Untuk Game Android dan Desktop"

  1. Terima kasih atas sharing informasinya. Berguna banget

    ReplyDelete
    Replies
    1. Oke, terimakasih juga udah mampir di blog sederhana ini :D

      Delete
  2. tmbol loncatnya gak bisa bro

    ReplyDelete
    Replies
    1. Kalau belum bisa, pertama coba dicek lagi discriptnya bro.. Apakah sudah benar? kalau sudah benar coba dicek semua komponen yang harus ditambahkan pada Player? yang ada di Inspector bro. Terus cek juga pijakan/groundnya itu tagnya sudah sama kayak yang discript atau belum? Terakhir, cek script yang untuk lompat udah dipanggil lewat buttonnya atau belum?

      Delete
    2. makasih bro sudah bisa,tapi cara agar kamera mengikutin object gimana bro

      Delete
    3. Cukup mudah itu kok bro, coba aja cari dulu tutorialnya di mbah google terus dicoba dulu deh. Kalau memang belum bisa, monggo tanyakan ke saya lagi bro dibagian mana yang belum bisa :D

      Delete
    4. saya pakai canvas semua bro mulai dr backgroundnya tp kamera gak mengikutin objectnya

      Delete
    5. Maksutnya bagaimana mas, kok pakai canvas semua ya? Udah coba googling tutorial tentang CameraFollow belum mas? Nanti konsepnya secara sederhana sama kok agar kameranya bisa ngikutin objek

      Delete
    6. backgroundnya pakai canvas iamge

      Delete
  3. gan script nya ngak kelihatan, bisa di link aja google drive gitu

    ReplyDelete
    Replies
    1. Coba direfresh browsernya dulu gan, scriptnya enggak muncul itu biasanya dikarenakan gagal load dari pastebin dot com atau pastebinnya memang lagi maintenance

      Delete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Dari Script diatas saya coba kok ga bisa Jump ya bro? Maju dan Mundur bisa tapi kalau Jump ga bisa?

    ReplyDelete
    Replies
    1. Cek komponen2 yang mendukung untuk jump ya gan, seperti layer mask, feetPost dan scriptnya juga. Pastikan semuanya sudah sesuai dengan yang ada di tutorial

      Delete
    2. loncatnya masih belum bisa juga nih gan :(

      Delete
    3. Coba diulang lagi aja tutorialnya gan, mungkin ada beberapa langkah yang terlewat

      Delete
  6. kak bisa buatkan tutorial buat game 2d sampai selesai 1 level juga ndk pp tapi mewakili semua aspek yang di butuhkan untuk pemula seperti ganti senjata, jump, transform bentuk dan sebagainya kak

    ReplyDelete
    Replies
    1. Wah dari dulu udah ada rencana sih mau buat tutorial kayak gitu, tapi enggak pernah sempet buatnya kak hehe, sorry karena belum bisa membantu. Saran saya sih coba cari2 tutorial yang diinginkan di youtube atau udemy dot com yang gratis an kak. Saya rasa sih, kalau cuman tutorial kayak gitu aja udah banyak kok tersebar disana

      Delete
  7. gan kok kalo aku lompat gk bisa berhenti

    ReplyDelete
    Replies
    1. Halo gan, maksutnya enggak bisa berhenti itu bagaimana ya? Sekali ditekan lompat langsung lompat gitu ya atau ketika ditekan lompat berulang-ulang karakternya akan lompat terus ke atas... kalau seperti itu coba diperiksa lagi pada bagian feetpost dan kondisi true or false variabel ground gan

      Delete
    2. gan kenapa kalo gk bisa lompat,soal nya saya gk bisa lompat,maaf pemula

      Delete
    3. Itu karena masih ada beberapa langkah yg terlewatkan gan, coba diulangi lagi aja tutorialnya. Kalau semuanya sudah dilakukan dengan benar dan teliti nanti bisa lompat kok

      Delete
  8. Gan kok saya ga bisa jalan? Yg bisa tombol D(maju doang)

    ReplyDelete
    Replies
    1. Ditutorial ini kan kita gunakan Input.GetAxisRaw("Horizontal") gan, jadi kalau tombol D ya bisa digunakan harusnya tombol A nya juga bisa gan. Jadi kalau tombol A ya enggak bisa, agan coba cek scriptnya dibagian kondisi (if else) gerak ke kanan atau ke kirinya gan, sudah benar atau belum value dan kondisinya. Terus kalau masih tetep enggak bisa, coba agan cek lagi di bagian menu Edit -> Project Setting -> Inputs lalu cek dibagian sumbu Horizontalnya gan

      Delete
  9. Terimakasih banyak ilmunya min, semoga sukses selalu

    ReplyDelete

Halo sobat, terimakasih sudah membaca dan jangan lupa Comment jika dirasa masih ada yang belum paham.