Προγραμματισμός ενός παιχνιδιού με ενότητα: Οδηγός για αρχάριους

Προγραμματισμός ενός παιχνιδιού με ενότητα: Οδηγός για αρχάριους
Αυτός ο οδηγός είναι διαθέσιμος για λήψη ως δωρεάν PDF. Κάντε λήψη αυτού του αρχείου τώρα Το Μη διστάσετε να το αντιγράψετε και να το μοιραστείτε με τους φίλους και την οικογένειά σας.

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





Αυτές οι ομάδες ανάπτυξης παιχνιδιών indie έχουν επιδείξει ευελιξία και ανοχή στον κίνδυνο που, σε πολλές περιπτώσεις, τους επιτρέπει να προωθήσουν την καινοτομία στο παιχνίδι πιο γρήγορα από τους ομολόγους τους με μεγάλο προϋπολογισμό. Ένας αριθμός συγκλονιστικά επιτυχημένων indie τίτλων έχουν κάνει πρεμιέρα τα τελευταία χρόνια, μεταξύ των οποίων Minecraft , Προαύλιο της κολάσεως , και Super Meat Boy , και ακόμη και αν δεν χρειάζεται να έχετε δεξιότητες για να φτιάξετε παιχνίδια όπως αυτό, μπορείτε να φτιάξετε ένα παιχνίδι χρησιμοποιώντας το Buildbox.





Στο ραγδαία εξελισσόμενο τοπίο ανάπτυξης indie παιχνιδιών, Ενότητα έχει αναδειχθεί ως ένα de-facto πρότυπο: το χαμηλό κόστος, η ευκολία χρήσης και το ευρύ σύνολο χαρακτηριστικών το καθιστούν ιδανικό για γρήγορη ανάπτυξη παιχνιδιών. Η ενότητα είναι τόσο ευέλικτη, που μπορείτε ακόμη και φτιάξτε τους δικούς σας προσαρμοσμένους ελεγκτές παιχνιδιών με λίγη DIY τεχνογνωσία!





Ακόμα και μεγάλα στούντιο όπως το CCP (Developers of Eve Online ) χρησιμοποιήστε το για την ταχεία πρότυπη έννοια παιχνιδιών. Η Unity παρέχει μια «μηχανή παιχνιδιών σε ένα κουτί» - μια μηχανή φυσικής και απόδοσης με γάντζους για πολλές γλώσσες δέσμης ενεργειών, προσαρμόσιμη σχεδόν σε κάθε είδος βιντεοπαιχνιδιού.

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



Η ενότητα δεν θα κάνει τη δουλειά για εσάς, αλλά μειώνει σημαντικά το εμπόδιο στην είσοδο. Ξεκινώντας εντελώς από το μηδέν με το C ++ και το OpenGL, μπορεί να χρειαστούν μέρες για να φτάσουμε στο σημείο να υπάρχει πράγματι κάτι που εμφανίζεται στην οθόνη. Χρησιμοποιώντας την Unity, χρειάζονται περίπου δέκα δευτερόλεπτα. Η Unity βάζει τα βασικά στοιχεία της δημιουργίας παιχνιδιών στα χέρια των αρχάριων προγραμματιστών με γρήγορο, διαισθητικό τρόπο.

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





–1 – Εκδόσεις της Ενότητας

–2 – Εγκατάσταση Unity





3 – Σύντομη Εισαγωγή στο Αντικειμενοστραφή Παράδειγμα

–4 – Βασικά στοιχεία της Ενότητας

§5 – Παράδειγμα: Βασικά στοιχεία ενός παιχνιδιού

–6 – Scripting in Unity

§7 – Παράδειγμα: Songing Pong

§8 – Εξερεύνηση της τεκμηρίωσης / Μάθετε περισσότερα

–9 – Δημιουργία του παιχνιδιού σας / Μεταγλώττιση σε αυτόνομη εφαρμογή

§10-Σημειώσεις λήξης

1. Εκδόσεις της Ενότητας

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

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

1.1 Τιμολόγηση

Η δωρεάν έκδοση του Unity είναι, φυσικά, δωρεάν. Ωστόσο, υπάρχουν μερικοί περιορισμοί: η δωρεάν έκδοση του Unity δεν μπορεί να αδειοδοτηθεί σε καμία εταιρεία με ετήσιο εισόδημα μεγαλύτερο από 100.000 $ Το Παρόλο που τέτοιες οργανώσεις είναι πέρα ​​από το πεδίο εφαρμογής αυτού του οδηγού, αν υποψιάζεστε ότι μπορεί να γίνετε τέτοιος οργανισμός, είναι πιθανότατα σοφό να ξεκινήσετε για την έκδοση Pro.

Η έκδοση Pro του Unity είναι $ 75 ένα μήνα, ή $ 1500 για μόνιμη άδεια και δεν έχει όρια στο τι μπορείτε να κάνετε με τα παιχνίδια που δημιουργούνται με αυτήν. Υπάρχει επίσης μια δωρεάν δοκιμή 30 ημερών, την οποία θα χρησιμοποιήσουμε για αυτόν τον οδηγό, προκειμένου να σας δώσουμε όσο το δυνατόν πιο ολοκληρωμένη επισκόπηση των διαθέσιμων δυνατοτήτων. Μια άδεια σπουδών ενός έτους είναι επίσης διαθέσιμη μέσω Μελέτη Για $ 129 Το

1.2 Χαρακτηριστικά

Υπάρχουν πολλές δυνατότητες που απουσιάζουν στην δωρεάν έκδοση του Unity. Ωστόσο, οι πιο σημαντικές διαφορές είναι οι εξής: η δωρεάν έκδοση του Unity δεν διαθέτει πολλές επιλογές απόδοσης που επιτρέπουν παιχνίδια με καλύτερη εμφάνιση και ταχύτερη εκτέλεση (υποστήριξη LOD, μετα-επεξεργασία χώρου οθόνης, προηγμένα σκίαση, μαλακά σε πραγματικό χρόνο σκιές και αναβαλλόμενη απόδοση). Λείπει επίσης το πλήρες μηχανικό σύστημα κίνησης , και μερικά εργαλεία τεχνητής νοημοσύνης.

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

2. Εγκατάσταση Unity

Η εγκατάσταση του Unity είναι απλή. Μπορείτε να κατεβάσετε το εκτελέσιμο από unit3d.com/get-unity/download Το

Μετά τη λήψη, εκτελέστε το και, στη συνέχεια, ακολουθήστε τις οδηγίες εγκατάστασης. Όταν ολοκληρωθεί η εγκατάσταση, θα εμφανιστεί ένα παράθυρο με τίτλο «ενεργοποιήστε την άδεια Unity». Επιλέξτε το πλαίσιο με την ένδειξη «ενεργοποιήστε μια δωρεάν δοκιμή 30 ημερών του Unity Pro» και, στη συνέχεια, «OK».

Συγχαρητήρια! Έχετε τώρα μια δοκιμή 30 ημερών για το Unity Pro. Όταν λήξει η δοκιμαστική περίοδος, εάν δεν θέλετε να αγοράσετε την επαγγελματική έκδοση, μπορείτε να μεταβείτε στην δωρεάν έκδοση και να διατηρήσετε το υπάρχον περιεχόμενό σας.

πληρωθείτε για να δοκιμάσετε εφαρμογές Android

3. Σύντομη εισαγωγή στο αντικείμενο-προσανατολισμένο παράδειγμα

Πριν ξεκινήσετε με την Unity, είναι σημαντικό να ξεπεράσουμε λίγο τα βασικά. Η ενότητα υποστηρίζει και τα δύο C # και JavaScript Για προγραμματισμός παιχνιδιών ? θα συνεργαστούμε με το C# για αυτό το σεμινάριο.

Πρώτα απ 'όλα, εάν δεν έχετε προγραμματίσει ποτέ πριν, αφήστε αυτό το σεμινάριο στην άκρη και περάστε λίγες ημέρες δουλεύοντας μέσω της Microsoft C # Primer Language μέχρι να νιώσετε άνετα χρησιμοποιώντας τη γλώσσα για απλές εργασίες.

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

Εάν έχετε προγραμματίσει προηγουμένως σε μια επιτακτική ή αντικειμενοστραφή γλώσσα όπως η C ή η Java, παραλείψτε το αστάρι και εξοικειωθείτε με το πώς η C# διαφέρει από άλλες γλώσσες που χρησιμοποιήσατε στο παρελθόν. Σε κάθε περίπτωση, μην προχωρήσετε στο σεμινάριο μέχρι να νιώσετε άνετα να λύσετε απλά προβλήματα με το C# (για παράδειγμα, αν σας ζητούσα να γράψετε ένα πρόγραμμα που τυπώνει τους πρώτους εκατό πρώτους αριθμούς, θα πρέπει να μπορείτε να γράψετε αυτό το πρόγραμμα χωρίς συμβουλευτείτε την Google).

Η πιο σημαντική έννοια που πρέπει να κατανοήσουμε εδώ είναι το αντικειμενοστρεφές παράδειγμα (συντομογραφία ως ΑΝΟΙΞΕ ). Σε αντικειμενοστραφείς γλώσσες, τα προγράμματα χωρίζονται σε λειτουργικές μονάδες που ονομάζονται Αντικείμενα Το Κάθε αντικείμενο έχει τις δικές του ιδιωτικές μεταβλητές και συναρτήσεις. Ονομάζονται συναρτήσεις ειδικές για αντικείμενα μεθόδους Το

Η ιδέα εδώ είναι η αρθρωτότητα: έχοντας κάθε αντικείμενο απομονωμένο και αναγκάζοντας άλλα αντικείμενα να αλληλεπιδράσουν με αυτό μέσω των μεθόδων του, μπορείτε να μειώσετε τον αριθμό πιθανών ακούσιων αλληλεπιδράσεων - και, κατ 'επέκταση, σφάλματα. Μπορείτε επίσης να δημιουργήσετε αντικείμενα που μπορείτε να επαναχρησιμοποιήσετε αργότερα χωρίς καμία τροποποίηση. Στην Unity, θα χτίσετε αυτά τα αντικείμενα και θα τα επισυνάψετε οντότητες παιχνιδιού (των οποίων τη συμπεριφορά θα κυβερνήσουν).

Τα αντικείμενα προτείνονται από τάξεις : μια κλάση είναι απλώς ένα αρχείο που εκφράζει τον ορισμό του αντικειμένου σας. Έτσι, αν θέλετε ένα κοροϊδεύω αντικείμενο που χειρίζεται AI για έναν εχθρό στο παιχνίδι σας, θα γράφατε μια κλάση «Mook» και στη συνέχεια θα επισυνάπτετε αυτό το αρχείο σε κάθε εχθρική οντότητα. Όταν τρέχετε το παιχνίδι σας, κάθε εχθρός θα είναι εξοπλισμένος με ένα αντίγραφο του αντικειμένου «Mook».

Η σύνδεση ενός νέου σεναρίου σε ένα αντικείμενο μοιάζει με αυτό:

Πρώτα, επιλέξτε το αντικείμενο και πηγαίνετε στο Επιθεωρητής Το Κάνε κλικ στο Προσθήκη εξαρτήματος κουμπί.

Παω σε νέο σενάριο , πληκτρολογήστε το όνομα που θέλετε και κάντε κλικ δημιουργήστε και προσθέστε Το

Τώρα έχετε ένα νέο σενάριο που μπορείτε να επεξεργαστείτε κάνοντας διπλό κλικ σε αυτό!

Ένα αρχείο τάξης μοιάζει με αυτό:

using UnityEngine;
public class Mook : MonoBehaviour {
private float health;
void Start () {
health = 100;
}
void Update(){
if (health > 0) {
/* Search for player
if you encounter the player on the road, kill him
if you get shot, remove a random amount of health */
}
}
}

Ας το σπάσουμε αυτό:

  • Χρησιμοποιώντας το UnityEngine: Αυτή η γραμμή λέει στη C# ότι θέλουμε να χρησιμοποιήσουμε τις βιβλιοθήκες της Unity, οι οποίες μας επιτρέπουν να συνδεθούμε με τη μηχανή παιχνιδιών Unity.
  • Δημόσια τάξη Mook: Mono Συμπεριφορά: Αυτή η γραμμή δηλώνει την κλάση και το όνομά της - κοροϊδεύω Το
  • Ιδιωτική υγεία πλωτήρα: Αυτό δηλώνει μια μεταβλητή ιδιωτικής κλάσης (η οποία μπορεί να αλλάξει μόνο μέσα από την κλάση). Στη μεταβλητή δίνεται τιμή in Αρχή Το
  • Void Start (): Αυτό δηλώνει μια μέθοδο που ονομάζεται Αρχή Το Η εκκίνηση είναι μια ειδική μέθοδος που εκτελείται μόνο μία φορά, όταν αρχίζει το παιχνίδι.
  • Κενή ενημέρωση (): Η ενημέρωση είναι μια άλλη ειδική μέθοδος, η οποία εκτελείται σε κάθε πλαίσιο. Το μεγαλύτερο μέρος της λογικής του παιχνιδιού σας θα πάει εδώ.
  • // Αν συναντήσετε τον παίκτη στο δρόμο, σκοτώστε τον: Αυτή η γραμμή είναι ένα σχόλιο (κάθε γραμμή που ξεκινά με διπλή κάθετο αγνοείται από το C#). Τα σχόλια χρησιμοποιούνται για να υπενθυμίσουν στον εαυτό σας τι κάνουν συγκεκριμένα κομμάτια κώδικα. Σε αυτήν την περίπτωση, αυτό το σχόλιο χρησιμοποιείται για να υποστηρίξει ένα πιο περίπλοκο μπλοκ κώδικα που κάνει πραγματικά αυτό που περιγράφει το σχόλιο.

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

public float addTwoNumbers(float a, float b) {
return a+b;
}

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

Κλήση αυτής της μεθόδου από την ίδια τάξη (ας πούμε, από μέσα Εκσυγχρονίζω ) μοιάζει με αυτό:

float result = addTwoNumbers(1, 2);

Η κλήση της μεθόδου από άλλη τάξη είναι παρόμοια:

addTwoNumbers instance;
float result = instance.addTwoNumbers(1, 2);

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

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

Η σύνταξη για αυτό μοιάζει με αυτό:

GetComponent().Play();

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

4. Βασικά στοιχεία της Ενότητας

Σε αυτήν την ενότητα, θα δουλέψουμε τον δρόμο μας μέσω των βασικών μηχανικών του κινητήρα Unity. Η ροή εργασιών στο Unity έχει κάτι ως εξής:

  1. Δημιουργήστε μια οντότητα που θα εξυπηρετεί έναν ρόλο στο παιχνίδι (κενό GameObjects μπορεί να χρησιμοποιηθεί για αφηρημένες λογικές εργασίες).
  2. Γράψτε ή βρείτε ένα αρχείο κλάσης και προσθέστε το στην οντότητα ως σενάριο (χρησιμοποιώντας το Προσθήκη εξαρτήματος κουμπί στο επιθεωρητής θέα.
  3. Τρέξιμο >> δοκιμή >> εντοπισμός σφαλμάτων >> επαναλαμβάνω μέχρι να λειτουργήσει και να προχωρήσουμε στο επόμενο στοιχείο του παιχνιδιού.

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

  1. Παιχνίδι: εμφανίζει μια τρέχουσα παρουσία του παιχνιδιού με την οποία μπορείτε να αλληλεπιδράσετε και να δοκιμάσετε.
  2. Σκηνή: παρέχει μια στατική, επεξεργάσιμη έκδοση του κόσμος παιχνιδιών Το
  3. Επιθεωρητής: σας επιτρέπει να τροποποιήσετε μεμονωμένες οντότητες στον κόσμο του παιχνιδιού επιλέγοντάς τις στο συντάκτης αυτί.
  4. Εργο: σας επιτρέπει να περιηγηθείτε στα αρχεία του έργου και να σύρετε μοντέλα, υλικά και άλλους πόρους στο συντάκτης καρτέλα για να τα τοποθετήσετε στον κόσμο του παιχνιδιού.
  5. Ιεραρχία: Αυτή η καρτέλα εμφανίζει όλα τα αντικείμενα στον κόσμο, επιτρέποντάς σας να βρείτε μακρινά αντικείμενα στη σκηνή και γονικές οντότητες μεταξύ τους κάνοντας κλικ και σύροντας.

Δείτε το παρακάτω διάγραμμα για τις θέσεις όλων αυτών των πραγμάτων:

4.1 Οντότητες Ενότητας

4.1.1 Πλέγματα

Τα πλέγματα είναι ο τρόπος Τρισδιάστατη γεωμετρία εκπροσωπείται στην Ενότητα. Μπορείτε είτε να χρησιμοποιήσετε το ενσωματωμένο Unity πρωτόγονος αντικείμενα (κύβοι, σφαίρες, κύλινδροι κ.λπ.) ή εισάγετε τα δικά σας τρισδιάστατα μοντέλα από ένα πακέτο μοντελοποίησης όπως Μίξερ ή Μάγια Το Η Unity υποστηρίζει μια ποικιλία τρισδιάστατων μορφών, συμπεριλαμβανομένων .fbx , και .3ds Το

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

4.1.2 Στοιχεία GUI

Τα παραδοσιακά sprites GUI και το κείμενο μπορούν να εμφανιστούν χρησιμοποιώντας το Κείμενο GUI και το Υφή GUI GameObjects στον επεξεργαστή. Ωστόσο, ένας πιο ισχυρός και ρεαλιστικός τρόπος χειρισμού στοιχείων UI είναι η χρήση του Τρισδιάστατο κείμενο και Τετράδυμο GameObjects (με διαφανείς υφές και διαφανή σκιάστρα χωρίς φωτισμό) για να τοποθετήσετε στοιχεία HUD στον κόσμο του παιχνιδιού ως οντότητες.

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

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

4.1.3 Υλικά

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

Για να εισαγάγετε μια υφή, μετατρέψτε την σε a .jpg , .png , ή .bmp , και σύρετέ το στο περιουσιακά στοιχεία φάκελο στον κατάλογο έργου Unity (που εμφανίζεται στο Τα αρχεία μου από προεπιλογή). Μετά από μερικά δευτερόλεπτα, θα εμφανιστεί μια γραμμή φόρτωσης στον επεξεργαστή. Όταν τελειώσει, θα μπορείτε να βρείτε την εικόνα ως υφή κάτω από το έργο αυτί.

4.1.5 Φώτα

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

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

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

Τα τρία κύρια είδη φωτός είναι σημείο , σημείο , και κατευθυντήριος Το

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

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

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

4.1.6 Συστήματα σωματιδίων

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

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

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

5. Παράδειγμα: Βασικά στοιχεία ενός παιχνιδιού

Για αυτό το σεμινάριο, θα κάνουμε ένα απλό παιχνίδι Πονγκ - κάτι που έχουμε καλύψει αρκετές φορές στο DIY στο παρελθόν:

  • Κλασικό πονγκ Arduino
  • Arduino OLED Pong

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

Αρχικά, ας αναλύσουμε το παιχνίδι του Pong στα βασικά του στοιχεία. Αρχικά, χρειαζόμαστε δύο κουπιά και μια μπάλα. Η μπάλα πετά εκτός οθόνης, οπότε θα θέλουμε έναν μηχανισμό για την επαναφορά της. Θέλουμε επίσης το κείμενο να εμφανίζει την τρέχουσα βαθμολογία και, για να σας δείξουμε όλα τα βασικά στοιχεία της Unity, θα θέλουμε ένα φανταχτερό εφέ σωματιδίων όταν χτυπάτε την μπάλα. Όλο το παιχνίδι θα πρέπει να φωτιστεί δραματικά.

Αυτό διασπάται σε α αντικείμενο μπάλας (μια σφαίρα), α ψάρι , δύο στηρίγματα κουπιών με εκπομπές σωματιδίων συνημμένο, α Τρισδιάστατη οντότητα κειμένου , και ένα σημειακό φως Το Για αυτό το σεμινάριο, θα χρησιμοποιήσουμε το προεπιλεγμένο φυσικό υλικό πήδημα , με αναπήδηση συνδυασμός οριστεί σε πολλαπλασιάζω Το Δείτε πώς φαίνεται η ρύθμιση, σε δέκα στιγμιότυπα οθόνης:

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

Κλιμακώστε το κατάλληλα, αντιγράψτε το , και βάλτε ένα σφαίρα ανάμεσα στα κουπιά για την μπάλα.

Στη συνέχεια, δημιουργήστε ένα Αντικείμενο 3DText και κλίμακα και θέση σωστά, αλλάζοντας το μέγεθος γραμματοσειράς χαρακτηριστικό για λήψη λιγότερης εικονοστοιχείης εικόνας.

Στη συνέχεια, δημιουργήστε δύο σωματιδιακά συστήματα , επιλέξτε τα χαρακτηριστικά που θέλετε και συνδέστε τα στα κουπιά.

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

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

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

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

6. Scripting in Unity

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

Οι λέξεις -κλειδιά και τα σχόλια επισημαίνονται στο μπλε και πράσινος και εμφανίζονται αριθμητικές τιμές και συμβολοσειρές καθαρά Το Εάν έχετε χρησιμοποιήσει Εκλειψη ή άλλα IDE, το MonoDevelop είναι πολύ παρόμοιο. Μπορείς χτίζω τα σενάρια σας μέσα από τον επεξεργαστή, για να ελέγξετε για τυχόν σφάλματα σύνταξης, όπως παρακάτω:

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

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

Μια λίστα με τα στοιχεία που μπορεί να έχει ένα αντικείμενο είναι η ακόλουθη (παρμένη από την προβολή επιθεωρητή ενός από τα κουπιά μας στο παραπάνω παράδειγμα):

  1. Μεταμορφώνω
  2. Κύβος (φίλτρο πλέγματος)
  3. Επιταχυντής κουτιού
  4. Mesh Renderer

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

6.1 Μετασχηματισμός

Οι συναρτήσεις μετασχηματισμού για ένα GameObject στην Unity ελέγχουν τις φυσικές παραμέτρους αυτού του αντικειμένου: του κλίμακα , του θέση , και είναι προσανατολισμός Το Μπορείτε να έχετε πρόσβαση σε αυτά σε ένα σενάριο όπως αυτό:

transform.position = newPositionVector3;
transform.rotation = newRotationQuaternion;
transform.localScale = newScaleVector3;

Στα παραπάνω παραδείγματα, οι μεταβλητές που ονομάζονται είναι από τους τύπους που καθορίζονται στα ονόματα. Υπάρχουν μερικές βασικές λεπτομέρειες εδώ: η θέση και η κλίμακα, όπως θα περιμένατε, αποθηκεύονται ως Διάνυσμα3s Το Μπορείτε να έχετε πρόσβαση στο Χ , ΚΑΙ , και ΜΕ συστατικά του καθενός (για παράδειγμα, transform.position.y σας δίνει την απόσταση ενός αντικειμένου πάνω από το μηδενικό επίπεδο).

Ωστόσο, για να αποφευχθεί κλειδαριά gimbal , οι περιστροφές αντιμετωπίζονται ως Quaternions (διανύσματα τεσσάρων συστατικών). Επειδή ο χειρισμός με το χέρι των τεταρτοταγώνων δεν είναι διαισθητικός, μπορείτε να χειριστείτε τις περιστροφές χρησιμοποιώντας γωνίες Eulerian χρησιμοποιώντας το Quaternion.Euler μέθοδος όπως αυτή:

transform.rotation = Quaternion.Euler(pitch, yaw, roll);

Εάν θέλετε να μετακινήσετε ομαλά τα αντικείμενα από το ένα μέρος στο άλλο, θα βρείτε το Slerp χρήσιμη μέθοδος για τεταρτοταγή και διανυσματικά3. Ο Slerp λαμβάνει τρία επιχειρήματα - την τρέχουσα κατάσταση, την τελική κατάσταση και την ταχύτητα αλλαγής και παρεμβάλλει ομαλά μεταξύ τους με τη δεδομένη ταχύτητα. Η σύνταξη μοιάζει με αυτήν:

transform.position = Vector3.Slerp(startPositionVector3, newDestinationVector3, 1);

6.2 Renderer

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

renderer.enabled = false;
renderer.material.color = new Color(0, 255, 0);
renderer.material.mainTexture = myTexture;
renderer.material.shader = newShader;

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

6.3 Φυσική

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

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

Τα κινηματογραφικά στηρίγματα φυσικής συγκρούονται με (και επιδρούν) μη κινηματικά στηρίγματα φυσικής γύρω τους, αλλά δεν επηρεάζονται από την ίδια τη σύγκρουση. Τα στατικά κινηματικά στηρίγματα είναι τα παροιμιώδη ακίνητα αντικείμενα και τα κινούμενα κινηματικά αντικείμενα είναι η παροιμιώδης ασταμάτητη δύναμη (για την ιστορία, όταν συγκρούονται, απλώς περνούν μεταξύ τους).

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

Παραδείγματα:

rigidbody.angularDrag = 0.1f;
rigidbody.mass = 100;
rigidbody.isKinematic = false;
rigidbody.useGravity = true;
rigidbody.AddForce(transform.forward * 100);

Όλα αυτά είναι αρκετά αυτονόητα. Το μόνο που πρέπει να σημειωθεί εδώ είναι η χρήση του μετασχηματίζω.μπρός Το Όλα τα Vector3 έχουν τρία συστατικά ( .προς τα εμπρός , .πάνω , και .σωστά ) που σχετίζονται με αυτά, στα οποία μπορείτε να έχετε πρόσβαση και περιστρέφεται μαζί τους ( προς τα εμπρός είναι η κατεύθυνση του μπλε βέλους στο πρόγραμμα επεξεργασίας). ο μετασχηματίζω.μπρός Η λέξη -κλειδί είναι απλά το εμπρός διάνυσμα για το τρέχον αντικείμενο με μέγεθος 1. Μπορεί να πολλαπλασιαστεί με ένα float για να δημιουργήσει περισσότερη δύναμη στο αντικείμενο. Μπορείτε επίσης να αναφέρετε transform.up και μετασχηματίζω.εντάξει , και αναιρέστε τα για να πάρουν τις αντιστροφές τους.

6.4 Σύγκρουση

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

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

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

void OnCollisionEnter(Collision other) {
//do things here
}

Αυτή η μέθοδος θα εκτελεστεί αυτόματα κατά το πρώτο πλαίσιο που ένα άλλο αντικείμενο αγγίζει το αντικείμενό σας. Η οντότητα της σύγκρουσης άλλα είναι μια αναφορά στο αντικείμενο που χτυπήσατε. Μπορείτε, για παράδειγμα, να το αναφέρετε gameobject , άκαμπτο σώμα , και μεταμορφώνω χαρακτηριστικά για να το χειριστεί με διάφορους τρόπους. Ενώ OnCollisionEnter είναι ίσως η πιο κοινή λειτουργία που θα χρησιμοποιήσετε, μπορείτε επίσης να χρησιμοποιήσετε OnCollisionExit και OnCollisionStay (με πανομοιότυπη σύνταξη και χρήση), τα οποία ενεργοποιούνται κατά το πρώτο καρέ που σταματάτε να συγκρούεστε με ένα αντικείμενο και κατά τη διάρκεια κάθε πλαισίου που συγκρούεστε με ένα αντικείμενο, αντίστοιχα.

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

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

Αυτό ρίχνει μια ακτίνα από τη θέση του τρέχοντος αντικειμένου κατά μήκος -Vector3.up (ευθεία προς τα κάτω) και συνδέει τη μεταβλητή Κτύπημα στο πρώτο αντικείμενο με το οποίο συγκρούεται. Μόλις η ακτίνα σας χτυπήσει κάτι, μπορείτε να έχετε πρόσβαση χτύπησε.απόσταση για να καθορίσετε πόσο μακριά είναι, ή hit.GameObject για να χειριστείτε το αντικείμενο που χτυπήσατε.

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

6.5 Διόρθωση χρόνου

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

Ο τρόπος που το διορθώνετε είναι πολλαπλασιάζοντας τις τιμές που χρησιμοποιείτε με το χρόνο που χρειάστηκε για την απόδοση του τελευταίου πλαισίου. Αυτό γίνεται με τη χρήση Time.deltaTime Το Αυτό αλλάζει αποτελεσματικά την ταχύτητα κάθε μεταβλητής από την οποία αυξάνετε κάθε καρέ αλλαγή ανά καρέ προς το αλλαγή ανά δευτερόλεπτο , και μάλλον θα πρέπει να κάνετε αυτήν την αλλαγή σε οποιαδήποτε τιμή αυξάνετε ή μειώνετε κάθε καρέ.

6.6 Πηγές ήχου και ακροατές

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

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

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

αλλαγή σειράς φωτογραφιών στο άλμπουμ του facebook

Μπορείς να χρησιμοποιήσεις myAudioSource.Pause () και myAudioSource.Play () για τον έλεγχο αυτών των αρχείων ήχου. Μπορείτε να προσαρμόσετε τις συμπεριφορές πτώσης, την ένταση και τη μετατόπιση doppler των ήχων κάτω από το επιθεωρητής καρτέλα για την ηχητική πηγή.

6.7 Είσοδος

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

Vector3 mousePos = Input.mousePosition;
bool isLeftClicking = Input.GetMouseButton(0);
bool isPressingSpace = Input.GetKey(KeyCode.Space);

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

6.8 Αποσφαλμάτωση ενός σεναρίου

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

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

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

Εάν αυτό δεν λειτουργεί, μπορείτε επίσης να προσπαθήσετε να πάρετε μια ιδέα για την κατάσταση του σεναρίου σας εκτυπώνοντας την κατάσταση των εσωτερικών μεταβλητών για να επιβεβαιώσετε ότι το πρόγραμμα κάνει αυτό που νομίζετε ότι κάνει. Μπορείς να χρησιμοποιήσεις Debug.Log (String) για να εκτυπώσετε τα περιεχόμενα μιας συμβολοσειράς στην κονσόλα όταν η εκτέλεση προγράμματος φτάσει σε αυτήν τη γραμμή. Σε γενικές γραμμές, εάν εργάζεστε αντίστροφα από αυτό που νομίζετε ότι πρέπει να συμβαίνει μέσω των πραγμάτων που θα πρέπει να το κάνουν να συμβεί, τελικά θα φτάσετε σε ένα σημείο όπου οι εκτυπώσεις εντοπισμού σφαλμάτων σας δεν κάνουν αυτό που περιμένετε να κάνουν. Εκεί είναι το λάθος σας.

7. Παράδειγμα: Scripting Pong

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

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

BallHandler.cs

Στη συνέχεια, πρέπει να γράψουμε το κουπί μας, το οποίο μπορείτε να δείτε παρακάτω. Το κουπί πρέπει να μετακινείται πάνω και κάτω ως απόκριση των πιέσεων πλήκτρων (αλλά όχι εκτός συγκεκριμένων ορίων). Πρέπει επίσης να ενεργοποιήσει το σύστημα σωματιδίων όταν συγκρούεται με κάτι.

PaddleHandler.cs

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

EnemyAI.cs

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

ScoreboardUpdater.cs

Με αυτά τα σενάρια και τις αναφορές συμπληρωμένες, όταν τρέχουμε το παιχνίδι μας στο Pong, βιώνουμε το παιχνίδι!

Μπορείς κατεβάστε το demo του Pong , εάν θέλετε να δείτε όλα όσα σκιαγράφησα σε δράση. Λειτουργεί σε συστήματα Windows, Mac και Linux.

8. Εξερεύνηση της τεκμηρίωσης / Μάθετε περισσότερα

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

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

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

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

9. Δημιουργία του παιχνιδιού σας / Μεταγλώττιση σε αυτόνομη εφαρμογή

Όταν έχετε δημιουργήσει κάτι για το οποίο είστε περήφανοι (ή έχετε τελειώσει την κλωνοποίηση του ελαφρώς αμήχανου παραδείγματος του Pong για εξάσκηση), ήρθε η ώρα να μετακινήσετε το παιχνίδι σας από τον επεξεργαστή και να το μετατρέψετε σε κάτι που μπορείτε να δημοσιεύσετε στο Διαδίκτυο και να το αναγκάσετε τους φίλους και την οικογένειά σας για να παίξετε. Για να το κάνετε αυτό, θα χρειαστεί να δημιουργήσετε μια αυτόνομη εφαρμογή. Τα καλά νέα είναι ότι στο Unity, αυτό είναι πολύ, πολύ εύκολο. Υπάρχουν, ωστόσο, μερικοί δυνητικοί λόξυγγες που θα θέλετε να προσέξετε.

Για αρχή, γνωρίζετε ότι μπορείτε να δημιουργήσετε μόνο ένα έργο χωρίς σφάλματα. Για το σκοπό αυτό, βεβαιωθείτε ότι έχετε την κονσόλα ανοιχτή κατά την κατασκευή: υπάρχουν ορισμένες συνθήκες σφάλματος που το παιχνίδι θα αγνοήσει στον επεξεργαστή, αλλά θα εξακολουθήσει να ακυρώνει μια απόπειρα κατασκευής. Αυτό απορρίπτει μόνο μηνύματα σφάλματος στην κονσόλα, χωρίς ορατά αποτελέσματα στην οθόνη, τα οποία μπορεί να είναι απογοητευτικά εάν ξεχάσετε να ελέγξετε. Ωστόσο, αφού έχετε τη σύνταξη του παιχνιδιού σας χωρίς σφάλματα, μπορείτε να επιλέξετε Ρυθμίσεις κατασκευής σύμφωνα με το Αρχείο μενού ή πατήστε Ctrl >> Μετατόπιση

>> σι Το Αυτό θα φέρει έναν απλό διάλογο που σας επιτρέπει να δημιουργήσετε το παιχνίδι σας για διάφορες πλατφόρμες.

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

10. Κλείσιμο Σημειώσεων

Όπως συμβαίνει με κάθε εργαλείο ανάπτυξης παιχνιδιών, το κλειδί για την επιτυχία με την Unity είναι η επαναληπτική ανάπτυξη. Πρέπει να βασιστείτε σε διαχειρίσιμα βήματα - να είστε φιλόδοξοι, με κάθε τρόπο, αλλά να είστε φιλόδοξοι σε μικρά κομμάτια και να τακτοποιήσετε αυτά τα κομμάτια έτσι ώστε, ακόμη και αν υπολείψετε την τελική σας φιλοδοξία, να καταλήξετε τουλάχιστον με μια συνεκτική προϊόν.

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

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

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

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

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ 3 τρόποι για να ελέγξετε αν ένα email είναι πραγματικό ή ψεύτικο

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

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Προγραμματισμός
  • Μακροσκελές έντυπο
  • Οδηγός Longform
Σχετικά με τον Συγγραφέα Αντρέ Ινφάντε(131 δημοσιευμένα άρθρα)

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

Περισσότερα από τον Andre Infante

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή