למד כיצד לדגמן מצלמה שיכולה להסתובב ברחבי עולם המשחק שלך כדי להוסיף ריאליזם ופונקציונליות.

תכונה נפוצה אחת שתמצא במשחקים רבים היא מצלמת גלילה שעוקבת אחריך בזמן שאתה מסתובב בעולם המשחק. אפקט זה יכול להוסיף עומק וריאליזם למשחק שלך ולשפר את חווית המשחק הכוללת.

ישנן דרכים רבות ושונות ליישם מצלמת גלילה ב-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.time. שָׁעוֹן()

BACKGROUND_COLOR = (255, 255, 255)

instagram viewer

לאחר מכן, הגדר את הנגן והפלטפורמות הסטטיות. הגדר את גודל השחקן ואת מיקומו ההתחלתי.

PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50

player_x = WINDOW_WIDTH // 2 - PLAYER_WIDTH // 2
player_y = WINDOW_HEIGHT - PLAYER_HEIGHT - 20

PLAYER_SPEED = 10

RECTANGLE_COLOR_1 = (255, 0, 0)
RECTANGLE_COLOR_2 = (0, 0, 255)

rectangle_1 = pygame. רק(200, 200, 100, 100)
rectangle_2 = pygame. רק(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 ערך למיקום 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. מקש:
אם 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. מקש:
אם 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. כפתור עכבר:
אם event.button == 1:
mouse_start_pos = pygame.mouse.get_pos()

אם event.type == pygame. תנועת עכבר:
אם 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. רק(
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. רק(
get_scaled_size (מלבן_1.x + camera_offset_x),
get_scaled_size (מלבן_1.y),
get_scaled_size (rectangle_1.width),
get_scaled_size (recangle_1.height)
)

pygame.draw.rect (מסך, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = pygame. רק(
get_scaled_size (מלבן_2.x + camera_offset_x),
get_scaled_size (מלבן_2.y),
get_scaled_size (rectangle_2.width),
get_scaled_size (recangle_2.height)
)

pygame.draw.rect (מסך, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

הגדל או הקטן את רמת הזום ב-0.1 כאשר הנגן לוחץ על = אוֹ - מפתח, בהתאמה. הגדר את הגודל החדש של חלון המשחק על סמך רמת הזום הנוכחית. כדי לעשות זאת, הוסף את הקוד הבא בתוך לולאת האירועים המטפלת בכניסות המקלדת:

אם event.type == pygame. מקש:
אם event.key == pygame. K_EQUALS:
זום += 0.1

screen = pygame.display.set_mode((
int (WINDOW_WIDTH * זום),
int (WINDOW_HEIGHT * זום)
))
אליף event.key == pygame. K_MINUS:
זום -= 0.1

אם זום < 0.1:
זום = 0.1

screen = pygame.display.set_mode((
int (WINDOW_WIDTH * זום),
int (WINDOW_HEIGHT * זום)
))

עם הקוד שלמעלה, הוספת בהצלחה אפקט של מצלמה זום למשחק PyGame שלנו. על ידי שילוב של תכונה זו עם אפקט המצלמה הגלילה, אתה יכול ליצור חווית משחק דינמית ומושכת.

שיפור משחק עם תנועות מצלמה

הוספת מצלמת גלילה למשחק PyGame לא רק משפרת את החוויה החזותית אלא גם משפרת את המשחק. זה מאפשר לשחקן לראות יותר מעולם המשחק, מספק להם הבנה טובה יותר של הסביבה שלו ומקל על הניווט.

אתה יכול גם להשתמש בתנועת המצלמה כדי ליצור אפקטים מיוחדים כגון התקרבות והקטנה או ניעור המסך כדי לדמות פיצוצים או רעידות אדמה.