Banyak game menyertakan semacam musuh untuk dilawan. Jelajahi berbagai cara untuk menambahkan—dan kemahiran—pertarungan musuh.

Musuh memainkan peran penting dalam membuat game menarik dan menantang bagi pemain. Apakah Anda sedang membuat platformer 2D, penembak top-down, atau permainan role-playing, menambahkan musuh dapat secara signifikan meningkatkan pengalaman gameplay.

Antarmuka ramah pengguna Godot dan bahasa skrip intuitif, GDScript, menjadikan prosesnya efisien dan menyenangkan.

Menyiapkan Game Godot

Sebelum masuk ke pembuatan musuh, atur struktur dasar game 2D Anda mesin permainan Godot.

Buat proyek 2D baru di Godot. Di adegan utama, buat yang baru KinematikaBody2D simpul dan beri nama Pemain. Di dalam node pemain, tambahkan a TabrakanBentuk2D dengan bentuk persegi panjang, yang akan menjadi hitbox pemain. Tambahkan juga a Sprite node sebagai representasi visual dari karakter pemain.

Kode yang digunakan dalam artikel ini tersedia di sini repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.

Lampirkan kode GDScript berikut ke file Pemain simpul untuk mengaktifkan gerakan dasar:

extends KinematicBody2D

const SPEED = 200

func _physics_process(delta):
var motion = Vector2.ZERO

if Input.is_action_pressed("ui_right"):
motion.x += SPEED

if Input.is_action_pressed("ui_left"):
motion.x -= SPEED

if Input.is_action_pressed("ui_down"):
motion.y += SPEED

if Input.is_action_pressed("ui_up"):
motion.y -= SPEED

motion = move_and_slide(motion)

Dengan kode ini, pemain dapat bergerak ke kiri, kanan, atas, dan bawah menggunakan tombol panah atau tombol WASD.

Menciptakan Musuh Sederhana

Sekarang setelah Anda menyiapkan karakter pemain, Anda dapat membuat musuh sederhana.

Buat adegan baru dan tambahkan a Tubuh Statis2D simpul bernama Musuh. Di dalam node Musuh, tambahkan a TabrakanBentuk2D node dengan bentuk lingkaran untuk menentukan hitbox musuh. Tambahkan juga a Sprite simpul untuk mewakili musuh secara visual.

Dengan pengaturan tabrakan, musuh akan siap berinteraksi dengan pemain dan elemen lain di dunia game Anda.

Membuat Musuh Mengikuti Pemain

Menciptakan musuh yang mengikuti pemain menambah tingkat tantangan baru pada permainan.

Buat adegan baru untuk jenis musuh berikut dan tambahkan a KinematikaBody2D simpul bernama FollowEnemy dengan CollisionShape2D. Lampirkan kode GDScript berikut ke node FollowEnemy untuk membuatnya mengikuti pemain:

extends KinematicBody2D

const SPEED = 100

func _physics_process(delta):
var player = get_parent().get_node("Player")
var player_position = player.global_position
var enemy_position = global_position
var direction = player_position - enemy_position
direction = direction.normalized()

var motion = direction * SPEED * delta
move_and_collide(motion)

Sekarang, FollowEnemy akan bergerak menuju posisi pemain di setiap frame.

Menambahkan Peluru Musuh

Sekarang, kamu bisa membuat musuh menembakkan peluru ke arah pemain. Buat adegan baru dan beri nama Bullet.tscn. Tambah sebuah KinematikaBody2D simpul ke TKP. Lampirkan Bullet.gd skrip ke simpul KinematicBody2D di adegan Bullet.tscn. Tambahkan kode berikut untuk mendefinisikan kelas Bullet:

extends KinematicBody2D

const BULLET_SPEED = 300
var bullet_direction = Vector2.ZERO

func _physics_process(delta):
var motion = bullet_direction * BULLET_SPEED * delta
move_and_collide(motion)

func set_direction(direction):
bullet_direction = direction.normalized()

Sekarang, buat simpul baru untuk musuh dengan peluru dan beri nama Menembak Musuh. Di dalam simpul ShootingEnemy, tambahkan a TabrakanBentuk2D node dengan bentuk persegi panjang sebagai hitbox.

Lampirkan kode GDScript berikut ke node ShootingEnemy untuk membuatnya menembakkan peluru:

extends KinematicBody2D

const SPEED = 100
const SHOOT_DELAY = 1.5
var shoot_timer = SHOOT_DELAY

# Import the Bullet scene
const BulletScene = preload("res://Bullet.tscn")

func _physics_process(delta):

# Shooting logic
shoot_timer -= delta

if shoot_timer <= 0:
shoot_timer = SHOOT_DELAY
var bullet_instance = BulletScene.instance()
bullet_instance.global_position = global_position
bullet_instance.set_direction(direction)
get_parent().add_child(bullet_instance)

Musuh sekarang akan menembakkan peluru secara berkala ke arah posisi pemain. Gunakan kondisional jika penyataan untuk memeriksa apakah shoot_timer kurang dari 0. Jika ya, tembak pelurunya.

Musuh yang Bergerak Secara Acak

Selain musuh yang mengikuti atau menembak pemain, musuh yang bergerak secara acak dapat menyuntikkan unsur ketidakpastian dan tantangan ke dalam permainan Anda. Membuat musuh dengan pola gerakan acak membutuhkan kombinasi logika sederhana dan pembuatan angka acak.

Mulailah dengan membuat adegan baru dan tambahkan a KinematikaBody2D simpul bernama RandomEnemy. Buat skrip baru bernama RandomEnemy.gd dan lampirkan ke node RandomEnemy. Skrip akan menangani logika gerakan acak.

extends KinematicBody2D

const MOVE_SPEED = 100
const MOVE_INTERVAL_MIN = 1.0
const MOVE_INTERVAL_MAX = 3.0

var move_timer = 0.0
var move_interval = 0.0
var move_direction = Vector2.ZERO

func _ready():
choose_new_direction()

func choose_new_direction():
move_interval = rand_range(MOVE_INTERVAL_MIN, MOVE_INTERVAL_MAX)
move_timer = move_interval
move_direction = Vector2(randf(), randf()).normalized()

func _physics_process(delta):
move_timer -= delta

if move_timer <= 0.0:
choose_new_direction()

var motion = move_direction * MOVE_SPEED * delta
move_and_collide(motion)

Termasuk Fitur Tambahan

Ada banyak fitur tambahan yang bisa Anda tambahkan ke musuh Anda untuk membuat gameplay lebih menarik.

Pertempuran Bos

Pertarungan bos berfungsi sebagai momen klimaks dalam gim Anda, memberikan pertemuan yang tak terlupakan dan menantang yang menguji keterampilan dan ketekunan pemain. Musuh bos biasanya lebih besar dan lebih kuat daripada musuh biasa, mengharuskan pemain menggunakan strategi dan taktik khusus untuk mengalahkan mereka.

Pemijahan Musuh Dinamis

Terapkan sistem pemijahan dinamis yang menyesuaikan pertemuan musuh berdasarkan performa pemain, lokasi, atau peristiwa dalam game. Ini menciptakan pengalaman gameplay yang lebih responsif dan personal.

Adaptasi Lingkungan

Buat musuh yang bisa beradaptasi dengan lingkungan, seperti musuh yang bisa terbang, berenang, atau memanjat tembok. Keserbagunaan ini membuka kemungkinan gameplay baru dan menantang pemain untuk menavigasi medan yang berbeda.

Kelemahan dan Ketahanan Musuh

Tetapkan kelemahan dan resistensi spesifik pada musuh, dorong pemain untuk bereksperimen dengan pendekatan dan taktik yang berbeda. Beberapa musuh mungkin rentan terhadap serangan atau elemen tertentu, sementara yang lain kebal atau kebal.

Kustomisasi Musuh dan Variasi Perilaku

Tambahkan tingkat ketidakpastian dengan memberikan variasi perilaku acak kepada musuh. Misalnya, musuh mungkin memiliki pola serangan atau kecepatan gerakan yang berbeda dalam permainan yang berbeda, menjaga gameplay tetap segar dan dapat diputar ulang.

Menyertakan berbagai fitur tambahan ini dapat memperkaya desain musuh game Anda, menjadikan setiap pertemuan unik dan berkesan bagi para pemain.

Ingatlah bahwa meskipun memperkenalkan mekanisme baru bisa jadi mengasyikkan, penting untuk menjaga keseimbangan dan koherensi dalam keseluruhan desain game Anda.

Praktik Terbaik untuk Menciptakan Musuh

Saat membuat musuh di game Godot Anda, pertimbangkan praktik terbaik berikut:

Komunikasi Visual yang Jelas

Gunakan desain musuh yang berbeda yang menonjol dari lingkungan untuk membuat musuh mudah dikenali.

Pertimbangkan untuk menggunakan kode warna atau siluet unik untuk membedakan tipe musuh. Pastikan animasi musuh dan efek visual memperkuat perilaku dan serangan mereka.

Kesulitan Menyeimbangkan

Perkenalkan musuh secara bertahap dengan kompleksitas yang meningkat saat pemain melanjutkan permainan. Uji pertemuan musuh dengan pemain dari berbagai tingkat keahlian untuk memastikan tantangan cocok untuk semua pemain. Hindari lonjakan kesulitan mendadak yang dapat membuat pemain frustrasi.

Menghindari Bidikan Murah

Rancang musuh dengan serangan yang dapat dihindari atau diblokir pemain, memberi mereka kesempatan untuk bereaksi. Gunakan hitbox yang adil untuk serangan musuh, hindari serangan yang menyerang di luar representasi visual mereka. Gunakan tanda atau isyarat peringatan untuk mengisyaratkan serangan berbahaya.

Playtesting dan Iterasi

Uji pertemuan musuh secara teratur selama pengembangan untuk mengevaluasi faktor kesenangan dan kesulitan mereka. Kumpulkan umpan balik dari pemain dan gunakan untuk menyempurnakan perilaku, kekuatan, dan kelemahan musuh.

Efek suara

Efek suara memainkan peran penting dalam menciptakan lingkungan permainan yang imersif dan menawan. Saat musuh terkena pukulan, tambahkan yang sesuai efek suara bebas hak cipta untuk memperkuat rasa dampak dan keterlibatan dalam pertempuran.

Gim Anda dapat mengiringi setiap serangan atau pukulan dengan isyarat audio berbeda yang sesuai dengan jenis serangan dan karakteristik musuh.

Membuat Game Godot Lebih Melibatkan Musuh

Musuh adalah komponen mendasar dari banyak game, memberikan tantangan, rintangan, dan rasa pencapaian saat dikalahkan. Dengan menambahkan berbagai jenis musuh dengan berbagai perilaku, poin kesehatan, dan mekanisme menembak, Anda dapat menciptakan pengalaman permainan yang beragam dan menarik bagi para pemain.

Ingatlah untuk menyeimbangkan kesulitan, tawarkan umpan balik visual dan pendengaran, dan uji musuh Anda secara menyeluruh untuk memberi pemain pengalaman bermain yang menyenangkan dan bermanfaat.