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

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

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

צור משחק פשוט

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

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

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

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

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

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

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
כוח המשיכה = 0.5
כחול = arcade.color. כְּחוֹל
ירוק = arcade.color. ירוק

instagram viewer

מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "מכניקת קפיצה")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.player_dy = 0
self.platform_x = SCREEN_WIDTH // 2
self.platform_y = SCREEN_HEIGHT // 4

defon_draw(עצמי):
arcade.start_render()

arcade.draw_circle_filled (self.player_x, self.player_y,
PLAYER_RADIUS, כחול)

arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, ירוק)

defon_update(עצמי, זמן_דלתא):
self.player_dy -= GRAVITY
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם self.player_y < dist:
self.player_y = dist
self.player_dy = 0

game = GameWindow()
arcade.run()

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

הוספת תכונת קפיצה פשוטה

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

מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי):
# ...

defon_key_press(עצמי, מפתח, משנה):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם key == arcade.key. לְמַעלָה ו self.player_y == on_ground:
self.player_dy = 10

defon_update(עצמי, זמן_דלתא):
self.player_dy -= GRAVITY
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם self.player_y < dist:
self.player_y = dist
self.player_dy = 0
self.jump_count = 0

הוספת תכונת קפיצה כפולה

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

צור קובץ חדש בשם double-jump.py והקוד עם העדכונים שלהלן:

מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי):
self.jump_count = 0# עקוב אחר מספר הקפיצות

defon_key_press(עצמי, מפתח, משנה):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם key == arcade.key. לְמַעלָה:
אם self.player_y == on_ground אוֹ self.jump_count < 2:
self.player_dy = 10
self.jump_count += 1

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

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

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

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

כוח המשיכה = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100

מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "מכניקת קפיצה")
self.jump_pressed = שֶׁקֶר
self.jump_power = 0

defon_key_press(עצמי, מפתח, משנה):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם key == arcade.key. לְמַעלָה ו self.player_y == on_ground:
self.jump_pressed = נָכוֹן

defon_key_release(עצמי, מפתח, משנה):
אם key == arcade.key. לְמַעלָה:
self.jump_pressed = שֶׁקֶר

defupdate_jump_power(עצמי):
# הגבר את עוצמת הקפיצה כאשר כפתור הקפיצה מוחזק
אם self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENT

אם self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
אַחֵר:
אם self.jump_power > 0:
self.jump_power -= 1

defon_update(עצמי, זמן_דלתא):
self.player_dy -= GRAVITY
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם self.player_y == dist ו self.jump_power > 0:
self.player_dy = self.jump_power

self.player_y += self.player_dy
self.update_jump_power()

יישום תכונת Air Dash

הוספת מכונאי אוויר יכול להעניק לשחקן אפשרויות ניידות נוספות כשהוא באוויר. צור קובץ חדש בשם air-dash.py והקוד עם העדכונים שלהלן:

AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2

מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "מכניקת קפיצה")
self.on_ground = שֶׁקֶר
self.air_dashes = 0
self.can_air_dash = נָכוֹן

defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. לְמַעלָה ו self.on_ground:
self.player_dy = 10
אליף key == arcade.key. לְמַעלָה ו \
self.air_dashes < MAX_AIR_DASHES ו \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = שֶׁקֶר

defon_update(עצמי, זמן_דלתא):
self.player_dy -= GRAVITY
self.player_y += self.player_dy

dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

אם self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = נָכוֹן
אַחֵר:
self.on_ground = שֶׁקֶר

self.player_x += self.player_dx

אם self.player_x < PLAYER_RADIUS:
self.player_x = PLAYER_RADIUS
self.player_dx = 0
אליף self.player_x > SCREEN_WIDTH - PLAYER_RADIUS:
self.player_x = SCREEN_WIDTH - PLAYER_RADIUS
self.player_dx = 0

אם self.on_ground:
self.air_dashes = 0
self.can_air_dash = נָכוֹן

כאשר אתה מבצע את ה-air dash, דמות השחקן שלך תתרחק מהפלטפורמה:

שיטות עבודה מומלצות למכניקת קפיצה

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

איזון קפיצה גובה ומשך זמן

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

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

לספק משוב חזותי ואודיו

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

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

זיהוי התנגשות עדין

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

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

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

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

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