גרום נזק לכל דבר
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 43 מתוך 50.
אתגר
בינוניעכשיו הקרב מתנהל בשני הכיוונים. השאר את כל מה שבנית בשיעורים הקודמים. האויבים כבר לא מתויגים: ההנפה מוצאת את מה שהיא יכולה לפגוע בו באמצעות ממשק, והאויבים פוגעים בגיבור באמצעות אותו ממשק.
IDamageableמצהיר על מתודה אחת,void TakeDamage(int amount);.Enemyמממש אותו. הוא מקבל אתhealth, אתdamageואתattackEvery, שמוגדרים ב-Inspector (ל-grunt הערכים הם 2, 1 ו-1; ל-dasher הערכים הם 1, 2 ו-1).TakeDamageמפחית אתamountמ-healthומשמיד את האויב כשהערך מגיע ל-0 או פחות. בתוךStart, שמור גם אתIDamageableשל הגיבור. בכל פריים, כשהגיבור נמצא במרחק של עד 1.2 יחידות, קרא למתודה שלוTakeDamage(damage), לכל היותר פעם אחת בכלattackEveryשניות.Heroמממש אותו, עםswingDamage(1),maxHealth(5) ו-safeTime(1) שמוגדרים ב-Inspector, ועםhealthשמתחיל בערך שלmaxHealthבתוךAwake. פגיעה מפחיתה אתamount, רושמת את הבריאות כך:Hero HP: 4, ושומרת על הגיבור מפגיעות נוספות למשךsafeTimeשניות. כשהבריאות מגיעה ל-0, רשוםThe hero fallsוכבה את סקריפט Hero (enabled = false). גיבור שנפל מתעלם מפגיעות.- ההנפה כבר לא בודקת תגים ולא משמידה דבר: היא קוראת ל-
TakeDamage(swingDamage)על כל מה שנמצא בטווח ולפנים ושיש לוIDamageable.
לחץ על Play והילחם, ואז לחץ על Check.
נסו בעצמכם
// בשיעור מאוחר יותר נמלא את זה: כל דבר שיכול להיפגע.
public interface IDamageable
{
}
כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי