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

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

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

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

Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε pip εγκατεστημένο στη συσκευή σας. Χρησιμοποιήστε αυτήν την εντολή για να εγκαταστήσετε τη βιβλιοθήκη arcade:

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

Μετά από αυτό, δημιουργήστε ένα αρχείο Python με το όνομα simple-game.py και ξεκινήστε με τη δημιουργία ενός παιχνιδιού όπου ο παίκτης μπορεί να κινηθεί αριστερά και δεξιά.

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό

instagram viewer
Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

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

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

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Το παιχνίδι μου")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2

defon_draw(εαυτός):
arcade.start_render()
col = στοά.χρώμα. ΜΠΛΕ
arcade.draw_circle_filled (self.player_x, self.player_y, 20, κολ)

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

defκύριος():
παιχνίδι = MyGame()
arcade.run()

αν __όνομα__ == "__κύριος__":
κύριος()

Προσθέστε Βασικό κινούμενο σχέδιο

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

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Το παιχνίδι μου")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0

defon_draw(εαυτός):
arcade.start_render()
col1 = arcade.χρώμα. ΜΠΛΕ
col2 = arcade.χρώμα. ΠΡΑΣΙΝΟΣ
col3 = arcade.χρώμα. ΤΟ ΚΟΚΚΙΝΟ

αν self.frame_counter < 10:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, στήλη 1 )
ελιφ self.frame_counter < 20:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, στήλη 2 )
αλλού:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, στήλη 3)

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

Ακολουθεί ένα παράδειγμα πλαισίου εξόδου:

Έλεγχος ταχύτητας και κατεύθυνσης κινουμένων σχεδίων

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

Ακολουθεί το τροποποιημένο απόσπασμα κώδικα για το frame-rate.py αρχείο:

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Το παιχνίδι μου")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0
col1 = arcade.χρώμα. ΜΠΛΕ
col2 = arcade.χρώμα. ΠΡΑΣΙΝΟΣ
col3 = arcade.χρώμα. ΤΟ ΚΟΚΚΙΝΟ
self.frames = [col1, col2, col3]
self.frame_rate = 10

defon_draw(εαυτός):
arcade.start_render()
frame_index = self.frame_counter // self.frame_rate % len (self.frames)

αν self.player_x < SCREEN_WIDTH // 2:
frame_index = len (self.frames) - 1 - frame_index

index = self.frames[frame_index]
arcade.draw_circle_filled (self.player_x, self.player_y, 20, ευρετήριο)

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

Χρησιμοποιήστε τον τελεστή συντελεστή % με len (self.frames) για να διασφαλιστεί ότι το πλαίσιο_ευρετηρίου παραμένει πάντα εντός της γκάμα των διαθέσιμων πλαισίων. Αυτό αποτρέπει την IndexError από την εμφάνιση όταν η κινούμενη εικόνα περνά μέσα από τα καρέ.

Ρυθμίστε το frame_rate τιμή για να ελέγχετε την ταχύτητα της κίνησης και να απολαύσετε την κινούμενη κίνηση των αντικειμένων του παιχνιδιού σας.

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

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

Επιδράσεις Σωματιδίων

Μπορείτε να δημιουργήσετε εφέ σωματιδίων, όπως εκρήξεις ή καπνό, για να προσθέσετε ρεαλισμό στο παιχνίδι σας. Δημιουργήστε ένα αρχείο με όνομα particle.py και προσθέστε τον παρακάτω κώδικα για μια απλή υλοποίηση συστήματος σωματιδίων χρησιμοποιώντας Python και τη βιβλιοθήκη arcade:

εισαγωγή στοά
εισαγωγή τυχαίος

# Διαστάσεις οθόνης
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

#Χρώματα
ΛΕΥΚΟ = (255, 255, 255)

# Κατηγορία σωματιδίων
τάξηΣωματίδιο:
def__μέσα σε αυτό__(self, x, y, dx, dy, ακτίνα, χρώμα, διάρκεια ζωής):
αυτο.χ = χ
αυτο.υ = υ
αυτο.dx = δχ
αυτο.δυ = δυ
αυτο.ακτίνα = ακτίνα
αυτο.χρώμα = χρώμα
self.lifespan = διάρκεια ζωής

defεκσυγχρονίζω(εαυτός):
αυτο.χ += εαυτός.δχ
αυτο.υ += αυτο.δυ
αυτο.διάρκεια ζωής -= 1

defσχεδιάζω(εαυτός):
arcade.draw_circle_filled (self.x, self.y, self.radius, self.color)

# Κατηγορία παιχνιδιού
τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος):
super().__init__(πλάτος, ύψος, "Παράδειγμα σωματιδίων")
αυτο.σωματίδια = []

defεγκατάσταση(εαυτός):
# Δημιουργήστε σωματίδια
Για _ σε εύρος(100):
x = random.range (SCREEN_WIDTH)
y = random.range (SCREEN_HEIGHT)
dx = random.uniform(-1, 1)
dy = random.uniform(-1, 1)
radius = random.uniform(2, 5)
χρώμα = στοά.χρώμα. ΑΣΠΡΟ
διάρκεια ζωής = random.randint(60, 120)
σωματίδιο = Σωματίδιο (x, y, dx, dy, ακτίνα, χρώμα, διάρκεια ζωής)
self.particles.append (σωματίδιο)

defon_draw(εαυτός):
arcade.start_render()
Για σωματίδιο σε αυτο.σωματίδια:
particle.draw()

defεκσυγχρονίζω(self, delta_time):
Για σωματίδιο σε αυτο.σωματίδια:
particle.update()

αν σωματίδιο.διάρκεια ζωής <= 0:
self.particles.remove (σωματίδιο)

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

αν __όνομα__ == "__κύριος__":
κύριος()

Θα πρέπει να δείτε ένα κινούμενο σχέδιο που περιλαμβάνει πολλά κινούμενα σωματίδια:

Διαδραστικά κινούμενα σχέδια

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

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

# Διαστάσεις οθόνης
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

#Χρώματα
ΛΕΥΚΟ = (255, 255, 255)
ΚΟΚΚΙΝΟ = (255, 0, 0)

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός, πλάτος, ύψος):
super().__init__(πλάτος, ύψος, "Διαδραστικό κινούμενο σχέδιο")
self.player_x = 400
αυτο.παίκτης_υ = 300
αυτο.παίκτης_ακτίνα = 30
self.player_color = ΚΟΚΚΙΝΟ
αυτο.animation_radius = 60
self.animation_color = ΛΕΥΚΟ
self.animation_active = Ψευδής

defon_draw(εαυτός):
arcade.start_render()

arcade.draw_circle_filled (self.player_x,
self.player_y,
self.player_radius,
self.player_color)

αν self.animation_active:
arcade.draw_circle_filled (self.player_x,
self.player_y,
self.animation_radius,
self.animation_color)

defon_mouse_press(self, x, y, κουμπί, τροποποιητές):
αν (self.player_x - self.player_radius <=
x <= self.player_x + self.player_radius και
self.player_y - self.player_radius <=
y <= self.player_y + self.player_radius
):
self.animation_active = Αληθής

defεκσυγχρονίζω(self, delta_time):
αν self.animation_active:
self.animation_radius += 1

αν self.animation_radius > 100:
self.animation_active = Ψευδής
αυτο.animation_radius = 0

defκύριος():
παιχνίδι = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

αν __όνομα__ == "__κύριος__":
κύριος()

Παράκαμψη των απαραίτητων μεθόδων, όπως π.χ on_draw, on_mouse_press, και εκσυγχρονίζω, για να χειριστείτε τη σχεδίαση του προγράμματος αναπαραγωγής και της κινούμενης εικόνας, το χειρισμό των κλικ του ποντικιού και την ενημέρωση της κινούμενης εικόνας.

Για να σχεδιάσετε το πρόγραμμα αναπαραγωγής, χρησιμοποιήστε το arcade.draw_circle_filled λειτουργία, η οποία παίρνει το (x, y) συντεταγμένες του κέντρου, της ακτίνας και του χρώματος ως ορίσματα. Η συνάρτηση draw_circle_filled είναι μία από τις Τα εργαλεία του Arcade που μπορείτε να χρησιμοποιήσετε για να σχεδιάσετε στοιχεία παιχνιδιού. Σε αυτήν την περίπτωση, μπορείτε να σχεδιάσετε έναν αυξανόμενο κύκλο μεταβάλλοντας την ακτίνα με την πάροδο του χρόνου.

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

Βέλτιστες πρακτικές για την προσθήκη κινουμένων σχεδίων

Όταν προσθέτετε κινούμενα σχέδια στα παιχνίδια σας, λάβετε υπόψη τις ακόλουθες βέλτιστες πρακτικές:

Περιορίστε τον αριθμό των κινούμενων εικόνων

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

Μαζική απόδοση παρόμοιων αντικειμένων

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

Χρησιμοποιήστε την παρεμβολή για ομαλή κίνηση

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

Σκεφτείτε την Ταχύτητα και το Χρόνο του Κινούμενα Σχέδια

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

Δοκιμή και Βελτιστοποίηση

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

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

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

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