Menu
CoddyTech

גלי אויבים

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

challenge icon

אתגר

בינוני

האויבים מופיעים כעת בגלים, והגלים הם נתונים. שמור על כל מה שנוצר בשיעורים הקודמים. בזירה כבר אין אויבים משלה: רכיבי ה-Prefab של Grunt ו-Dasher מכילים את הסקריפטים שלך, ארבע נקודות הופעה נמצאות בפינות, ולאובייקט Spawner שבמרכז יש את הסקריפט WaveSpawner.

  • ב-WaveSet.cs, הוסף מחלקה Wave עם [System.Serializable], ובה public Enemy enemy (רכיב ה-Prefab), public int count ו-public float spacing. WaveSet הוא ScriptableObject עם [CreateAssetMenu], public List<Wave> waves ו-public float restBetweenWaves. הנכס Arena של הסצנה מכיל שלושה גלים (3 אויבי Grunt בהפרש של 0.5 s, 2 אויבי Dasher בהפרש של 1 s, 5 אויבי Grunt בהפרש של 0.4 s) והפסקה של 2 שניות.
  • ל-Enemy יש public static event Action<Enemy> Died, שמופעל עם האויב רגע לפני השמדתו.
  • ל-WaveSpawner יש waveSet ו-spawnPoints שמוגדרים ב-Inspector, וגם public int Wave { get; private set; }, מספר הגל הפעיל. מתוך Start, קורוטינה מריצה את גלי הנכס לפי הסדר. בכל גל: הוסף 1 ל-Wave ורשום אותו ביומן, למשל Wave 1; צור את אויבי הגל, לפי count, בהפרש של spacing שניות, את האויב i (החל מ-0) ב-spawnPoints[i % spawnPoints.Length]; המתן עד שלא יישארו אויבים בחיים; ואז המתן restBetweenWaves שניות. אחרי הגל האחרון, הסדרה מתחילה שוב מהראשון, והספירה של Wave נמשכת: 4, 5 וכן הלאה.
  • ספור את האויבים שנותרו בחיים באמצעות האירוע Died: הירשם אליו ב-OnEnable ובטל את ההרשמה ב-OnDisable. ה-Spawner רק קורא את הנכס: ב-Editor, שינוי שנעשה בנכס בזמן שהמשחק רץ יישאר בנכס אחרי Play.

לחץ על Play ושרוד כמה גלים, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class WaveSpawner : MonoBehaviour
{
    // בשיעור מאוחר יותר יתווסף כאן הקוד: שולח את הגלים אל הזירה.
}

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