Dasar pembuatan game dengan Flash. bagian 2:Akselerasi Gerakan

AKSELERASI

Tutorial berseri ini adalah lanjutan dari bagian 1 sebelumnya yang membahas tentang kontrol dan gerakan dasar pesawat.

Sejauh ini, gerakan yang terjadi sangatlah mendasar dan terasa kurang realistis.. masih terasa ada hal yang kurang, yaitu akselerasi..
Biar pengontrolan pesawat lebih realistis sekaligus menambah kesulitan game, maka kita terapkan akselerasi dalam pergerakan. untuk itu kita harus sedikit mengingat kembali pelajaran fisika.. heh?,
tenang aja fisika yang dipake mendasar kok..

Nantinya hasilnya akan seperti berikut ini (gunakan tombol panah untuk menggerakkan pesawat):

menurut fisika, ada namanya kecepatan dan percepatan (dan perlambatan)..
saat kita menggerakkan pesawat, misal maju (dengan menekan gas), maka pesawat tidak akan bergerak dengan kecepatan langsung konstan, melainkan kecepatannya naik secara bertahap hingga kecepatan maksimalnya.. demikian pula kalo kita melepas pedal gas, maka sebelum berhenti, pesawat akan mengalami perlambatan.. (btw sejak kapan pesawat punya pedal gas.. :-p, ah sekedar contoh aja)

untuk itu dalam game ini kita definisikan 3 konstanta baru, yaitu percepatan,perlambatan,kecepatan maksimal, (untuk kecepatan minimal pasti bernilai 0, jadi enggak usah didefinisikan)

kebiasaan saya suka menaruh konstanta global di frame paling awal di layer khusus action tersendiri..
klik frame pertama, tekan F9 dan masukkan kode berikut

_root.percepatan = 4;
_root.perlambatan = 1;
_root.speedmax = 12;

karena konstanta berlaku global, maka ditulis di _root. sengaja saya beri awalan _root memberi tahu bahwa variabel itu di level _root.. (agar tidak bingung aja)

lalu ubah kode di pesawat_player menjadi berikut

onClipEvent (enterFrame) {
  this._x += speed_x;
  this._y += speed_y;

  if (Key.isDown(Key.RIGHT)) {
	// gerak ke kanan
	if (speed_x < _root.speed_max) speed_x+=_root.percepatan;
	//speed_x = 4;
  }
  if (Key.isDown(Key.LEFT)) {
	// gerak ke kiri
	if (speed_x > -_root.speed_max) speed_x-=_root.percepatan;
  }
  if (Key.isDown(Key.UP)) {
	// gerak ke atas
	if (speed_y > -_root.speed_max) speed_y-=_root.percepatan;
  }
  if (Key.isDown(Key.DOWN)) {
	// gerak ke bawah
	if (speed_y < _root.speed_max) speed_y+=_root.percepatan;
  }

  if ((not Key.isDown(Key.RIGHT)
	  and not Key.isDown(Key.LEFT))
	  or (not Key.isDown(Key.UP)
	  and not Key.isDown(Key.DOWN))
	  ) {
    if (speed_x>0) speed_x-=_root.perlambatan;
    else if (speed_x<0) speed_x+=_root.perlambatan;
    if (speed_y>0) speed_y-=_root.perlambatan;
    else if (speed_y<0) speed_y+=_root.perlambatan;
  }

}

perhatikan bedanya, lebih asyik khan

source:pesawat01_2.fla

Download Source Code


Bookmark and Share Tell a Friend

5 Comments »

  • Feri   |   July 16th, 2009 at 7:01 pm

    Saya sangat tertarik dg artikel di atas, apakah Macromedia Flash mx ini dapat d gunakan utk mmbuat brbagai macam kategori game (action, adventure, RPG, dll) ? Dan bisa dgunakan sampek finishing nya nggak, atau perlu aplikasi lain ? Thanks

  • BayuBayu   |   July 27th, 2009 at 12:25 pm

    Flash bisa digunakan untuk bikin berbagai game yg anda sebutkan td.. sampe finishingnya :-). Pada dasarnya flash bisa melakukan hampir semua, mulai dari desain/gambar (jika vector/kartun), animasi, hingga programming.

    Dan semakin hebat lagi jika ditunjang aplikasi lainnya:
    Untuk gambar bertipe bitmap, dibutuhkan program image editor semacam photoshop, gimp, dll…
    Untuk sound dan music, dibutuhkan program audio editor semacam audacity :-)

    kalo mau lebih kreatif lagi, kita bisa memanfaatkan gambar 3D prerendered dari aplikasi 3D semacam Blender.

  • ipoenk   |   December 5th, 2009 at 9:32 am

    Mas pny tutorial tips & trik buat game dengan menggunakan flash, klo da krim ke Email qu yaaaaaaaaaaaaaaaa……!!!

  • ive   |   December 6th, 2009 at 2:15 pm

    asyik juga bwt koding di flash,boleh minta source code lain untuk bwt game nih.karena ada tugas besar buat game dari flash tapi harus ada codingannya hehe

  • eriq   |   January 2nd, 2010 at 4:30 pm

    Siip tutorialnya,,,,

    dx += time * speed;
    dy += time * speed;

    :)

RSS feed for comments on this post. TrackBack URL

Leave a comment