Είσαι νέος στο Unity; Θέλετε να μάθετε πώς να λαμβάνετε εισόδους από παίκτες και να μετακινείτε χαρακτήρες στην οθόνη; Δημιουργήσαμε αυτόν τον οδηγό για να παρουσιάσουμε τρεις διαφορετικούς τρόπους με τους οποίους μπορείτε να ελέγξετε την κίνηση του παίκτη στο Unity.
Είτε είστε νέοι στην κωδικοποίηση είτε έχετε κάποια εμπειρία, αυτό το σεμινάριο C# θα σας βάλει στα πόδια σας και τους χαρακτήρες σας στα δικά τους.
Ας αρχίσουμε.
Κίνηση παίκτη στην ενότητα: Συλλογή εισροών
Πρώτα πράγματα πρώτα, πρέπει να ξέρετε πώς να καταγράφετε εισόδους από τον χρήστη και να τις μετατρέπετε σε κίνηση μέσα στο παιχνίδι. Το Unity το κάνει πολύ εύκολο, αρκεί να ξέρετε πού να κοιτάξετε.
Με ανοιχτό το Unity, κάντε κλικ στο Επεξεργασία στην επάνω γραμμή εργαλείων. Τώρα επιλέξτε Ρυθμίσεις έργου. Από την αριστερή λίστα, επιλέξτε Διαχειριστής εισόδου. Επιλέγω Τσεκούρια, συμπληρώνοντας τη λίστα των τιμών εισόδου. Θα θελήσετε να κοιτάξετε Οριζόντιος και Κατακόρυφος για βασική κίνηση.
Θα χρησιμοποιήσετε αυτούς τους άξονες μαζί με Εισαγωγή. GetAxisRaw(); για βασική κίνηση στην επόμενη ενότητα.
Κίνηση παίκτη σε ενότητα με χρήση άκαμπτου σώματος και επιταχυντή
Τώρα που γνωρίζετε τα ονόματα των αξόνων, μπορείτε να τα χρησιμοποιήσετε για να ελέγξετε την κίνηση του παίκτη.
Στο δικό σας έργο Unity Ιεραρχία δείτε, κάντε δεξί κλικ και επιλέξτε Αντικείμενο 3D > Κάψουλα για να δημιουργήσετε αυτό που θα χαρίσετε κίνηση. Φροντίστε να χρησιμοποιήσετε την ίδια τακτική για να δημιουργήσετε έδαφος Επίπεδο για να σταθεί η Κάψουλα σας.
Φροντίστε να επαναφέρετε το Μεταμορφώνω αξία και των δύο αντικειμένων και μετακινήστε την Κάψουλα σας έτσι ώστε να στέκεται στο αεροπλάνο. Μετονομάστε το Capsule σας σε κάτι σαν "Player" για εύκολη αναγνώριση.
Σχετιζομαι με: Οι 5 γλώσσες ανάπτυξης παιχνιδιών Unity: Ποιες πρέπει να μάθετε;
Κάνε κλικ στο Παίχτης αντικείμενο και, στο Επιθεωρητής προβολή, κύλιση προς τα κάτω σε Προσθήκη στοιχείου. Πρόσθεσε ένα Άκαμπτο σώμακαι, στη συνέχεια, προσθέστε ένα άλλο στοιχείο ως α Capsule Collider αυτή τη φορά. Θα χρειαστείτε αυτά τα στοιχεία για να προσθέσετε φυσική, άρα και κίνηση, στο δικό σας Παίχτης.
Στη συνέχεια, κάντε δεξί κλικ στο δικό σας Σενάρια φάκελο και Δημιουργώ ένα νέο Σενάριο C#. Ονομάστε αυτό το σενάριο όπως το "PlayerMovement". Εάν σκοπεύετε να προσθέσετε πολλούς τύπους κίνησης για διαφορετικούς χαρακτήρες ή τύπους ελεγκτών, θα θέλετε να δημιουργήσετε πολλά διαφορετικά σενάρια για κάθε τύπο κίνησης. Προς το παρόν, θα επικεντρωθούμε στα βασικά και θα χρησιμοποιήσουμε ένα σενάριο.
Δείτε επίσης: Τι είναι ο αρθρωτός προγραμματισμός στο Unity και γιατί είναι σημαντικός;
Κάντε διπλό κλικ στο σενάριό σας για να το ανοίξετε. Θα συναντηθείτε με ένα προεπιλεγμένο σενάριο Unity:
χρησιμοποιώντας το Σύστημα. Συλλογές;
χρησιμοποιώντας το Σύστημα. Συλλογές. Γενικός;
χρησιμοποιώντας UnityEngine?
δημόσια τάξη PlayerMovement: MonoBehaviour
{
// Το Start καλείται πριν από την πρώτη ενημέρωση πλαισίου
void Start()
{}
// Η ενημέρωση καλείται μία φορά ανά καρέ
void Update()
{
}
}
Μπορείτε να διαγράψετε χρησιμοποιώντας το Σύστημα. Συλλογές; και χρησιμοποιώνταςΣύστημα. Συλλογές. Γενικός; καθώς δεν χρειάζονται για αυτό το σενάριο.
Με αυτό εκτός, επικεντρωθείτε σε
δημόσια τάξη PlayerMovement: MonoBehaviour {
προς το παρόν. Στο εσωτερικό του ανοιγόμενου σγουρού νάρθηκα, δημιουργήστε ένα δημόσιο float μεταβλητή με όνομα Ταχύτητα ή κάτι παρόμοιο. Αυτό Ταχύτητα μεταβλητή είναι ένας πολλαπλασιαστής που θα ελέγχει πόσο γρήγορα μας Παίχτης κινείται μετά από λίγο ακόμα προγραμματισμό. Προς το παρόν, σετ Ταχύτητα ίσο με κάτι σαν 10στ.
Πρέπει επίσης να επιτρέψετε στο Unity ότι υπάρχει ένα Rigidbody για χειρισμό σε αυτό το σενάριο. Αυτό γίνεται με τη λέξη-κλειδί Άκαμπτο σώμα και ένα όνομα μεταβλητής—θα επιλέξουμε rb.
δημόσια τάξη PlayerMovement: MonoBehaviour
{
δημόσια ταχύτητα πλεύσης = 10f; //Ελέγχει τον πολλαπλασιαστή ταχύτητας
Rigidbody rb; //Ενημερώνει το σενάριο ότι υπάρχει ένα άκαμπτο σώμα, μπορούμε να χρησιμοποιήσουμε τη μεταβλητή rb για να το αναφέρουμε σε περαιτέρω σενάριο
Αυτό είναι το μόνο που χρειάζεται να προσθέσετε σε αυτήν την ενότητα. Τώρα, προχωρήστε στο void Start(). Με την έναρξη του παιχνιδιού, πρέπει να ρυθμίσετε το rb μεταβλητή ίση με το Άκαμπτο σώμα στο Παίχτης όπως έτσι:
void Start()
{
rb = GetComponent(); //rb ισούται με το άκαμπτο σώμα στη συσκευή αναπαραγωγής
}
Τώρα, ρίξτε μια ματιά στο void Update() λειτουργία. Αυτή είναι η λειτουργία που θα χρησιμοποιήσετε για να λαμβάνετε συνεχώς εισόδους από τα πληκτρολόγια, τα χειριστήρια των παικτών κ.λπ. Θυμηθείτε πότε ελέγξατε το Ρυθμίσεις έργου Για Άξονες εισόδου? Θα τα χρησιμοποιήσετε εδώ.
void Update()
{
float xMove = Είσοδος. GetAxisRaw ("Οριζόντια"); // Το κλειδί d αλλάζει την τιμή σε 1, ένα κλειδί αλλάζει την τιμή σε -1
float zMove = Είσοδος. GetAxisRaw ("Κάθετη"); // Το κλειδί w αλλάζει την τιμή σε 1, το κλειδί s αλλάζει την τιμή σε -1
rb.velocity = νέο Vector3(xMove, rb.velocity.y, zMove) * speed; // Δημιουργεί ταχύτητα σε κατεύθυνση τιμής ίσης με το πάτημα πλήκτρων (WASD). Το rb.velocity.y ασχολείται με την πτώση + το άλμα θέτοντας την ταχύτητα σε y.
}
Μην ανησυχείτε εάν αισθάνεστε συγκλονισμένοι στο άλμα στον κώδικα. θα το εξηγήσουμε βήμα-βήμα. Πρώτα, δημιουργήστε ένα φλοτέρ μεταβλητή με όνομα όπως xMoveκαι ορίστε το ίσο με Εισαγωγή. GetAxisRaw ("Οριζόντια");
Εισαγωγή. GetAxisRaw(); είναι ο τρόπος του Unity για την εγγραφή των εισόδων του προγράμματος αναπαραγωγής από το Τσεκούρια βρήκατε στο Ρυθμίσεις έργου. Μπορείτε να διαβάσετε περισσότερα για αυτό στο Επίσημη τεκμηρίωση της Unity. "Οριζόντιος" προέρχεται από το Οριζόντιος Άξονας όνομα στο Unity. Αυτός ο άξονας ελέγχει την αριστερή και τη δεξιά κίνηση με τα πλήκτρα "a" και "d".
Όπως πιθανότατα μπορείτε να μαντέψετε μέχρι τώρα, float zMove = Είσοδος. GetAxisRaw ("Κάθετη");
κάνει το ίδιο πράγμα αλλά για τα πλήκτρα "w" και "s".
Σχετιζομαι με: Τα καλύτερα μαθήματα Unity 3D για αρχάριους
Στη συνέχεια, θα το βάλεις Ταχύτητα μεταβλητή που δημιουργήσατε στο παιχνίδι και ολοκληρώστε το τελευταίο κομμάτι του παζλ για την κίνηση του παίκτη στο Unity.
rb.velocity = νέο Vector3(xMove, rb.velocity.y, zMove) * speed; // Δημιουργεί ταχύτητα σε κατεύθυνση τιμής ίσης με το πάτημα πλήκτρων (WASD). Το rb.velocity.y ασχολείται με την πτώση + το άλμα θέτοντας την ταχύτητα σε y.
Επιστρέψτε στο Unity's Επιθεωρητής προβολή για το Παίχτης αντικείμενο. Ρίξτε μια ματιά στο Άκαμπτο σώμα-κάτω από Πληροφορίες, θα δείτε μια τιμή Ταχύτητα. Αυτή είναι η τιμή με την οποία στοχεύετε rb.ταχύτητα.
νέο Vector3(xMove, rb.velocity.y, zMove) * ταχύτητα, δημιουργεί ένα νέο διάνυσμα με τις παρεχόμενες τιμές x, y και z και στη συνέχεια πολλαπλασιάζει την τιμή του διανύσματος με Ταχύτητα.
Φροντίστε να σύρετε το Κίνηση Παικτών σενάριο στο Παίχτης αντικείμενο στο Unity, και αυτό είναι! Συνολικά, έχετε ένα λειτουργικό σενάριο C# που λαμβάνει εισόδους από το πρόγραμμα αναπαραγωγής και τις μετατρέπει σε κίνηση χαρακτήρων στο Unity.
Εδώ είναι ο ολοκληρωμένος κώδικας:
χρησιμοποιώντας UnityEngine?
δημόσια τάξη PlayerMovement: MonoBehaviour
{
δημόσια ταχύτητα πλεύσης = 10f; //Ελέγχει τον πολλαπλασιαστή ταχύτητας
Rigidbody rb; //Ενημερώνει το σενάριο ότι υπάρχει ένα άκαμπτο σώμα, μπορούμε να χρησιμοποιήσουμε τη μεταβλητή rb για να το αναφέρουμε σε περαιτέρω σενάριο// Το Start καλείται πριν από την πρώτη ενημέρωση πλαισίου
void Start()
{
rb = GetComponent(); //rb ισούται με το άκαμπτο σώμα στη συσκευή αναπαραγωγής
}// Η ενημέρωση καλείται μία φορά ανά καρέ
void Update()
{
float xMove = Είσοδος. GetAxisRaw ("Οριζόντια"); // Το κλειδί d αλλάζει την τιμή σε 1, ένα κλειδί αλλάζει την τιμή σε -1
float zMove = Είσοδος. GetAxisRaw ("Κάθετη"); // Το κλειδί w αλλάζει την τιμή σε 1, το κλειδί s αλλάζει την τιμή σε -1
rb.velocity = νέο Vector3(xMove, rb.velocity.y, zMove) * speed; // Δημιουργεί ταχύτητα σε κατεύθυνση τιμής ίσης με το πάτημα πλήκτρων (WASD). Το rb.velocity.y ασχολείται με την πτώση + το άλμα θέτοντας την ταχύτητα σε y.
}
}
Σημείωση: Εάν βρείτε τον χαρακτήρα σας να κάνει περισσότερο flopping γύρω από οτιδήποτε άλλο, φροντίστε να κλειδώσετε την περιστροφή του παίκτη στο Επιθεωρητής.
Μάθετε και κάντε περισσότερα στο Unity
Τώρα που ξέρετε πώς να προγραμματίζετε την κίνηση του παίκτη στο Unity με στοιχεία Rigidbody και Collider, τι θα μάθετε στη συνέχεια; Ίσως η επέκταση του ελεγκτή κινήσεών σας για να προσθέσετε πράγματα όπως η ολίσθηση, το διπλό άλμα και άλλα θα αποδεικνυόταν διασκεδαστικό και συναρπαστικό.
Το Unity Learn είναι γεμάτο ενδιαφέροντα θέματα για να προωθήσετε τις δεξιότητές σας στην ανάπτυξη παιχνιδιών. Πιστεύουμε ότι ένας από τους πιο σημαντικούς παράγοντες για την επέκταση των γνώσεών σας στον προγραμματισμό είναι να μαθαίνετε κάτι νέο κάθε μέρα. Μείνετε περίεργοι και χαρούμενοι στο hacking!
Θέλετε να ξεκινήσετε να αναπτύσσετε τα δικά σας παιχνίδια; Το Unity Learn είναι ο καλύτερος και ευκολότερος τρόπος για να μάθετε και να κατακτήσετε αυτά που πρέπει να γνωρίζετε.
Διαβάστε Επόμενο
- Προγραμματισμός
- Ανάπτυξη παιχνιδιών
- Ενότητα
- Προγραμματισμός
Ο Marcus είναι ανεξάρτητος δημοσιογράφος τεχνολογίας και Junior Editor for Programming στο MUO. Είναι ένας ισόβιος μαθητής, χομπίστας προγραμματιστής front-end και συγγραφέας διηγημάτων με 3+ χρόνια εμπειρία στην ανάπτυξη πεζογραφίας που κρατά τους αναγνώστες ενήμερους.
Εγγραφείτε στο ενημερωτικό μας δελτίο
Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Κάντε κλικ εδώ για να εγγραφείτε