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

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

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

צור משחק פשוט

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

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

צור קובץ חדש simple-game.py ולהגדיר כמה משתנים, כולל המיקומים והמהירות ההתחלתיים של השחקן והפלטפורמה. משתנים אלו ישמשו כדי לשלוט בתנועת ה-sprite של השחקן.

טפל בקלט הנגן על ידי אחזור מצב המקלדת באמצעות pygame.key.get_pressed(). אם מקש החץ שמאלה נלחץ, תוכל להקטין את הערך של שחקן_x, ואם מקש החץ ימינה נלחץ, אתה יכול להגדיל אותו. זה יוצר את אפקט התנועה עבור הספרייט של השחקן.

המשחק הראשוני שלך צריך להיראות כך:

instagram viewer

טעינה והצגת מסגרות

כדי ליצור אנימציות, לטעון ולהציג תמונות שונות או פריימים של האנימציה. כל פריים מייצג תמונה או ספרייט ספציפיים שיוצגו ברצף כדי לתת אשליה של תנועה. נניח שיש לך שלוש מסגרות: מסגרת0, מסגרת 1, ו מסגרת 2. בתחילה, אתה יכול להציג מסגרת0.

צור קובץ חדש בשם animate.py והוסיפו את הקוד עם העדכונים הבאים:


# טען מסגרות
frame0 = pygame. משטח((20, 20))
frame0.fill((255, 0, 0))

frame1 = pygame. משטח((20, 20))
frame1.fill((0, 255, 0))

frame2 = pygame. משטח((20, 20))
frame2.fill((0, 0, 255))

# הגדר מסגרת ראשונית
current_frame = frame0

# לולאת משחק
בזמן רץ:
# ...

# עבד את המשחק
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

# ...

שליטה באנימציות עם קלט נגן

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

# לולאת משחק
בזמן רץ:
# ...

# טפל בקלט הנגן
keys = pygame.key.get_pressed()
אם keys[pygame. K_LEFT]:
player_x -= player_speed
current_frame = frame1
אליף keys[pygame. K_RIGHT]:
player_x += player_speed
current_frame = frame2
אַחֵר:
current_frame = frame0

# עבד את המשחק
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

# ...

להלן הפלט:

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

בנוסף לפונקציונליות האנימציה הבסיסית, Pygame מציע מספר תכונות נוספות כדי לשפר את חווית פיתוח המשחק שלך.

ספרייט גליונות

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

# טען את תמונת גיליון הספרייט
sprite_sheet = pygame.image.load("spritesheet.png")

# הגדר את המידות של כל מסגרת
frame_width = 32
frame_height = 32

# פונקציה לחילוץ מסגרות מגיליון הספרייט
defextract_frames(גיליון, מסגרת_רוחב, גובה_מסגרת):
# קוד לחילוץ מסגרות

# חלץ מסגרות מגיליון הספרייט
frames = extract_frames (sprite_sheet, frame_width, frame_height)

# הצג מסגרת מגיליון הספרייט
current_frame = מסגרות[0]

# לולאת משחק
בזמן רץ:
# ...
screen.blit (current_frame, (player_x, player_y))
# ...

מהירות ההנפשה

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

# משתני מהירות אנימציה
animation_delay = 100# עיכוב באלפיות שניות בין עדכוני מסגרת
last_frame_time = pygame.time.get_ticks()

# לולאת משחק
בזמן רץ:
# ...

# בדוק אם עבר מספיק זמן לעדכון המסגרת
current_time = pygame.time.get_ticks()
אם current_time - last_frame_time >= animation_delay:
# עדכן את המסגרת

# עבד את המשחק
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

זיהוי התנגשות

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

# זיהוי התנגשות
defcheck_collision(player_rect, platform_rect):
אם player_rect.colliderect (platform_rect):
# אירעה התנגשות
לַחֲזוֹרנָכוֹן
אַחֵר:
לַחֲזוֹרשֶׁקֶר

# לולאת משחק
בזמן רץ:
# ...

# בצע זיהוי התנגשות
player_rect = pygame. Rect (player_x, player_y, 20, 20)
platform_rect = pygame. Rect (platform_x, platform_y,
platform_width, platform_height)

אם check_collision (player_rect, platform_rect):
# טיפול בהתנגשות

# עבד את המשחק
# ...
screen.blit (current_frame, (player_x, player_y))

pygame.display.flip()

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

שיטות עבודה מומלצות ליצירת אנימציה ב-Pygame

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

טען מראש ואחסן מסגרות בזיכרון

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

השתמש בשיעורי הספרייט והאנימציה המובנים של Pygame

Pygame מספק שיעורים מובנים כמו pygame.sprite. שֵׁדוֹן ו pygame.sprite. קְבוּצָה שמפשט את הניהול של ספרייטים ואנימציות. על ידי שימוש במחלקות אלה, תוכל לטפל בזיהוי התנגשות, עדכונים קבוצתיים ורינדור בצורה יעילה יותר.

בצע אופטימיזציה של פורמטי תמונה

שקול לבצע אופטימיזציה של פורמטי התמונה שלך לביצועים טובים יותר. Pygame תומך בפורמטים שונים של תמונה, כולל PNG ו-JPEG. PNG מומלץ בדרך כלל לתמונות עם שקיפות, בעוד ש-JPEG מתאים לתמונות סטטיות ללא שקיפות.

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

השתמש בקצבי פריימים נכונים

כדי להשיג אנימציות חלקות, חשוב להגדיר קצב פריימים מתאים. Pygame מספק את pygame.time. שָׁעוֹן class, שעוזר לשלוט בקצב הפריימים על ידי ויסות מהירות לולאת המשחק.

על ידי התקשרות ל תִקתוּק() שיטת האובייקט Clock בסוף כל איטרציה, תוכל לשמור על קצב פריימים עקבי. התאם את קצב הפריימים על סמך המורכבות של האנימציות שלך ויכולות הביצועים של פלטפורמת היעד שלך.

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

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

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

על ידי מינוף יכולות האנימציה של Pygame, אתה יכול לרתק את השחקנים שלך וליצור משחקים שמותירים רושם מתמשך.