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

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



שיטת התנועה[עריכה]

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

במשחקי פלטפורמה בדרך כלל נוח לשלב בין שתי השיטות: את התנועה האופקית (ימינה ושמאלה) לעשות באמצעות שינוי המשתנה x, ואת התנועה האנכית (למעלה ולמטה) לתת ל-Game Maker לעשות לפי משתנה המהירות speed. בהמשך נראה איך ההפרדה הזאת עוזרת.

נתחיל בתנועה האופקית.

אתגר:

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

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

כדי לתכנת את מריו לזוז ימינה צריכים:

  1. Gmaker key.png להוסיף לאובייקט מריו אירוע מקש עבור חץ ימינה Right, כי צריך להזיז אותו כל עוד המשתמש לוחץ על החץ.
  2. Gmaker set var.png באירוע הזה להוסיף 4 למשתנה x (לסמן Relative) כדי להזיז את מריו 4 פיקסלים ימינה.

Gmaker test save.png מריו זז ימינה כל עוד לוחצים על החץ, ועוצר כשמשחררים את החץ.




כשמריו זז הוא צריך להיראות הולך, לא עומד. כלומר: צריך להציג את ההנפשה ברצף ולא להישאר על התמונה הראשונה של הדמות. בשביל זה צריך:

  1. Gmaker key down.png להוסיף אירוע לחיצה על מקש Right, כדי לדעת מתי מריו מתחיל ללכת ימינה.
  2. Gmaker set var.png באירוע הזה לשנות את המשתנה image_speed ל-0.5 (או למהירות אחרת - כדאי להפעיל את המשחק כדי לראות איזו מהירות הנפשה יוצאת טוב).
  3. Gmaker key up.png להוסיף אירוע שחרור מקש Right, כדי לדעת מתי מריו עוצר.
  4. Gmaker set var.png באירוע הזה לשנות את המשתנה image_speed חזרה ל-0 כדי לעצור את ההנפשה.
  5. Gmaker set var.png לשנות גם את המשתנה image_index ל-0 כדי להציג את התת-תמונה של מריו העומד.

Gmaker test save.png מריו נראה הולך כשהוא זז ימינה.




תנועה שמאלה[עריכה]

התנועה שמאלה זהה לתנועה ימינה, מלבד בכיוון של הדמות ובערך שמוסיפים למשתנה x. לכן אפשר פשוט לשכפל את שלושת האירועים של מקש Right לארועים הזהים עבור מקש Left (להקליק על האירועים בכפתור הימני של העכבר, ובתפריט שצץ לבחור Duplicate Event).

Gmaker key.png באירוע מקש שמאלה, צריך לשנות את פעולת ההצבה Gmaker set var.png: להוסיף למשתנה x את הערך -4 כדי להזיז את מריו 4 פיקסלים שמאלה.


Gmaker test save.png מריו יודע ללכת גם שמאלה, אבל הדמות שלו עדיין פונה ימינה.




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

ככה נראית הדמות של מריו כשמשנים את הערך של המשתנה image_xscale למספרים שונים:

Gmaker xscale.png

זאת אומרת שבשביל להפנות את מריו שמאלה, אפשר פשוט להציב -1 במשתנה image_xscale . לכן מה שצריך לעשות:

  1. Gmaker key down.png באירוע לחיצה על מקש Left להציב במשתנה image_xscale את המספר -1 Gmaker set var.png.
  2. Gmaker key down.png באירוע לחיצה על מקש Right להציב במשתנה image_xscale חזרה את המספר 1 Gmaker set var.png.

Gmaker test save.png מריו מסתובב שמאלה וימינה לפי החצים. נסו לסובב אותו בלי לגרום לו ללכת, אלא רק ללחוץ על החץ לרגע קצר; מה קורה?




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

למה זה בכל זאת קורה? בצעד הקודם הכרנו את ראשית הצירים של הדמות: הנקודה בדמות שממנה סופרים את x ו-y. כרגע ראשית הצירים של מריו היא בפינה השמאלית-עליונה של הדמות. כשמסובבים את הדמות שמאלה, ראשית הצירים מסתובבת איתה ככה שהיא עוברת לפינה הימנית-עליונה. זאת אומרת שכאשר מריו פונה ימינה כל הדמות שלו נמצאת מימין ל-x, ואילו כשהוא פונה שמאלה כל הדמות שלו נמצאת משמאל ל-x. לכן יש קפיצה כשמסובבים אותו.

Gmaker origin left.png

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

Gmaker origin center.png

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



Gmaker test save.png עכשיו מריו מסתובב בלי לשנות מקום.




- תנועה
תרגילים
-