הגנת מגדלים — גרסה בסיסית
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 61 מתוך 64.
היצורים צועדים לאורך הדרך לעבר הבסיס שלך, ומגדל יחיד מגן עליו. המגדל יורה קליעים לעבר היצור הקרוב אליו ביותר כל עוד הוא בטווח, וכל יצור שהוא מחסל מעניק זהב. מקש הרווח מוציא את הזהב על השדרוג הבא של המגדל: כל רמה מגיעה רחוק יותר, יורה מהר יותר או פוגעת חזק יותר. יצור שמגיע לבסיס מצליח לעבור. הרמות הן נתוני משחק שמעצבים מכוונים בנכס, בלי לגעת בקוד, והמגדל יורה הרבה קליעים, לכן הוא משתמש בהם שוב מתוך מאגר במקום ליצור ולהשמיד קליע עבור כל ירייה.
כתבו שני סקריפטים: TowerData, סוג הנכס, ו-Tower. Creep, Bolt ו-CreepSpawner כבר מוכנים, וכך גם Nearest ו-Show של המגדל.
אתגר
קשההשלם את הצריח; Nearest(range) ו־Show() מוכנות.
TowerLevel: ניתן לסריאליזציה, עםrange,fireEvery,damage,costציבוריים.TowerDataמכילהpublic List<TowerLevel> levels.- כל
fireEveryשניות, אםNearest(range)מוצאת יצור, מקם קליע מתוךObjectPool<Bolt>בצריח:bolt.Launch(creep, damage, pool.Release). - הפעל את
Show()אחרי ש־Creep.Killedמעניק אתbounty, וגם אחרי שלחיצה על מקש הרווח קונה את השדרוג הבא בעלותcostשלו, ורשום ביומןTower level 2.
לחץ על "שחק" ושדרג. לאחר מכן לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Pool;
using TMPro;
public class Tower : MonoBehaviour
{
[SerializeField] private TowerData data;
[SerializeField] private Bolt boltPrefab;
[SerializeField] private TMP_Text infoText;
private int level;
private int gold;
// מוכן: הקריפ הקרוב ביותר למגדל שנמצא בטווח, או null.
Creep Nearest(float range)
{
Creep nearest = null;
float best = Mathf.Infinity;
foreach (Collider hit in Physics.OverlapSphere(transform.position, range))
{
if (hit.TryGetComponent(out Creep creep))
{
float distance = Vector3.Distance(transform.position, creep.transform.position);
if (distance < best)
{
best = distance;
nearest = creep;
}
}
}
return nearest;
}
// מוכן: מציג את הרמה ואת כמות הזהב, למשל Level 1, 0 gold.
void Show()
{
infoText.text = "Level " + (level + 1) + ", " + gold + " gold";
}
}
כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיסי לאויברכיבים מופשטיםרכיבים שפועלים יחדחזרה: צריח מודולריחזרה: תותח כפול4נתונים שעברו סריאליזציה
מחלקות שניתנות לסריאליזציהרשימות ב־Inspectorטיפוסי Enum ב־Inspectorחזרה: טבלת שללהגרלת השלל2ממשקים ב-Unity
IDamageableממשקים ו-TryGetComponentGetComponentsסיכום: מקש אינטראקציהסיכום: הקרוב ביותר בטווחתרגלו בעצמכם: Unity אונליין