Μπορείτε να ζωντανέψετε τα πιο απλά παιχνίδια με κινούμενα σωματίδια. Προσομοιώστε κίνηση, εκρήξεις και πολλά άλλα χρησιμοποιώντας αυτές τις τεχνικές.

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

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

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

Πριν βουτήξετε σε συστήματα σωματιδίων και οπτικές βελτιώσεις, ξεκινήστε δημιουργώντας ένα απλό παιχνίδι χρησιμοποιώντας το Pygame. Δημιουργήστε ένα νέο αρχείο με όνομα simple-game.py και ξεκινήστε εισάγοντας τις απαραίτητες βιβλιοθήκες και αρχικοποιώντας το Pygame. Ρυθμίστε το παράθυρο του παιχνιδιού με καθορισμένο πλάτος και ύψος.

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

instagram viewer

Μέσα στον κύριο βρόχο του παιχνιδιού, χειριστείτε συμβάντα χρήστη και ενημερώστε τη θέση του παίκτη με βάση το πάτημα πλήκτρων. Σχεδιάστε ένα ορθογώνιο για το αντικείμενο αναπαραγωγής που χρησιμοποιεί pygame.draw.rect().

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

Θα πρέπει να δείτε ένα λευκό τετράγωνο που αντιπροσωπεύει τον παίκτη που μπορείτε να μετακινήσετε αριστερά και δεξιά:

Δημιουργία διαφόρων τύπων σωματιδίων

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

Εφέ σωματιδίων όταν ο παίκτης κινείται

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

Ορίστε α Σωματίδιο κλάση που αντιπροσωπεύει ένα μεμονωμένο σωματίδιο. Κάθε σωματίδιο έχει μια αρχική θέση (Χ και y), μια τυχαία ταχύτητα (dx και dy), και μια διάρκεια ζωής που καθορίζει πόσο καιρό θα υπάρχει το σωματίδιο.

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

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

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

defσχεδιάζω(εαυτός, παράθυρο):
χρώμα = (200, 200, 200)
θέση = (int (self.x), int (self.y))
pygame.draw.circle (παράθυρο, χρώμα, θέση, 2)

# Κλάση συστήματος σωματιδίων
τάξηΣωματιδιακό Σύστημα:
def__μέσα σε αυτό__(εαυτός):
αυτο.σωματίδια = []

defadd_particle(εαυτός, x, y):
self.particles.append (Σωματίδιο (x, y))

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

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

defσχεδιάζω(εαυτός, παράθυρο):
Για σωματίδιο σε αυτο.σωματίδια:
particle.draw (παράθυρο)

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

# Δημιουργήστε σύστημα σωματιδίων
particle_system = ParticleSystem()

# Κύριος βρόχος παιχνιδιού
τρέξιμο = Αληθής
ρολόι = pygame.ώρα. Ρολόι()

ενώ τρέξιμο:
dt = clock.tick(60) / 1000.0

Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
τρέξιμο = Ψευδής

particle_y = player_y + player_height // 2
particle_x = player_x + player_width

keys = pygame.key.get_pressed()
όριο = player_x

αν κλειδιά[pygame. K_LEFT] και player_x > 0:
παίκτης_χ -= 5
particle_system.add_particle (particle_x, particle_y)

αν κλειδιά[pygame. K_RIGHT] και Όριο:
παίκτης_χ += 5
particle_system.add_particle (player_x, particle_y)

particle_system.update()

window.fill (ΜΑΥΡΟ)
player_pos = (player_x, player_y, player_width, player_height)
pygame.draw.rect (παράθυρο, ΛΕΥΚΟ, player_pos)
particle_system.draw (παράθυρο)

pygame.display.flip()

# Κλείστε το παιχνίδι
pygame.quit()

Όταν μετακινείτε τώρα το αντικείμενο αναπαραγωγής, θα πρέπει να δείτε σωματίδια που τονίζουν την κίνηση:

Εφέ έκρηξης

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

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

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

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

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

defσχεδιάζω(εαυτός, παράθυρο):
θέση = (int (self.x), int (self.y))
pygame.draw.circle (παράθυρο, αυτο.χρώμα, θέση, 3)

# Κλάση συστήματος σωματιδίων
τάξηΣωματιδιακό Σύστημα:
def__μέσα σε αυτό__(εαυτός):
αυτο.σωματίδια = []

defadd_particle(εαυτός, x, y, χρώμα):
self.particles.append (Σωματίδιο (x, y, χρώμα)

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

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

defσχεδιάζω(εαυτός, παράθυρο):
Για σωματίδιο σε αυτο.σωματίδια:
particle.draw (παράθυρο)

Για να ενσωματώσετε το blast εφέ στο παιχνίδι σας, πρέπει να κάνετε μερικές τροποποιήσεις στον κύριο βρόχο του παιχνιδιού. Δημιουργήστε ένα νέο όνομα αρχείου shoot-particle.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:

# Δημιουργήστε σύστημα σωματιδίων
particle_system = ParticleSystem()

# Κύριος βρόχος παιχνιδιού
τρέξιμο = Αληθής
ρολόι = pygame.ώρα. Ρολόι()

ενώ τρέξιμο:
dt = clock.tick(60) / 1000.0

Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
τρέξιμο = Ψευδής

keys = pygame.key.get_pressed()
όριο = player_x

αν κλειδιά[pygame. K_LEFT] και player_x > 0:
παίκτης_χ -= 5

αν κλειδιά[pygame. K_RIGHT] και Όριο:
παίκτης_χ += 5

αν κλειδιά[pygame. K_SPACE]:
κουκκίδα_x = player_x + player_width // 2
bullet_y = player_y
particle_system.add_particle (κουκκίδα_x, κουκκίδα_y, ΚΟΚΚΙΝΟ)

particle_system.update()

window.fill (ΜΑΥΡΟ)
player_pos = (player_x, player_y, player_width, player_height)
pygame.draw.rect (παράθυρο, ΛΕΥΚΟ, player_pos)
particle_system.draw (παράθυρο)

pygame.display.flip()

# Κλείστε το παιχνίδι
pygame.quit()

Εδώ είναι η έξοδος:

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

Εφέ σκόνης

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

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

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

# Κατηγορία σωματιδίων
τάξηΣωματίδιο:
def__μέσα σε αυτό__(εαυτός, x, y, ακτίνα):
αυτο.χ = χ
αυτο.υ = υ
αυτο.ακτίνα = ακτίνα
self.angle = random.uniform(0, 2 * math.pi)
self.speed = random.uniform(0.5, 1.5)

defεκσυγχρονίζω(εαυτός):
εαυτός.γωνία += 0.02
αυτο.χ += μαθηματ.cos (αυτο.γωνία) * αυτο.ταχύτητα
αυτο.υ += μαθηματικά.αμαρτία (αυτο.γωνία) * αυτο.ταχύτητα

αν αυτο.χ < 0:
self.x = παράθυρο_πλάτος
ελιφ self.x > window_width:
αυτο.χ = 0

αν αυτο.υ < 0:
self.y = παράθυρο_ύψος
ελιφ self.y > window_height:
αυτο.υ = 0

defσχεδιάζω(εαυτός, παράθυρο):
χρώμα = (128, 128, 128)
pos = (int (self.x), int (self.y))
radius = int (self.radius)
pygame.draw.circle (παράθυρο, χρώμα, θέση, ακτίνα)

# Κλάση συστήματος σωματιδίων
τάξηΣωματιδιακό Σύστημα:
def__μέσα σε αυτό__(εαυτός):
αυτο.σωματίδια = []

defadd_particle(εαυτός, x, y, ακτίνα):
self.particles.append (Σωματίδιο (x, y, ακτίνα))

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

defσχεδιάζω(εαυτός, παράθυρο):
Για σωματίδιο σε αυτο.σωματίδια:
particle.draw (παράθυρο)

Για να ενσωματώσετε το εφέ σκόνης στο παιχνίδι σας, πρέπει να κάνετε μερικές τροποποιήσεις στον κύριο βρόχο του παιχνιδιού. Δημιουργήστε ένα νέο αρχείο με όνομα dust-particle.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:

# Δημιουργήστε σύστημα σωματιδίων για εφέ σκόνης
particle_system = ParticleSystem()

# Κύριος βρόχος παιχνιδιού
τρέξιμο = Αληθής
ρολόι = pygame.ώρα. Ρολόι()

ενώ τρέξιμο:
dt = clock.tick(60) / 1000.0

Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
τρέξιμο = Ψευδής

particle_x = random.randint(0, window_width)
particle_y = random.randint(0, παράθυρο_ύψος)

particle_system.add_particle (particle_x, particle_y, 1)

particle_system.update()

window.fill((0, 0, 0))
particle_system.draw (παράθυρο)

pygame.display.flip()

# Κλείστε το παιχνίδι
pygame.quit()

Προσθέστε σωματίδια τυχαία στο παράθυρο του παιχνιδιού χρησιμοποιώντας το random.randint() λειτουργία. Κάθε σωματίδιο έχει μια αρχική ακτίνα του 1. Ενημερώστε και σχεδιάστε το σύστημα σωματιδίων στο παράθυρο του παιχνιδιού, δημιουργώντας ένα δυναμικό και σκονισμένο εφέ φόντου.

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

Βέλτιστες πρακτικές για ειδικά εφέ

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

Βελτιστοποίηση απόδοσης

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

Ανακύκλωση σωματιδίων

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

Συγκέντρωση σωματιδίων

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

Όριο μέτρησης σωματιδίων

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

Οπτική συνέπεια

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

ΗΧΗΤΙΚΑ εφε

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

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

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

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