Menu
CoddyTech

שדרוגים

חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 45 מתוך 50.

challenge icon

אתגר

בינוני

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

  • IPickup מצהיר על מתודה אחת, void Collect(Hero hero);.
  • Heart מממש אותו, עם amount (2) מה־Inspector: הוא מרפא את הגיבור ב־amount ומשמיד את עצמו.
  • Shield מממש אותו, עם duration (5) מה־Inspector: הוא מגן על הגיבור מכל פגיעה למשך duration שניות ומשמיד את עצמו.
  • ל־Hero מתווספת public void Heal(int amount), שמוסיפה לבריאות, אך לעולם לא מעבר ל־maxHealth, ומתעדת את הבריאות כמו בעת פגיעה; גיבור שמת אינו נרפא. מתווספת לו גם public void Protect(float seconds), שמגנה עליו מפגיעות עד seconds מעכשיו, בדומה ל־safeTime בעת פגיעה. כמו כן מתווספת לו OnTriggerEnter: כשלאובייקט שבו הוא נגע יש IPickup, הוא קורא לו Collect(this). ‏CharacterController מקבל הודעות trigger גם בלי Rigidbody.
  • לכל Wave מתווסף public GameObject reward. ה־Inspector לא יכול להציג שדה מסוג ממשק, ולכן השדה מכיל את ה־prefab בתור GameObject. כשמביסים גל, לפני המנוחה, משגר הגלים משליך את הפרס של הגל, אם יש כזה, במיקום שלו עצמו, במרכז הזירה. הנכס מקצה Heart לגל 1 ו־Shield לגל 2.

לחצו על Play, השלימו גל ואספו את הפרס שלו, ואז לחצו על Check.

נסו בעצמכם

// בשיעור מאוחר יותר נמלא את הממשק הזה: כל דבר שהגיבור יכול להרים.
public interface IPickup
{
}

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