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

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

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

Βήμα 1: Δημιουργήστε μια σκηνή με αντικείμενα αναπαραγωγής και εδάφους

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

instagram viewer

Ένα τρισδιάστατο αντικείμενο αεροπλάνου για έδαφος

Το πρώτο αντικείμενο που πρέπει να προσθέσετε στη σκηνή σας είναι ένα αεροπλάνο. Κάντε δεξί κλικ μέσα στο παράθυρο ιεραρχίας, τοποθετήστε το δείκτη του ποντικιού πάνω 3D αντικείμενοκαι επιλέξτε Επίπεδο από τη λίστα. Μπορείτε να προσαρμόσετε το μέγεθος του αεροπλάνου για να παρέχετε μια μεγαλύτερη περιοχή δοκιμών, αλλά δεν χρειάζεται να κάνετε κάτι άλλο σε αυτό.

Ένα μοντέλο αναπαραγωγής αντικειμένων κύβου

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

Επιλέξτε τον κύβο και μεταβείτε στον Επιθεωρητή. Κάντε κλικ στο Προσθήκη στοιχείου στο κάτω μέρος του παραθύρου, αναζητήστε το rigidbody και επιλέξτε Άκαμπτο σώμα από τη λίστα όταν εμφανιστεί. Σημειώστε το Χρησιμοποιήστε το Gravity Tickbox και αφήστε τις υπόλοιπες ρυθμίσεις ως έχουν.

Μπορείς να βρεις δωρεάν στοιχεία Unity online για να εμπλουτίσετε το έργο σας.

Κάμερα Τρίτου Προσώπου

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

Ένα γρήγορο τεστ

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

Βήμα 2: Ρυθμίστε ένα αρχείο C#

Τώρα ήρθε η ώρα να δημιουργήσετε ένα αρχείο C# για να ξεκινήσετε να προγραμματίζετε κάποια κίνηση. Μεταβείτε στην ενότητα Έργο, κάντε δεξί κλικ, τοποθετήστε το δείκτη του ποντικιού πάνω από το στοιχείο Δημιουργία και επιλέξτε Φάκελος από τη λίστα. Ονομάστε το φάκελο Scripts ή κάτι παρόμοιο.

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

χρησιμοποιώντας Σύστημα. Συλλογές;
χρησιμοποιώντας Σύστημα. Συλλογές. Γενικός;
χρησιμοποιώντας UnityEngine;

δημόσιοτάξηCharacter_Control: Μονοσυμπεριφορά {
κενόςΑρχή() {
}

κενόςΕκσυγχρονίζω() {
}
}

Βήμα 3: Χρησιμοποιήστε το C# για να δημιουργήσετε κίνηση προς τα εμπρός και προς τα πίσω με ταχύτητα

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

δημόσιο Άκαμπτο σώμα άκαμπτο σώμα;
δημόσιοφλοτέρ Ταχύτητα;

Στη συνέχεια, ήρθε η ώρα να προσθέσετε μια γραμμή κώδικα στη συνάρτηση Έναρξη. Αυτό χρησιμοποιεί μια δήλωση GetComponent για να εκχωρήσει το στοιχείο rigidbody του Cube στη μεταβλητή rigidbody που δημιουργήσατε.

κενόςΑρχή() {
rigidbody = GetComponent < Rigidbody > ();
}

Τώρα μπορείτε να προσθέσετε κάποιο κωδικό που θα κάνει το μοντέλο της συσκευής σας να κινείται. Αυτός ο κώδικας είναι ωραίος και απλός. Χρειάζεστε απλώς δύο δηλώσεις if, μία για κίνηση προς τα εμπρός και μία για κίνηση προς τα πίσω. Μπορείτε να χρησιμοποιήσετε το Input. GetKey για να προσδιορίσετε πότε πατιέται ένα πλήκτρο. Σε αυτήν την περίπτωση, αναζητάτε πατήματα των πλήκτρων W και S.

Το πάτημα ενός από αυτά τα πλήκτρα προσθέτει μια δύναμη στο άκαμπτο σώμα του κύβου χρησιμοποιώντας το άκαμπτο σώμα. AddForce. Μπορείτε να υπολογίσετε την κατεύθυνση και την ταχύτητα της προστιθέμενης δύναμης πολλαπλασιάζοντας τη θέση του άξονα Z (μετασχηματισμός. εμπρός) με τη μεταβλητή ταχύτητας. Δεν υπάρχει κλάση transform.backward για να χρησιμοποιήσετε για κίνηση προς τα πίσω, αλλά αυτό μπορεί να επιτευχθεί πολλαπλασιάζοντας το transform.forward επί -1.

αν (Εισαγωγή. GetKey("w")) {
άκαμπτο σώμα. AddForce (transform.forward * speed);
}

αν (Εισαγωγή. GetKey("μικρό")) {
άκαμπτο σώμα. AddForce((transform.forward * -1) * Ταχύτητα);
}

Αποθηκεύστε το αρχείο C# και πλοηγηθείτε πίσω στο Unity. Βρείτε το σενάριο μέσα στο παράθυρο Έργο και σύρετέ το και αποθέστε το στο μοντέλο χαρακτήρων Cube μέσα στην ιεραρχία για να αντιστοιχίσετε το σενάριο σε αυτό το αντικείμενο. Όταν επιλέγετε τον Κύβο, θα πρέπει να βλέπετε το σενάριο ως στοιχείο στο παράθυρο Επιθεωρητής. Κάντε κλικ μέσα στο πλαίσιο της μεταβλητής rigidbody και επιλέξτε το rigidbody του κύβου σας.

Τώρα μπορείτε να χρησιμοποιήσετε το κουμπί Παίξτε για να ξεκινήσετε το παιχνίδι και να δοκιμάσετε τον κωδικό σας. Αλλά περίμενε! Υπαρχει ενα προβλημα; Ο κύβος σας θα κυλήσει αντί να κινηθεί ευθεία προς τα εμπρός. Επιστρέψτε στον επιθεωρητή του Cube, βρείτε το στοιχείο Rigidbody και επιλέξτε τα πλαίσια για Freeze Rotation στον άξονα X και Z πριν ξεκινήσετε ξανά το παιχνίδι. Τώρα θα πρέπει να λειτουργήσει.

Βήμα 4: Χρησιμοποιήστε C# για να δημιουργήσετε αριστερή και δεξιά στροφή με ροπή

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

δημόσιοφλοτέρ ροπή;

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

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

αν (Εισαγωγή. GetKey("ρε")) {
φλοτέρ στροφή = Είσοδος. GetAxis("Οριζόντιος");
άκαμπτο σώμα. AddTorque (transform.up * torque * turn);
}

αν (Εισαγωγή. GetKey("ένα")) {
φλοτέρ στροφή = Είσοδος. GetAxis("Οριζόντιος");
άκαμπτο σώμα. AddTorque (transform.up * torque * turn);
}

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

Βήμα 5: Χρησιμοποιήστε το C# για να προγραμματίσετε το Jumping

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

ιδιωτικόςbool isJumping = ψευδής;

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

αν (!isJumping) {
}

Η προσθήκη της ίδιας συνθήκης στην άλλη κίνηση εάν οι δηλώσεις θα σταματήσουν τον παίκτη να κινείται κατά τη διάρκεια των άλματος.

αν (Εισαγωγή. GetKey("w") && !is Jumping) {
άκαμπτο σώμα. AddForce (transform.forward * speed);
}

Μέσα στη δήλωση !isJumping if, χρειάζεστε μια άλλη δήλωση if, αυτή τη φορά για να ελέγξετε εάν πατήσετε το πλήκτρο του κουμπιού άλματος. Η ρύθμιση της μεταβλητής isJumping σε true είναι το πρώτο πράγμα που πρέπει να κάνετε σε αυτήν τη δήλωση if, ακολουθούμενη από μια δήλωση rigidbody.angularVelocity για να αφαιρέσετε τις δυνάμεις που εφαρμόζονται αυτήν τη στιγμή στον κύβο.

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

αν (!isJumping) {
αν (Εισαγωγή. GetKeyDown("χώρος")) {
isJumping = αληθής;
άκαμπτο σώμα. AddForce (transform.up * speed * 120);
rigidbody.angularVelocity = Vector3.zero;
Επικαλούμαι("Move_Setter", 0.8 φά);
}
}

Αυτή η συνάρτηση επαναφέρει τη μεταβλητή isJumping σε false, έτσι ώστε η κίνηση/άλμα να είναι ξανά δυνατή και η καθυστέρηση 0,8 δευτερολέπτων την εμποδίζει να ενεργοποιηθεί πολύ σύντομα.

κενόςMove_Setter() {
isJumping = ψευδής;
}

Βήμα 6: Δοκιμάστε τον κωδικό του ελεγκτή χαρακτήρων σας

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

Δημιουργία ελεγκτών χαρακτήρων Unity

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

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