Menu
CoddyTech

נתוני אויבים

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

רץ מצטרף לגרונט. הוא מהיר יותר ויש לו פחות בריאות, ולכל הרצים יש אותם ערכים, ולכן הם שייכים לסוג ולא לאויב יחיד. הם נמצאים בנכס EnemyData הנתון, מסוג ScriptableObject: בפרויקט יש את GruntData (מהירות 2, בריאות 9) ואת RunnerData (מהירות 3.5, בריאות 5), והחלון Inspector נותן לכל אויב נכס משלו בשדה data.

כל אויב קורא את הערכים של הסוג שלו דרך השדה הזה, בכל פעם שהוא זקוק להם:

void Start()
{
    Debug.Log(name + " pays " + data.reward);
}

בריאות היא עניין שונה: לגרונט שחטף פגיעה יש פחות בריאות מאשר לגרונט שמאחוריו. לכן הנכס מכיל את maxHealth, וכל אויב מעתיק אותו לשדה משלו ב־Awake, שפועל מיד עם יצירת האובייקט. לעולם אל תשנה את הנכס עצמו: כל אויב מאותו סוג ישתנה.

challenge icon

אתגר

קל

תן לכל אויב את הנתונים של הסוג שלו מתוך הנכס שלו.

  1. ב־Enemy, החלף את speed ב־public EnemyData data; והתקדם במהירות data.speed.
  2. הוסף private int health; והגדר אותו לערך data.maxHealth בתוך Awake.

לחץ על "שחק": ה־Runner עוקף את ה־Grunt. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 2f;
    public Transform[] waypoints;

    private int next = 1;

    void Update()
    {
        if (next >= waypoints.Length)
        {
            return;
        }

        Vector3 target = waypoints[next].position;
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
        if (transform.position == target)
        {
            next++;
        }
    }
}

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

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