תכנות לילדים באמצעות Game Maker/מריו/מדרון

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


AS-rondo-icon.svg

יהיה בסדר:

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



מדרון[עריכה]

בואו נשתמש בירושה כדי להכין עוד סוג משטחים: מדרונות. נקרא להם slope_right ו-slope_left וניתן להם את הדמויות האלה (בהמשך נדאג לייפות אותם, כשנגיע לאריחים):

Gmaker slope right.png Gmaker slope left.png

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

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

Gmaker platform room slope.png



Gmaker test save.png מה קורה כשמריו מנסה ללכת במעלה המדרון?




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

Gmaker slope actions.png

לכן צריך:

  1. Gmaker other.png ללכת לאירוע המשתמש שבו הפעולות להתקדמות של מריו.
  2. Gmaker else.png להוסיף את פעולת בדיקת ההפך כדי לטפל במקרה שהמיקום ישר מקדימה לא פנוי.
  3. Gmaker if free button.png במקרה הזה, לבדוק את המיקום שקצת מעליו: y=-4 ו-x=4*image_xscale.
  4. Gmaker jump pos.png אם המיקום הזה פנוי, אז להעביר לשם את מריו באמצעות הפעולה להעברה למקום אחר.בשדה X נכתוב 4*image_xscale ובשדה Y נכתוב -4(לסמן Relative).
  5. Gmaker contact button.png להוסיף את פעולת התזוזה לנקודת המגע עם direction של 270 מעלות (כלומר: למטה) כדי לוודא שמריו ילך בדיוק על המדרון ולא ירחף מעליו.
  6. Gmaker block button.png להקיף בבלוק את הפעולות שאחרי פעולות הבדיקה.



Gmaker test save.png מריו עולה במדרון, אבל איפה בדיוק?




Gmaker bounding box.png

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

אז אולי זה יסתדר אם אם פשוט נחזיר את הסימון לתיבת הסימון Precise collision checking בחלון תכונות הדמות של מריו? נסו ותראו!



Gmaker test save.png איך מריו עולה במדרון כשמחזירים את בדיקת ההתנגשות המדוייקת?




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

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

כיסוי[עריכה]

Gmaker mask collision.png

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

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

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

  1. לשכפל את הדמות של מריו. לדמות המשוכפלת כדאי לקרוא mario_stand.
  2. בחלון תכונות הדמות לוודא שיש סימון בתיבה Precise collision checking.
  3. להקליק על Edit Sprite ולמחוק את כל התת-תמונות מלבד הראשונה - תמונת מריו העומד. (אחרת הכיסוי יהיה מונפש וישתנה בכל צעד.)
Gmaker mask.png

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

Gmaker bounding mask.png



Gmaker test save.png מריו עולה יפה במדרון. איך הוא יורד?




אתגר:

לתכנת את מריו לרדת במדרון בהליכה בלי ליפול.

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


עוד מדרונות[עריכה]

עכשיו תורכם:

ליצור אובייקטים של מדרון מתון, עם הדמויות האלה:

Gmaker mslope right.png Gmaker mslope left.png

לשים מדרונות מתונים בחדר ולבדוק שמריו יכול לעלות, לרדת ולקפוץ עליהם.

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

תיקיות[עריכה]

המשאבים של המשחק מסודרים בתיקיות לפי סוג המשאב: תיקיית הדמויות Sprites, תיקיית הצלילים Sounds, תיקיית האובייקטים Objects, ועוד. בכל תיקיה כזאת אפשר ליצור תת-תיקיות כדי לארגן את המשאבים שבה לתת-קבוצות.

Gmaker add group.png

למשל, בשביל לארגן את הדמויות צריך:

  1. להקליק על תיקיית הדמויות Sprites בכפתור הימני של העכבר.
  2. בתפריט שצץ לבחור Add Group כדי ליצור תת-תיקיה לדמויות.
  3. נפתח חלון עם שדה שבו כותבים את שם התיקיה. למרבה הנוחות אפשר לתת לתיקיה שם בעברית, לכן כדאי לקרוא לה "משטחים".
  4. לגרור לתיקיית המשטחים את כל דמויות המשטחים: המשטח הפשוט, המדרונות, המסוע, וגם הפניה והחבל (שקשורים למשטחים).

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


עכשיו תורכם:

# לארגן את הדמויות של מריו בתיקיה בשם "מריו".
  1. לארגן את האובייקטים של המשטחים בתיקיה בשם "משטחים".


- מדרון -