נתוני אויבים
שיעור 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, שפועל מיד עם יצירת האובייקט. לעולם אל תשנה את הנכס עצמו: כל אויב מאותו סוג ישתנה.
אתגר
קלתן לכל אויב את הנתונים של הסוג שלו מתוך הנכס שלו.
- ב־
Enemy, החלף אתspeedב־public EnemyData data;והתקדם במהירותdata.speed. - הוסף
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 אונליין