נקודות ציון
שיעור 1 מתוך 25 בקורס משחק Unity: הגנת מגדלים של Coddy.
בקורס הזה תבנו משחק הגנה על מגדל: אויבים צועדים בשביל בגלים לכיוון הבסיס שלכם, והמגדלים שתבנו לצד השביל עוצרים אותם. בכל שיעור מתווספת תכונה אחת. לחצו על "שחק" כדי לנסות ועל "בדיקה" כדי לבדוק את הקוד. כל שנים עשר הסקריפטים נמצאים בפרויקט כבר מההתחלה; רובם שלדים קצרים שהשיעורים הבאים ממלאים, ו-EnemyData מסופק עבור שיעור 2.
השביל מורכב משמונה נקודות ציון, מ-WP0 בנקודת ההופעה ועד WP7 בבסיס, במערך waypoints של ה-Grunt. ה-Grunt שומר את האינדקס של נקודת הציון שאליה הוא מתקדם ונע לעברה. Vector3.MoveTowards לעולם לא מתקדם מעבר ליעד שלו, ולכן ה-Grunt מגיע בדיוק לנקודת הציון ו-== יכול לזהות שהוא הגיע:
Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
// הגענו: נתקדם לבאה בתור
}אחרי נקודת הציון האחרונה, האינדקס שווה ל-waypoints.Length, וקריאה למערך במיקום הזה זורקת שגיאה, לכן בדקו את האינדקס לפני השימוש בו.
אתגר
קלגרום ל-Grunt ללכת לאורך המסלול, מנקודת ציון לנקודת ציון.
- ב-
Enemy, הוסףprivate int next = 1;(ה-Grunt מתחיל ב-WP0). - ב-
Update, החזר את השליטה כאשרnext >= waypoints.Length. - התקדם לעבר
waypoints[next].positionבאמצעותVector3.MoveTowardsבמהירותspeed * Time.deltaTime; כשהוא מגיע לשם,next++.
לחץ על שחק: ה-Grunt עובר בכל פינה ועוצר בבסיס. לאחר מכן לחץ על בדיקה.
נסו בעצמכם
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
void Update()
{
// התקדם כאן לאורך המסלול: מנקודת ציון לנקודת ציון, לפי הסדר.
}
}
כל השיעורים ביחידה משחק Unity: הגנת מגדלים
תרגלו בעצמכם: Unity אונליין