Menu
CoddyTech

נקודות ציון

שיעור 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, וקריאה למערך במיקום הזה זורקת שגיאה, לכן בדקו את האינדקס לפני השימוש בו.

challenge icon

אתגר

קל

גרום ל-Grunt ללכת לאורך המסלול, מנקודת ציון לנקודת ציון.

  1. ב-Enemy, הוסף private int next = 1; (ה-Grunt מתחיל ב-WP0).
  2. ב-Update, החזר את השליטה כאשר next >= waypoints.Length.
  3. התקדם לעבר 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 אונליין