Membuat Game 2D Sederhana dengan Unity (Part 2)

2222

Pada tutorial kedua ini kita akan menambahkan Player Controls pada objek Player yang telah kita tambahkan sebelumnya. Karena nantinya game yang akan kita buat adalah standalone (bukan mobile), maka basic control menggunakan KeyCode pada keyboard user.

Kali ini kita akan menggunakan Script, karenanya disarankan bagi Anda yang belum pernah berkenalan dengan dasar pemrograman disarankan untuk mempelajari konsep dasar penulisan program pada beberapa bahasa pemrograman umum, tapi tidak apa-apa, anda bisa mempelajarinya sambil mengikuti tutorial. Kali ini bahasa yang digunakan adalah Unity Script / Javascript. Struktur penulisannya hampir mirip dengan Javascript pada umumnya, namun Unity Script lebih spesifik kepada objek-objek API yang digunakan dalam developing di Unity.

Silahkan pilih objek Player yang telah kita tambahkan pada tutorial sebelumnya. Pada inspector pilih menu Add Component > Physics 2D > Box Collider 2D. Apa itu Collider ? Collider adalah semacam komponen yang membuat game objek mempunyai permukaan fisik. Ibaratnya game objek adalah sebuah tubuh kemudian dia mempunyai komponen transform, maka kita sebut tubuh tersebut mempunyai koordinat, dia juga mempunyai komponen Sprite Renderer maka kita juga sebut itu sebagai tubuh, lalu mempunyai collider maka tubuh mempunyai fisik. Mudahnya game objek tanpa collider seperti sebuah tubuh tanpa fisik, seperti penampakan hantu yang mempunyai bentuk, tapi dia bisa tembus tembok karena tidak mempunyai fisik. Got it ? Selengkapnya anda bisa melihat doc-nya di manual.

Pada gambar diatas Anda bisa lihat, garis hijau yang membungkus game objek tersebut dinamakan Collider. Game objek tidak terkapsulisasi dengan baik oleh collider, ini dikarenakan game objek tersebut mempunyai shadow atau ketika Assetnya dibuat memang dalam keadaan seperti itu, mempunyai alpha channel. Collider umumnya akan membungkus game objek tepat digaris tepi sebuah objek render, dalam hal ini Sprite Renderer. Maka yang terjadi adalah collider tidak pas berada diujung objek.

Atur value pada komponen Box Collider 2D, tepatnya pada bagian size. Sesuaikan hingga membuat objek tertutup dengan rapih.

Selanjutnya kita akan menambahkan script untuk membuat Player bisa bergerak. Umumnya dalam game Ping Pong player hanya bergerak 2 sisi, kanan-kiri atau atas-bawah. Karena Player yang kita buat dalam posisi vertical, maka player kita atur atas dan bawah. Untuk menambahkan script baru, silahkan tambahkan komponen Script Add Component > New Script. Jangan lupa pada bagian language pilih Java Script. Beri nama PlayerControls pada script tersebut kemudian hit enter.

Perhatikan inspector, kita telah mempunyai komponen baru bernama Player Controls. Untuk mengedit scriptnya double klik pada script tersebut.

Maka Unity akan membuka script editor Mono Develop yang berisi script standar seperti berikut :

Function Start() adalah sebuah fungsi yang dieksekusi ketika game pertama kali di play, sedangkan fungsi Update() adalah fungsi yang dieksekusi setiap kali game melakukan update frame (realtime).
Kita akan merubah script tersebut agar Player bisa digunakan. Maka untuk sementara script menjadi seperti berikut :

Kita mempunyai variable baru yaitu moveUp dan moveDown yang keduanya merupakan KeyCode. KeyCode adalah input yang dapat dibaca oleh Unity Player melalui keyboard. Tentang KeyCode Anda bisa melihat lebih detailnya di Unity Scripting. Kemudian kita juga mempunyai variable baru speed dengan tipe data float. Speed ini nantinya yang akan mengatur kecepatan gerak player. Selanjutnya kita juga memasukan kondisi if pada function Update. Ini berfungsi sebagai deteksi apakah user menekan KeyCode (tombol) tertentu pada keyboard.

if(Input.GetKey(moveUp)){//player keatas}

Maksudnya adalah ketika moveUp ditekan, maka do something. Dalam hal ini kita menggerakkan player ke atas yang akan kita assign eventnya nanti. Begitu juga dengan kondisi if yang lainnya, intinya event akan terjadi hanya bila script mendeteksi inputan tertentu.

Jika sudah, silahkan save kemudian kembali ke workspace. Anda bisa lihat sekarang kita mempunyai 3 variable baru : Move Up, Move Down, dan Speed. Move Up adalah variable KeyCode untuk menggerakkan player keatas, maka pilih KeyCode W atau tombol apapun sesuai keinginan Anda.

Selanjutnya kita akan menambahkan satu lagi komponen fisik, yaitu Rigidbody 2D. Kembali lagi ke analogi sebelumnya, jika tadi Collider membuat objek mempunyai permukaan fisik, maka Rigidbody adalah komponen penggerak untuk mengontrol fisik, mempunyai grafitasi misalnya. Selengkapnya Anda bisa membacanya di manual. Untuk menambahkannya pilih Add Component > Physics 2D > Rigidbody 2D. Kemudian buka kembali mono develop, kita akan merubah scriptnya sehingga player benar-benar bisa bergerak. Lihat pada bagian script berikut

if(Input.GetKey(moveUp)){//player keatas}

Pada bagian tersebut kita belum assign aksi apapun, sehingga ketika moveUp ditekan, tidak akan terjadi apa-apa pada objek. Maka tambahkan Script berikut :

rigidbody2D.velocity.y = speed;

Velocity bisa diartikan dengan kecepatan perpindahan pada sumbu tertentu. Karena Rigidbody yang kita pakai adalah dimensi dua, maka kemungkinannya hanya y atau x. Seperti yang telah kita bahas sebelumnya bahwa rigidbody berfungsi mengontrol fisik. Maka ketika code tersebut dimasukkan kedalam statement if tadi (moveUp), objek yang mempunyai rigidbody2D dimana script ini disimpan akan bergerak secara sumbu Y dengan kecepatan “speed” ketika user menekan KeyCode moveUp. Karena kita telah assign variable moveUp dengan tombol W pada inspector tadi, maka player akan bergerak keatas ketika tombol W pada keyboard ditekan.

rigidbody2D.velocity.y = speed * -1;

Hal yang sama juga kita terapkan pada kondisi moveDown, dimana ketika user menekan KeyCode S (moveDown) maka akan bergerak kebawah. Jika nilai speed positif, sudah tentu player akan bergerak ke bilik positif sumbu Y, yang berarti bergerak keatas. Untuk menggeraknnya kebawah, cukup dengan mengubah nilai speed menjadi negatif, bisa dengan membuatnya negatif langsung (-speed) atau dikalikan -1 sehingga nilainya negatif.

rigidbody2D.velocity.y = 0;

Untuk kondisi else, artinya kondisi tersebut tidak dalam kondisi moveUp atau moveDown, maka kita hanya perlu membiarkannya diam. Cukup beri value 0 pada velocitynya. Atau bisa dengan tidak menyertakan kode apapun pada kondisi tersebut. Maka script akhirnya adalah seperti berikut :

Klik save, kemudian kembali ke workspace unity.

Lihat inpspector, perhatikan variable Gravity Scale dan Fixed Angle. Rubah valuenya seperti gambar diatas. Gravity Scale adalah besarnya grafitasi pada objek tersebut, kita isikan 0 supaya objek tidak selalu turun kebawah karena pengaruh simulasi grafitasi. Kemudian centang Fixed Angle, ini berfungsi ketika objek terjatuh atau collision dengan objek lain maka posisinya akan tertumpu pada satu tumpuan tetap. Jika sudah, klik Play yang berada pada tengah atas workspace. Jika berhasil maka harusnya Anda bisa menggerakan player keatas dan kebawah dengan menekan tombol W atau S pada keyboard.

Bagaimana ? cukup mudah bukan. Jika ada yang kurang jelas silahkan tinggalkan komentar. 🙂


Related Posts:

27 thoughts on “Membuat Game 2D Sederhana dengan Unity (Part 2)

  1. kagak bisa masukin control, pas masukin control di java scrip trus di save nggk keluar di unity nya.

  2. Enggak keluar du unity gimana maksudnya ?

  3. gan…ane mono developnya malah error
    The file ‘E:\latihan game\Assets\PlayerControl.js’ could not be opened. The type initializer for ‘Boo.Lang.Compiler.TypeSystem.Types’ threw an exception.

    maksudnya gimana itu ya gan?
    thanks

  4. sama gan…ane buat project baru…sama aja..
    gak bisa connect dengan mono dev…
    itu maksudnya gimana ya gan?

  5. gan , mau tanya m trus script BOLA , Script Wall nya bila Bola menabrak Wall , script Finish nya gimana ya gan …. tolong pencerahan ???

  6. Soal variabel nya yang tidak muncul, sebaiknya coba cek dan ikuti tutorial yang di video. Ketika dia memulai , dia memang betul-betul buat folder baru untuk game secara terpisah. Ketika membuat game, dia ambil objek yang di download dalam 2D Assetpack.rar, lalu objek nya dimasukkin satu persatu sesuai yang diperlukan aja yang nanti diimport ke unity. Terus code scriptnya harusnya dalam satu folder dalam asset di samping dengan objek yang ditambah satu persatu tersebut.. baru variabel moveUp dan moveDown nya keluar.

  7. Gan ada gak tutor yg multiplayer….game nya…?

  8. gan … kalo dibuat multi player gmn ya gan? apakan unity ini support untuk multiplayer?

  9. gan, ane udah buat sama persis dengan tutorialnya, tapi kenapa udah klik play objeknya ga mau naik turun pdhal udah klik W/S .. apa yang salah gan?

  10. ga ada yg eror gan ..

  11. ini belum sampai ke part 9 yaa gan?

  12. gan ane pake unity versi 5 ga ada fixed angelnya
    gimana tuh

  13. Apakah berpengaruh code dengna versi Unity, saya memkai Unity 5,

    regards,

    slametz

  14. gan kok ane save di script nya kok gak bisa ya,tolong bantu saya? soalnya ane masih kelas 5 sd makanya bingung

  15. Kak kalau keluar tulisan all compiler error have to be fixed before you can enter playmode!.

  16. Kak tutor selanjutnya ada kah?
    Sampai jadi game pingpong
    Bisa download tutornya dmana?
    Makasih

Leave a Reply

Your email address will not be published. Required fields are marked *