Monday, December 15, 2014

Physics in Corona

Sebelum saya membahas tentang Physics di corona, saya akan menjelaskan dahulu tentang corona.

Apakah Corona itu?
Corona adalah sebuah SDK (Software Development Kid) yang memungkinkan seseorang untuk membuat sebuah program yang dapat berjalan di IOS, Android dan Windows Phone dengan hanya menggunakan sebuah source code. Corona menggunakan bahasa pemrogramman LUA. Sedikit saja yang saya jelaskan mengenai Corona.

Selanjutnya saya akan menjelaskan physics di Corona. apakah physics itu?
Physics adalah sebuah library dari Corona yang membuat sebuah object memiliki bentuk fisik, sehingga object dapat bergerak dan berbenturan dengan object lainnya. Untuk lebih jelasnya akan saya jelaskan dengan program sederhana.

Pertama buat project baru menggunakan Corona SDK, dengan cara:
1. Klik File,
2. Klik New project,
3. Masukkan nama project di bagian Application Name
4. Pada bagian Project Template pilih blank.
5. Klik Ok.

Apabila anda melihat folder dimana anda membuat aplikasi, Corona akan membuat file seperti:


Berikut fungsi masing masing file yang telah dibuat Corona:

1. Main.lua adalah inti dari aplikasi yang akan dibuat, dimana berisikan logic dari program yang akan dibuat.
2. Build.settings berfungsi untuk memberitahu Corona, spesifikasi dan requirment apa saja yang dipakai untuk program yang akan dibuat. Seperti android permission, feature, custom app icons, Orientasi vertikal atau harizontal, requirement di IOS dan lain lain.
3. Config.lua berfungsi untuk display properties aplikasi yang akan dibuat, Frame Rate, App licensing dan lainnya.

Pertama, kita buat object yang dapat bergerak.


Pertama kita panggil library physics lalu simpan di object bernama Physics.
Kedua buat object yang akan kita gerakan. Disini saya menggunakan newCircle, bertujuan untuk membuat object berbentuk lingkaran. Untuk di corona semua ukuran gambar menggunakan koordinat x dan y. Saya membuat object lingkaran sempurna dengan  x = 100 dan y = 100 dan jari jari =50.

objectBergerak.x = 10 dan objectBergerak.y = 10, berfungsi untuk memberitahu lokasi dari object bergerak di dalam aplikasi yang dibuat.

Disini, saya menambahkan fungsi addBody.
Apa fungsi dari addBody?
addBody membuat object memiliki bentuk fisik. Apabila kita tidak memberikan addBody, object tersebut tetap akan menjadi display saja. Maksudnya, object tersebut tidak akan dapat menyentuh object yang tidak di berikan bentuk fisik. Contohnya,



dengan membuat object bernama objectTidakBergerak. Tapi sebelumnya panggil physics.setGravity yang berfungsi untuk membuat gravity bergerak sesuai dengan koordinat yang kita mau. setGravity(sumbux, sumbuy) saya membuat object bergerak mengikuti sumbu y. Semakin besar nilai dari sumbu x/y, semakin cepat pergerakan bendanya.

Selanjutnya saya menjelaskan physics.start(), berfungsi untuk fungsi dari library physics berfungsi. Ada juga physics.pause yang berfungsi menghentikan sementara fungsi fisik dan akan berjalan kembali setelah fungsi physics.start di panggil. Physics.stop(), berfungsi untuk menghentikan semua fungsi fisik, apabila fungsi physics.start() di panggil, maka fungsi physics akan di ulang sesuai lokasi object seperti semula.

Lalu kembali ke topik di atas, apa yang terjadi apabila kita telah membuat objectBergerak jatuh ke koordinat y, dimana objectTidakBergerak berlokasi di bawah objectBergerak?



Bisa anda liat?, si objectBergerak tidak akan tertabrak. Mengapa?, karena kita tidak memberikan bentuk fisik terhadap si objectTidakBergerak, sehingga tidak akan terjadi tabrakan.

Lalu jika menggunakan objectTidakBergerak kita berikan fungsi addBody, apa yang akan terjadi?




Object terjadi tabrakan dan memantul kembali. Berikut source codenya.


Density berfungsi untuk menentukan berat dari object yang akan dibuat, tetapi density juga berpengaruh terhadap gravitasi. Semakin besar density, semakin cepat bergerak object tersebut. Friction berfungsi untuk mengatur pergeseran benda, semakin besar pergerakan benda, akan semakin berbelok pergerakan benda. Terakhir bounce, bounce berfungsi untuk pantulan object apabila saling berbenturan. Apabila user tidak mensetting bounce, otomatis akan menjadi 0.9, semakin kecil nilai pada bounce, semakin kecil juga pantulan benda yang akan dihasilkan.
Terakhir Static, static berfungsi agar apabila terjadi benturan object, object yang diberikan nilai static, tidak akan berubah. Biasanya digunakan untuk object dinding atau atap.

Sekarang kita telah mengerti tentang physics di corona. Selamat mencoba yah. Good luck.

No comments:

Post a Comment