Menu
CoddyTech

גל אחד

שיעור 5 מתוך 25 בקורס משחק Unity: הגנת מגדלים של Coddy.

ה־Grunt וה־Runner הם כעת קדם־רכיבים, יחד עם Tank ו־Boss, ו־Spawner עומד ב־WP0. גל מורכב מכמה מספרים: איזה אויב, כמה אויבים ומה המרווח ביניהם. לכן Wave היא מחלקה מסוג [System.Serializable], וה־spawner מחזיק List<Wave> שה־Inspector ממלא בשמונת הגלים של המשחק. בלי [System.Serializable], Unity לא יכולה למלא את הרשימה, והיא נשארת ריקה.

יצירת אויבים עם מרווחים ביניהם מתבצעת באמצעות קורוטינה: yield return new WaitForSeconds(...) ממתין בלי לעצור את המשחק. קדם־רכיב לא יכול להצביע על נקודות הציון שבסצנה, לכן ה־spawner מוסר לכל אויב חדש את נקודות הציון שלו מיד אחרי Instantiate:

Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);
challenge icon

אתגר

קל

שלח את הגל הראשון של Grunts לאורך השביל.

  1. ב־Wave.cs, הוסף את [System.Serializable] ל־Wave, עם public Enemy enemy;, public int count; ו־public float spacing;.
  2. ב־WaveSpawner, הוסף את [SerializeField] private List<Wave> waves; ואת [SerializeField] private Transform[] waypoints;.
  3. מתוך Start, הפעל קורוטינה שיוצרת waves[0].count אויבים כמו קודם.

לחץ על "שחק": שישה Grunts צועדים החוצה, בהפרש של 1.2 שניות זה מזה. ואז לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;

// יופיע בהמשך: שולח את האויבים לאורך המסלול בגלים.
public class WaveSpawner : MonoBehaviour
{
}

כל השיעורים ביחידה משחק Unity: הגנת מגדלים

תרגלו בעצמכם: Unity אונליין