GAME PLATFORMER Construc 2
31 OKTOBER, 2015 PROGRAM STUDI TEKNOLOGI GAME
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
Mulai New File Project Buat project baru dengan pergi ke menu file kemudian klik New pada File.
Kemudian akan mucul pilihan template dengan berbagai macam ukuran resolusi layar. Pilih New Empty Project, maka ukuran layout akan tersetting secara default, lalu klik Open. Sekarang akan muncul satu layout kosong. Layout ini digunakan untuk meletakkan berbagai objek game seperti tampilan level dalam game atau layar menu. Dalam aplikasi lain, layout ini bisa juga disebut room, scene, atau frame.
Ukuran layout Pertama-tama, setting ukuran layout . Klik kiri di area yang masih kosong pada layout. Akan muncul Layout Properties di Properties Bar. Ganti ukuran level menjadi 4000 x 2048.
Saatnya untuk menata gambar latar belakang (background) di sepanjang layout. Double-click area kosong di layout, akan muncul pilihan Insert New Object. Double click objek Tiled Background untuk menambahkan latar belakang tersebut.
Kursor mouse akan berubah menjadi crosshair (tanda tambah). Klik pada sembarang tempat di dalam area layout. Akan muncul Image Editor untuk memasukkan gambar menjadi tile. Sekarang import file Background Image\TileBackground.png dari paket sprite. Klik Open untuk memasukkan gambar.
Atur ukuran latar belakang untuk menutup keseluruhan layout. Pastikan objek tadi sudah dipilih (klik kiri pada gambar tersebut di layout), lalu propertinya akan muncul di Properties Bar. Untuk menutupi keseluruhan layout, atur Position menjadi 0,0 dan Size menjadi 4000, 2048 (sama dengan ukuran layout).
Gambar latar belakang ini cukup besar, jadi akan sulit melihat keseluruhannya dengan tingkat zoom saat ini. Zoom out untuk melihat keseluruhan gambar. Tahan Control dan Scroll roda mouse ke bawah untuk zoom out. Atau pilih View - Zoom out pada ribbon (menu di bagian atas Construct 2) beberapa kali. Sekarang keseluruhan layout sudah terlihatt, dan akan terlihat seperti ini:
Garis putus-putus di sisi kanan atas menunjukkan ukuran layar dibanding dengan ukuran layout keseluruhan. Tekan Crtl+0 untuk kembali ke tingkat zoom 100% atau pilih View - Zoom to 100% di ribbon. Secara otomatis akan terlihat bagian tengah layout setelah dikembalikan ke tingkat zoom 100%. Gunakan scrollbar untuk kembali ke bagian kiri atas dari layout. Atau click+drag tombol tengah mouse untuk bergerak dengan bebas di layout.
Menambahkan layer Sekarang tambahkan beberapa objek lain. Tapi terlebih dahulu kunci (lock) objek latar belakang supaya objek tidak bisa dipilih / diedit , untuk menghindari kesalahan teknis. Gunakan sistem layer untuk mengunci layout. Layout bisa terdiri dari beberapa layer, yang bisa digunakan untuk mengelompokkan objek. Layer bisa diumpamakan sebagai lembaran kaca yang berisi gambar objek dan bisa ditumpuk satu sama lain. Memudahkan untuk mengatur objek mana yang muncul di atas objek lainnya, dan layer bisa disembunyikan, dikunci, diberi efek parallax, dan masih banyak lagi. Contohnya, dalam game ini, semuanya akan muncul di atas latar belakang, jadi bisa dibuat layer lain di atas objek latar belakang tersebut.
Untuk mengatur layer, klik Layers tab, yang biasanya ada di sebelah Project bar; Akan terlihat Layer 0 di daftar layer (Construct mulai menghitung dari angka nol, karena lebih mudah saat dihubungkan dengan programming). Klik ikon pensil dan ganti nama layer itu menjadi Background. Sekarang klik ikon hijau add untuk menambahkan layer baru untuk objek lainya, dan beri nama Main. Terakhir, klik ikon gembok di sebelah Background agar layer tersebut menjadi terkunci. Jika ingin mengeditnya lagi klik ikon gembok agar layer tersebut kembali menjadi 'tidak terkunci'.
Checkbox tersebut juga bisa digunakan untuk menyembunyikan layer, tapi saat ini belum diperlukan. Layer bar akan terlihat seperti ini: Sekarang pastikan layer 'Main' terpilih di layer bar. Hal ini penting karena layer yang terpilih adalah layer yang aktif. Setiap objek baru yang dibuat akan dimasukkan ke layer yang aktif, jadi jika layer tersebut tidak terpilih, bisa terjadi ke-tidak sengajaan menambahkan objek ke layer yang salah. Layer yang aktif akan muncul di status bar, dan juga muncul di tooltip saat menempatkan objeck baru.
Menambahkan tile Kita perlu import file ini ke objek sprite dan menggunakannya sebagai objek tile. Seperti yang kamu lakukan pada Tiled Background, double click di area kosong di layout untuk memasukkan objek baru. Kali ini pilih Sprite. Kursor mouse akan berubah kembali menjadi tanda tambah, klik di mana saja di sekitar tengah layar. Image Editor akan terbuka dengan beberapa window tambahan, karena Sprite bisa dianimasikan. Tapi saat ini kita tidak akan menjalankan animasi, dan kecepatannya seharusnya 0. Kita akan menyimpan satu tile dalam setiap frame animasi. Lalu kita bisa mengatur tile mana yang muncul dengan mengubah frame animasinya.
Klik kanan area kosong di window Animation Frames di bawah, dan pilih Import sprite strip. Ini akan membuat kita bisa membuat kita mengambil gambar berdasarkan grid dalam sprite animasi, yang bisa juga kita gunakan di tile map.
Saat pilihan membuka file muncul, pilih file Tiles\Tiles.png dari paket sprite. Construct 2 perlu diberi tahu ada berapa tile dalam gambar tersebut. Kalau kamu perhatikan, Tiles.png terdiri dari 12x12 tile. Isi 12 dan 12 lalu klik OK.
Sekarang kamu punya 144 tile yang diimport sebagai frame animasi. Kita tidak membutuhkan frame pertama yang kosong, jadi klik kanan dan pilih delete.
Pada awalnya kecepatan animasi adalah 5, yang berarti gambar pada setiap objek tile akan terus berubah. Kita ingin setiap tile gambarnya tetap sama, jadi kita perlu memastikan kecepatan animasinya 0. Pilih animasi Default di window Animations.
Sekarang Properties Bar akan menunjukkan properti animasi tersebut. Ubah nilai Speed menjadi 0.
Sekarang gambar pada tile tidak akan berubah-ubah. Tutup image editor dengan menekan ikon X di salah satu dari tiga window yang terakhir muncul. Sekarang Sprite tile kamu sudah muncul di layout.
Membuat pemandangan dengan tile Perhatikan bahwa objek Sprite memiliki properti Initial frame. Kita bisa gunakan ini untuk mengubah tile saat ini. Pilih objek tile dan ubah initial frame-nya menjadi 1.
Perhatikan pula perubahan gambar yang sesuai dengan frame animasi 1. Ini adalah cara kita untuk menampilkan berbagai jenis tile di dalam sebuah level. Jika kamu tahan Control dan click-drag tile tersebut, kamu akan menghasilkan objek tile lain. Lakukan ini lagi dan akan kamu punya 3 tile dalam satu baris. Pilih yang di tengah dan ganti Initial frame-nya menjadi 10. Lakukan hal yang sama dengan yang di kanan, tapi nilainya 13. Kamu akan memiliki susunan objek seperti ini:
Jika kamu ingin tahu bagaimana cara memeriksa nomor frame suatu gambar dalam tile, double click tile tersebut. Image editor akan muncul bersama window animation yang bisa kamu gunakan untuk memeriksa frame-framenya. Ingat kamu bisa control drag sebuah tile dan membuat tile yang sama, jadi kamu tidak harus selalu mengetik initial frame-nya.
Menyalakan snap to grid Akan sangat sulit jika kita harus mengatur semua posisi tile agar sejajar dengan rapi. Kamu bisa menyalakan fitur grid untuk mempermudah mengatur objek. Klik View dan pilih Snap to grid pada ribbon. uUkuran awal grid adalah 32x32, karena tile kita berukuran 128x128 dan merupakan kelipatan dari 32 jadi akan bisa langsung kita gunakan untuk menyambung objek-objek tile kita dan masih memberikan sedikit kebebasan untuk meletakkan tile.
Cobalah menggeser-geser tile sekarang, objek tile akan mengacu pada grid 32x32 tersebut. Sekarang seharusnya lebih mudah unyuk 'menempelkan' tiga tile bersebelahan.
Menambahkan Sprite pemain Sekarang kita perlu tambahkan sprite untuk pemain. Sama seperti sebelumnya,double click area kosong di layout untuk menambahkan objek baru lalu pilihSprite. Saat muncul crosshair, klik di atas tile, lalu akan muncul Image Editor Kita perlu mengimpor sprite untuk animasi idle pemain. Seperti sebelumnya, namun kali ini jika frame idle hanya 1, maka klik kanan window Animation Frames dan pilih Import From files.
Ingat bahwa kita masih punya frame kosong bawaan di awal. Klik kanan lalu hapus frame tersebut. Sekarang kamu akan punya 1 frame animasi untuk animasi Idle pemain.
Kemudian kamu bisa menambahkan animasi dengan klik kanan pada window Animations kemudian pilih Add animation. Kamu bisa mengganti nama default sebelumnya dengan nama Idle yaitu animasi yang digunakan saat player diam. Kemudian animasi selanjutnya beri nama jalan.
Selanjutnya mengimpor sprite untuk animasi jalan pemain. Seperti sebelumnya, namun kali ini jika frame jalan telah terpisah menjadi beberapa sprite, maka klik kanan window Animation Frames dan pilih Import From files pada foldernya bisa select all kemudian open.
Cropping Kamu mungkin memperhatikan pemain punya area transparan di sekelilingnya. Hal ini sering terjadi setelah mengimpor gambar. Tapi untuk membiarkannya ada di situ adalah tindakan yang buruk, karena akan menghabiskan memory dan membuat deteksi tabrakan tidak akurat.
Ada cara cepat untuk menghilangkannya: tahan shift dan tekan tombol Crop di image editor. Jika kamu tidak menahan shift, hanya frame yang aktif yang akan di-crop, jadi pastikan kamu menahan tombol shift untuk meng-crop keseluruhan animasi. Sekarang gambar pemain akan sudah ter-crop dengan tidak ada area yang tidak perlu di gambarnya.
Mengatur titik origin Origin adalah titik pusat atau 'titik penting' objek yang bersangkutan. Dalam game platformer sebaiknya origin disimpan di kaki pemain. Ini akan membuat pemain akan tetap ada di lantai (dan berkembang ke atas, bukan menembus ke bawah lantai) walaupun ada frame animasi yang tingginya berbeda-beda. Untuk mengatur titik origin, klik Set origin and image points di image editor.
Kamu akan melihat titik merah muncul pada pemain, itu adalah titik origin. Kamu bisa klik pada gambar untuk mengubah posisi origin. Tapi karena kita ingin titik origin ada pada tengah-bawah gambar, kita bisa menekan tombol 2 pada num pad (dengan num lock menyala). Jika kamu tidak punya num pad (misalnya pada laptop), kamu bisa klik kanan Origin pada window Image points yang muncul, dan
pilih Quick assign - Bottom. Akan merepotkan kalau kita harus melakukan ini untuk setiap frame karena pada animasi jalan kita punya 29 frame, untungnya ada cara pintas: klik kanan Origin di window Image points, lalu pilih Apply to whole animation.
Mengulang animasi Untuk melakukan perulangan pada animasi jalan maka klik dulu animasi jalan pada window animations. Kita tidak perlu melakukan pada idle karena hanya berisi 1 frame.
Di Properties Bar, ganti Speed animasi menjadi 9 dan atur Loop menjadi Yes.
Klik kanan animasi Jalan di window Animations dan pilih Preview. Kamu akan lihat pemain bergerak untuk berjalan. Sekarang animasi sudah selesai, tutup preview animasi dan image editor. Kamu akan melihat pemain kamu di layout. Ganti nama objek tersebut menjadi Player di Properties bar agar lebih rapi.
Menambahkan behavior Construct 2 memiliki banyak behavior bawaan, behavior ini akan membuat objek kita bekerja seperti yang sudah ditentukan sebelumnya, sehingga bisa menghemat banyak waktu. Kita bisa saja membuat ulang semua behavior menggunakan sistem event, tapi umumnya akan sulit dan memakan banyak waktu. Karena itulah behavior sangat cocok untuk menghemat waktu pembuatan game agar game kita lebih cepat bisa dimainkan! Platform behavior akan mengurusi secara teknis pergerakan karakter dalam game platformer. Ada tips penting dalam menggunakan behavior ini: gunakan behavior ini pada sebuah objek persegi yang tidak terlihat/tidak ditampilkan, dan gambar karakter ditampilkan di atasnya. Platform behavior bekerja lebih baik jika objek yang dipasangi behavior tersebut tidak beranimasi, karena mengubah frame animasi di tengah-tengah deteksi tumbukan dapat membuat karakter menempel sebagian ke tembok dan membuat bingung Platform behavior. Hal ini juga dapat menghindarkan karakter kita menyangkut pada tembok di hidung atau pada barang yang dibawa oleh karakter kita.
Jadi sekarang kita membutuhkan sebuah persegi tidak terlihat untuk pergerakan karakter. Double click layout untuk menambahkan sprite baru lagi, kali ini kita bisa langsung beri warna pada kotak yang tersedia dari default seperti dibawah ini. Seperti sebelumnya, kita mau titik originnya ada di bawah. Klik lagi Set origin and image points dan tekan 2 pada numpad (atau gunakan menu quick assign) untuk menempatkan titik origin di bawah kotak tersebut.
Setelah kamu tutup image editor, kamu akan lihat kotak tersebut di layout. Ubah ukurannya agar sama dengan ukuran badan pemain seperti di bawah ini. Ukurannya 73, 242.
Ganti nama objek ini menjadi PlayerBox, karena objek tersebut adalah kotak untuk pergerakan dan pemeriksaan tumbukan untuk pemain. Atur Initial visibility menjadiInvisible di Properties bar karena kita ingin kotak ini tidak terlihat.
Kita juga perlu tambahkan behavior platform ke PlayerBox agar memiliki pemeriksaan tumbukan yang lebih baik. Masih di properti PlayerBox (dalam properties bar), klik Add / Edit di bagian Edit behaviors. Pada window yang muncul, klik di tanda tambah.
Double-click pada Platform behavior.
Kamu sekarang bisa melihat ada beberapa properti baru untuk pergerakan platform muncul dalam Properties bar. Kamu bisa mengatur opsi pergerakan seperti kecepatan dan percepatan. Kita perlu membuat lompatan pemain lebih baik, aturJump strength ke 1100 dan Gravity ke 2500.
Kita juga ingin layarnya mengikuti pemain, jadi klik lagi tombol tambah dan tambahkan behavior Scroll to.
Setelah kita tambahkan kedua behavior tadi, tutup window Player behaviors.
Menambahkan behavior Solid Behavior platform perlu tahu objek apa saja yang bisa dia injak. Pemain akan jatuh menembus semua objek yang tidak memiliki behavior Solid. Jadi pilih objek Tile dan tambahkan behavior Solid. Kita perlu tahu posisi pemain di atas PlayerBox. Pindahlah ke Event Sheet 1. Di sini kita akan menetapkan logika game menggunakan sistem event pada Construct 2. Membuat event Event bekerja dengan menguji apakah suatu condition dipenuhi, jika iya, actionyang bersangkutan akan dijalankan Dalam kasus ini, kita ingin posisi pemain selalu ada di atas PlayerBox. Untuk melakukan hal ini kita perlu mengupdate posisi pemain setiap tick, atau frame dalam game kita.
Double click area kosong di Event Sheet View untuk membuat event baru.
Doubel click objek System, yang menyimpan kondisi Every tick.
Sekarang ktia memiliki event kosong yang akan menjalankan aksinya setiap tick:
Klik 'Add action'.
Kita ingin mendapatkan posisi pemain (Player), jadi double click 'Player'.
Double click Set position to another object. Untuk Object, klik
dan pilih PlayerBox. Biarkan Image point bernilai 0 (mengacu pada titik origin). Klik 'Done''. Tampilan eventnya akan seperti ini:
Beberapa masalah Jika kamu coba main-main maka akan terlihat beberapa masalah: 1. Pemain tidak bisa menghadap kiri 2. Belum ada animasi lain. Ayo kita perbaiki hal-hal ini! Pertama, kita perlu buat pemain bisa menghadap kiri dan kanan. Pertama-tama, kembali ke tampilan layout menggunakan tab di bagian atas. Double click layout untuk memasukkan objek, pilih objek Keyboard. Karena objek tersebut adalah sebuah objek input, jadi tidak perlu kita tempatkan di mana pun, fungsinya hanya membuat input keyboard bisa diakses oleh project.
Kita tidak perlu membuat animasi lengkap di mana pemain menghadap kiri, kita bisa menggunakan aksi Set mirrored, yang akan secara otomatis membalik arah objek agar menghadap ke arah sebaliknya (dalam kasus ini pemain akan menghadap ke kiri). Kembalilah ke Event Sheet. Kita akan membuat event baru dengan kondisi "Saat tombol panah kiri ditekan", dan aksi "Set pemain menjadi mirrored".
Double click area kosong untuk membuat event baru, atau klik link Add event. Double click objek Keyboard agar bisa menggunakan kondisi saat tombol ditekan.
Daftar semua kondisi untuk objek Keyboard akan muncul. Double click event On key pressed.
Construct 2 perlu tahu tombol apa yang ingin kamu deteksi. Klik tombol , tekan tombol panah kiri lalu tekan OK. Klik Done.
Sekarang kita perlu menambahkan aksi kita: "Set pemain menjadi mirrored". Seperti sebelumnya, pilih objek, lalu pilih tipe kondisi atau aksi, lalu masukkan parameter yang dibutuhkan. Klik link Add action di sebelah kanan event kita sebelumnya. (Pastikan kamu tidak salah klik Add event!) Double click Player >> Double click Set mirrored >> Biarkan statenya Mirrored lalu klik Done.
Sekarang kamu akan memiliki event seperti ini:
Sekarang tambahkan sebuah event lain, double click area kosong atau klik linkAdd event. Sekarang kita lakukan proses yang sama, tapi buat event Saat tombol panah kanan ditekan, dan set pemain Not mirrored. Hasil akhirnya akan seperti ini: Mainkan cobalah!
gamenya
dan
Menambahkan lebih banyak animasi Sekarang kita tambahan animasi pemain yang lain. Pertama, kita perlu tambahkan beberapa platform untuk pemain melompat-lompat sehingga kita bisa lihat saat animasinya nanti bekerja. Kembali ke Layout view di mana kamu bisa melihat pemain dan tile lantai. Click dan drag untuk memilih ketiga tile tersebut, tahan Control dan drag tile-tile tersebut untuk membuat salinannya. Lakukan ini beberapa kali dengan ketinggian yang berbeda untuk membuat beberapa pijakan untuk melompat-lompat. Ada baiknya kita melakukan zoom out. Sebelum itu kita bikin tangga terlebih dahulu. Seperti sebelumnya Double click layout untuk menambahkan sprite baru lagi, kali ini kita bisa langsung beri warna pada kotak yang tersedia dari default seperti dibawah ini. Beri nama atas untuk yang ini kemudian buat lagi untuk yang bagian bawah. Dua kota ini nanti akan jadi bantu proses bolak balik tangga dari atas ke bawah. Kamu bisa resize kedua kotak ini menjadi 128,64. Jadikan dua kotak bantuan ini pada properties initial visibility invisvible.
Kemudian tambahkan sprite lagi sebagai tangganya.
Tambahkan behavior pada tangga Bulet dan Solid.
Pada Behaviors ubah nilai Speed menjadi 200 kemudian pada set angle menjadi No. Tata peletakan seperti layaknya tangga dari atas ke bawah namun kali ini kita cukup butuh tiga buah dengan tangga pertama objek atas berada pada posisi 512, 448 dan bawahnya pada 515, 1250, tangga kedua objek atas berada pada posisi 672, 992 dan bawahnya pada 672, 1600 dan objek atas berada pada posisi 832, 1440 dan bawahnya pada 832, 2000. Ingat pastikan kondisi dari awal tangga dan kotak bantu harus sudah collision, seperti di bawah ini : Kemudian kembali ke Event Sheet untuk menambahkankan proses pergerakannya berdasarkan Collision pada dua kotak bantu atas dan bawah. Tambahkan event pilih tangga kemudian pilih OnCollision with another object selanjutnya pilih objek atas. Tambahkan juga event ketika collision dengan bawah.
Kemudian tambahkan action Set Bullet angle motion, berikan nilai 90 untuk objek atas dan 270 untuk bawah. Karena pada nilai 0 tangga akan bergerak ke samping sedangkan kita butuh untuk gerakan atas bawah.
Akan terbentuk seperti ini :
Untuk melihat lebih baik, kita bisa perbesar ukuran window. Klik nama project di bagian atas Project Bar untuk menampilkan properti project ini, ubah Window Size ke 800,600. Sekarang coba game dan lihat pergerakan tangganya. Dibawa ini adalah contoh penataan tile :
Sekarang karena sudah ada platform untuk melompat dan layar yang lebih besar sehingga kita bisa melihat lebih banyak hal, kita akan tambahkan animasi pemain yang lain.
Ingat kita menggunakan aksi Set mirrored untuk membalik pemain ke kanan dan kiri, jadi kita cukup mengimpor animasi dengan pemain menghadap ke kanan. Double click pemain di tampilan Layout untuk memunculkan animations editor. Ada tiga animasi yang akan kita import: 1. Idle 2. Jalan 3. Lompat Untuk setiap animasi di atas, proses menambahkannya adalah sebagai berikut: 1. Klik kanan di animation bar (kemungkinan window yang melayang di kanan yang berisi animasi Idle) dan pilih Add animation. 2. Masukkan nama animasi. Gunakan nama yang mudah dimengerti seperti Lompat. 3. Klik animasi tadi untuk pindah ke animasi tersebut. Saat ini seharunya hanya ada satu frame kosong. 4. Klik kanan di Animation frames bar dan pilih Import sprite from file. 5. Temukan sprite strip yang diinginkan. Perlu diketahui pake 6. Periksa apakah jumlah sel-nya sudah benar, lalu klik OK. 7. Hapus frame kosong yang pertama, kita tidak akan membutuhkannya. 8. Di frame pertama, tempatkan origin di kaki pemain. Cobalah untuk menyamakan posisinya dengan animasi Idle. Terapkan ke semua frame animasi seperti yang kita lakukan pada animasi Idle (klik kanan titik Origin pada daftar dan pilih Apply to whole animation). 9. Tahan shift dan tekan Crop untuk memotong (area sisa yang transparan) di semua frame sekaligus. 10. Di Properties Bar, untuk animasi lompat pastikan memiliki properti berikut:
Pada Idle speed di 0 karena hanya satu frame. Pada Jalan speed menjadi 8 loop Yes.
Mengatur event animasi Semoga sekarang kamu sudah terbiasa dengan proses membuat suatu event: 1. Pilih objek. 2. Pilih kondisi atau aksi. 3. Opsional: masukkan parameter jika perlu. Pindah kembali ke tampilan Event Sheet. Kita akan menggunakan trigger On moved dari behavior Platform pada objek PlayerBox: Seperti sebelumnya tambahkan event pada PlayerBox dengan kondisi pada platform umumnya dan beri action animasi seperti di bawah ini.
Nama yang dimasukan haruslah sesuai dengan nama animasi yang telah dibuat sebelumnya.
Menambahkan musuh Semoga sekarang kamu sudah familiar dengan proses menambahkan sprite dan animasi. Jadi untuk menyingkat tutorial, langkah-langkah lengkapnya tidak akan diulang. Sekarang tambahkan sebuah sprite baru untuk musuh.
1. 2. 3. 4. 5. 6. 7. 8.
Tambahkan objek Sprite baru di layout. Import sprite strip Ayam. Hapus frame animasi pertama yang kosong. Atur animasi menjadi looping, dengan kecepatan animasi 15. Atur titik origin ke dasar gambar ayam, dan terapkan ke semua frame dalam animasi. Crop semua frame. (Shift + Crop) Tutup editor animasi dan ganti nama objek menjadi "SnailEnemy". Tempatkan di atas seperti pada gambar.
Sekarang kita perlu mengimplementasi logika berikut:
Jika pemain menabrak Ayam dari samping, pemain akan menyala dan terluka. Jika pemain melompat dan mendarat di atas Ayam, ayam tersebut akan mati.
Untuk membuat pemain menyala, pilih objek pemain dan tambahkan behavior Flash. Pastikan memilih objek pemain, bukan objek PlayerBox (karena objek pemain yang terlihat yang ingin kita buat menyala). Kita akan gunakan action 'Flash' dari behavior tersebut.
Pindah ke sheet view, tambahkan sebuah event baru: PlayerBox -> On collision with another object -> EnemyAyam Event ini akan dijalankan ketika kita bertabrakan dengan EnemyAyam dari sudut manapun. Lalu kita bisa menggunakan sub-event untuk memeriksa apakah pemain melompati musuh dari atas atau berlari dari samping. Pertama kita perlu memeriksa apakah pemain ada di atas tanah. Tambahkan sebuah sub-event pada event collision sebelumnya: PlayerBox -> Is falling Kita juga perlu memeriksa apakah pemain ada di atas musuh. Hal itu akan mencegah musuh Ayam tanpa sengaja mati jika kita jatuh dari pinggiran platform. Klik-kanan di kondisi 'Is falling' dan pilih 'Add another condition'. Ingat semua kondisi harus dipenuhi agar suatu event dijalankan. Tambahkan kondisi sebagai berikut: PlayerBox -> Compare Y -> Less than, EnemyAyam.Y Sumbu Y bertambah ke bawah, jadi jika koordinat Y pemain lebih kecil dari Ayam, artinya pemain ada di atasnya. Di event ini, tambahkan action: EnemyAyam -> Destroy Kita juga bisa membuat pemain memantul dengan membuat action tambahan: PlayerBox -> Set vector Y -> -700 'Set vector Y' akan mengatur kecepatan vertikal dari pergerakan objek platform, mengatur nilainya menjadi negatif akan membuatnya bergerak ke atas (ingat bahwa sumbu Y membesar ke bawah). Nilai 700 sedikit lebih kecil dari kekuatan lompat (1100), sehingga ini akan membuat pemain memantul atau seperti melakukan lompatan kecil.
Seperti gambar berikut :
Kita belum selesai: Klik-kanan di bagian luar event “is falling” (area di sebelah kiri icon PlayerBox), dan pilih Add -> Else. 'Else' adalah kondisi khusus yang akan dijalankan ketika event sebelumnya tidak dijalankan. Sehingga event ini hanya akan dijalankan jika kita bertabrakan dengan keong tapi kita tidak menginjaknya dari atas, misalnya karena kita menabraknya dari samping. Di event ini kita akan membuat pemain terluka. Tambahkan action: Player -> Flash -> (biarkan nilai default dan pilih Done) Ingat bahwa behavior Flash ada di objek Player, bukan PlayerBox.
Saat ini pemain belum bisa mati, hanya menyala ketika terluka. Tapi kita sudah bisa membedakan apakah pemain menabrak musuh dari samping atau menginjaknya dari atas. Tutorial ini tidak akan membahas semua aspek dalam game platformer, tapi semoga kamu sudah punya gambaran bagaimana cara membuat efek pemain mati (cobalah dengan membuat sebuah sprite 'poof' saat musuh mati dengan menggunakan aksi 'Spawn object' pada objek EnemyAyam), dan bagaimana cara mengurangi darah pemain (pada event yang membuat pemain menyala). Sekarang kita perlu buat musuh keong bergerak mondar mandir sepanjang platform. Untuk menambahkan Darah, pertama membuat global variable dulu.
Klik kanan pada tempat kosong di Event Sheet kemudian pilih Add global variable.
Kemudian beri nama Darah type number dengan initial value 3 (digunakan untuk jumlah darah awal).
Kemudian tambahkan action Substract from di bawah flash sebelumnya isikan variable darah, seperti berikut ini :
Kemudian tambahkan kondisi jika darah = 0 maka akan restart game. Pilih System kemudian pilih Compare variable selanjutnya berikan kondisi equal to 0. Seperti berikut.
Berikan action restart layout dan reset all global variable. Seperti berikut :
Menggerakkan musuh Tantangan utama menggerakkan Ayam adalah bagaimana cara mendeteksi kapan dia mencapai ujung sebuah platform. Cara termudah untuk melakukan ini adalah dengan membuat objek penanda 'ujung'. Penanda ini hanyalah sprite yang tidak terlihat yang akan membalik arah keong ketika mereka menyentuh penanda seperti yang pernah dilakukan pada pembuatan tangga namun kali ini pergerakannya horizontal. Kita bisa juga menggunakan behavior Platform juga untuk keong musuh. Ini akan memudahkan karena:
Musuh akan bisa bergerak ke kanan dan kiri Musuh bisa jatuh dari pinggiran platform jika kita ingin seperti itu Jika kita ingin membuat musuh yang bisa melompat, kita bisa membuat musuh otomatis melompat dengan menggunakan action 'Simulate control'.
Tambahkan behavior Platform ke sprite EnemyAyam. Karena kita tidak akan menggunakan animasi yang kompleks untuk objek ini, kita aman menggunakan behavior platform langsung pada objek tanpa menggunakan objek kotak tidak terlihat seperti pada objek pemain. Perlu diketahui kalau kamu membuat platform game dengan musuh yang membutuhkan animasi kompleks, kamu perlu menggunakan teknik kotak tidak terlihat seperti yang kita gunakan untuk objek pemain. Kita tidak ingin pemain mengontrol SnailEnemy, kita ingin mengaturnya untuk bergerak otomatis. Kita bisa lakukan ini dengan mengatur Default controls menjadi No, lalu gunakan action Simulate control. Karena keong cukup lambar, atur Maxspeed menjadi 50 dan Acceleration dan Deceleration menjadi 100! Kita juga memerlukan penanda ujung platform. Tambahkan sebuah objek Sprite baru dan masukkan sebuah kotak transparan. Beri nama EdgeMarker. Atur ukuran objek menjadi 40 x 40 dan atur Intial visibility menajdi Invisible agar kita tidak bisa melihatnya. Tempatkan satu objek tersebut di masing-masing ujung platform keong seperti pada gambar, dan ingat kamu bisa membuat salinan instance objek dengan menahan Control dan lakukan drag.
Ayam musuh juga perlu tahu ke arah mana dia sedang bergerak, antara ke kiri atau ke kanan. Kita bisa lakukan ini dengan Instance variable, yang merupakan angka atau teks yang disimpan di setiap instance objek yang bersangkutan. Jika kita memiliki banyak ayam, masing-masing akan menyimpan instance variabel mereka masing-masing secara terpisah. Hal ini membuat mereka bisa memiliki nilai nyawa/darah dan arah yang berbeda. Cara sederhana untuk membuat banyak musuh bergerak secara otomatis adalah dengan membuat instance variable bernama "action" yang akan menyimpan status aksi musuh tersebut. Misalnya, nilainya bisa "run away", "chase player", atau "idle". Dalam tutorial ini kita hanya menggunakan "left" dan "right", tapi akan ada gunanya juga membuat variabel instance seperti pada contoh. Pilih objek EnemyAyam. Pada bagian properti, klik Add/Edit pada bagian 'Instance variables'.
Sebuah dialog berisi semua instance variabel untuk suatu objek akan muncul. Klik icon 'add' dan tambahkan yang baru. Atur namanya menjadi action, lalu Type ubah menjadi text, dan nilai awal untuk right (untuk bergerak ke kanan).
Klik OK dan tutup dialog instance variable, lalu pindahlah ke event sheet. Kita perlu implementasi logika berikut:
Jika action bernilai "right", simulasikan pergerakan objek platform seperti menahan tombol kanan agar keong bergerak ke kanan. Jika action bernilai "left", simulasikan pergerakan objek platform seperti menahan tombol kiri agar keong bergerak ke kiri.
Dan:
Jika Ayam menabrak EdgeMarker, putar balik nilai action (jika "left" menjadi "right", dan jika "right" menjadi "left").
Kita bisa atur pergerakan dengan menggunakan dua event berikut: Event: EnemyAyam -> Compare instance variable -> action equal to "right" (gunakan tanda petik untuk menandakan nilai berupa teks) Action: EnemyAyam -> Simulate control -> Right Kita perlu buat event dan action yang serupa untuk arah kiri. Kita juga perlu memutar gambar Ayam ke kanan dan kiri seperti yang kita lakukan untuk objek player. Jadi tambahkan EnemyAyam -> Set mirrored -> Mirrored pada event kiri, dan EnemyAyam -> Set not mirrored -> Not mirrored di event kanan. Hasil akhirnya akan seperti ini:
Sekarang untuk membalik arah keong di ujung platform: Event: EnemyAyam -> On collision with another object -> EdgeMarker Subevent: EnemyAyam -> Compare instance variable -> action equal to "right" Action: EnemyAyam -> Set value -> action to "left" Subevent: Else Action: EnemyAyam -> Set value -> action to "right" Penting untuk menggunakan else, karena semua event akan dijalankan dari atas ke bawah. Jika kita tidak menggunakan else dan hanya action equal to "left", perhatikan bahwa event sebelumnya baru saja mengubah nilai action menjadi "left", langsung berubah lagi nilainya menjadi "right", tanpa memberikan dampak yang berarti. Dengan menggunakan else, kita mencegah event kedua dijalankan jika event pertama dijalankan.
Tambahkan kondisi jika PlayerBox jatuh makan layout akan direstart dan reset global variable.
Jalankan projectnya. Perhatikan sekarang Ayam bergerak bolak balik di platformnya, dan membuat platform tersebut lebih sulit untuk dilompati. Ini adalah contoh sistem intelenjensi buatan atau AI yang sederhana, tapi semoga kamu sekarang memiliki bayangan bagaimana cara membuat musuh yang lebih pintar dengan mengatur pergerakannya dengan lebih banyak event, bahkan mungkin membuat mereka bisa jatuh dari platform, atau menggunakan penanda lain untuk membuat musuh melompat seakan-akan tahu bagaimana cara melompat dari platform ke platform. Cobalah membuat platform dengan dua Ayam, perhatikan bahwa mereka mengatur pergerakannya masing-masing, karena tiap keong memiliki variabel instance yang menyimpan nilai action mereka masing-masing. Semoga dengan ini kamu mulai bisa melihat seberapa pentingnya instance variable untuk mengatur instance objek secara independen (mereka tidak harus melakukan hal yang sama persis satu sama lain di saat yang sama).
Objek yang bisa ditembus Jika kamu sudah meletakan beberapa tile, kamu akan lihat bahwa kalau kamu melompat tepat di bawah platform kamu akan menabrak platform tersebut di kepala dan akan jatuh kembali ke bawah. Bagaimana cara membuat platform yang bisa kita naiki dari bawah? Ini adalah kegunaan behavior Jump-thru. Kamu bisa berdiri di atas objek Jump-thru seperti platform lain, tapi pemain bisa melompat menembus platform ini dari bawah. Sekarang kita perlu buat versi Jump-thru dari objek Tile kita. Klik-kanan objek Tile dan pilih Clone object type. Ini akan membuat objek terpisah Tile2 yang bisa memiliki behavior yang berbeda. Hapus behavior Solid dan tambahkan behavior Jump-thru.
Layer UI Tambahkan layer UI seperti cara yang sebelumnya kemudian tambahkan objek text. Selanjutnya kembali ke event sheet lagi untuk memberikan perintah setiap saat text menampilkan darah
Menambahkan BGM Tambahkan objek audio. Import audio pada folder music. Sebagai rekomendasi ubahlah file audio ke format .wav atau .ogg.
Kemudian pada event sheet menambahkan event pilih audio kemudian pilih play selanjutnya pilih music yang telah diimport. Tambahkan juga global variable untuk menang jika telah membunuh semua ayam maka play sounds.
Beri tambahan action untuk menambahkan 1 pada skor saat berhasil mendestroy ayam. Kemudian jika sudah terdestroy semua enemy yang berjumlah ayam maka play sound.
Contoh hasil akhir tata layout :
Daftar Pustaka https://www.scirra.com/tutorials/