Menu
CoddyTech

ירי

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

מגדל יורה Projectile לעבר המטרה שלו. הירייה עפה אליה בעזרת MoveTowards, עוקבת אחר המטרה כשהיא הולכת ופוגעת בה כשהיא מגיעה. אין צורך לדעת שהיא פגעה באויב: היא מבקשת IDamageable, הממשק של כל דבר שיכול לספוג נזק, כך שאפשר לירות בכל דבר שמממש אותו.

מטרה יכולה למות בזמן שירייה נמצאת באוויר. אובייקט Unity שהושמד נחשב שווה ל־null, לכן הירייה בודקת תחילה target == null ומשמידה את עצמה.

לעת עתה, מגדל יורה פעם בשנייה. הוא שומר את הזמן שבו תתרחש הירייה הבאה שלו:

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

אתגר

בינוני

המגדלים יורים חצים פעם בשנייה.

  1. Enemy מממשת את IDamageable: הפעולה TakeDamage(int amount) מפחיתה את הערך מ־health, ומשמידה את האויב כשהערך הוא 0 או פחות.
  2. Projectile: הפעולה Launch(Transform target, int damage) שומרת את שניהם; Update עפה אל המטרה במהירות speed, קוראת ל־TakeDamage(damage) עם ההגעה ומשמידה את עצמה, וגם כשהמטרה נעלמת.
  3. Tower: הוסיפו public int damage = 2; ואת [SerializeField] private Projectile projectilePrefab;; ירו כפי שתואר לעיל מהמיקום transform.position + Vector3.up.

לחצו על "שחק": החצים עפים וה־Grunts נופלים. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;

// יופיע בהמשך: קליע שעף ממגדל אל המטרה שלו.
public class Projectile : MonoBehaviour
{
}

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

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