Πολλά παιχνίδια περιλαμβάνουν κάποιο είδος εχθρού για να πολεμήσετε. Εξερευνήστε τους διάφορους τρόπους με τους οποίους μπορείτε να προσθέσετε —και να βελτιώσετε— τη μάχη με τον εχθρό.

Οι εχθροί παίζουν καθοριστικό ρόλο στο να κάνουν τα παιχνίδια συναρπαστικά και προκλητικά για τους παίκτες. Είτε δημιουργείτε ένα 2D platformer, ένα shooter από πάνω προς τα κάτω ή ένα παιχνίδι ρόλων, η προσθήκη εχθρών μπορεί να βελτιώσει σημαντικά την εμπειρία παιχνιδιού.

Η φιλική προς το χρήστη διεπαφή και η διαισθητική γλώσσα δέσμης ενεργειών του Godot, η GDScript, κάνουν τη διαδικασία αποτελεσματική και ευχάριστη.

Ρύθμιση του παιχνιδιού Γκοντό

Πριν βουτήξετε στη δημιουργία εχθρού, ρυθμίστε τη βασική δομή του δισδιάστατου παιχνιδιού σας η μηχανή παιχνιδιών Γκοντό.

Δημιουργήστε ένα νέο έργο 2D στο Godot. Στην κύρια σκηνή, δημιουργήστε ένα νέο KinematicBody2D κόμβο και ονομάστε τον Παίχτης. Μέσα στον κόμβο αναπαραγωγής, προσθέστε ένα CollisionShape2D με ένα ορθογώνιο σχήμα, το οποίο θα είναι το hitbox του παίκτη. Προσθέστε επίσης α Ξωτικό κόμβος ως οπτική αναπαράσταση του χαρακτήρα του παίκτη.

instagram viewer

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

Επισυνάψτε τον ακόλουθο κώδικα GDScript στο Παίχτης κόμβος για να ενεργοποιήσετε τη βασική κίνηση:

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)

Με αυτόν τον κωδικό, η συσκευή αναπαραγωγής μπορεί να μετακινηθεί αριστερά, δεξιά, πάνω και κάτω χρησιμοποιώντας τα πλήκτρα βέλους ή τα πλήκτρα WASD.

Δημιουργώντας έναν απλό εχθρό

Τώρα που έχετε ρυθμίσει έναν χαρακτήρα παίκτη, μπορείτε να δημιουργήσετε έναν απλό εχθρό.

Δημιουργήστε μια νέα σκηνή και προσθέστε ένα StaticBody2D κόμβος με όνομα Εχθρός. Μέσα στον κόμβο Enemy, προσθέστε a CollisionShape2D κόμβος με σχήμα κύκλου για να ορίσει το hitbox του εχθρού. Προσθέστε επίσης α Ξωτικό κόμβος για να αναπαραστήσει οπτικά τον εχθρό.

Με τη ρύθμιση της σύγκρουσης, ο εχθρός θα είναι έτοιμος να αλληλεπιδράσει με τον παίκτη και άλλα στοιχεία στον κόσμο του παιχνιδιού σας.

Δημιουργία εχθρού Ακολουθήστε τον παίκτη

Η δημιουργία εχθρών που ακολουθούν τον παίκτη προσθέτει ένα νέο επίπεδο πρόκλησης στο παιχνίδι.

Δημιουργήστε μια νέα σκηνή για τον ακόλουθο τύπο εχθρού και προσθέστε a KinematicBody2D κόμβος με όνομα Ακολουθήστε τον εχθρό με ένα CollisionShape2D. Συνδέστε τον ακόλουθο κώδικα GDScript στον κόμβο FollowEnemy για να τον κάνετε να ακολουθεί το πρόγραμμα αναπαραγωγής:

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)

Τώρα το Ακολουθήστε τον εχθρό θα κινηθεί προς τη θέση του παίκτη σε κάθε καρέ.

Προσθήκη εχθρικών σφαίρων

Τώρα, μπορείτε να κάνετε τον εχθρό να πυροβολήσει σφαίρες προς τον παίκτη. Δημιουργήστε μια νέα σκηνή και ονομάστε την Bullet.tscn. Πρόσθεσε ένα KinematicBody2D κόμβος στη σκηνή. Επισυνάψτε το Bullet.gd σενάριο στον κόμβο KinematicBody2D στη σκηνή Bullet.tscn. Προσθέστε τον ακόλουθο κώδικα για να ορίσετε την κλάση 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()

Τώρα, δημιουργήστε έναν νέο κόμβο για τον εχθρό με σφαίρες και ονομάστε τον ShootingEnemy. Μέσα στον κόμβο ShootingEnemy, προσθέστε ένα CollisionShape2D κόμβος με ορθογώνιο σχήμα ως το hitbox.

Συνδέστε τον ακόλουθο κώδικα GDScript στον κόμβο ShootingEnemy για να τον κάνετε να εκτοξεύει σφαίρες:

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)

Ο εχθρός τώρα θα εκτοξεύει περιοδικά σφαίρες προς τη θέση του παίκτη. Χρησιμοποιήστε ένα υπό όρους αν δήλωση για να ελέγξετε αν το shoot_timer είναι μικρότερο από 0. Εάν είναι, τότε πυροβολήστε τη σφαίρα.

Τυχαία κινούμενος εχθρός

Εκτός από τους εχθρούς που ακολουθούν ή πυροβολούν τον παίκτη, ένας εχθρός που κινείται τυχαία μπορεί να εισάγει ένα στοιχείο απρόβλεπτου και πρόκλησης στο παιχνίδι σας. Η δημιουργία ενός εχθρού με τυχαία μοτίβα κίνησης απαιτεί έναν συνδυασμό απλής λογικής και δημιουργίας τυχαίων αριθμών.

Ξεκινήστε δημιουργώντας μια νέα σκηνή και προσθέστε ένα KinematicBody2D κόμβος με όνομα RandomEnemy. Δημιουργήστε ένα νέο σενάριο με όνομα RandomEnemy.gd και συνδέστε το στον κόμβο RandomEnemy. Το σενάριο θα χειριστεί τη λογική της τυχαίας κίνησης.

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)

Συμπεριλαμβανομένων πρόσθετων χαρακτηριστικών

Υπάρχουν πολλές πρόσθετες λειτουργίες που μπορείτε να προσθέσετε στους εχθρούς σας για να κάνετε το παιχνίδι πιο ενδιαφέρον.

Boss Battles

Οι μάχες αφεντικών χρησιμεύουν ως κορυφαίες στιγμές στο παιχνίδι σας, παρέχοντας αξέχαστες και προκλητικές συναντήσεις που δοκιμάζουν τις δεξιότητες και την επιμονή των παικτών. Οι Boss εχθροί είναι συνήθως μεγαλύτεροι και πιο ισχυροί από τους κανονικούς εχθρούς, απαιτώντας από τους παίκτες να χρησιμοποιούν συγκεκριμένες στρατηγικές και τακτικές για να τους νικήσουν.

Δυναμική ωοτοκία εχθρού

Εφαρμόστε ένα δυναμικό σύστημα αναπαραγωγής που προσαρμόζει τις συναντήσεις του εχθρού με βάση την απόδοση, την τοποθεσία του παίκτη ή τα γεγονότα εντός του παιχνιδιού. Αυτό δημιουργεί μια πιο αποκριτική και εξατομικευμένη εμπειρία παιχνιδιού.

Περιβαλλοντική Προσαρμογή

Δημιουργήστε εχθρούς που μπορούν να προσαρμοστούν στο περιβάλλον, όπως εχθρούς που μπορούν να πετάξουν, να κολυμπήσουν ή να σκαρφαλώσουν σε τοίχους. Αυτή η ευελιξία ανοίγει νέες δυνατότητες παιχνιδιού και προκαλεί τους παίκτες να πλοηγηθούν σε διαφορετικά εδάφη.

Αδυναμίες και αντιστάσεις του εχθρού

Εκχωρήστε συγκεκριμένες αδυναμίες και αντιστάσεις στους εχθρούς, ενθαρρύνοντας τους παίκτες να πειραματιστούν με διαφορετικές προσεγγίσεις και τακτικές. Μερικοί εχθροί μπορεί να είναι ευάλωτοι σε ορισμένες επιθέσεις ή στοιχεία, ενώ άλλοι είναι άνοσοι ή ανθεκτικοί.

Προσαρμογή εχθρού και παραλλαγές συμπεριφοράς

Προσθέστε ένα επίπεδο μη προβλεψιμότητας δίνοντας στους εχθρούς τυχαιοποιημένες παραλλαγές συμπεριφοράς. Για παράδειγμα, ένας εχθρός μπορεί να έχει διαφορετικά μοτίβα επίθεσης ή ταχύτητες κίνησης σε διαφορετικά playthrough, διατηρώντας το παιχνίδι φρέσκο ​​και επαναλαμβανόμενο.

Η συμπερίληψη μιας ποικιλίας από αυτές τις πρόσθετες λειτουργίες μπορεί να εμπλουτίσει τον εχθρικό σχεδιασμό του παιχνιδιού σας, κάνοντας κάθε συνάντηση μοναδική και αξέχαστη στους παίκτες.

Να θυμάστε ότι ενώ η εισαγωγή νέων μηχανικών μπορεί να είναι συναρπαστική, είναι σημαντικό να διατηρείτε την ισορροπία και τη συνοχή στο συνολικό σχεδιασμό του παιχνιδιού σας.

Βέλτιστες πρακτικές για τη δημιουργία εχθρών

Όταν δημιουργείτε εχθρούς στο παιχνίδι Godot, λάβετε υπόψη τις ακόλουθες βέλτιστες πρακτικές:

Καθαρή οπτική επικοινωνία

Χρησιμοποιήστε διαφορετικά σχέδια εχθρού που ξεχωρίζουν από το περιβάλλον για να κάνετε τους εχθρούς εύκολα αναγνωρίσιμους.

Σκεφτείτε να χρησιμοποιήσετε χρωματική κωδικοποίηση ή μοναδικές σιλουέτες για να διαφοροποιήσετε τους τύπους του εχθρού. Βεβαιωθείτε ότι τα κινούμενα σχέδια και τα οπτικά εφέ του εχθρού ενισχύουν τις συμπεριφορές και τις επιθέσεις τους.

Δυσκολία εξισορρόπησης

Εισάγετε σταδιακά εχθρούς με αυξανόμενη πολυπλοκότητα καθώς ο παίκτης προχωρά στο παιχνίδι. Δοκιμάστε τις συναντήσεις του εχθρού με παίκτες διαφορετικών επιπέδων δεξιοτήτων για να διασφαλίσετε ότι οι προκλήσεις είναι κατάλληλες για όλους τους παίκτες. Αποφύγετε ξαφνικές αιχμές δυσκολίας που μπορεί να απογοητεύσουν τους παίκτες.

Αποφυγή φτηνών βολών

Σχεδιάστε εχθρούς με επιθέσεις που ο παίκτης μπορεί να αποφύγει ή να μπλοκάρει, δίνοντάς τους την ευκαιρία να αντιδράσουν. Χρησιμοποιήστε ένα δίκαιο hitbox για τις επιθέσεις των εχθρών, αποφεύγοντας επιθέσεις που χτυπούν πέρα ​​από την οπτική τους αναπαράσταση. Χρησιμοποιήστε προειδοποιητικά σημάδια ή συνθήματα για να υποδείξετε επικίνδυνες επιθέσεις.

Δοκιμή αναπαραγωγής και επανάληψη

Δοκιμάζετε τακτικά τις συναντήσεις του εχθρού κατά τη διάρκεια της ανάπτυξης για να αξιολογείτε τον παράγοντα διασκέδασης και τη δυσκολία τους. Συγκεντρώστε σχόλια από τους παίκτες και χρησιμοποιήστε τα για να βελτιώσετε τις συμπεριφορές, τα δυνατά και τα αδύνατα σημεία του εχθρού.

ΗΧΗΤΙΚΑ εφε

Τα ηχητικά εφέ παίζουν καθοριστικό ρόλο στη δημιουργία ενός καθηλωτικού και μαγευτικού περιβάλλοντος παιχνιδιού. Όταν ένας εχθρός δέχεται ένα χτύπημα, προσθέστε το κατάλληλο ηχητικά εφέ χωρίς πνευματικά δικαιώματα για να ενισχύσει την αίσθηση του αντίκτυπου και της εμπλοκής στη μάχη.

Το παιχνίδι σας μπορεί να συνοδεύει κάθε χτύπημα ή χτύπημα με διακριτές ηχητικές ενδείξεις που αντιστοιχούν στον τύπο της επίθεσης και στα χαρακτηριστικά του εχθρού.

Κάνοντας τα παιχνίδια Γκοντό να ασχολούνται περισσότερο με τους εχθρούς

Οι εχθροί είναι ένα θεμελιώδες συστατικό πολλών παιχνιδιών, παρέχοντας προκλήσεις, εμπόδια και μια αίσθηση ολοκλήρωσης όταν ηττηθείς. Προσθέτοντας διαφορετικούς τύπους εχθρών με διαφορετικές συμπεριφορές, σημεία υγείας και μηχανικούς σκοποβολής, μπορείτε να δημιουργήσετε ποικίλες και συναρπαστικές εμπειρίες παιχνιδιού για τους παίκτες.

Θυμηθείτε να εξισορροπήσετε τη δυσκολία, να προσφέρετε οπτική και ακουστική ανατροφοδότηση και να δοκιμάσετε διεξοδικά τους εχθρούς σας για να προσφέρετε στους παίκτες μια ευχάριστη και ανταποδοτική εμπειρία παιχνιδιού.