Tutorial ini melanjutkan tutorial dari yang sebelumnya, yaitu bikin game pesawat-pesawatan bagian 1. Sekarang kita akan menambahkan beberapa elemen, diantaranya musuh, batu dan health.
Musuh dan Batu sama saja sebenarnya, namun yang kita bedakan cuma hanya gambarnya saja. Sedangkan health merupakan nyawa dari pesawat kita. Kalo pesawat kita terkena musuh atau batu, maka health akan berkurang. Jika health habis, maka kita akan Game Over
Langsung mulai deh, pastikan file yang kemaren udah dibuka ya ^_^
- Pertama kita import sebuah gambar ke dalam stage dari sprite gratis, cari gambar di lokasi Scion Developer Toolbox\Sprites\Set 1\alienship_color.png.

alienship
- Kemudian kita pilih gambar tersebut dan klik kanan dan convert to symbol kemudian pilih movieclip MovieClip. Ganti identifiernya menjadi Musuh.

convert to symbol
- Kemudian import lagi, namun kali ini yang diimport adalah gambar batu. Coba liat di Scion Developer Toolbox\Sprites\Set 1\moon_color.png.

batu
- Pastikan batu masih dalam keadaan terseleksi, kemudian klik kanan dan pilih Convert To Symbol, kemudian pilih menjadi Movieclip kembali. Masukkan Batu sebagai identifier.

batusymbol
- Kemudian kita gambar sebuah kotak berukuran 150pixel x 25 pixel.

kotak
- Kemudian kita convert menjadi movieclip, kotak ini digunakan sebagai health bar atau sebagai pengukur nyawa. Ketik HealthBar sebagai identifiernya. Ingat, titik registrasi (registration) harus berada di kiri.

healthbar
- Setelah selesai, kita hapus semua movieclip yang ada di stage.
- Sekarang kita beralih ke ActionScripting..

- Klik pada frame 1, karena kita akan meletakkan script kita pada frame, kemudian tekan F9 untuk menampilkan panel Actions – Frame. Tambahkan script yang sudah ada hingga menjadi seperti di bawah ini :
//menambahkan background dengan nama yang dikenali oleh stage yaitu background_mc _root.attachMovie("Background", "background_mc", 0); //menambahkan player dengan nama yang dikenali oleh stage yaitu player_mc _root.attachMovie("Player", "player_mc", 1); //menambahkan bar untuk nyawa dengan nama yang dikenali oleh stage yaitu health_mc //di sini lokasi dari healthbar ditentukan dengan x = 380 dan y = 370 _root.attachMovie("HealthBar", "health_mc", 2, {_x:380, _y:370}); //inisialisasi nyawa sebesar 100 var nyawa = 100; //memberikan timer var idInterval = setInterval(panggilMusuh, 1000); //memberikan event enterframe kepada _root agar melakukan tugasnya secara terus menerus _root.onEnterFrame = function() { //menggerakkan background ke arah _x minus (ke kiri) background_mc._x -= 3; //memberikan kondisi jika background habis, maka ia akan mengulangi if (background_mc._x<-1450) { //mereset posisi background background_mc._x = 0; } //memberikan status game over if (nyawa<=0) { nyawa = 0; trace("Game Over"); } //mengeset agar ukuran dari health_mc menyesuaikan dengan health health_mc._width = (nyawa/100)*150; }; //memberikan event ketika mouse bergerak _root.onMouseMove = function() { //menghilangkan mouse Mouse.hide(); //menggerakkan player_mc player_mc._x += (_xmouse-player_mc._x)/5; player_mc._y += (_ymouse-player_mc._y)/5; }; //memberikan event ketika mouse ditekan _root.onMouseDown = function() { //mendapatkan kedalaman, kedalaman digunakan karena pada 1 depth hanya memiliki 1 objek var depth = _root.getNextHighestDepth(); //menambahkan peluru ke stage var peluru = _root.attachMovie("Peluru", "peluru_"+depth, depth, {_x:player_mc._x, _y:player_mc._y}); //memberikan event enterframe pada peluru peluru.onEnterFrame = function() { //menggerakkan peluru this._x += 5; //memberikan kondisi jika letaknya melebihi batas if (this._x>550) { //menghapus peluru (yang melebihi batas) removeMovieClip(this); } //melakukan perulangan terhadap musuh var kedalamanMusuhSekarang = _root.getNextHighestDepth()-1; for (var i = kedalamanMusuhSekarang; i>kedalamanMusuhSekarang-10; i--) { if (_root["musuh_"+i].hitTest(this)) { removeMovieClip(_root["musuh_"+i]); removeMovieClip(this); } } }; }; function panggilMusuh() { //mendapatkan angka random yaitu 0 dan 1 var angkaRandom = random(2); //mendapatkan kedalaman, kedalaman digunakan karena pada 1 depth hanya memiliki 1 objek var depth = _root.getNextHighestDepth(); if (angkaRandom == 0) { //memanggil musuh var musuh = _root.attachMovie("Musuh", "musuh_"+depth, depth, {_x:550, _y:random(400)}); musuh.onEnterFrame = function() { //menggerakkan musuh ke kiri sebanyak 3 piksel this._x -= 3; //memberikan kondisi jika posisi x berada kurang dari 0, maka objek akan dihapus if (this._x<0) { removeMovieClip(this); } //memberikan kondisi jika musuh bertabrakan dengan player, //maka objek akan hilang dan player akan berkurang darahnya if (this.hitTest(_root.player_mc)) { nyawa -= 10; removeMovieClip(this); } }; } else { //memanggil musuh var batu = _root.attachMovie("Batu", "musuh_"+depth, depth, {_x:550, _y:random(400)}); batu.onEnterFrame = function() { //menggerakkan batu ke kiri sebanyak 3 piksel this._x -= 2; //memberikan kondisi jika posisi x berada kurang dari 0, maka objek akan dihapus if (this._x<0) { removeMovieClip(this); } //memberikan kondisi jika musuh bertabrakan dengan player, //maka objek akan hilang dan player akan berkurang darahnya if (this.hitTest(_root.player_mc)) { nyawa -= 10; removeMovieClip(this); } }; } } - Di situ dijelaskan _root["musuh_"+i], sebenarnya hal tersebut adalah cara lain untuk Eval. misal di stage kita mempunyai sebuah movieclip yang memiliki instance name musuh_1, musuh_2, musuh_3, maka kita bisa mendapatkannya dengan mudah yaitu dengan cara
for(var i=1;i<=3;i++){ //mengubah semua objek memiliki property x = 200 _root["musuh_"+i]._x = 200; } - Oke, sekarang kita tes movienya ;)
Download Source File : SINI
Related posts:






