Tutorial Construct 2: Cara membuat musuh sederhana bergaya Goomba (bergerak bolak-balik dan bisa dikalahkan pemain).
1. Membuat Sprite Musuh
Langkah-langkah awal:
-
Klik kanan → Insert New Object → Sprite.
-
Ukuran: 16 × 16 px.
-
Gambar karakter musuh sederhana berwarna hijau (karena “dia jahat,” katanya sambil bercanda).
-
Letakkan sprite di layout.
-
Saat dijalankan, musuh belum berfungsi apa-apa — perlu ditambahkan logika.
2. Menambahkan Variabel & Perilaku (Behavior)
-
Tambahkan Instance Variable:
-
Nama:
dir -
Nilai awal:
1 -
Fungsi: menentukan arah gerak (1 = kanan, -1 = kiri).
-
-
Tambahkan Behavior → Platform
-
Max Speed: 30 (agar musuh bergerak pelan).
-
Default Controls: No (karena tidak dikendalikan pemain).
-
Musuh kini memiliki sistem fisik seperti karakter platformer, tapi dikendalikan lewat event, bukan input keyboard.
3. Menyusun Folder dan Event Dasar
-
Di Project panel, buat folder baru bernama:
(candaan N9ark: “spikes are not real enemies—they don’t move!”)
-
Buat event:
-
Jika
dir = 1, maka musuh Simulate Control → Right -
Hasil: musuh berjalan ke kanan, tapi akan jatuh dari tepi platform.
-
4. Menambahkan Deteksi Tepi (Edge Detection)
Agar musuh berbalik arah di ujung platform:
-
Tambahkan sub-event:
terhadap Platform object.
-
Artinya: periksa apakah 16 piksel di depan (ke kanan) dan 1 piksel di bawah masih ada tanah.
-
-
Invert condition, agar event aktif saat tidak ada tanah di depan.
-
Jika kondisi terpenuhi, ubah:
-
Salin event tersebut untuk arah sebaliknya (
dir = -1), dengan offset(-16, 1)dan Simulate Left.
✅ Hasilnya: musuh berjalan ke kanan, berhenti di tepi, berbalik ke kiri, dan seterusnya.
5. Memperbaiki Bug Gerakan
N9ark menemukan bug:
Musuh masih bisa melewati celah kecil di antara dua platform.
Solusi:
-
Perkecil lebar sprite agar lebih ramping.
-
Sesuaikan collision polygon (misal ubah ke 14px dan -15px).
-
Hasil: deteksi tepi lebih akurat, musuh tidak lagi “melayang” di udara.
6. Interaksi Musuh dengan Pemain
Membuat pemain dapat mengalahkan musuh dengan melompat di atasnya:
-
Buat sub-group baru di Event Sheet:
-
Tambahkan event:
-
Tambahkan sub-event:
-
Jika posisi Y pemain lebih kecil (di atas) musuh, maka pemain menginjaknya.
-
Tambahkan aksi:
-
Player → Set Vector Y = -400(melompat ke atas). -
Enemy → Set Animation = "Death". -
Enemy → Set Collision Enabled = Disabled. -
Enemy → Wait 1 second → Destroy. -
(Bonus efek:
Enemy → Set Vector Y = -200agar musuh “melayang” sebentar saat mati.)
-
-
💡 N9ark juga mendemokan cara membuat animasi kematian musuh — hanya 1 frame datar dengan mata terpejam.
7. Menambahkan Sistem Damage (Musuh Menyerang Pemain)
Jika pemain menabrak musuh dari samping:
-
Bandingkan posisi X pemain dengan X musuh:
-
Jika
Player.X < Enemy.X, berarti pemain di kiri, beri dorongan ke kiri (Vector X = -200). -
Jika
Player.X > Enemy.X, berarti pemain di kanan, beri dorongan ke kanan (Vector X = 200).
-
-
Tambahkan kondisi:
maka:
-
Kurangi
Healthsebanyak 1. -
Panggil fungsi
Invul(membuat pemain kebal sementara).
-
-
Tambahkan kondisi Else, agar sistem tahu bedanya antara diserang dari samping dan melompat dari atas.
✅ Hasil akhir:
-
Menabrak musuh → pemain terdorong dan kehilangan 1 HP.
-
Melompat di atas musuh → musuh mati, pemain memantul ke atas.
-
Tidak ada bug benturan ganda.
Source: Youtube Action Cancel