שדרוגים
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 45 מתוך 50.
אתגר
בינונישדרוגים. השאירו את כל מהשיעורים הקודמים. לב ואספקלריה מונחים בזירה, וה־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
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי