Μάθετε πώς να μοντελοποιείτε μια κάμερα που μπορεί να μετακινηθεί στον κόσμο του παιχνιδιού σας για να προσθέσετε ρεαλισμό και λειτουργικότητα.
Ένα κοινό χαρακτηριστικό που θα βρείτε σε πολλά παιχνίδια είναι μια κάμερα κύλισης που σας ακολουθεί καθώς μετακινείστε στον κόσμο του παιχνιδιού. Αυτό το εφέ μπορεί να προσθέσει βάθος και ρεαλισμό στο παιχνίδι σας και να βελτιώσει τη συνολική εμπειρία παιχνιδιού.
Υπάρχουν πολλοί διαφορετικοί τρόποι για να εφαρμόσετε μια κάμερα κύλισης στο PyGame, επομένως βεβαιωθείτε ότι κατανοείτε τις διαφορές τους.
Δημιουργία ενός απλού παιχνιδιού
Πριν ξεκινήσουμε, εγκαταστήστε το pip στη συσκευή σας και χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε τη λειτουργική μονάδα PyGame:
pip εγκατάσταση pygame
Τώρα, μπορείτε να δημιουργήσετε ένα απλό παιχνίδι με ένα ορθογώνιο παίκτη και δύο στατικές πλατφόρμες. Ο παίκτης μπορεί να μετακινηθεί αριστερά και δεξιά χρησιμοποιώντας τα πλήκτρα βέλους.
Μπορείτε να βρείτε τον πλήρη κωδικό για το έργο σε αυτό Αποθετήριο GitHub.
Ξεκινήστε εισάγοντας τη λειτουργική μονάδα pygame. Στη συνέχεια, αρχικοποιήστε το και δημιουργήστε το παράθυρο του παιχνιδιού χρησιμοποιώντας το pygame.display.set_mode() λειτουργία. Στη συνέχεια, ορίστε τη λεζάντα του παραθύρου και δημιουργήστε το αντικείμενο ρολογιού για τη διαχείριση του ρυθμού καρέ.
εισαγωγή pygame
pygame.init()
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600οθόνη = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("Το απλό μου παιχνίδι")
ρολόι = pygame.ώρα. Ρολόι()
BACKGROUND_COLOR = (255, 255, 255)
Στη συνέχεια, ρυθμίστε τη συσκευή αναπαραγωγής και τις στατικές πλατφόρμες. Καθορίστε το μέγεθος της συσκευής αναπαραγωγής και την αρχική της θέση.
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50player_x = WINDOW_WIDTH // 2 - PLAYER_WIDTH // 2
player_y = WINDOW_HEIGHT - PLAYER_HEIGHT - 20PLAYER_SPEED = 10
RECTANGLE_COLOR_1 = (255, 0, 0)
RECTANGLE_COLOR_2 = (0, 0, 255)
ορθογώνιο_1 = pygame. Rect(200, 200, 100, 100)
ορθογώνιο_2 = pygame. Rect(500, 300, 150, 50)
Στη συνέχεια, δημιουργήστε έναν βρόχο παιχνιδιού που χειρίζεται συμβάντα και ενημερώνει την οθόνη. Στον βρόχο, ελέγξτε για συμβάντα όπως η έξοδος από το παιχνίδι ή η μετακίνηση του παίκτη χρησιμοποιώντας τα πλήκτρα βέλους.
ενώΑληθής:
# Χειριστείτε συμβάντα
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.quit()
εγκαταλείπω()# Σχεδιάστε το φόντο
screen.fill (BACKGROUND_COLOR)# Σχεδιάστε τα στατικά ορθογώνια
pygame.draw.rect (οθόνη, RECTANGLE_COLOR_1, rectangle_1)
pygame.draw.rect (οθόνη, RECTANGLE_COLOR_2, rectangle_2)# Σχεδιάστε τον παίκτη
player_rect = pygame. Rect (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)pygame.draw.rect (οθόνη, (0, 0, 0), player_rect)
# Ενημερώστε την οθόνη
pygame.display.update()
# Περιορίστε τον ρυθμό καρέ
clock.tick(30)
Ρύθμιση της κάμερας
Τώρα που έχετε ένα απλό παιχνίδι με ένα ορθογώνιο παίκτη και δύο στατικές πλατφόρμες, μπορείτε να αρχίσετε να εργάζεστε στην κάμερα. Στο PyGame, η κάμερα είναι ουσιαστικά απλώς μια μετατόπιση που δρα σε όλα τα αντικείμενα που τραβάτε στην οθόνη. Αυτό σημαίνει ότι αν μετακινήσετε την κάμερα προς τα αριστερά, όλα στην οθόνη θα εμφανιστούν να μετακινούνται προς τα δεξιά.
Για να ρυθμίσετε την κάμερα, πρέπει πρώτα να ορίσετε μια μεταβλητή για να διατηρείται η μετατόπιση X της κάμερας. Καλέστε αυτή τη μεταβλητή camera_offset_x και αρχικοποιήστε το στο 0.
# Ρυθμίστε τη μετατόπιση της κάμερας
camera_offset_x = 0
Στη συνέχεια, ενημερώστε τις θέσεις όλων των αντικειμένων που σχεδιάζετε στην οθόνη, για να λάβετε υπόψη τη μετατόπιση της κάμερας. Μπορείτε να το κάνετε αυτό προσθέτοντας το camera_offset_x τιμή στη θέση Χ κάθε αντικειμένου. Για παράδειγμα, μπορείτε να ενημερώσετε τη θέση του παίκτη ως εξής:
# Σχεδιάστε τον παίκτη
player_rect = pygame. Rect (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)
pygame.draw.rect (οθόνη, (0, 0, 0), player_rect)
Ομοίως, μπορείτε να ενημερώσετε τις θέσεις των στατικών πλατφορμών ως εξής:
# Σχεδιάστε τα στατικά ορθογώνια
rectangle_1_draw_pos = rectangle_1.move (camera_offset_x, 0)
pygame.draw.rect (οθόνη, RECTANGLE_COLOR_1, rectangle_1_draw_pos)
rectangle_2_draw_pos = rectangle_2.move (camera_offset_x, 0)
pygame.draw.rect (οθόνη, RECTANGLE_COLOR_2, rectangle_2_draw_pos)
Μετακίνηση της κάμερας με εισόδους πληκτρολογίου
Τώρα που έχετε ρυθμίσει την κάμερα, μπορείτε να αρχίσετε να την μετακινείτε. Ένας τρόπος για να γίνει αυτό είναι να μετακινήσετε την κάμερα ως απόκριση στις εισόδους του πληκτρολογίου. Για παράδειγμα, μπορείτε να μετακινήσετε την κάμερα προς τα αριστερά όταν η συσκευή αναπαραγωγής πατήσει το πλήκτρο αριστερού βέλους.
Για να το κάνετε αυτό, προσθέστε τον ακόλουθο κώδικα μέσα στο βρόχο συμβάντων που χειρίζεται τις εισόδους του πληκτρολογίου:
αν event.type == pygame. KEYDOWN:
αν event.key == pygame. K_LEFT:
camera_offset_x -= PLAYER_SPEED
ελιφ event.key == pygame. K_RIGHT:
camera_offset_x += PLAYER_SPEED
Ένας άλλος τρόπος είναι να αλλάξετε τη συντεταγμένη x της συσκευής αναπαραγωγής στο πάτημα του πληκτρολογίου και στη συνέχεια να ενημερώσετε τη μετατόπιση της κάμερας. Μπορείτε να το εφαρμόσετε ως εξής:
# Χειριστείτε συμβάντα
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.quit()
εγκαταλείπω()
αν event.type == pygame. KEYDOWN:
αν event.key == pygame. K_LEFT:
player_x -= PLAYER_SPEED
ελιφ event.key == pygame. K_RIGHT:
player_x += PLAYER_SPEED
Στη συνέχεια, μπορείτε να ενημερώσετε τη μετατόπιση της κάμερας σε σχέση με τις συντεταγμένες x της συσκευής αναπαραγωγής ως εξής:
camera_offset_x = WINDOW_WIDTH // 2 - player_x - PLAYER_WIDTH // 2
Μετακίνηση της κάμερας με εισόδους ποντικιού
Ένας άλλος τρόπος για να μετακινήσετε την κάμερα είναι να χρησιμοποιήσετε το ποντίκι. Μπορείτε να επιτρέψετε στο πρόγραμμα αναπαραγωγής να σύρει την οθόνη κάνοντας κλικ και σύροντας το ποντίκι.
Για να το κάνετε αυτό, παρακολουθήστε τη θέση του ποντικιού όταν η συσκευή αναπαραγωγής πατήσει το αριστερό κουμπί του ποντικιού. Όταν μετακινούν το ποντίκι, ενημερώστε τις συντεταγμένες x του προγράμματος αναπαραγωγής. Θα πρέπει να αλλάξει κατά τη διαφορά μεταξύ της τρέχουσας θέσης του ποντικιού και της αρχικής θέσης που παρακολουθήσατε, mouse_start_pos.
# Χειριστείτε συμβάντα
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.quit()
εγκαταλείπω()αν event.type == pygame. ΚΟΥΜΠΙ ΠΟΝΤΙΚΙΟΥ:
αν συμβάν.κουμπί == 1:
mouse_start_pos = pygame.mouse.get_pos()
αν event.type == pygame. MOSEMOTION:
αν pygame.mouse.get_pressed()[0]:
mouse_current_pos = pygame.mouse.get_pos()
mouse_offset_x = mouse_current_pos[0] - mouse_start_pos[0]
player_x -= mouse_offset_x
mouse_start_pos = mouse_current_pos
Προσθήκη περισσότερων δυνατοτήτων κάμερας
Εκτός από το εφέ της κάμερας κύλισης, μπορείτε να προσθέσετε πολλές άλλες λειτουργίες που σχετίζονται με την κάμερα για να βελτιώσετε την εμπειρία παιχνιδιού. Ένα τέτοιο χαρακτηριστικό είναι ένα εφέ κάμερας μεγέθυνσης που επιτρέπει στον παίκτη να μεγεθύνει ή να σμικρύνει τον κόσμο του παιχνιδιού. Μπορείτε να επιτύχετε αυτό το εφέ αλλάζοντας το μέγεθος του παραθύρου του παιχνιδιού και κλιμακώνοντας τα αντικείμενα που σχεδιάζονται στην οθόνη.
Για να το κάνετε αυτό, ορίστε μια μεταβλητή ζουμ που θα αποθηκεύει το τρέχον επίπεδο ζουμ του παιχνιδιού. Ορίστε την αρχική του τιμή σε 1,0, που δεν αντιπροσωπεύει ζουμ. Στη συνέχεια, ορίστε μια συνάρτηση που θα υπολογίζει το μέγεθος ενός αντικειμένου με βάση το τρέχον επίπεδο ζουμ.
ζουμ = 1.0
defget_scaled_size(Μέγεθος):
ΕΠΙΣΤΡΟΦΗ int (μέγεθος * ζουμ)
Στη συνέχεια, ενημερώστε τις θέσεις και τα μεγέθη των αντικειμένων που σχεδιάζονται στην οθόνη χρησιμοποιώντας το get_scaled_size λειτουργία. Για παράδειγμα, μπορείτε να ενημερώσετε τη θέση και το μέγεθος της συσκευής αναπαραγωγής ως εξής:
player_rect = pygame. Rect(
get_scaled_size (player_x + camera_offset_x),
get_scaled_size (player_y),
get_scaled_size (PLAYER_WIDTH),
get_scaled_size (PLAYER_HEIGHT)
)
Ομοίως, ενημερώστε τις θέσεις και τα μεγέθη των στατικών πλατφορμών ως εξής:
rectangle_1_draw_pos = pygame. Rect(
get_scaled_size (rectangle_1.x + camera_offset_x),
get_scaled_size (rectangle_1.y),
get_scaled_size (rectangle_1.width),
get_scaled_size (rectangle_1.height)
)pygame.draw.rect (οθόνη, RECTANGLE_COLOR_1, rectangle_1_draw_pos)
rectangle_2_draw_pos = pygame. Rect(
get_scaled_size (rectangle_2.x + camera_offset_x),
get_scaled_size (rectangle_2.y),
get_scaled_size (rectangle_2.width),
get_scaled_size (rectangle_2.height)
)
pygame.draw.rect (οθόνη, RECTANGLE_COLOR_2, rectangle_2_draw_pos)
Αυξήστε ή μειώστε το επίπεδο ζουμ κατά 0,1 όταν η συσκευή αναπαραγωγής πατήσει το = ή - κλειδί, αντίστοιχα. Ορίστε το νέο μέγεθος του παραθύρου του παιχνιδιού με βάση το τρέχον επίπεδο ζουμ. Για να το κάνετε αυτό, προσθέστε τον ακόλουθο κώδικα μέσα στο βρόχο συμβάντων που χειρίζεται τις εισόδους του πληκτρολογίου:
αν event.type == pygame. KEYDOWN:
αν event.key == pygame. K_EQUALS:
ζουμ += 0.1οθόνη = pygame.display.set_mode((
int (WINDOW_WIDTH * ζουμ),
int (WINDOW_HEIGHT * ζουμ)
))
ελιφ event.key == pygame. K_MINUS:
ζουμ -= 0.1αν ζουμ < 0.1:
ζουμ = 0.1
οθόνη = pygame.display.set_mode((
int (WINDOW_WIDTH * ζουμ),
int (WINDOW_HEIGHT * ζουμ)
))
Με τον παραπάνω κώδικα, προσθέσατε με επιτυχία ένα εφέ κάμερας ζουμ στο παιχνίδι μας PyGame. Συνδυάζοντας αυτή τη δυνατότητα με το εφέ της κάμερας κύλισης, μπορείτε να δημιουργήσετε μια δυναμική και συναρπαστική εμπειρία παιχνιδιού.
Βελτίωση του παιχνιδιού με τις κινήσεις της κάμερας
Η προσθήκη μιας κάμερας κύλισης σε ένα παιχνίδι PyGame όχι μόνο βελτιώνει την οπτική εμπειρία αλλά και βελτιώνει το παιχνίδι. Επιτρέπει στον παίκτη να δει περισσότερο από τον κόσμο του παιχνιδιού, παρέχοντάς του καλύτερη κατανόηση του περιβάλλοντός του και διευκολύνοντας την πλοήγηση.
Μπορείτε επίσης να χρησιμοποιήσετε την κίνηση της κάμερας για να δημιουργήσετε ειδικά εφέ, όπως μεγέθυνση και σμίκρυνση ή κούνημα της οθόνης για προσομοίωση εκρήξεων ή σεισμών.