Membuat MiniFlashGame dengan Flixel – Part 4
Di bagian keempat ini, kita akan membuat peluru dan menembakkannya melalui meriam yang telah kita buat pada tutorial bagian sebelumnya.
Buka project game yang telah dibuat pada bagian sebelumnya. Siapkan 1 buah gambar dan suara peluru. Gambar yang saya gunakan berukuran 16×16 px.
Lalu siapkan pula 1 buah file suara peluru ketika ditembakkan. Sebaiknya berformat .mp3. File yang saya gunakan >> shoot. Masukkan kedua fle tersebut ke dalam folder ‘src’.
Buat class baru dengan nama “peluru.as“. Ganti baris – baris kode default dengan kode-kode di bawah ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package { import org.flixel.*; public class Peluru extends FlxSprite { [Embed(source = "peluru.png")]protected var imgPeluru:Class; [Embed(source = "shoot.mp3")]protected var sndTembak:Class; public function Peluru() { loadGraphic(imgPeluru, true, true, 16, 16); width = 14; height = 14; offset.x = 1; offset.y = 1; acceleration.y = 400; maxVelocity.y = 550; health = 1; } public function tembak(Location:FlxPoint, Angle:Number):void { super.reset(Location.x-width/2,Location.y-height/2); FlxU.rotatePoint(0,-800,0,0,Angle,_point); velocity.x = 0- _point.x; velocity.y = 0 - _point.y; solid = true; FlxG.play(sndTembak); } override public function update():void { if (touching || !onScreen()) kill(); super.update(); } } } |
kita membuat fungsi baru yaitu fungsi tembak dengan parameter ‘Location’ dan ‘Angle’. Parameter ‘Location’ berfungsi untuk menentukan dari posisi mana peluru itu ditembakkan, sedangkan ‘Angle’ akan berisi sudut yang sesuai dengan sudut ”pemain” segingga peluru yang ditembakkan akan selaras dengan posisi pemain.
Kemudian buka kembali class ‘Arena.as’. Tambahkan sebuah variabel baru di dalam class
1 |
protected var _peluru:FlxGroup; |
Lalu letakkan ke dalam stage. Agar kelihatan ketika ditembakkan, maka posisi peluru harus berada di atas background. letakkan baris-baris kode berikut di bawah kode “add(_bg);”
1 2 |
_peluru = new FlxGroup(); add(_peluru); |
kemudian buat sebuat fungsi baru untuk mengoverride fungsi update
1 2 3 4 5 6 7 |
override public function update():void { if (FlxG.mouse.justPressed()) { (_peluru.recycle(Peluru) as Peluru).tembak(_pemain.getMidpoint(), _pemain.angle); _pemain.play("nembak"); } super.update(); } |
Sekarang coba jalankan game nya (F5), jika tidak ada error, maka ketika mouse di klik, pemain akan mengeluarkan tembakan.
Leave a Reply