Πρωτοπόρος σε μερικά από τα πρώτα βιντεοπαιχνίδια του κόσμου, η υγεία είναι ένας κοινός μηχανικός που επιμένει σε πολλούς από τους πιο δημοφιλείς τίτλους του σήμερα. Το Health καθιστά δυνατή τη χρήση πολύπλοκων μηχανισμών μάχης, τη δημιουργία προόδου των παικτών και να κάνετε το παιχνίδι σας πιο διαισθητικό. Πώς όμως προσθέτετε ένα σύστημα υγείας στα δικά σας παιχνίδια;
Το Unity3D διευκολύνει την προσθήκη στοιχείων 2D UI σε παιχνίδια 3D, επομένως είναι ένα εξαιρετικό μέρος για να ξεκινήσετε την εξερεύνηση των γραμμών υγείας για πρώτη φορά.
Τι θα μάθετε
Επιφανειακά, αυτό το έργο μπορεί να μην φαίνεται περίπλοκο. Παρόλα αυτά, θα χρειαστεί να κατανοήσετε αρκετές βασικές έννοιες κωδικοποίησης Unity3D για να δημιουργήσετε μια λειτουργική γραμμή υγείας. Αυτό σημαίνει ότι υπάρχουν πολλά να μάθετε καθώς περνάτε από αυτό το έργο, όπως:
- Πώς να δημιουργήσετε στοιχεία/sprites 2D UI στο Unity3D.
- Πώς να επεξεργαστείτε στοιχεία αντικειμένων παιχνιδιού με κώδικα.
- Τρόπος κοινής χρήσης μεταβλητών μεταξύ σεναρίων στο Unity3D.
Βήμα 1: Ρυθμίστε τη σκηνή σας
Για να μπορέσετε να ξεκινήσετε την κωδικοποίηση της γραμμής υγείας σας, χρειάζεστε μια σκηνή με ένα μοντέλο αναπαραγωγής για να την εφαρμόσετε. Για να ξεκινήσετε, μπορείτε να ακολουθήσετε το δικό μας Οδηγός ελεγκτή χαρακτήρων Unity3D με βάση τη φυσική για να δημιουργήσετε ένα μοντέλο αναπαραγωγής με βασικά χειριστήρια.
Με μια σκηνή και ένα μοντέλο αναπαραγωγής στη θέση τους, ήρθε η ώρα να προσθέσετε ένα στοιχείο διεπαφής χρήστη. Κάντε δεξί κλικ μέσα στο παράθυρο Ιεραρχία και επιλέξτε UI > Εικόνα. Αυτό θα δημιουργήσει δύο νέα στοιχεία στην ιεραρχία σας: ένα γονικό αντικείμενο Canvas και ένα θυγατρικό αντικείμενο Image. Αλλάξτε το όνομα του θυγατρικού αντικειμένου σε Healthbar. Επιλέξτε πλάτος, ύψος και θέση για τη γραμμή υγείας σας χρησιμοποιώντας τον επιθεωρητή.
Μπορείτε να προσθέσετε μια ελαφρώς μεγαλύτερη εικόνα διεπαφής χρήστη με το χρώμα της να είναι μαύρο για να λειτουργεί ως φόντο/ περίγραμμα για τη γραμμή υγείας. Απλώς βεβαιωθείτε ότι βρίσκεται πάνω από τη γραμμή υγείας στην ιεραρχία, ώστε να εμφανίζεται πίσω από αυτήν.
Αυτό το στοιχείο διεπαφής χρήστη λειτουργεί ως βάση για τη γραμμή υγείας σας, αλλά χρειάζεστε επίσης ένα sprite στη θέση του για να το ζωντανέψετε. Μεταβείτε στο παράθυρο Έργο, κάντε δεξί κλικ και επιλέξτε Δημιουργώ > 2D > Sprites > τετράγωνο.
Επιλέξτε το Healthbar από την ιεραρχία και σύρετε το sprite που μόλις δημιουργήσατε στο πλαίσιο επιλογής Source Image μέσα στον επιθεωρητή. Μπορείτε επίσης να αλλάξετε Τύπος εικόνας να γεμίσει, Μέθοδος πλήρωσης προς Οριζόντια, και Fill Origin αριστερά. Τώρα αν τρέξεις το παιχνίδι σου και χρησιμοποιήσεις το Συμπλήρωση Ποσού ρυθμιστικό θα πρέπει να δείτε τη γραμμή υγείας σας να συρρικνώνεται και να μεγαλώνει.
Εάν δεν μπορείτε να δείτε το μενού στοιχείων διεπαφής χρήστη, μεταβείτε στο Παράθυρο > Διαχείριση πακέτωνκαι βεβαιωθείτε ότι έχετε εγκαταστήσει το πακέτο 2D.
Βήμα 2: Προσθέστε μια μεταβλητή υγείας
Δεν θα είχε πολύ νόημα να δημιουργήσετε μια γραμμή υγείας χωρίς μια μεταβλητή υγείας που να υπαγορεύει την κατάστασή της. Άλλα σενάρια πρέπει να μπορούν να έχουν πρόσβαση σε αυτήν τη μεταβλητή και είναι λογικό να την τοποθετήσουμε κάπου στο κέντρο. Προσθέστε το στο σενάριο Character Control ως δημόσιο float:
δημόσιοφλοτέρ παίκτης Υγεία = 1,0 στ;
Η χρήση ενός float για αυτήν τη μεταβλητή σημαίνει ότι μπορείτε εύκολα να αντιπροσωπεύσετε οποιοδήποτε ποσοστό από το 0 έως το 100, για να ταιριάζει με τη μεταβλητή Fill Amount εικόνας της γραμμής υγείας. Για παράδειγμα, ένα playerHealth 0,5f είναι το 50% του πλάτους της γραμμής υγείας.
Βήμα 3: Κοινή χρήση μεταβλητών μεταξύ σεναρίων στο Unity
Οι μεταβλητές συνήθως λειτουργούν μέσα στις δικές τους λειτουργίες και σενάρια. Αυτό τα καθιστά απρόσιτα από άλλες συναρτήσεις και σενάρια, εκτός και αν κάνετε βήματα για να πείτε στον κώδικα πού θα βρείτε τις μεταβλητές με τις οποίες θέλετε να εργαστείτε.
Ξεκινήστε δημιουργώντας ένα νέο αρχείο σεναρίου που ονομάζεται Health για να φιλοξενήσει τον κώδικα. Μπορείτε να σύρετε και να αποθέσετε αυτό το σενάριο στο στοιχείο διεπαφής χρήστη του Healthbar που δημιουργήθηκε στο πρώτο βήμα. Ο παρακάτω κώδικας μπαίνει στη συνάρτηση void Update().
Αυτή η διαδικασία ξεκινά με την εύρεση του αντικειμένου παιχνιδιού που κατέχει τη μεταβλητή. Σε αυτήν την περίπτωση, είναι το αντικείμενο Character_Model:
GameObject Character_Model = GameObject. Εύρημα("Character_Model");
Στη συνέχεια, ήρθε η ώρα να βρείτε το στοιχείο σεναρίου που περιέχει τη μεταβλητή με την οποία πρέπει να εργαστείτε.
Character_Control character_Control = Character_Model. GetComponent();
Και, τέλος, μπορείτε να εξαγάγετε τη συγκεκριμένη μεταβλητή που αναζητάτε. Σε αυτήν την περίπτωση, είναι η μεταβλητή playerHealth που προσθέσατε στον ελεγκτή χαρακτήρων σας. Αντιστοιχίστε αυτό σε μια μεταβλητή float εντός του τρέχοντος σεναρίου που ονομάζεται currentHealth.
currentHealth = character_Control.playerHealth;
Χρειάζονται μόνο μερικές γραμμές κώδικα για να λάβετε τη μεταβλητή που χρειάζεστε και μπορείτε να εφαρμόσετε αυτήν τη μέθοδο όποτε θέλετε να αποκτήσετε πρόσβαση στην υγεία του παίκτη σας. Ο κωδικός σας θα πρέπει να μοιάζει με αυτό μόλις τελειώσετε:
χρησιμοποιώντας Σύστημα. Συλλογές;
χρησιμοποιώντας Σύστημα. Συλλογές. Γενικός;
χρησιμοποιώντας UnityEngine;
χρησιμοποιώντας UnityEngine. UI;δημόσιοτάξηΥγεία: Μονοσυμπεριφορά
{
δημόσιοφλοτέρ τρέχουσα υγεία;κενόςΑρχή()
{
}
κενόςΕκσυγχρονίζω()
{
GameObject Character_Model = GameObject. Εύρημα("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Βήμα 4: Προγραμματίστε το αντικείμενο παιχνιδιού της γραμμής υγείας διεπαφής χρήστη
Τώρα που έχετε δημιουργήσει ένα στοιχείο διεπαφής χρήστη γραμμής υγείας και έχετε πρόσβαση στη μεταβλητή υγείας του προγράμματος αναπαραγωγής, ήρθε η ώρα να τα κάνετε να συνεργαστούν. Για να ξεκινήσετε, προσθέστε μια ιδιωτική στατική μεταβλητή που θα περιέχει το στοιχείο εικόνας της γραμμής υγείας:
ιδιωτικόςστατικός Image Healthbar;
Στη συνέχεια, μπορείτε να αντιστοιχίσετε το στοιχείο εικόνας σε αυτήν τη μεταβλητή στη συνάρτηση void Start(), η οποία εκτελείται μόνο μία φορά.
Healthbar = GetComponent();
Τώρα που έχετε όλες τις μεταβλητές σας στη θέση τους, μπορείτε να χρησιμοποιήσετε τον κώδικα από το προηγούμενο βήμα για να ορίσετε το πλάτος πλήρωσης του αντικειμένου διεπαφής χρήστη της γραμμής υγείας. Δεν χρειάζεται να πραγματοποιήσετε καμία μετατροπή εδώ. Τόσο η υγεία του παίκτη όσο και το ποσό πλήρωσης της γραμμής υγείας είναι μεταβλητές κινητής.
Healthbar.fillAmount = τρέχουσαΥγεία;
Με αυτόν τον κωδικό στη θέση του, η γραμμή υγείας θα γεμίσει πάνω-κάτω με βάση τη μεταβλητή υγείας που βρίσκεται στον κωδικό Character_Control. Αυτό είναι λίγο βαρετό, όμως, και σίγουρα θα μπορούσε να γίνει με κάποιο χρώμα.
Ξεκινήστε προσθέτοντας ένα νέο χρώμα για να κάνετε τη γραμμή υγείας σε ανοιχτό πράσινο χρώμα όταν ο παίκτης έχει πολύ υγεία.
Χρώμα πράσινοΥγεία = νέος Χρώμα(0,6 στ, 1, 0,6 στ, 1);
Στη συνέχεια, προσθέστε μια δήλωση if για να ελέγξετε εάν η υγεία του παίκτη είναι πάνω από 0,3f, δηλαδή 30% ή περισσότερο. Εάν είναι υψηλότερο από 0,3 f, ορίστε τη γραμμή υγείας ώστε να ταιριάζει με το χρώμα που μόλις προσθέσατε. Εάν είναι κάτω από 0,3f, γυρίστε τη γραμμή υγείας κόκκινη.
αν (τρέχουσα Υγεία >= 0,3 στ) {
Healthbar.color = πράσινοΥγεία;
} αλλού {
Healthbar.color = Χρώμα.κόκκινο;
}
Βήμα 5: Δοκιμή του Κώδικα
Όπως μπορείτε να δείτε από τον πλήρη κώδικα παρακάτω, αυτό το έργο είναι αρκετά απλό όταν είναι όλα μαζί. Φυσικά, όμως, χρειάζεστε έναν τρόπο να δοκιμάσετε τον κωδικό σας.
χρησιμοποιώντας Σύστημα. Συλλογές;
χρησιμοποιώντας Σύστημα. Συλλογές. Γενικός;
χρησιμοποιώντας UnityEngine;
χρησιμοποιώντας UnityEngine. UI;δημόσιοτάξηΥγεία: Μονοσυμπεριφορά
{
ιδιωτικόςστατικός Image Healthbar;
δημόσιοφλοτέρ τρέχουσα υγεία;κενόςΑρχή()
{
Healthbar = GetComponent();
}κενόςΕκσυγχρονίζω()
{
GameObject Character_Model = GameObject. Εύρημα("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = τρέχουσαΥγεία;Χρώμα πράσινοΥγεία = νέος Χρώμα(0,6 στ, 1, 0,6 στ, 1);
αν (τρέχουσα Υγεία >= 0,3 στ) {
Healthbar.color = πράσινοΥγεία;
} αλλού {
Healthbar.color = Χρώμα.κόκκινο;
}
}
}
Μπορείτε να προσθέσετε μία μόνο γραμμή κώδικα στο σενάριο Character_Control για να καταστεί δυνατή η δοκιμή. Κάθε φορά που η συσκευή αναπαραγωγής πατάει το πλήκτρο W για να προχωρήσει προς τα εμπρός, αφαιρέστε ένα μικρό ποσό υγείας. Μπορείτε να προσθέσετε τον ίδιο κωδικό σε οποιοδήποτε σενάριο με πρόσβαση στη μεταβλητή playerHealth για τα ίδια αποτελέσματα:
Υγεία παίκτη -= 0,001f;
Μπορείτε επίσης να εξετάσετε το ενδεχόμενο προσθήκης μοναδικών στοιχείων στο έργο Unity σας. Μπορείς βρείτε δωρεάν στοιχεία Unity στον ιστό, δίνοντάς σας την ευκαιρία να ζωντανέψετε το έργο σας χωρίς να χρειάζεται να ξοδέψετε χρήματα.
Δημιουργία ράβδων υγείας στο Unity3D
Το παιχνίδι σας αρχίζει να διαμορφώνεται τώρα που έχετε δημιουργήσει μια μπάρα υγείας για τον χαρακτήρα σας. Υπάρχει ακόμη πολλή δουλειά να κάνετε, αλλά τώρα θα πρέπει να έχετε μερικές από τις βασικές δεξιότητες που χρειάζεστε για να αρχίσετε να κάνετε πραγματική πρόοδο. Φυσικά, όμως, δεν βλάπτει ποτέ να διαβάζεις περισσότερους οδηγούς.