שפר את חווית המשחק שלך עם משחקי Python Arcade על ידי שילוב מצלמה.

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

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

צור משחק פשוט

לפני שנתחיל, התקן pip במכשיר שלך והשתמש בפקודה למטה כדי להתקין את מִקמֶרֶת מודול:

ארקייד להתקין pip

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

הקוד המשמש במאמר זה זמין כאן מאגר GitHub והוא בחינם עבורך לשימוש תחת רישיון MIT.

בנוסף, אתה יכול להוסיף מכשול עבור השחקן לנווט סביבו.

יְבוּא מִקמֶרֶת

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה)
self.player_x = רוחב // 2
self.player_y = גובה // 2

instagram viewer

defלהכין(עצמי):
arcade.set_background_color (arcade.color. שמים כחולים)

defon_draw(עצמי):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. אָדוֹם)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ירוק)

defעדכון(עצמי, זמן_דלתא):
לַעֲבוֹר

defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. שמאלה:
self.player_x -= MOVEMENT_SPEED
אליף key == arcade.key. ימין:
self.player_x += MOVEMENT_SPEED

אם __שם__ == "__רָאשִׁי__":
משחק = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

הגדרת המצלמה

כדי להוסיף מצלמה למשחק, צור א מַצלֵמָה כיתה שמנהלת את מיקום המצלמה ותנועתה. לכיתה זו יהיו תכונות כגון מצלמה_x ו camera_y כדי לשמור את הקואורדינטות של המצלמה.

מעמדמַצלֵמָה:
def__init__(עצמי):
self.camera_x = 0
self.camera_y = 0

תנועת מצלמה עם כניסות מקלדת

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

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה)
self.camera = Camera()
self.player_x = רוחב // 2
self.player_y = גובה // 2

defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. שמאלה:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= MOVEMENT_SPEED
אליף key == arcade.key. ימין:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED

defon_draw(עצמי):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. אָדוֹם)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ירוק)

תנועת מצלמה עם כניסות עכבר

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

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
defon_mouse_drag(עצמי, x, y, dx, dy, כפתורים, משנה):
אם כפתורים == ארקייד. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

כולל תכונות נוספות

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

פונקציונליות זום

כדי ליישם פונקציונליות זום, עליך להציג א תקריב משתנה ב- מַצלֵמָה מחלקה ושנה את on_mouse_scroll שיטה לעדכון רמת הזום בהתבסס על תנועת גלגל העכבר. אתה גם צריך להתאים את set_viewport פרמטרים להתחשב ברמת הזום.

מעמדמַצלֵמָה:
def__init__(עצמי):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):

defon_mouse_scroll(עצמי, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1

defon_draw(עצמי):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. אָדוֹם)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ירוק)

תנועת מצלמה חלקה

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

מעמדמַצלֵמָה:
def__init__(עצמי):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defעדכון(עצמי):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):

defעדכון(עצמי, זמן_דלתא):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(עצמי):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. אָדוֹם)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ירוק)

אילוצי מצלמה

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

מעמדמַצלֵמָה:
def__init__(עצמי):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defעדכון(עצמי):
self.camera_x = max (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = max (self.min_y, min (self.camera_y, self.max_y))

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):

defעדכון(עצמי, זמן_דלתא):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(עצמי):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. אָדוֹם)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ירוק)

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

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

שיטות עבודה מומלצות למערכת מצלמה

בעת יישום מערכת מצלמה במשחק Python Arcade שלך, חיוני לעקוב אחר שיטות עבודה מומלצות כדי להבטיח פונקציונליות אופטימלית וחווית שחקן חלקה. הנה כמה קווים מנחים עיקריים שכדאי לזכור:

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

על ידי ביצוע שיטות עבודה מומלצות אלה, תוכל ליצור מערכת מצלמות חזקה וידידותית למשתמש המשתלבת בצורה חלקה במשחקי Python Arcade שלך.

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

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

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