איך לעשות אובייקט עוקב אחרי אובייקט

בפוסט זה מדריך איך לעשות אובייקט אחד שעוקב אחרי אובייקט אחר.

מתי נצטרך להשתמש במצב כזה? כשנרצה למשל, שדמות אויב תרדוף אחרי דמות ראשית.

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

יצירת ספרייטים ואובייקטים לדמויות

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

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

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

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

step

לאירוע זה נשייך פעולה של step avoiding. פעולה זו נמצאת בלשונית Move בקטגוריית Steps:

step avoiding

Step Avoiding, בשונה מ- Step Twards נמנע מלעלות על הדמות אחריה עוקבים.

בחלון המאפיינים שנפתח נציין את ה-X ו-Y של הדמות שאחריה עוקבים ואת מהירות המעקב באופן הבא:

step avoiding

שימו לב, לפני ה-X וה- Y יופיע שם האובייקט ונקודה.

במקרה של הדוגמה שלי, שם האובייקט הוא boy ולכן נקודת ה-X תהיה boy.x ובאותו אופן יש להגדיר את נקודת ה- Y.

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

הריצו את המשחק. שימו לב, הדמות העוקבת, אינה “דורסת” את הדמות אחריה היא עוקבת.

 

מעקב ושמירת מרחק

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

הבדיקה משתמשת בפקודה של Game Maker שבודקת את המרחק מאובייקט –  (distance_to_object(boy – בסוגריים נכתוב את שם האובייקט, כך יראה חלון המאפיינים של הבדיקה:

distance_to_object

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

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

0 0 הצבעות
דירוג הפוסט
רישום מנוי להודעות
להודיע על
guest

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

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