Τα έργα Pygame που δεν έχουν κινούμενα σχέδια μπορεί να είναι απίστευτα βαρετά. Βελτιώστε την ελκυστικότητα των παιχνιδιών σας ενσωματώνοντας μαγευτικά κινούμενα σχέδια.

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

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

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

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

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

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

instagram viewer
simple-game.py και ορίστε ορισμένες μεταβλητές, συμπεριλαμβανομένων των αρχικών θέσεων και ταχυτήτων για τον παίκτη και την πλατφόρμα. Αυτές οι μεταβλητές θα χρησιμοποιηθούν για τον έλεγχο της κίνησης του sprite του παίκτη.

Χειριστείτε την είσοδο του προγράμματος αναπαραγωγής ανακτώντας την κατάσταση του πληκτρολογίου χρησιμοποιώντας pygame.key.get_pressed(). Εάν πατηθεί το αριστερό πλήκτρο βέλους, μπορείτε να μειώσετε την τιμή του player_x, και εάν πατηθεί το δεξί πλήκτρο βέλους, μπορείτε να το αυξήσετε. Αυτό δημιουργεί το εφέ κίνησης για το sprite του παίκτη.

Το αρχικό σας παιχνίδι θα πρέπει να μοιάζει με το εξής:

Φόρτωση και εμφάνιση πλαισίων

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

Δημιουργήστε ένα νέο αρχείο με όνομα animate.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:


# Φόρτωση πλαισίων
frame0 = pygame. Επιφάνεια((20, 20))
frame0.fill((255, 0, 0))

πλαίσιο1 = pygame. Επιφάνεια((20, 20))
frame1.fill((0, 255, 0))

πλαίσιο2 = pygame. Επιφάνεια((20, 20))
frame2.fill((0, 0, 255))

# Ρύθμιση αρχικού πλαισίου
τρέχον_πλαίσιο = πλαίσιο0

# Βρόχος παιχνιδιού
ενώ τρέξιμο:
# ...

# Αποδώστε το παιχνίδι
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

# ...

Έλεγχος κινούμενων εικόνων με είσοδο προγράμματος αναπαραγωγής

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

# Βρόχος παιχνιδιού
ενώ τρέξιμο:
# ...

# Χειριστείτε την είσοδο του προγράμματος αναπαραγωγής
keys = pygame.key.get_pressed()
αν κλειδιά[pygame. K_LEFT]:
player_x -= player_speed
τρέχον_πλαίσιο = πλαίσιο1
ελιφ κλειδιά[pygame. K_RIGHT]:
player_x += player_speed
τρέχον_πλαίσιο = πλαίσιο2
αλλού:
τρέχον_πλαίσιο = πλαίσιο0

# Αποδώστε το παιχνίδι
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

# ...

Παρακάτω είναι η έξοδος:

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

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

Φύλλα Sprite

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

# Φορτώστε την εικόνα του φύλλου sprite
sprite_sheet = pygame.image.load("spritesheet.png")

# Καθορίστε τις διαστάσεις κάθε πλαισίου
πλάτος_πλαισίου = 32
πλαίσιο_ύψος = 32

# Λειτουργία εξαγωγής πλαισίων από το φύλλο sprite
defεξαγωγή_πλαισίων(φύλλο, πλάτος_πλαίσιο, ύψος_πλαίσιο):
# κωδικός για εξαγωγή πλαισίων

# Εξαγωγή πλαισίων από το φύλλο sprite
frames = extract_frames (sprite_sheet, frame_width, frame_height)

# Εμφανίστε ένα πλαίσιο από το φύλλο sprite
τρέχον_πλαίσιο = καρέ[0]

# Βρόχος παιχνιδιού
ενώ τρέξιμο:
# ...
screen.blit (current_frame, (player_x, player_y))
# ...

Ταχύτητα κινουμένων σχεδίων

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

# Μεταβλητές ταχύτητας κίνησης
animation_delay = 100# Καθυστέρηση σε χιλιοστά του δευτερολέπτου μεταξύ των ενημερώσεων καρέ
last_frame_time = pygame.time.get_ticks()

# Βρόχος παιχνιδιού
ενώ τρέξιμο:
# ...

# Ελέγξτε αν έχει περάσει αρκετός χρόνος για την ενημέρωση του πλαισίου
current_time = pygame.time.get_ticks()
αν τρέχον_χρόνος - last_frame_time >= animation_delay:
# Ενημερώστε το πλαίσιο

# Αποδώστε το παιχνίδι
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

Ανίχνευση σύγκρουσης

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

# Ανίχνευση σύγκρουσης
defcheck_collision(player_rect, platform_rect):
αν player_rect.colliderect (platform_rect):
# Συνέβη σύγκρουση
ΕΠΙΣΤΡΟΦΗΑληθής
αλλού:
ΕΠΙΣΤΡΟΦΗΨευδής

# Βρόχος παιχνιδιού
ενώ τρέξιμο:
# ...

# Εκτελέστε ανίχνευση σύγκρουσης
player_rect = pygame. Rect (player_x, player_y, 20, 20)
platform_rect = pygame. Rect (platform_x, platform_y,
platform_width, platform_height)

αν check_collision (player_rect, platform_rect):
# Χειριστείτε τη σύγκρουση

# Αποδώστε το παιχνίδι
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

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

Βέλτιστες πρακτικές για τη δημιουργία κινούμενων εικόνων στο Pygame

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

Προφόρτωση και αποθήκευση καρέ στη μνήμη

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

Χρησιμοποιήστε τα ενσωματωμένα μαθήματα Sprite και Animation της Pygame

Το Pygame παρέχει ενσωματωμένες κλάσεις όπως pygame.sprite. Ξωτικό και pygame.sprite. Ομάδα που απλοποιεί τη διαχείριση των sprites και των κινούμενων εικόνων. Χρησιμοποιώντας αυτές τις κλάσεις, μπορείτε να χειριστείτε τον εντοπισμό σύγκρουσης, τις ομαδικές ενημερώσεις και την απόδοση πιο αποτελεσματικά.

Βελτιστοποίηση μορφών εικόνας

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

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

Χρησιμοποιήστε τους κατάλληλους ρυθμούς καρέ

Για να επιτύχετε ομαλά κινούμενα σχέδια, είναι σημαντικό να ορίσετε έναν κατάλληλο ρυθμό καρέ. Η Pygame παρέχει το pygame.χρόνος. Ρολόι class, η οποία βοηθά στον έλεγχο του ρυθμού καρέ ρυθμίζοντας την ταχύτητα του βρόχου παιχνιδιού.

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

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

Κάντε τα παιχνίδια πιο διασκεδαστικά με κινούμενα σχέδια

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

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