פעולות ואירועים – Game Maker

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

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

event actions

מה הוא אירוע?

אירוע הוא כל מה שגורם לפעולה כלשהי במשחק לקרות.

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

אירוע יכול להיות מצב מוגדר ב- Game Maker, למשל סוף קו הבריאות, התחלה או סיום משחק, סיום חיים, סיום או התחלה של נתיב וכד'.

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

הוספת אירוע מתבצעת ע"י לחיצה על Add Event בחלון המאפיינים של אובייקט:

add event

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

events

 

פעולה

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

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

כאשר דמות יוצאת מצד אחד של החדר ונכנסת מצדו השני – מתבצעת פעולה של הקפת החדר (wrap screen)  לאחר אירוע יציאה מהחדר  (outside room).

הוספה של פעולה מתבצעת ע"י גרירה של הפעולה מאחת הלשוניות לחלון הפעולות:

actions

סוגי פעולות

הפעולות נחלקות ל-7 קבוצות:
Move actions: פעולות תנועה
Main actions, set 1: יצירה, שינוי והריסה של מופעים של אובייקט, צלילים, חדרים
Main actions, set 2: תזמון, מתן הודעות למשתמש, פעולות על המשחק עצמו: התחלה, סיום, טעינה ושמירה של המשחק.
Control actions: פעולות בקרה שליטה ובקרה על פעולות.
Score actions: פעולות ניקוד (הניקוד, החיים, ובריאותו של השחקן).
Extra actions: קיים רק בגרסת pro edition וכולל פעולות לביצוע על חלקיקים (particles) פעולות ל-CD ולסמן העכבר.
Drawing actions: פעולות ציור (שינוי ספרייט, רקע, כתיבת טקסט).

בגרירה של פעולה לחלון הפעולות יפתח חלון המציג את האפשרויות בהתאם לפעולה שנבחרה.

תרגיל יצירה של אובייקט ופעולה

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

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

שלבים בתרגול:

צרו קובץ משחק חדש (ריק מתוכן)

צרו Sprite של סמיילי (או אחר) ותנו שם לSprite, למשל smile

צרו סאונד חדש, ע"י העלה של קובץ beep. תנו שם לסאונד: Beep

צרו אובייקט חדש והגדירו עבורו את Sprite smile. תנו לאובייקט שם: smile_object

הוסיפו לאובייקט אירוע לחיצת עכבר (Left Released)

הוסיפו פעולה לאירוע לחיצת עכבר: Play Sound ובחרו בסאונד beep.

שמרו את השינויים שביצעתם בחלון Object Properties.

צרו חדר חדש ומקמו את האובייקט שיצרתם במרכז החדר.

הריצו את המשחק ונסו את הפעולה.

לנוחותכם, אני מצרפת את קובץ התרגיל .

 

איך ליצור משחק מחשב פשוט – חלק ב'

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

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

אוביקט המטוס

נתחיל עם אוביקט המטוס ע"י יצירת ספרייט ואוביקט מתאימים.

לאוביקט המטוס נשייך אירוע אחד ופעולה אחת – כאשר המטוס מחוץ לחדר (אירוע outside room) נהרוס את המופע של האוביקט (destroy the instance).

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

אוביקט מנהל

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

לאוביקט זה נשייך שני אירועים: אירוע יצירה ואירוע alarm.

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

1. נבחר את האוביקט המתאים, במקרה זה airplaneObj

2. נגדיר את נקודת ה-X בה יופיע האוביקט. כדי להגדיר נקודה אקראית, נשתמש בפונקציה random ובסגריים נגדיר את התחום ממנו המחשב יחשב נקודה אקראית.
כדי שהמטוס לא יופיע מחוץ למסך נגדיר את רוחב המסך (כלומר רוחב החדר) פחות רוחב האוביקט של המטוס.
לדוגמא, רוחב החדר במקרה זה הוא 640 ורוחב המטוס הוא 128, ולכן הנקודה המקסימלית שהאוביקט יכול להופיע בו על ציר ה-X מבלי שהמטוס יחתך היא 512. אני הגדרתי 510. את הרוחב נגדיר בתוך סגריים אחרי שם הפונקציה, כך:

create airplane

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

ערך המהירות צריך להיות בערך כמו המהירות של תנועת הציפור והכיוון כלפי מטה. כדי להגדיר את הכיוון למטה הגדירו 270. למה? כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

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

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

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

אירוע שעון מעורר

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

כך יראה חלון האפשרויות של האוביקט המנהל:

manager object

הוספת פעולות ואירועים לציפור

הוספת חיים וניקוד לאוביקט הציפור

לאוביקט הציפור נוסיף אירוע יצירה ונשייך לו את הפעולות הבאות:

הגדרת חיים – אני הגדרתי 3, תוכלו להגדיר כמות אחרת אם תרצו. – set lives

הגדרת ניקוד – מתחיל ב- 0 – set the score

הצגת הניקוד והחיים בחלון המשחק – set the score caption info

 

אירוע No more lives

לאוביקט הציפור נוסיף אירוע נוסף – no more lives, זהו אירוע שמור של game maker עבור מצב בו אין יותר חיים. נשייך לו פעולה של מעבר לחדר של סיום המשחק (לא תוכלו ליצור מעבר לחדר שלא קיים, לכן צרו תחילה חדר שנקרא end game). משמעות אירוע זה היא שכאשר נגמרים החיים שהגדרתם קודם, המשחק יעבור למסך הסיום.

הוספת אירוע התנגשות

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

bird object

 הרצת המשחק

הוסיפו את האוביקט המנהל לחדר והריצו את המשחק.

בפוסט הבא – המשך המדריך: הוספת אוביקט גוזל עם אירועים ופעולות מתאימים.

 

אהבתם את הפוסט? אל תשכחו לעשות לייק [fblike]

איך ליצור טיימר (Timer) ב- Game Maker

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

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

מה צריך בשביל להגביל את המשחק בדקה?

אוביקט Timer

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

ניצור אוביקט בשם timer

אירוע Create

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

לאירוע זה נוסיף את הפעולות הבאות:

1. יצירת משתנה בשם time ונגדיר לו ערך 60 (כיוון שבכל דקה יש 60 שניות).

var time

2. הפעלה של שעון (alarm) לאחר 30 צעדים (שזה שווה ערך לשנייה אחת)

alarm

אירוע שעון – Alarm

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

מוסיפים לאירוע שעון את הפעולות הבאות (שימו לב, יש להוסיף אותו ל- alarm0 שהוא אותו שעון שמופיע באירוע create):

הפחתה של 1 למשתנה time (שימו לב שאתם נותנים לו בדיוק את אותו השם שנתתם באירוע create). יש לסמן את התיבה relative כיוון שאנחנו רוצים שכל פעם תופחת שנייה מסך כל השניות הנותרות.

time-1

בדיקה של ערך משתנה time

כעת נוסיף בדיקה של המשתנה time. אם הוא קטן מ-0 המשחק יסתיים. אם לא נמשיך להוריד 1 מהמשתנה.

בדיקה האם המשתנה קטן מאפס:

if time smaller than 0את הפעולות הבאות נתחום בבלוק:

1. הצגת הודעה למשתמש (כדי לא לסגור את המשחק בפתאומיות)

game over

2. סגירה של המשחק (נמצא בלשונית main2 בפעולות).

אם המשתנה אינו קטן מאפס:

נפעיל שוב את שעון 0 אחרי 30 צעדים (כלומר נספור עוד שניה, בדיוק כפי שבצענו באירוע create).

alarm

כך יראה חלון הפעולות של אירוע Alarm0:

alarm actions

הצגה של השניות על המסך

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

הוספת אירוע ציור Draw

לאירוע draw נוסיף פעולה Draw Variable שנמצא בלשונית control.

נציין איזה משתנה להציג – time וכן את המיקום שלו.

draw time

אני קבעתי x=100 ו- y=30, אבל כמובן תוכלו להגדיר את המיקום במקום המתאים לכם במסך.

הוספת האוביקט לחדר

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

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

 

חדרים ב-Game Maker

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

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

במדריך זה הסבר קצר על יצירת חדרים ומעברים בין חדרים.

כדי ליצור חדר חדש לחצו על אייקון יצירת חדר בתפריט הכלים הראשי:

create Room

מאפייני החדר

לכל חדר 5 לשוניות עבור מאפיינים שונים:

background – בלשונית זו תוכלו לבחור רקע לחדר (תמונה או צבע)

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

objects – לשונית עבור הוספת האוביקטים לחדר

setting – מאפייני החדר עצמו כמו, גודל (רוחב וגובה), מהירות  ושם החדר.

tiles – לשונית עבור הוספת אריחים לחדר.

Room Properties

הגדרת כותרת החדר

כדי להגדיר כותרת לחדר, עברו ללשונית setting.

 

room Setting

שדה Name לא מוצג במשחק עצמו, זהו שם החדר שמופיע בסרגל עריכה ב-game maker תחת ספריית Rooms.

Caption for the room – המלל שתקלידו בשדה זה יופיע בכותרת המשחק לאחר הפעלתו.

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

מעבר בין חדרים

כדי ליצור מעבר בין חדרים, יש ליצור יותר מחדר אחד, כמובן. בדוגמא למדריך זה יצרתי שלושה חדרים: Menu, room1, room2.

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

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

הוספת אירוע לחיצה

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

לכל אחד מהלחצים הוסיפו אירוע Left Released ושייכו לו פעולה של מעבר חדר. התאימו לכל לחצן את המעבר לחדר המתאים (הבא והקודם).

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

next Room

פעולת מעבר בין חדרים נמצאת בלשונית main1, שימו לב, של-Game Maker יש פעולות שמורות עבור החדר הבא, החדר הקודם, הפעלה מחדש של אותו חדר ומעבר לחדר מוגדר.

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

הצגת שם החדר

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

1. צרו אובייקט חדש ללא ספרייט – textMngr

2. הוסיפו לאוביקט  אירוע draw

3. שייכו לאירוע זה את הפעולות עבור הצגת טקסט. אם אינכם זוכרים כיצד, קראו שוב את הפוסט להצגת טקסט במיקום מוגדר מראש.
שימו לב, כדי להציג את כותרת החדר, השתמשו במשתנה draw var וציינו בשדה variable את המשתנה room_caption. משתנה זה מציג את המלל שהקלדתם בשדה Caption for the room בלשונית setting של החדר. כך יראה חלון המאפיינים של אוביקט textMngr.

Drow Room

4. הוסיפו את האוביקט לחדר

אם הגדרתם לטקסט מיקום יחסי – הקפידו למקם את האוביקט במיקום המדויק, אם קבעתם מיקום מדויק (x,y), לא משנה היכן אתם ממקמים את האוביקט בחדר.

5. הריצו את המשחק.

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

בדיקה של ביטוי ב- Game Maker

בפוסט הזה, מדריך קצר לבדיקה של ביטוי במשחק.

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

אז איך עושים את זה?

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

יצירת האוביקטים

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

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

הוספת משתנה עבור הבדיקה

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

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

  1. הוסיפו אירוע יצירה לדמות הראשית
  2. הוסיפו פעולה של הגדרת משתנה checkNo. פעולת הגדרת משתנה נמצאת בלשונית control.
  3. השאירו את הערך של המשתנה על 0 (כיוון שאנחנו מתחילים לספור כאשר לדמות אין מטבעות בכלל).

כך יראה חלון מאפיינים של הגדרת המשתנה:

check No Var

אירוע התנגשות עם מטבע

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

נוסיף אירוע התנגשות ונשייך לו את הפעולות הבאות:

  1. השמדה של אוביקט המטבע
  2. הוספה של בדיקת ביטוי – Test Expression עבור המשתנה checkNo.
    הבדיקה היא עבור הביטוי: checkNo < 4 כלומר תבצע את הפעולות הבאות, כל עוד checkNo קטן מ-4:
  • הוספה של 1 למשתנה checkNo, שימו לב, יש לסמן V בשדה Relative בהוספה של 1 לערך הקיים במשתנה.
  • אחרת (כלומר כאשר checkNo גדול מ-4) – צור מופע של אוביקט מטיל זהב, ע"י הוספת הפעולה create instance וקבעו את ה-X וה-Y ל-0, כך שהמופע של אוביקט מטיל הזהב יופיע בקצה השמאלי העליון של החדר.

כך יראה חלון אפשרויות הגדלת ערך המשתנה ב-[1]:

add 1 to checkNo

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

test expression

יצירת חדר והוספת האוביקטים

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

הריצו את המשחק.

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

יצירת משחק פלטפורמה ב-Game Maker

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

כמה דברים שחשוב לדעת על פלטפורמה במשחק:

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

יצירת האובייקטים

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

כעת ניצור שני אובייקטים:

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

platform

2. אוביקט Player עבור הדמות, ונשייך לה את הספרייט שיצרנו עבורה.

בדיקה אם יש פלטפורמה

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

פעולות לאירוע step

1. בדיקה האם מתחת לדמות האוביקט אין כלום (פלטפורמה). אם אין פלטפורמה נוסיף לדמות פעולה של משיכה כלפי מטה, אם יש פלטפורמה, נעצור את המשיכה של הדמות כלפי מטה.
ל-game maker יש פעולה מיוחדת לבדוק אם יש מתחת לאוביקט והיא Check Empty שנמצאת בלשונית control של הפעולות.

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

check Empty

2. הוספת פעולה Set Gravity

אם אין אוביקט solid מתחת לדמות נוסיף פעולת set gravity ובשדה direction נגדיר את הכיוון כלפי מטה, כלומר 270. כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

בשדה gravity נציין ערך נמוך מ-1, בד"כ 0.5 מספיק ליצירת משיכה של הדמות כלפי מטה.

gravity

3. כעת נגדיר מה קורה אם מתחת לדמות יש אוביקט שהוא solid.

שוב נוסיף את פעולת Set Gravity אבל הפעם נציין בשדה gravity את הערך 0. כך נגרום לעצירה של הדמות.

התנגשות עם פלטפורמה

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

נוסיף לדמות אירוע התנגשות עם פלטפורמה ואת הפעולות הבאות:

1. move to contact

  • בשדה direction נציין 270, כלומר כלפי מטה
  • בשדה maximum נגדיר את המהירות המקסימלית שבה האוביקט ינוע כלפי מטה, אני ציינתי 12, אבל גם 5 זו מהירות מספיקה, והערך תלוי במרחק שיש לדמות לעבור בדרך למטה.
  • והדבר האחרון – לציין את התנועה לאוביקטים שהם מסוג solid.

כך יראה חלון האפשרויות של הפעולה move to contact:

move to contact

2. Vertical Speed

הפעולה האחרונה שנוסיף לאירוע ההתנגשות היא Set Vertical Speed עם הערך 0. כך נגרום לעמוד על הפלטפורמה ולא להמשיך ליפול כלפי מטה.

תנועה של הדמות לצדדים

יש יותר מדרך אחת להזיז את הדמות ע"י מקשי החצים, אני מעדיפה את האירועים key press ו-key release

1. הוסיפו אירוע key press right והוסיפו לו את הפעולות:

  • move free קבעו את הכיוון לימין ואת המהירות ל-5
  • change sprite פעולה של שינוי הספרייט לספרייט שפונה לכיוון ימין.

2. חזרו על אותן פעולות לאירוע key press left (כמובן קבעו את הכיוון והספרייט לצד שמאל הפעם).

3. הוסיפו אירוע key release right והוסיפו לו פעולה של move free. כדי שהדמות תעצור, לחצו על הריבוע האמצעי וקבעו את המהירות ל-0.

כך יראה חלון האפשרויות:

stop

4. גם לאירוע key release left הוסיפו את הפעולה move free עם אותם מאפיינים כמו בסעיף 3.

קפיצה

כדי ליצור קפיצה של הדמות נוסיף אירוע keyboard ונשייך לו את הפעולה set vertical speed.

בשדה vert speed ציינו ערך שלילי (כדי שהדמות תקפוץ כלפי מעלה). קפיצה של 10 היא גבוהה מספיק.

חלון המאפיינים של הדמות יראה כך:

platform

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

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

יצירת אוביקט שזז על המסך באמצעות העכבר

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

שלב ראשון – יצירת sprite לאוביקט

לחצו על אייקון יצירת ספרייט בסרגל העליון create a Sprite

בחלון מאפייני sprite לחצו על Load Sprite וטענו תמונה. אני בחרתי בתמונה burger.

שלב שני – יצירת אוביקט

create an Objectלחצו על איקון יצירת אוביקט בסרגל העליון

בחלון אפשרויות של האוביקט הגדירו את ה-sprite שיצרתם בשלב הראשון לאוביקט, במקרה הזה, את burger.

object

שלב שלישי – הגדרת אירוע ופעולות

הגדרת אירוע step

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

הגדרת פעולות

הפעולה שנבצע תלויה בלחיצה של עכבר, לכן נבצע בדיקה אם נלחץ העכבר ולשם כך נתשמש בפעולה Check Mouse שנמצאת בלשונית control של הפעולות.

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

object Actions

כעת נוסיף את הפעולה שתקפיץ את האוביקט לנקודה בה נלחץ העכבר. פעולה מסוג jump to position  ונגדיר עבורה את מיקום ה-X ו-Y.

עבור מיקום ה-X נציין: mouse_x, עבור מיקום ה-Y נציין: mouse_y. אלו פרמטרים קבועים עבור מיקום לחיצה של העכבר במסך.

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

קובץ דוגמא להורדה.