Αναβαθμίστε την εμπειρία παιχνιδιού σας με τα παιχνίδια Python Arcade ενσωματώνοντας μια κάμερα.

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

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

Δημιουργήστε ένα απλό παιχνίδι

Πριν ξεκινήσουμε, εγκαταστήστε το pip στη συσκευή σας και χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε το στοά μονάδα μέτρησης:

pip εγκατάσταση arcade

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

instagram viewer

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

Επιπλέον, μπορείτε να προσθέσετε ένα εμπόδιο για να περιηγηθεί ο παίκτης.

εισαγωγή στοά

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
ΚΙΝΗΣΗ_ΤΑΧΥΤΗΤΑΣ = 5

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος):
super().__init__(πλάτος, ύψος)
self.player_x = πλάτος // 2
self.player_y = ύψος // 2

defεγκατάσταση(εαυτός):
arcade.set_background_color (arcade.color. SKY_BLUE)

defon_draw(εαυτός):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ΤΟ ΚΟΚΚΙΝΟ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ΠΡΑΣΙΝΟΣ)

defεκσυγχρονίζω(self, delta_time):
πέρασμα

defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ:
self.player_x -= MOVEMENT_SPEED
ελιφ κλειδί == arcade.key. ΣΩΣΤΑ:
self.player_x += MOVEMENT_SPEED

αν __όνομα__ == "__κύριος__":
παιχνίδι = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Ρύθμιση της κάμερας

Για να προσθέσετε μια κάμερα στο παιχνίδι, δημιουργήστε ένα ΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ τάξη που διαχειρίζεται τη θέση και την κίνηση της κάμερας. Αυτή η κλάση θα έχει χαρακτηριστικά όπως camera_x και camera_y για να αποθηκεύσετε τις συντεταγμένες της κάμερας.

τάξηΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ:
def__μέσα σε αυτό__(εαυτός):
αυτο.camera_x = 0
αυτο.καμερα_υ = 0

Κίνηση κάμερας με εισόδους πληκτρολογίου

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

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος):
super().__init__(πλάτος, ύψος)
self.camera = Camera()
self.player_x = πλάτος // 2
self.player_y = ύψος // 2

defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= MOVEMENT_SPEED
ελιφ κλειδί == arcade.key. ΣΩΣΤΑ:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED

defon_draw(εαυτός):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ΤΟ ΚΟΚΚΙΝΟ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ΠΡΑΣΙΝΟΣ)

Κίνηση κάμερας με εισόδους ποντικιού

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

τάξηMyGame(στοά. Παράθυρο):
defon_mouse_drag(self, x, y, dx, dy, κουμπιά, τροποποιητές):
αν κουμπιά == arcade. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= δυ

Συμπεριλαμβανομένων πρόσθετων χαρακτηριστικών

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

Λειτουργικότητα ζουμ

Για να εφαρμόσετε τη λειτουργία ζουμ, πρέπει να εισαγάγετε α ανίπταμαι διαγωνίως μεταβλητή στο ΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ τάξη και να τροποποιήσετε το on_mouse_scroll μέθοδος ενημέρωσης του επιπέδου ζουμ με βάση την κίνηση του τροχού του ποντικιού. Πρέπει επίσης να προσαρμόσετε το set_viewport παραμέτρους για να λάβετε υπόψη το επίπεδο ζουμ.

τάξηΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ:
def__μέσα σε αυτό__(εαυτός):
αυτο.camera_x = 0
αυτο.καμερα_υ = 0
αυτο.ζουμ = 1.0

τάξηMyGame(στοά. Παράθυρο):

defon_mouse_scroll(self, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1

defon_draw(εαυτός):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ΤΟ ΚΟΚΚΙΝΟ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ΠΡΑΣΙΝΟΣ)

Ομαλή κίνηση κάμερας

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

τάξηΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ:
def__μέσα σε αυτό__(εαυτός):
αυτο.camera_x = 0
αυτο.καμερα_υ = 0
self.target_x = 0
self.target_y = 0
αυτο.lerp_ταχύτητα = 0.1

defεκσυγχρονίζω(εαυτός):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)

τάξηMyGame(στοά. Παράθυρο):

defεκσυγχρονίζω(self, delta_time):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(εαυτός):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ΤΟ ΚΟΚΚΙΝΟ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ΠΡΑΣΙΝΟΣ)

Περιορισμοί κάμερας

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

τάξηΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ:
def__μέσα σε αυτό__(εαυτός):
αυτο.camera_x = 0
αυτο.καμερα_υ = 0
αυτο.min_x = 0
αυτο.max_x = 800
αυτο.min_y = 0
αυτο.max_y = 600

defεκσυγχρονίζω(εαυτός):
self.camera_x = max (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = max (self.min_y, min (self.camera_y, self.max_y))

τάξηMyGame(στοά. Παράθυρο):

defεκσυγχρονίζω(self, delta_time):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(εαυτός):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ΤΟ ΚΟΚΚΙΝΟ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ΠΡΑΣΙΝΟΣ)

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

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

Βέλτιστες πρακτικές για ένα σύστημα κάμερας

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

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

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

Κάντε τα παιχνίδια πιο διασκεδαστικά χρησιμοποιώντας την κάμερα

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

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