אובייקטים ספרייטים ומופעים

במדריך זה אסביר מה ההבדל בין אובייקטים ומופעים ומה הם ספרייטים ב-Game Maker.

 

אובייקט – Object

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

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

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

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

האובייקטים נשמרים בתיקייה ייעודית ב- Game Maker שנקראת Objects.

ספרייטים – Sprites

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

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

ספרייטים נשמרים בתיקייה ייעודית שנקראת Sprites.

 

מופע – Inastance

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

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

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

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

 

 

 

 

 

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

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

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

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

  • ירייה היא בעצם מופע של אוביקט שנע במהירות במסך, האוביקט אינו מוצב בחדר, הוא יופיע בפעולה יזומה של השחקן.
  • כיוון הירי צריך להשתנות לפי הכיוון אליו פונה האוביקט היורה
  • ירי לא מתבצע באופן רציף (כמו הליכה, או ריצה), אלא בהפסקות זמן קבועות.
  • בעת פגיעה באוביקט אחר או מחוץ לחדר יש להרוס את המופע של הירי.
  • כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

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

הגדרת משתנה עבור ירי

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

  1. הוסיפו אירוע יצירה לדמות הראשית
  2. הוסיפו פעולה של הגדרת משתנה can_shoot שערכו יהיה=1 (1 פירושו יכול לירות ו-0 פירושו לא יכול לירות). הגדרת משתנה נמצא בלשונית control של הפעולות.

can shoot

הגדרת משתנה עבור כיוון

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

direction

כעת נוסיף את אירוע הירי.

יצירת אירוע ירי

במשחק הזה פעולת הירי תתבצע כאשר השחקן לוחץ על מקש הרווח כדי ליצור אירוע ירי נבצע שתי בדיקות, אחת – האם ניתן לבצע פעולת ירי, שתיים – לאיזה כיוון הדמות פונה.
הוסיפו אירוע לחיצה על מקש הרווח לדמות הראשית לאירוע זה הוסיפו פעולה של בדיקת המשתנה can_shoot לערך 1  (כלומר הפעולות הבאות יתבצעו אם המשתנה can_shoot=1).
מיד אח"כ הוסיפו בדיקה של המשתנה dir. אם dir=1 הוסיפו את הפעולות הבאות לאירוע ירי, כיוון שמדובר במספר פעולות נתחום אותן בבלוק פעולות:

create moving instance של אוביקט הירי

  1. בשדה object בחרו את אוביקט הירייה
  2. הגדירו את ה-X וה-Y ל16 ו-16, כיוון שהדמות שלנו בגודל 32X32 והכדור יצא ממרכז הדמות.
  3. סמנו V בשדה Relative אחרת הכדור יצא מנקודת 16X16 של החדר ולא של הדמות הראשית.
  4. בשדה speed הגדירו מהירות 30 לפחות ובשדה direction את הספרה 0, שהיא כאמור מסמלת את הכיוון ימין.

כך יראה חלון המאפיינים של הפעולה create moving:

create moving

שינוי המשתנה can_shoot ל-0 והוספת שעון מעורר

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

  1. שינוי ערך המשתנה can_shoot ל-0.
  2. הוספת פעולת שעון מעורר ל-5 צעדים, הגדירו את Alarm 0 ל-5 צעדים.
    alarm

יותר מאוחר נוסיף אירוע שעון מעורר שמטרתו להחזיר את ערך המשתנה can_shoot ל-1.

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

  • הוספת אוביקט הירי כולל ארבעת השלבים המפורטים למעלה, כאשר השינוי היחיד הוא הכיוון של אוביקט shot.
  • שינוי המשתנה can_shoot
  • הוספת שעון מעורר Alarm 0

הוספת אירוע שעון מעורר

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

לאירוע זה הוסיפו פעולת הגדרת ערך המשתנה can_shoot בחזרה ל-1.

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

shoot to direction

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

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

כדי לשפר את אפקט הירי, הוסיפו סאונד לפעולת הירייה וסאונד לפעולת ההתנגשות.

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