Οδηγός για αρχάριους στο Construct 2

1
  • 0 favourites

Index

Tagged

Stats

26,688 visits, 35,817 views

Tools

Translations

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Προσθήκη λειτουργιών στο παιχνίδι

Εάν περιγράψουμε την κάθε δράση τόσο αναλυτικά όσο πριν, αυτό το μάθημα θα παραγίνει εκτενές. Ας συντομεύσουμε την περιγραφή των υπόλοιπων δράσεων. Θυμηθείτε, τα βήματα για την προσθήκη μίας προϋπόθεσης (condition) ή μίας δράσης (action) είναι:

1. Διπλό αριστερό κλικ για να εισαγάγετε μία νέα εντολή, ή κλικ πάνω στο Add action για να εισαγάγετε μία δράση.

2. Διπλό κλικ πάνω στο στοιχείο του οποίου την προϋπόθεση / δράση θέλουμε να επεξεργαστούμε.

3. Διπλό κλικ πάνω στην προϋπόθεση / δράση.

4. Εισαγωγή παραμέτρων όπου και αν θέλουμε.

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

Add condition System -> Every tick

Add action Player -> Set angle towards position -> X: Mouse.X, Y: Mouse.Y

Κάνοντας τον παίχτη να πυροβολεί

Όταν ο χρήστης του παιχνιδιού μας πατάει το αριστερό κλικ στο ποντίκι, θέλουμε ο παίχτης μας να πυροβολεί μία σφαίρα. Αυτό μπορεί να επιτευχθεί με τη δράση Spawn an object στο στοιχείο Player, η οποία θα δημιουργήσει μία νέα κόπια ενός άλλου στοιχείου (στην περίπτωσή μας το στοιχείο Bullet), στην ίδια θέση και με την ίδια γωνία με το στοιχείο Player. Η συμπεριφορά "Bullet movement" που προσθέσαμε πρωτύτερα, θα προωθεί στοιχείο Bullet προς τα εμπρός.

Φτιάξτε την ακόλουθη δράση:

(Προϋπόθεση):

Condition: Mouse -> On click -> Left clicked (η προϋπάρχουσα επιλογή)

(Δράση):

Action: Player -> Spawn another object -> Ως Object, επιλέξτε το στοιχείο Bullet.

(Παράμετροι):

Ως Layer, γράψτε 1 (η διαφάνεια "Main" είναι η διαφάνεια 1 - θυμηθείτε, το Construct 2 μετράει ξεκινώντας από το 0). Αφήστε το Image point να είναι 0.

Η εντολή σας θα πρέπει να είναι όπως φαίνεται εδώ:

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

Κάντε δεξί κλικ στο στοιχείο Player μέσα στο πάνελ στοιχείων ή στο πάνελ του πρότζεκτ (Project bar) και επιλέξτε Edit animations (επεξεργασία κινούμενων εικόνων).

Ο επεξεργαστής εικόνας ξανά-εμφανίζεται. Κάντε κλικ στο εργαλείο image points:

...και θα ανοίξει το πάνελ των σημείων εικόνας:

Παρατηρήστε ότι το κεντρικό σημείο του στοιχείου απεικονίζεται με μία κόκκινη κουκίδα. Αυτό είναι το "κεντροφόρο σημείο" (hotspot) ή το "σημείο περιστροφής" (pivot point) του στοιχείου. Εάν περιστρέψετε το στοιχείο, ο νοητός άξονας περιστροφής θα περνάει από αυτό το σημείο. Θέλουμε να δημιουργήσουμε ένα καινούριο σημείο το οποίο να αντιπροσωπεύει την κάνη του όπλου, οπότε κάντε κλικ στο πράσινο κουμπί Add. Μία μπλε κουκίδα εμφανίζεται - αυτή είναι το νέο μας σημείο. Κάντε αριστερό κλικ στην οπή της κάνης για να το τοποθετήσετε εκεί:

Κλείστε το πάνελ σημείων. Κάντε διπλό κλικ στη δράση Spawn an object που προσθέσαμε νωρίτερα και αλλάξτε την παράμετρο image point από 0 σε 1.(Το κεντροφόρο σημείο είναι πάντα το πρώτο από τα σημεία που μπορεί να έχει ένα στοιχείο και αντιστοιχεί στον αριθμό 0, θυμηθείτε ότι το Construct 2 μετράει ξεκινώντας από το 0.) Η εντολή τώρα θα πρέπει να είναι έτσι:

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

Ας κάνουμε τις σφαίρες να σκοτώνουν τα τέρατα. Προσθέστε την ακόλουθη εντολή:

Condition: Bullet -> On collision with another object -> επιλέξτε Monster.

Action: Monster -> Destroy

Action: Bullet -> Spawn another object -> Explosion, layer 1

Action: Bullet -> Destroy

Η έκρηξη

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

Ίσως να είχατε προβλέψει το αποτέλεσμα αυτό από την αρχή και να αναρωτιόσασταν εάν το τελικό μας παιχνίδι θα δείχνει έτσι! Μην ανησυχείτε, δε θα είναι έτσι! Επιλέξτε το στοιχείο Explosion είτε στο πάνελ με τα στοιχεία που βρίσκεται κάτω δεξιά, είτε στο πάνελ του πρότζεκτ (το οποίο μοιράζεται τον ίδιο χώρο με το πάνελ των διαφανειών, ως διαφορετική καρτέλα). Οι ιδιότητες του στοιχείου εμφανίζονται στο πάνελ ιδιοτήτων στα αριστερά. Στο κάτω μέρος, ορίστε την παράμετρο Blend mode (είδος πρόσμιξης) από Normal σε Additive. Τώρα τρέξτε ξανά το παιχνίδι.

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

Κάνοντας τα τέρατα λίγο πιο έξυπνα

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

Condition: System -> On start of Layout

Action: Monster -> Set angle -> random(360)

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

Condition: Monster -> Is outside layout

Action: Monster -> Set angle toward position -> στην παράμετρο X, Player.X - στην παράμετρο Y, Player.Y.

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

Τώρα, ας υποθέσουμε ότι θέλουμε κάθε τέρας να πυροβοληθεί πέντε φορές προτού πεθάνει, αντί για ακαριαία που είναι τώρα. Πως θα το κάνουμε αυτό; Εάν έχουμε έναν κοινό μετρητή "Ζωής", όταν θα χτυπήσουμε ένα τέρας πέντε φορές, "όλα" τα τέρατα θα πεθάνουν. Αντί αυτού, θέλουμε κάθε ένα από τα τέρατα να θυμάται την ίδια τη ζωή του. Αυτό μπορούμε να το επιτύχουμε με τις ατομικές μεταβλητές (instance variables).

  • 0 Comments

  • Order by
Want to leave a comment? Login or Register an account!