Friday, June 19, 2009

Action Script Dasar Menggerakkan Objek dalam Flash / Kinematika Gerak dalam Flash

Tutorial ini akan menjelaskan kepada Anda pembaca bagaimana menggerakkan sebuah objek berupa movie clip dengan mempertimbangkan beberapa aspek, tutorial ini dapat dijadikan panduan bagi Anda yang ingin membuat sebuah media interaktif yang didalamnya terdapat objek yang harus digerakkan dengan keyboard atau bagi anda yang ingin membuat game balap atau game arcade.Dalam tutorial ini, saya menggunakan AS 2.0. Sebenarnya tidak mudah menggerakkan suatu objek dalam flash, karena banyak faktor yang harus dipertimbangkan seperti kecepatan, hambatan, gravitasi dan lain-lain. Kita akan memulainya sedikit demi sedikit.

Untuk Persiapan, buak sebuah file baru di AS 2.0 dengan ukuran kira-kira 500 x 350 pixel atau lebih. Buatlah sebuah movie clip bola sederhana, di dalam movie clip bola tersebut terdapat sebuah tanda berupa lingkaran kecil diatasnya yang berguna sebagai penunjuk arah. Lalu beri nama instance name mc bola dengan nama "bola".Kemudian buatlah sebuah tombol reset, letakkan tombol ini di sudut kanan bawah kemudian beri Action script pada tombol

on (release) {
_root.bola._x = 231;
_root.bola._y = 20;
}

Sekarang kita akan mencoba menggerakkan mc bola secara bertahap mulai dari hal yang paling dasar, semua Action script berikut ditulis di dalam mc bola.

GERAKAN DASAR

Gerakan dasar yang dimaksud yaitu menggerakkan mc bola dengan keyboard tanpa mempertimbangkan faktor lain, jadi hanya sekedar merubah posisi x dan y dari mc bola sebesar 1 pixel unit, berikut kodenya:

onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
_x--;
}
if (Key.isDown(Key.RIGHT)) {
_x++;
}
if (Key.isDown(Key.UP)) {
_y--;
}
if (Key.isDown(Key.DOWN)) {
_y++;
}
}



GERAKAN DENGAN PENAMBAHAN VARIABEL KECEPATAN

Pada Gerakan Dasar sebelumnya, mc bola hanya berpindah sebesar 1 pixel unit di kordinat x dan y, sekarang kita akan merubah nilai tersebut dengan membuat sebuah variabel yang dapat kita atur sehingga pergeseran mc bola bergantung pada besarnya nilai variabel yang diberikan, dalam fisika kita biasa mengenalnya dengan Gerak Lurus Beraturan (GLB). Misal variabel tersebut adalah kecepatan, maka mc bola akan berindah sejauh nilai kecepatan yang diberikan, berikut kodenya :

onClipEvent (load) {
kecepatan = 3;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
_x -= kecepatan;
}
if (Key.isDown(Key.RIGHT)) {
_x += kecepatan;
}
if (Key.isDown(Key.UP)) {
_y -= kecepatan;
}
if (Key.isDown(Key.DOWN)) {
_y += kecepatan;
}
}



GERAKAN DENGAN PERCEPATAN
Sekarang kita akan mencoba menggerakkan bola dengan memperhatikan adanya percepatan dan perlambatan yang kita atur sendiri nilainya dengan membuat sebuah variabel percepatan. Dalam fisika kita mengenalnya dengan Gerak Lurus Berubah Beraturan (GLBB), disini saya juga mulai membedakan arah kecepatan pada sumbu x dan pada sumbu y dengan membelah variabel kecepatan, Kodenya yaitu :

onClipEvent (load) {
percepatan = 0.2;
kecepatan_x = 0;
kecepatan_y = 0;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
kecepatan_x -= percepatan;
}
if (Key.isDown(Key.RIGHT)) {
kecepatan_x += percepatan;
}
if (Key.isDown(Key.UP)) {
kecepatan_y -= percepatan;
}
if (Key.isDown(Key.DOWN)) {
kecepatan_y += percepatan;
}
_y += kecepatan_y;
_x += kecepatan_x;
}



GAYA GESEK

Dalam keadaan nyata, sebuah objek yang bergerak pada suatu bidang, akan mengalami gesekan dengan bidangnya, sekarang kita akan coba menambahkan unsur variabel gesekan dalam gerakan mc bola, dalam fisika variabel tersebut dinamakan koefisien gesek. Kodenya yaitu:

onClipEvent (load) {
percepatan = 0.2;
kecepatan_x = 0;
kecepatan_y = 0;
gesekan = 0.95
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
kecepatan_x -= percepatan;
}
if (Key.isDown(Key.RIGHT)) {
kecepatan_x += percepatan;
}
if (Key.isDown(Key.UP)) {
kecepatan_y -= percepatan;
}
if (Key.isDown(Key.DOWN)) {
kecepatan_y += percepatan;
}
kecepatan_x *= gesekan;
kecepatan_y *= gesekan;
_y += kecepatan_y;
_x += kecepatan_x;
}



GRAVITASI

Sebuah benda yang berada di udara akan mengalami gaya tarik yang besarnya ditentukan oleh percepatan gravitasi. Sekarang kita akan memperhitungkan efek gravitasi pada objek yang seolah-olah berada di udara dengan menambahkan efek gravitasi yang hanya mempengaruhi nilai variabel dari kecepatan pada sumbu y.Dalam fisika kita mengenalnya dengan gerak jatuh bebas. Kodenya adalah:

onClipEvent (load) {
percepatan = 0.2;
kecepatan_x = 0;
kecepatan_y = 0;
gesekan = 0.95
gravitasi = 0.1
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
kecepatan_x -= percepatan;
}
if (Key.isDown(Key.RIGHT)) {
kecepatan_x += percepatan;
}
if (Key.isDown(Key.UP)) {
kecepatan_y -= percepatan;
}
if (Key.isDown(Key.DOWN)) {
kecepatan_y += percepatan;
}
kecepatan_x *= gesekan;
kecepatan_y += gravitasi;
_y += kecepatan_y;
_x += kecepatan_x;
}



EFEK ANGIN

Masih dalam pembahasan gerak jatuh bebaas, namun sekarang kita tambahkan lagi efek tiupan angin yang bekerja pada saat benda di udara dengan angin yang kencang.

onClipEvent (load) {
percepatan = 0.2;
kecepatan_x = 0;
kecepatan_y = 0;
gesekan = 0.95
gravitasi = 0.1
angin = 0.05
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
kecepatan_x -= percepatan;
}
if (Key.isDown(Key.RIGHT)) {
kecepatan_x += percepatan;
}
if (Key.isDown(Key.UP)) {
kecepatan_y -= percepatan;
}
if (Key.isDown(Key.DOWN)) {
kecepatan_y += percepatan;
}
kecepatan-x +=angin;
kecepatan_x *= gesekan;
kecepatan_y += gravitasi;
_y += kecepatan_y;
_x += kecepatan_x;
}



ROTASI

Sekarang akan kita tambahkan efek putaran yang bekerja pada mc bola yang sedang bergerak, kodenya adalah :

onClipEvent (load) {
percepatan = 0.2;
kecepatan_x = 0;
kecepatan_y = 0;
gesekan = 0.95
gravitasi = 0.1
angin = 0.05
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
kecepatan_x -= percepatan;
}
if (Key.isDown(Key.RIGHT)) {
kecepatan_x += percepatan;
}
if (Key.isDown(Key.UP)) {
kecepatan_y -= percepatan;
}
if (Key.isDown(Key.DOWN)) {
kecepatan_y += percepatan;
}
kecepatan_x +=angin;
kecepatan_x *= gesekan;
kecepatan_y += gravitasi;
_y += kecepatan_y;
_x += kecepatan_x;
_rotation += kecepatan_x;
}


No comments:

Post a Comment

Comments system

Disqus Shortname

Disqus Shortname

Comments System

Disqus Shortname

Comments system