שלבי המגדל
שיעור 16 מתוך 25 בקורס משחק Unity: הגנת מגדלים של Coddy.
המגדלים ישתדרגו: כל רמה מוסיפה נזק וטווח, וכל שדרוג עולה יותר מקודמו. הרמות פועלות לפי כלל, ולכן הנכס מכיל את הכלל ולא רשימת מספרים, והמתודות ב־ScriptableObject מחשבות את התוצאה, כך שכל סקריפט ששואל מקבל את אותה תשובה. היבול במשחק חווה:
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}רמה 1 היא ערך הבסיס. המגדל שומר רק את ה־level שלו, ויורה עם המספרים של אותה רמה.
אתגר
בינוניהוסיפו רמות למגדלים.
- ב־
TowerData, הוסיפו את המספרים השלמים הציבורייםmaxLevel,upgradeCostו־damagePerLevel, ואת המספר העשרוני הציבוריrangePerLevel. - הוסיפו את
DamageAt(int level):damage + damagePerLevel * (level - 1); אתRangeAtבאותו אופן; ואתUpgradeCost(int level):upgradeCost * level. - ב־
Tower, הוסיפוprivate int level = 1;, אתpublic int Level => level;ואתpublic void Upgrade() { level++; }; ירו עםDamageAt(level)בתוךRangeAt(level).
לחצו על "שחק": המגדלים נלחמים כמו קודם. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using UnityEngine;
[CreateAssetMenu(fileName = "NewTower", menuName = "Tower Defense/Tower Data")]
public class TowerData : ScriptableObject
{
public string towerName;
public int cost = 50;
public int damage = 2;
public float range = 4f;
public float fireRate = 1f;
}
כל השיעורים ביחידה משחק Unity: הגנת מגדלים
תרגלו בעצמכם: Unity אונליין