Βελτιώστε την εμπειρία παιχνιδιού σας στο Godot ενσωματώνοντας ένα σύστημα υγείας και βλάβης.

Ένα σύστημα υγείας και ζημιάς επιτρέπει στους παίκτες να δέχονται ζημιές και να χάνουν πόντους υγείας όταν συναντούν εμπόδια ή εχθρούς. Τους δίνει επίσης τη δυνατότητα να αποκαταστήσουν την υγεία με διάφορα μέσα, όπως power-ups ή πακέτα υγείας.

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

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

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

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

Δημιουργήστε μια νέα σκηνή για τον χαρακτήρα του παίκτη. Πρόσθεσε ένα KinematicBody2D κόμβο και μέσα σε αυτόν, προσθέστε ένα

instagram viewer
CollisionShape2D με ένα ορθογώνιο σχήμα που αντιπροσωπεύει το hitbox του παίκτη. Επισυνάψτε α Ξωτικό κόμβος στο KinematicBody2D για να εμφανίσετε τον χαρακτήρα του παίκτη.

# Player.gd
extends KinematicBody2D

const SPEED = 200

var velocity = Vector2.ZERO
var health = 100

func _physics_process(delta):
velocity.x = 0
velocity.y = 0

if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEED

if Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED

move_and_collide(velocity * delta)

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

Σχεδιασμός στοιχείων διεπαφής χρήστη Health Bar

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

Δημιουργήστε έναν νέο κόμβο για το HUD (heads-up display). Πρόσθεσε ένα CanvasLayer κόμβο και μέσα σε αυτόν, προσθέστε ένα TextureProgress κόμβος. Προσαρμόστε την εμφάνιση του TextureProgress κόμβος σύμφωνα με το στυλ και το θέμα του παιχνιδιού σας.

Για να εμφανίσετε τη γραμμή υγείας χρησιμοποιώντας TextureProgress στο HUD, πρέπει να του αντιστοιχίσετε μια υφή. TextureProgress χρησιμοποιεί δύο υφές: μια για το φόντο και μια άλλη για τη γεμάτη μερίδα (πρόοδος).

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

Επισυνάψτε ένα σενάριο στη σκηνή HUD για να ενημερώσετε τη γραμμή υγείας με βάση την υγεία του προγράμματος αναπαραγωγής:

# HUD.gd
extends CanvasLayer

onready var healthBar := $TextureProgress

func _ready():
update_health_bar()

func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health

Χειρισμός της υγείας του παίκτη

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

# player.gd
extends KinematicBody2D

const SPEED = 200
const DAMAGE_AMOUNT = 0.1

var velocity = Vector2.ZERO
var health = 100

# Screen boundaries
var screen_size
var margin = 20

func _ready():
screen_size = get_viewport_rect().size

func _physics_process(delta):
#... (existing movement code)
move_and_collide(velocity * delta)

var c1 = position.x < -margin
var c2 = position.x > screen_size.x + margin
var c3 = position.y < -margin
var c4 = position.y > screen_size.y + margin

# Check if the player is outside the screen boundaries
if c1 or c2 or c3 or c4:
take_damage_on_screen_exit()

func take_damage_on_screen_exit():
health -= DAMAGE_AMOUNT
if health <= 0:
health = 0
# Game over logic here

update_health_ui()

Πρόσθεσε το update_health_ui() λειτουργία στο παίκτης.gd script για να καλέσετε τη δέσμη ενεργειών HUD και να ενημερώσετε τη γραμμή υγείας.

# Player.gd
extends KinematicBody2D

#... (other code)

func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()

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

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

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

Παραλαβές υγείας

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

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

Inincibility Power-Ups

Δημιουργήστε power-ups που δίνουν στον παίκτη προσωρινό αήττητο για περιορισμένο χρονικό διάστημα. Όταν ο παίκτης συλλέγει ένα power-up αήττητου, αποκτά ανοσία σε ζημιές από εχθρούς ή άλλους κινδύνους.

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

Διαφορετικοί τύποι εχθρών

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

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

Αναγέννηση Υγείας

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

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

Ηχητική και οπτική ανατροφοδότηση

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

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

Θυμηθείτε να λάβετε υπόψη τη συνολική ισορροπία των πρόσθετων λειτουργιών που εισάγετε. Συνεχίστε να δοκιμάζετε το παιχνίδι και να συλλέγετε σχόλια για να βεβαιωθείτε ότι το παιχνίδι παραμένει προκλητικό, ευχάριστο και με καλό ρυθμό σε όλο το παιχνίδι.

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

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

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