גל אחד
שיעור 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);אתגר
קלשלח את הגל הראשון של Grunts לאורך השביל.
- ב־
Wave.cs, הוסף את[System.Serializable]ל־Wave, עםpublic Enemy enemy;,public int count;ו־public float spacing;. - ב־
WaveSpawner, הוסף את[SerializeField] private List<Wave> waves;ואת[SerializeField] private Transform[] waypoints;. - מתוך
Start, הפעל קורוטינה שיוצרתwaves[0].countאויבים כמו קודם.
לחץ על "שחק": שישה Grunts צועדים החוצה, בהפרש של 1.2 שניות זה מזה. ואז לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
// יופיע בהמשך: שולח את האויבים לאורך המסלול בגלים.
public class WaveSpawner : MonoBehaviour
{
}
כל השיעורים ביחידה משחק Unity: הגנת מגדלים
תרגלו בעצמכם: Unity אונליין