Hendri Prasetyo

Kamis, 31 Desember 2015

On 19.42 by Unknown   1 comment

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 dimanual.



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 rapi.


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 mengubah 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 ke dalam 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 inspector, perhatikan variable Gravity Scale dan Fixed Angle. Rubah valuenya seperti gambar diatas. Gravity Scale adalah besarnya gravitasi pada objek tersebut, kita isikan 0 supaya objek tidak selalu turun kebawah karena pengaruh simulasi gravitasi. 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.


Sekian tutorial yang saya jelaskan. Semoga dapat bermanfaat... 




1 komentar: